Coverage Report

Created: 2026-03-10 08:46

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/binutils-gdb/opcodes/ppc-opc.c
Line
Count
Source
1
/* ppc-opc.c -- PowerPC opcode list
2
   Copyright (C) 1994-2026 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
407
{
169
407
  int64_t ba = (insn >> 16) & 0x1f;
170
407
  int64_t bb = (insn >> 11) & 0x1f;
171
172
407
  if (ba != bb)
173
172
    *invalid = 1;
174
407
  return ba;
175
407
}
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
282
{
196
282
  int64_t bt = (insn >> 21) & 0x1f;
197
282
  int64_t bab = extract_bab (insn, dialect, invalid);
198
199
282
  if (bt != bab)
200
177
    *invalid = 1;
201
282
  return bt;
202
282
}
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
153k
#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
29.5k
{
249
29.5k
  if ((dialect & ISA_V2) == 0)
250
10.3k
    {
251
10.3k
      if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
252
2.00k
  *invalid = 1;
253
10.3k
    }
254
19.1k
  else
255
19.1k
    {
256
19.1k
      if ((insn & (0x17 << 21)) != (0x06 << 21)
257
15.8k
    && (insn & (0x1d << 21)) != (0x18 << 21))
258
8.45k
  *invalid = 1;
259
19.1k
    }
260
261
29.5k
  return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
262
29.5k
}
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
18.5k
{
294
18.5k
  if ((dialect & ISA_V2) == 0)
295
9.16k
    {
296
9.16k
      if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
297
6.51k
  *invalid = 1;
298
9.16k
    }
299
9.34k
  else
300
9.34k
    {
301
9.34k
      if ((insn & (0x17 << 21)) != (0x07 << 21)
302
8.42k
    && (insn & (0x1d << 21)) != (0x19 << 21))
303
7.57k
  *invalid = 1;
304
9.34k
    }
305
306
18.5k
  return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
307
18.5k
}
308
309
static inline int
310
valid_bo_pre_v2 (int64_t value)
311
65.9k
{
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
65.9k
  if ((value & 0x14) == 0)
325
    /* BO: 0000y, 0001y, 0100y, 0101y.  */
326
1.21k
    return 1;
327
64.7k
  else if ((value & 0x14) == 0x4)
328
    /* BO: 001zy, 011zy.  */
329
81
    return (value & 0x2) == 0;
330
64.6k
  else if ((value & 0x14) == 0x10)
331
    /* BO: 1z00y, 1z01y.  */
332
53.5k
    return (value & 0x8) == 0;
333
11.0k
  else
334
    /* BO: 1z1zz.  */
335
11.0k
    return value == 0x14;
336
65.9k
}
337
338
static inline int
339
valid_bo_post_v2 (int64_t value)
340
65.9k
{
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
65.9k
  if ((value & 0x14) == 0)
354
    /* BO: 0000z, 0001z, 0100z, 0101z.  */
355
1.21k
    return (value & 0x1) == 0;
356
64.7k
  else if ((value & 0x14) == 0x14)
357
    /* BO: 1z1zz.  */
358
11.0k
    return value == 0x14;
359
53.6k
  else if ((value & 0x14) == 0x4)
360
    /* BO: 001at, 011at, with "at" == 0b01 being reserved.  */
361
81
    return (value & 0x3) != 1;
362
53.5k
  else if ((value & 0x14) == 0x10)
363
    /* BO: 1a00t, 1a01t, with "at" == 0b01 being reserved.  */
364
53.5k
    return (value & 0x9) != 1;
365
0
  else
366
0
    return 1;
367
65.9k
}
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
65.9k
{
374
65.9k
  int valid_y = valid_bo_pre_v2 (value);
375
65.9k
  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
65.9k
  if (extract && dialect == ~(ppc_cpu_t) PPC_OPCODE_ANY)
380
0
    return valid_y || valid_at;
381
65.9k
  if ((dialect & ISA_V2) == 0)
382
33.3k
    return valid_y;
383
32.5k
  else
384
32.5k
    return valid_at;
385
65.9k
}
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
26.7k
{
409
26.7k
  int64_t value = (insn >> 21) & 0x1f;
410
26.7k
  if (!valid_bo (value, dialect, 1))
411
3.92k
    *invalid = 1;
412
26.7k
  return value;
413
26.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
39.1k
{
421
39.1k
  if ((dialect & ISA_V2) == 0)
422
17.1k
    {
423
17.1k
      if ((bo & 0x14) != 0x14)
424
  /* BO: 0000y, 0001y, 001zy, 0100y, 0101y, 011zy, 1z00y, 1z01y .  */
425
15.3k
  return 1;
426
1.80k
      else
427
  /* BO: 1z1zz.  */
428
1.80k
  return 0;
429
17.1k
    }
430
22.0k
  else
431
22.0k
    {
432
22.0k
      if ((bo & 0x14) == 0x4)
433
  /* BO: 001at, 011at.  */
434
6
  return 0x3;
435
21.9k
      else if ((bo & 0x14) == 0x10)
436
  /* BO: 1a00t, 1a01t.  */
437
16.5k
  return 0x9;
438
5.41k
      else
439
  /* BO: 0000z, 0001z, 0100z, 0101z, 1z1zz.  */
440
5.41k
  return 0;
441
22.0k
    }
442
39.1k
}
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
39.1k
{
485
39.1k
  int64_t value = (insn >> 21) & 0x1f;
486
39.1k
  int64_t implied_hint;
487
39.1k
  int64_t hint_mask = get_bo_hint_mask (value, dialect);
488
489
39.1k
  if (branch_taken)
490
16.4k
    implied_hint = hint_mask;
491
22.7k
  else
492
22.7k
    implied_hint = hint_mask & ~1;
493
494
39.1k
  if (!valid_bo (value, dialect, 1)
495
31.4k
      || implied_hint == 0
496
23.5k
      || (value & hint_mask) != implied_hint)
497
30.2k
    *invalid = 1;
498
39.1k
  return value;
499
39.1k
}
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
22.7k
{
517
22.7k
  return extract_boe (insn, dialect, invalid, 0);
518
22.7k
}
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
16.4k
{
536
16.4k
  return extract_boe (insn, dialect, invalid, 1);
537
16.4k
}
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
298
{
559
298
  return (insn & 0x40) | ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
560
298
}
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
318
{
586
318
  int64_t dw = ((insn & 1) << 8) | ((insn >> 18) & 0xf8);
587
318
  return dw - 512;
588
318
}
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
638
{
607
638
  uint64_t dxd = (insn & 0xffc1) | ((insn >> 15) & 0x3e);
608
638
  return (dxd ^ 0x8000) - 0x8000;
609
638
}
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.43k
{
645
2.43k
  int64_t mask = 1ULL << 33;
646
2.43k
  int64_t value = ((insn >> 16) & 0x3ffff0000ULL) | (insn & 0xffff);
647
2.43k
  value = (value ^ mask) - mask;
648
2.43k
  return value;
649
2.43k
}
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
24
{
670
24
  int64_t value = extract_d34 (insn, dialect, invalid);
671
24
  *invalid = 1;
672
24
  return -value;
673
24
}
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
10
{
691
10
  return (insn & 0xffff) | ((insn >> 16) & 0xffff0000);
692
10
}
693
694
/* The 32bit SI field in a 64-bit D form prefix instruction when the field is split
695
   into separate SI0 and SI1 fields.  */
696
697
static uint64_t
698
insert_si32 (uint64_t insn,
699
       int64_t value,
700
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
701
       const char **errmsg ATTRIBUTE_UNUSED)
702
0
{
703
0
  return insn | ((value & 0xffff0000ULL) << 16) | (value & 0xffff);
704
0
}
705
706
static int64_t
707
extract_si32 (uint64_t insn,
708
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
709
        int *invalid ATTRIBUTE_UNUSED)
710
258
{
711
258
  int64_t mask = 1ULL << 31;
712
258
  int64_t value = ((insn >> 16) & 0xffff0000ULL) | (insn & 0xffff);
713
258
  value = (value ^ mask) - mask;
714
258
  return value;
715
258
}
716
717
/* The NSI32 field in an 8-byte D form prefix instruction.  This is the same
718
   as the SI32 field, only negated.  The extraction function always marks it
719
   as invalid, since we never want to recognize an instruction which uses
720
   a field of this type.  */
721
static uint64_t
722
insert_nsi32 (uint64_t insn,
723
        int64_t value,
724
        ppc_cpu_t dialect,
725
        const char **errmsg)
726
0
{
727
0
  return insert_si32 (insn, -value, dialect, errmsg);
728
0
}
729
730
static int64_t
731
extract_nsi32 (uint64_t insn,
732
         ppc_cpu_t dialect,
733
         int *invalid)
734
17
{
735
17
  int64_t value = extract_si32 (insn, dialect, invalid);
736
17
  *invalid = 1;
737
17
  return -value;
738
17
}
739
740
/* The R field in an 8-byte prefix instruction when there are restrictions
741
   between R's value and the RA value (ie, they cannot both be non zero).  */
742
743
static uint64_t
744
insert_pcrel (uint64_t insn,
745
        int64_t value,
746
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
747
        const char **errmsg)
748
0
{
749
0
  value &= 0x1;
750
0
  int64_t ra = (insn >> 16) & 0x1f;
751
0
  if (ra != 0 && value != 0)
752
0
    *errmsg = _("invalid R operand");
753
754
0
  return insn | (value << 52);
755
0
}
756
757
static int64_t
758
extract_pcrel (uint64_t insn,
759
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
760
         int *invalid)
761
4.25k
{
762
  /* If called with *invalid < 0 to return the value for missing
763
     operands, *invalid will be the negative count of missing operands
764
     including this one.  Return a default value of 1 if the PRA0/PRAQ
765
     operand was also omitted (ie. *invalid is -2).  Return a default
766
     value of 0 if the PRA0/PRAQ operand was not omitted
767
     (ie. *invalid is -1).  */
768
4.25k
  if (*invalid < 0)
769
1.29k
    return ~ *invalid & 1;
770
771
2.95k
  int64_t ra = (insn >> 16) & 0x1f;
772
2.95k
  int64_t pcrel = (insn >> 52) & 0x1;
773
2.95k
  if (ra != 0 && pcrel != 0)
774
162
    *invalid = 1;
775
776
2.95k
  return pcrel;
777
4.25k
}
778
779
/* Variant of extract_pcrel that sets invalid for R bit clear.  Used
780
   to disassemble "paddi rt,0,offset,1" as "pla rt,offset".  */
781
782
static int64_t
783
extract_pcrel1 (uint64_t insn,
784
    ppc_cpu_t dialect,
785
    int *invalid)
786
465
{
787
465
  int64_t pcrel = extract_pcrel (insn, dialect, invalid);
788
465
  if (!pcrel)
789
333
    *invalid = 1;
790
465
  return pcrel;
791
465
}
792
793
/* FXM mask in mfcr and mtcrf instructions.  */
794
795
static uint64_t
796
insert_fxm (uint64_t insn,
797
      int64_t value,
798
      ppc_cpu_t dialect,
799
      const char **errmsg)
800
0
{
801
  /* If we're handling the mfocrf and mtocrf insns ensure that exactly
802
     one bit of the mask field is set.  */
803
0
  if ((insn & (1 << 20)) != 0)
804
0
    {
805
0
      if (value == 0 || (value & -value) != value)
806
0
  {
807
0
    *errmsg = _("invalid mask field");
808
0
    value = 0;
809
0
  }
810
0
    }
811
812
  /* If only one bit of the FXM field is set, we can use the new form
813
     of the instruction, which is faster.  Unlike the Power4 branch hint
814
     encoding, this is not backward compatible.  Do not generate the
815
     new form unless -mpower4 has been given, or -many and the two
816
     operand form of mfcr was used.  */
817
0
  else if (value > 0
818
0
     && (value & -value) == value
819
0
     && ((dialect & PPC_OPCODE_POWER4) != 0
820
0
         || ((dialect & PPC_OPCODE_ANY) != 0
821
0
       && (insn & (0x3ff << 1)) == 19 << 1)))
822
0
    insn |= 1 << 20;
823
824
  /* Any other value on mfcr is an error.  */
825
0
  else if ((insn & (0x3ff << 1)) == 19 << 1)
826
0
    {
827
      /* A value of -1 means we used the one operand form of
828
   mfcr which is valid.  */
829
0
      if (value != -1)
830
0
  *errmsg = _("invalid mfcr mask");
831
0
      value = 0;
832
0
    }
833
834
0
  return insn | ((value & 0xff) << 12);
835
0
}
836
837
static int64_t
838
extract_fxm (uint64_t insn,
839
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
840
       int *invalid)
841
512
{
842
  /* Return a value of -1 for a missing optional operand, which is
843
     used as a flag by insert_fxm.  */
844
512
  if (*invalid < 0)
845
84
    return -1;
846
847
428
  int64_t mask = (insn >> 12) & 0xff;
848
  /* Is this a Power4 insn?  */
849
428
  if ((insn & (1 << 20)) != 0)
850
220
    {
851
      /* Exactly one bit of MASK should be set.  */
852
220
      if (mask == 0 || (mask & -mask) != mask)
853
196
  *invalid = 1;
854
220
    }
855
856
  /* Check that non-power4 form of mfcr has a zero MASK.  */
857
208
  else if ((insn & (0x3ff << 1)) == 19 << 1)
858
200
    {
859
200
      if (mask != 0)
860
32
  *invalid = 1;
861
168
      else
862
168
  mask = -1;
863
200
    }
864
865
428
  return mask;
866
512
}
867
868
/* L field in the paste. instruction.  */
869
870
static uint64_t
871
insert_l1opt (uint64_t insn,
872
      int64_t value,
873
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
874
      const char **errmsg ATTRIBUTE_UNUSED)
875
0
{
876
0
  return insn | ((value & 1) << 21);
877
0
}
878
879
static int64_t
880
extract_l1opt (uint64_t insn,
881
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
882
       int *invalid)
883
103
{
884
  /* Return a value of 1 for a missing optional operand.  */
885
103
  if (*invalid < 0)
886
34
    return 1;
887
888
69
  return (insn >> 21) & 1;
889
103
}
890
891
static uint64_t
892
insert_li20 (uint64_t insn,
893
       int64_t value,
894
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
895
       const char **errmsg ATTRIBUTE_UNUSED)
896
0
{
897
0
  return (insn
898
0
    | ((value & 0xf0000) >> 5)
899
0
    | ((value & 0x0f800) << 5)
900
0
    | (value & 0x7ff));
901
0
}
902
903
static int64_t
904
extract_li20 (uint64_t insn,
905
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
906
        int *invalid ATTRIBUTE_UNUSED)
907
0
{
908
0
  return ((((insn << 5) & 0xf0000)
909
0
     | ((insn >> 5) & 0xf800)
910
0
     | (insn & 0x7ff)) ^ 0x80000) - 0x80000;
911
0
}
912
913
/* The 2-bit/3-bit L or 2-bit WC field in a SYNC, DCBF or WAIT instruction.
914
   For SYNC, some L values are reserved:
915
     * Values 6 and 7 are reserved on newer server cpus.
916
     * Value 3 is reserved on all server cpus.
917
     * Value 2 is reserved on all other cpus.
918
   For DCBF, some L values are reserved:
919
     * Values 2, 5 and 7 are reserved on all cpus.
920
   For WAIT, some WC values are reserved:
921
     * Value 3 is reserved on all server cpus.
922
     * Values 1 and 2 are reserved on older server cpus.  */
923
924
static uint64_t
925
insert_ls (uint64_t insn,
926
     int64_t value,
927
     ppc_cpu_t dialect,
928
     const char **errmsg)
929
0
{
930
0
  int64_t mask;
931
932
0
  if (((insn >> 1) & 0x3ff) == 598)
933
0
    {
934
      /* For SYNC, some L values are illegal.  */
935
0
      mask = (dialect & PPC_OPCODE_POWER10) ?  0x7 : 0x3;
936
937
      /* If the value is within range, check for other illegal values.  */
938
0
      if ((value & mask) == value)
939
0
  switch (value)
940
0
    {
941
0
    case 2:
942
0
      if (dialect & PPC_OPCODE_POWER4)
943
0
        break;
944
      /* Fall through.  */
945
0
    case 3:
946
0
    case 6:
947
0
    case 7:
948
0
      *errmsg = _("illegal L operand value");
949
0
      break;
950
0
    default:
951
0
      break;
952
0
    }
953
0
    }
954
0
  else if (((insn >> 1) & 0x3ff) == 86)
955
0
    {
956
      /* For DCBF, some L values are illegal.  */
957
0
      mask = (dialect & PPC_OPCODE_POWER10) ?  0x7 : 0x3;
958
959
      /* If the value is within range, check for other illegal values.  */
960
0
      if ((value & mask) == value)
961
0
  switch (value)
962
0
    {
963
0
    case 2:
964
0
    case 5:
965
0
    case 7:
966
0
      *errmsg = _("illegal L operand value");
967
0
      break;
968
0
    default:
969
0
      break;
970
0
    }
971
0
    }
972
0
  else
973
0
    {
974
      /* For WAIT, some WC values are illegal.  */
975
0
      mask = 0x3;
976
977
      /* If the value is within range, check for other illegal values.  */
978
0
      if ((dialect & PPC_OPCODE_A2) == 0
979
0
    && (dialect & PPC_OPCODE_E500MC) == 0
980
0
    && (value & mask) == value)
981
0
  switch (value)
982
0
    {
983
0
    case 1:
984
0
    case 2:
985
0
      if (dialect & PPC_OPCODE_POWER10)
986
0
        break;
987
      /* Fall through.  */
988
0
    case 3:
989
0
      *errmsg = _("illegal WC operand value");
990
0
      break;
991
0
    default:
992
0
      break;
993
0
    }
994
0
    }
995
996
0
  return insn | ((value & mask) << 21);
997
0
}
998
999
static int64_t
1000
extract_ls (uint64_t insn,
1001
      ppc_cpu_t dialect,
1002
      int *invalid)
1003
1.24k
{
1004
1.24k
  uint64_t value;
1005
1006
  /* Missing optional operands have a value of zero.  */
1007
1.24k
  if (*invalid < 0)
1008
192
    return 0;
1009
1010
1.05k
  if (((insn >> 1) & 0x3ff) == 598)
1011
684
    {
1012
      /* For SYNC, some L values are illegal.  */
1013
684
      int64_t mask = (dialect & PPC_OPCODE_POWER10) ?  0x7 : 0x3;
1014
1015
684
      value = (insn >> 21) & mask;
1016
684
      switch (value)
1017
684
  {
1018
16
  case 2:
1019
16
    if (dialect & PPC_OPCODE_POWER4)
1020
16
      break;
1021
    /* Fall through.  */
1022
151
  case 3:
1023
199
  case 6:
1024
217
  case 7:
1025
217
    *invalid = 1;
1026
217
    break;
1027
451
  default:
1028
451
    break;
1029
684
  }
1030
684
    }
1031
371
  else if (((insn >> 1) & 0x3ff) == 86)
1032
177
    {
1033
      /* For DCBF, some L values are illegal.  */
1034
177
      int64_t mask = (dialect & PPC_OPCODE_POWER10) ?  0x7 : 0x3;
1035
1036
177
      value = (insn >> 21) & mask;
1037
177
      switch (value)
1038
177
  {
1039
87
  case 2:
1040
87
  case 5:
1041
149
  case 7:
1042
149
    *invalid = 1;
1043
149
    break;
1044
28
  default:
1045
28
    break;
1046
177
  }
1047
177
    }
1048
194
  else
1049
194
    {
1050
      /* For WAIT, some WC values are illegal.  */
1051
194
      value = (insn >> 21) & 0x3;
1052
194
      if ((dialect & PPC_OPCODE_A2) == 0
1053
194
    && (dialect & PPC_OPCODE_E500MC) == 0)
1054
194
  switch (value)
1055
194
    {
1056
136
    case 1:
1057
136
    case 2:
1058
136
      if (dialect & PPC_OPCODE_POWER10)
1059
136
        break;
1060
      /* Fall through.  */
1061
12
    case 3:
1062
12
      *invalid = 1;
1063
12
      break;
1064
46
    default:
1065
46
      break;
1066
194
    }
1067
194
    }
1068
1069
1.05k
  return value;
1070
1.05k
}
1071
1072
/* The 4-bit E field in a sync instruction that accepts 2 operands.
1073
   If ESYNC is non-zero, then the L field must be either 0 or 1 and
1074
   the complement of ESYNC-bit2.  */
1075
1076
static uint64_t
1077
insert_esync (uint64_t insn,
1078
        int64_t value,
1079
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1080
        const char **errmsg)
1081
0
{
1082
0
  uint64_t ls = (insn >> 21) & 0x03;
1083
1084
0
  if (value != 0
1085
0
      && ((~value >> 1) & 0x1) != ls)
1086
0
    *errmsg = _("incompatible L operand value");
1087
1088
0
  return insn | ((value & 0xf) << 16);
1089
0
}
1090
1091
static int64_t
1092
extract_esync (uint64_t insn,
1093
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1094
         int *invalid)
1095
568
{
1096
  /* Missing optional operands have a value of zero.  */
1097
568
  if (*invalid < 0)
1098
106
    return 0;
1099
1100
462
  uint64_t ls = (insn >> 21) & 0x3;
1101
462
  uint64_t value = (insn >> 16) & 0xf;
1102
462
  if (value != 0
1103
427
      && ((~value >> 1) & 0x1) != ls)
1104
109
    *invalid = 1;
1105
462
  return value;
1106
568
}
1107
1108
/* The n operand of clrrwi, which sets the ME field to 31 - n.  */
1109
1110
static uint64_t
1111
insert_crwn (uint64_t insn,
1112
      int64_t value,
1113
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1114
      const char **errmsg ATTRIBUTE_UNUSED)
1115
0
{
1116
0
  return insn | ((~value & 0x1f) << 1);
1117
0
}
1118
1119
static int64_t
1120
extract_crwn (uint64_t insn,
1121
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1122
       int *invalid ATTRIBUTE_UNUSED)
1123
640
{
1124
640
  return ~(insn >> 1) & 0x1f;
1125
640
}
1126
1127
/* The n operand of extlwi, which sets the ME field to n - 1.  */
1128
1129
static uint64_t
1130
insert_elwn (uint64_t insn,
1131
       int64_t value,
1132
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1133
       const char **errmsg ATTRIBUTE_UNUSED)
1134
0
{
1135
0
  return insn | (((value - 1) & 0x1f) << 1);
1136
0
}
1137
1138
static int64_t
1139
extract_elwn (uint64_t insn,
1140
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1141
        int *invalid ATTRIBUTE_UNUSED)
1142
0
{
1143
0
  return ((insn >> 1) & 0x1f) + 1;
1144
0
}
1145
1146
/* The n operand of extrwi, sets MB = 32 - n.  */
1147
1148
static uint64_t
1149
insert_erwn (uint64_t insn,
1150
       int64_t value,
1151
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1152
       const char **errmsg ATTRIBUTE_UNUSED)
1153
0
{
1154
0
  return insn | ((-value & 0x1f) << 6);
1155
0
}
1156
1157
static int64_t
1158
extract_erwn (uint64_t insn,
1159
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1160
        int *invalid ATTRIBUTE_UNUSED)
1161
0
{
1162
0
  return (~(insn >> 6) & 0x1f) + 1;
1163
0
}
1164
1165
/* The b operand of extrwi, sets SH = b + n.  */
1166
1167
static uint64_t
1168
insert_erwb (uint64_t insn,
1169
       int64_t value,
1170
       ppc_cpu_t dialect,
1171
       const char **errmsg ATTRIBUTE_UNUSED)
1172
0
{
1173
0
  int64_t n = extract_erwn (insn, dialect, NULL);
1174
0
  return insn | (((n + value) & 0x1f) << 11);
1175
0
}
1176
1177
static int64_t
1178
extract_erwb (uint64_t insn,
1179
        ppc_cpu_t dialect,
1180
        int *invalid ATTRIBUTE_UNUSED)
1181
0
{
1182
0
  int64_t n = extract_erwn (insn, dialect, NULL);
1183
0
  return ((insn >> 11) - n) & 0x1f;
1184
0
}
1185
1186
/* The n and b operands of clrlslwi.  */
1187
1188
static uint64_t
1189
insert_cslwn (uint64_t insn,
1190
        int64_t value,
1191
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1192
        const char **errmsg ATTRIBUTE_UNUSED)
1193
0
{
1194
0
  uint64_t mb = 0x1f << 6;
1195
0
  int64_t b = (insn >> 6) & 0x1f;
1196
0
  return ((insn & ~mb) | ((value & 0x1f) << 11) | (((b - value) & 0x1f) << 6)
1197
0
    | ((~value & 0x1f) << 1));
1198
0
}
1199
1200
static int64_t
1201
extract_cslwb (uint64_t insn,
1202
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1203
         int *invalid)
1204
0
{
1205
0
  int64_t sh = (insn >> 11) & 0x1f;
1206
0
  int64_t mb = (insn >> 6) & 0x1f;
1207
0
  int64_t me = (insn >> 1) & 0x1f;
1208
0
  if (sh != 31 - me)
1209
0
    *invalid = 1;
1210
0
  return (mb + sh) & 0x1f;
1211
0
}
1212
1213
/* The n and b operands of inslwi.  */
1214
1215
static uint64_t
1216
insert_ilwb (uint64_t insn,
1217
       int64_t value,
1218
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1219
       const char **errmsg ATTRIBUTE_UNUSED)
1220
0
{
1221
0
  uint64_t me = 0x1f << 1;
1222
0
  int64_t n = (insn >> 1) & 0x1f;
1223
0
  return ((insn & ~me) | ((-value & 0x1f) << 11) | ((value & 0x1f) << 6)
1224
0
    | (((value + n - 1) & 0x1f) << 1));
1225
0
}
1226
1227
static int64_t
1228
extract_ilwn (uint64_t insn,
1229
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1230
        int *invalid)
1231
0
{
1232
0
  int64_t sh = (insn >> 11) & 0x1f;
1233
0
  int64_t mb = (insn >> 6) & 0x1f;
1234
0
  int64_t me = (insn >> 1) & 0x1f;
1235
0
  if (((sh + mb) & 0x1f) != 0)
1236
0
    *invalid = 1;
1237
0
  return ((me - mb) & 0x1f) + 1;
1238
0
}
1239
1240
/* The n and b operands of insrwi.  */
1241
1242
static uint64_t
1243
insert_irwb (uint64_t insn,
1244
       int64_t value,
1245
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1246
       const char **errmsg ATTRIBUTE_UNUSED)
1247
0
{
1248
0
  uint64_t me = 0x1f << 1;
1249
0
  int64_t n = (insn >> 1) & 0x1f;
1250
0
  return ((insn & ~me) | ((-(value + n) & 0x1f) << 11) | ((value & 0x1f) << 6)
1251
0
    | (((value + n - 1) & 0x1f) << 1));
1252
0
}
1253
1254
static int64_t
1255
extract_irwn (uint64_t insn,
1256
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1257
        int *invalid)
1258
0
{
1259
0
  int64_t sh = (insn >> 11) & 0x1f;
1260
0
  int64_t mb = (insn >> 6) & 0x1f;
1261
0
  int64_t me = (insn >> 1) & 0x1f;
1262
0
  if (((sh + me + 1) & 0x1f) != 0)
1263
0
    *invalid = 1;
1264
0
  return ((me - mb) & 0x1f) + 1;
1265
0
}
1266
1267
/* The MB and ME fields in an M form instruction expressed as a single
1268
   operand which is itself a bitmask.  The extraction function always
1269
   marks it as invalid, since we never want to recognize an
1270
   instruction which uses a field of this type.  */
1271
1272
static uint64_t
1273
insert_mbe (uint64_t insn,
1274
      int64_t value,
1275
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1276
      const char **errmsg)
1277
0
{
1278
0
  uint64_t uval, mask;
1279
0
  long mb, me, mx, count, last;
1280
1281
0
  uval = value;
1282
1283
0
  if (uval == 0)
1284
0
    {
1285
0
      *errmsg = _("illegal bitmask");
1286
0
      return insn;
1287
0
    }
1288
1289
0
  mb = 0;
1290
0
  me = 32;
1291
0
  if ((uval & 1) != 0)
1292
0
    last = 1;
1293
0
  else
1294
0
    last = 0;
1295
0
  count = 0;
1296
1297
  /* mb: location of last 0->1 transition */
1298
  /* me: location of last 1->0 transition */
1299
  /* count: # transitions */
1300
1301
0
  for (mx = 0, mask = (uint64_t) 1 << 31; mx < 32; ++mx, mask >>= 1)
1302
0
    {
1303
0
      if ((uval & mask) && !last)
1304
0
  {
1305
0
    ++count;
1306
0
    mb = mx;
1307
0
    last = 1;
1308
0
  }
1309
0
      else if (!(uval & mask) && last)
1310
0
  {
1311
0
    ++count;
1312
0
    me = mx;
1313
0
    last = 0;
1314
0
  }
1315
0
    }
1316
0
  if (me == 0)
1317
0
    me = 32;
1318
1319
0
  if (count != 2 && (count != 0 || ! last))
1320
0
    *errmsg = _("illegal bitmask");
1321
1322
0
  return insn | (mb << 6) | ((me - 1) << 1);
1323
0
}
1324
1325
static int64_t
1326
extract_mbe (uint64_t insn,
1327
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1328
       int *invalid)
1329
0
{
1330
0
  int64_t ret;
1331
0
  long mb, me;
1332
0
  long i;
1333
1334
0
  *invalid = 1;
1335
1336
0
  mb = (insn >> 6) & 0x1f;
1337
0
  me = (insn >> 1) & 0x1f;
1338
0
  if (mb < me + 1)
1339
0
    {
1340
0
      ret = 0;
1341
0
      for (i = mb; i <= me; i++)
1342
0
  ret |= (uint64_t) 1 << (31 - i);
1343
0
    }
1344
0
  else if (mb == me + 1)
1345
0
    ret = ~0;
1346
0
  else /* (mb > me + 1) */
1347
0
    {
1348
0
      ret = ~0;
1349
0
      for (i = me + 1; i < mb; i++)
1350
0
  ret &= ~((uint64_t) 1 << (31 - i));
1351
0
    }
1352
0
  return ret;
1353
0
}
1354
1355
/* The MB or ME field in an MD or MDS form instruction.  The high bit
1356
   is wrapped to the low end.  */
1357
1358
static uint64_t
1359
insert_mb6 (uint64_t insn,
1360
      int64_t value,
1361
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1362
      const char **errmsg ATTRIBUTE_UNUSED)
1363
0
{
1364
0
  return insn | ((value & 0x1f) << 6) | (value & 0x20);
1365
0
}
1366
1367
static int64_t
1368
extract_mb6 (uint64_t insn,
1369
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1370
       int *invalid ATTRIBUTE_UNUSED)
1371
6.76k
{
1372
6.76k
  return ((insn >> 6) & 0x1f) | (insn & 0x20);
1373
6.76k
}
1374
1375
/* The n operand of extrdi, which sets MB field.  */
1376
1377
static uint64_t
1378
insert_erdn (uint64_t insn,
1379
       int64_t value,
1380
       ppc_cpu_t dialect,
1381
       const char **errmsg)
1382
0
{
1383
0
  return insert_mb6 (insn, -value, dialect, errmsg);
1384
0
}
1385
1386
static int64_t
1387
extract_erdn (uint64_t insn,
1388
        ppc_cpu_t dialect,
1389
        int *invalid)
1390
0
{
1391
0
  return (~extract_mb6 (insn, dialect, invalid) & 63) + 1;
1392
0
}
1393
1394
/* The n operand of extldi, which sets ME field.  */
1395
1396
static uint64_t
1397
insert_eldn (uint64_t insn,
1398
       int64_t value,
1399
       ppc_cpu_t dialect,
1400
       const char **errmsg)
1401
0
{
1402
0
  return insert_mb6 (insn, value - 1, dialect, errmsg);
1403
0
}
1404
1405
static int64_t
1406
extract_eldn (uint64_t insn,
1407
        ppc_cpu_t dialect,
1408
        int *invalid)
1409
0
{
1410
0
  return extract_mb6 (insn, dialect, invalid) + 1;
1411
0
}
1412
1413
/* The n operand of clrrdi, which set ME field.  */
1414
1415
static uint64_t
1416
insert_crdn (uint64_t insn,
1417
       int64_t value,
1418
       ppc_cpu_t dialect,
1419
       const char **errmsg)
1420
0
{
1421
0
  return insert_mb6 (insn, 63 - value, dialect, errmsg);
1422
0
}
1423
1424
static int64_t
1425
extract_crdn (uint64_t insn,
1426
        ppc_cpu_t dialect,
1427
        int *invalid)
1428
746
{
1429
746
  return 63 - extract_mb6 (insn, dialect, invalid);
1430
746
}
1431
1432
/* The NB field in an X form instruction.  The value 32 is stored as
1433
   0.  */
1434
1435
static int64_t
1436
extract_nb (uint64_t insn,
1437
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1438
      int *invalid ATTRIBUTE_UNUSED)
1439
220
{
1440
220
  int64_t ret;
1441
1442
220
  ret = (insn >> 11) & 0x1f;
1443
220
  if (ret == 0)
1444
190
    ret = 32;
1445
220
  return ret;
1446
220
}
1447
1448
/* The NB field in an lswi instruction, which has special value
1449
   restrictions.  The value 32 is stored as 0.  */
1450
1451
static uint64_t
1452
insert_nbi (uint64_t insn,
1453
      int64_t value,
1454
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1455
      const char **errmsg ATTRIBUTE_UNUSED)
1456
0
{
1457
0
  int64_t rtvalue = (insn >> 21) & 0x1f;
1458
0
  int64_t ravalue = (insn >> 16) & 0x1f;
1459
1460
0
  if (value == 0)
1461
0
    value = 32;
1462
0
  if (rtvalue + (value + 3) / 4 > (rtvalue > ravalue ? ravalue + 32
1463
0
                 : ravalue))
1464
0
    *errmsg = _("address register in load range");
1465
0
  return insn | ((value & 0x1f) << 11);
1466
0
}
1467
1468
/* The NSI field in a D form instruction.  This is the same as the SI
1469
   field, only negated.  The extraction function always marks it as
1470
   invalid, since we never want to recognize an instruction which uses
1471
   a field of this type.  */
1472
1473
static uint64_t
1474
insert_nsi (uint64_t insn,
1475
      int64_t value,
1476
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1477
      const char **errmsg ATTRIBUTE_UNUSED)
1478
0
{
1479
0
  return insn | (-value & 0xffff);
1480
0
}
1481
1482
static int64_t
1483
extract_nsi (uint64_t insn,
1484
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1485
       int *invalid)
1486
0
{
1487
0
  *invalid = 1;
1488
0
  return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
1489
0
}
1490
1491
/* The 2-bit SC field in a SYNC or PL field in a WAIT instruction.
1492
   For WAIT, some PL values are reserved:
1493
     * Values 1, 2 and 3 are reserved.  */
1494
1495
static uint64_t
1496
insert_pl (uint64_t insn,
1497
     int64_t value,
1498
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1499
     const char **errmsg)
1500
0
{
1501
  /* For WAIT, some PL values are illegal.  */
1502
0
  if (((insn >> 1) & 0x3ff) == 30
1503
0
      && value != 0)
1504
0
    *errmsg = _("illegal PL operand value");
1505
0
  return insn | ((value & 0x3) << 16);
1506
0
}
1507
1508
static int64_t
1509
extract_pl (uint64_t insn,
1510
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1511
      int *invalid)
1512
340
{
1513
  /* Missing optional operands have a value of zero.  */
1514
340
  if (*invalid < 0)
1515
49
    return 0;
1516
1517
291
  uint64_t value = (insn >> 16) & 0x3;
1518
1519
  /* For WAIT, some PL values are illegal.  */
1520
291
  if (((insn >> 1) & 0x3ff) == 30
1521
104
      && value != 0)
1522
40
    *invalid = 1;
1523
291
  return value;
1524
340
}
1525
1526
/* The 2-bit P field in a MMA XX2-form instruction.  This is split.  */
1527
1528
static uint64_t
1529
insert_p2 (uint64_t insn,
1530
     int64_t value,
1531
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1532
     const char **errmsg ATTRIBUTE_UNUSED)
1533
0
{
1534
0
  return insn | ((value & 0x2) << 15) | ((value & 0x1) << 11);
1535
0
}
1536
1537
static int64_t
1538
extract_p2 (uint64_t insn,
1539
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1540
      int *invalid ATTRIBUTE_UNUSED)
1541
4
{
1542
4
  uint64_t value = ((insn >> 15) & 0x2) | ((insn >> 11) & 0x1);
1543
4
  return value;
1544
4
}
1545
1546
/* The RA field in a D or X form instruction which is an updating
1547
   load, which means that the RA field may not be zero and may not
1548
   equal the RT field.  */
1549
1550
static uint64_t
1551
insert_ral (uint64_t insn,
1552
      int64_t value,
1553
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1554
      const char **errmsg)
1555
0
{
1556
0
  if (value == 0
1557
0
      || (uint64_t) value == ((insn >> 21) & 0x1f))
1558
0
    *errmsg = "invalid register operand when updating";
1559
0
  return insn | ((value & 0x1f) << 16);
1560
0
}
1561
1562
static int64_t
1563
extract_ral (uint64_t insn,
1564
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1565
       int *invalid)
1566
47.6k
{
1567
47.6k
  int64_t rtvalue = (insn >> 21) & 0x1f;
1568
47.6k
  int64_t ravalue = (insn >> 16) & 0x1f;
1569
1570
47.6k
  if (rtvalue == ravalue || ravalue == 0)
1571
5.82k
    *invalid = 1;
1572
47.6k
  return ravalue;
1573
47.6k
}
1574
1575
/* The RA field in an lmw instruction, which has special value
1576
   restrictions.  */
1577
1578
static uint64_t
1579
insert_ram (uint64_t insn,
1580
      int64_t value,
1581
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1582
      const char **errmsg)
1583
0
{
1584
0
  if ((uint64_t) value >= ((insn >> 21) & 0x1f))
1585
0
    *errmsg = _("index register in load range");
1586
0
  return insn | ((value & 0x1f) << 16);
1587
0
}
1588
1589
static int64_t
1590
extract_ram (uint64_t insn,
1591
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1592
       int *invalid)
1593
9.38k
{
1594
9.38k
  uint64_t rtvalue = (insn >> 21) & 0x1f;
1595
9.38k
  uint64_t ravalue = (insn >> 16) & 0x1f;
1596
1597
9.38k
  if (ravalue >= rtvalue)
1598
5.29k
    *invalid = 1;
1599
9.38k
  return ravalue;
1600
9.38k
}
1601
1602
/* The RA field in the DQ form lq or an lswx instruction, which have special
1603
   value restrictions.  */
1604
1605
static uint64_t
1606
insert_raq (uint64_t insn,
1607
      int64_t value,
1608
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1609
      const char **errmsg)
1610
0
{
1611
0
  int64_t rtvalue = (insn >> 21) & 0x1f;
1612
1613
0
  if (value == rtvalue)
1614
0
    *errmsg = _("source and target register operands must be different");
1615
0
  return insn | ((value & 0x1f) << 16);
1616
0
}
1617
1618
static int64_t
1619
extract_raq (uint64_t insn,
1620
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1621
       int *invalid)
1622
10.0k
{
1623
  /* Missing optional operands have a value of zero.  */
1624
10.0k
  if (*invalid < 0)
1625
227
    return 0;
1626
1627
9.87k
  uint64_t rtvalue = (insn >> 21) & 0x1f;
1628
9.87k
  uint64_t ravalue = (insn >> 16) & 0x1f;
1629
9.87k
  if (ravalue == rtvalue)
1630
743
    *invalid = 1;
1631
9.87k
  return ravalue;
1632
10.0k
}
1633
1634
/* The RA field in a D or X form instruction which is an updating
1635
   store or an updating floating point load, which means that the RA
1636
   field may not be zero.  */
1637
1638
static uint64_t
1639
insert_ras (uint64_t insn,
1640
      int64_t value,
1641
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1642
      const char **errmsg)
1643
0
{
1644
0
  if (value == 0)
1645
0
    *errmsg = _("invalid base address register operand");
1646
0
  return insn | ((value & 0x1f) << 16);
1647
0
}
1648
1649
static int64_t
1650
extract_ras (uint64_t insn,
1651
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1652
       int *invalid)
1653
61.0k
{
1654
61.0k
  uint64_t ravalue = (insn >> 16) & 0x1f;
1655
1656
61.0k
  if (ravalue == 0)
1657
5.24k
    *invalid = 1;
1658
61.0k
  return ravalue;
1659
61.0k
}
1660
1661
/* The RS and RB fields in an X form instruction when they must be the same.
1662
   This is used for extended mnemonics like mr.  The extraction function
1663
   enforces that the fields are the same.  */
1664
1665
static uint64_t
1666
insert_rsb (uint64_t insn,
1667
      int64_t value,
1668
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1669
      const char **errmsg ATTRIBUTE_UNUSED)
1670
0
{
1671
0
  value &= 0x1f;
1672
0
  return insn | (value << 21) | (value << 11);
1673
0
}
1674
1675
static int64_t
1676
extract_rsb (uint64_t insn,
1677
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1678
       int *invalid)
1679
601
{
1680
601
  int64_t rs = (insn >> 21) & 0x1f;
1681
601
  int64_t rb = (insn >> 11) & 0x1f;
1682
1683
601
  if (rs != rb)
1684
81
    *invalid = 1;
1685
601
  return rs;
1686
601
}
1687
1688
/* The RB field in an lswx instruction, which has special value
1689
   restrictions.  */
1690
1691
static uint64_t
1692
insert_rbx (uint64_t insn,
1693
      int64_t value,
1694
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1695
      const char **errmsg)
1696
0
{
1697
0
  int64_t rtvalue = (insn >> 21) & 0x1f;
1698
1699
0
  if (value == rtvalue)
1700
0
    *errmsg = _("source and target register operands must be different");
1701
0
  return insn | ((value & 0x1f) << 11);
1702
0
}
1703
1704
static int64_t
1705
extract_rbx (uint64_t insn,
1706
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1707
       int *invalid)
1708
106
{
1709
106
  uint64_t rtvalue = (insn >> 21) & 0x1f;
1710
106
  uint64_t rbvalue = (insn >> 11) & 0x1f;
1711
1712
106
  if (rbvalue == rtvalue)
1713
34
    *invalid = 1;
1714
106
  return rbvalue;
1715
106
}
1716
1717
/* The SCI8 field is made up of SCL and {U,N}I8 fields.  */
1718
static uint64_t
1719
insert_sci8 (uint64_t insn,
1720
       int64_t value,
1721
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1722
       const char **errmsg)
1723
0
{
1724
0
  uint64_t fill_scale = 0;
1725
0
  uint64_t ui8 = value;
1726
1727
0
  if ((ui8 & 0xffffff00) == 0)
1728
0
    ;
1729
0
  else if ((ui8 & 0xffffff00) == 0xffffff00)
1730
0
    fill_scale = 0x400;
1731
0
  else if ((ui8 & 0xffff00ff) == 0)
1732
0
    {
1733
0
      fill_scale = 1 << 8;
1734
0
      ui8 >>= 8;
1735
0
    }
1736
0
  else if ((ui8 & 0xffff00ff) == 0xffff00ff)
1737
0
    {
1738
0
      fill_scale = 0x400 | (1 << 8);
1739
0
      ui8 >>= 8;
1740
0
    }
1741
0
  else if ((ui8 & 0xff00ffff) == 0)
1742
0
    {
1743
0
      fill_scale = 2 << 8;
1744
0
      ui8 >>= 16;
1745
0
    }
1746
0
  else if ((ui8 & 0xff00ffff) == 0xff00ffff)
1747
0
    {
1748
0
      fill_scale = 0x400 | (2 << 8);
1749
0
      ui8 >>= 16;
1750
0
    }
1751
0
  else if ((ui8 & 0x00ffffff) == 0)
1752
0
    {
1753
0
      fill_scale = 3 << 8;
1754
0
      ui8 >>= 24;
1755
0
    }
1756
0
  else if ((ui8 & 0x00ffffff) == 0x00ffffff)
1757
0
    {
1758
0
      fill_scale = 0x400 | (3 << 8);
1759
0
      ui8 >>= 24;
1760
0
    }
1761
0
  else
1762
0
    {
1763
0
      *errmsg = _("illegal immediate value");
1764
0
      ui8 = 0;
1765
0
    }
1766
1767
0
  return insn | fill_scale | (ui8 & 0xff);
1768
0
}
1769
1770
static int64_t
1771
extract_sci8 (uint64_t insn,
1772
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1773
        int *invalid ATTRIBUTE_UNUSED)
1774
0
{
1775
0
  int64_t fill = insn & 0x400;
1776
0
  int64_t scale_factor = (insn & 0x300) >> 5;
1777
0
  int64_t value = (insn & 0xff) << scale_factor;
1778
1779
0
  if (fill != 0)
1780
0
    value |= ~((int64_t) 0xff << scale_factor);
1781
0
  return value;
1782
0
}
1783
1784
static uint64_t
1785
insert_sci8n (uint64_t insn,
1786
        int64_t value,
1787
        ppc_cpu_t dialect,
1788
        const char **errmsg)
1789
0
{
1790
0
  return insert_sci8 (insn, -value, dialect, errmsg);
1791
0
}
1792
1793
static int64_t
1794
extract_sci8n (uint64_t insn,
1795
         ppc_cpu_t dialect,
1796
         int *invalid)
1797
0
{
1798
0
  return -extract_sci8 (insn, dialect, invalid);
1799
0
}
1800
1801
static uint64_t
1802
insert_oimm (uint64_t insn,
1803
       int64_t value,
1804
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1805
       const char **errmsg ATTRIBUTE_UNUSED)
1806
0
{
1807
0
  return insn | (((value - 1) & 0x1f) << 4);
1808
0
}
1809
1810
static int64_t
1811
extract_oimm (uint64_t insn,
1812
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1813
        int *invalid ATTRIBUTE_UNUSED)
1814
0
{
1815
0
  return ((insn >> 4) & 0x1f) + 1;
1816
0
}
1817
1818
/* The SR field in the SHA3 Hash instruction.
1819
   Values 0–23 are valid; SR>23 are reserved.  */
1820
1821
static uint64_t
1822
insert_sr (uint64_t insn,
1823
     int64_t value,
1824
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1825
     const char **errmsg)
1826
0
{
1827
0
  if (value < 0 || value > 23)
1828
0
    *errmsg = _("invalid SR value (must be 0-23)");
1829
0
  return insn | ((value & 0x1f) << 11);
1830
0
}
1831
1832
static int64_t
1833
extract_sr (uint64_t insn,
1834
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1835
      int *invalid)
1836
0
{
1837
0
  int64_t value = (insn >> 11) & 0x1f;
1838
0
  if (value > 23)
1839
0
    *invalid = 1;
1840
0
  return value;
1841
0
}
1842
1843
/* The 2-bit BL field in the SHA Pad instruction.
1844
   Invalid combinations: ID=1 with BL=0 or BL=1.  */
1845
1846
static uint64_t
1847
insert_bl (uint64_t insn,
1848
     int64_t value,
1849
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1850
     const char **errmsg)
1851
0
{
1852
0
  int id = (insn >> 19) & 0x3;
1853
0
  if (id == 1 && (value == 0 || value == 1))
1854
0
    *errmsg = _("invalid combination: ID=1 with BL=0 or BL=1");
1855
0
  return insn | ((value & 0x3) << 16);
1856
0
}
1857
1858
static int64_t
1859
extract_bl (uint64_t insn,
1860
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1861
      int *invalid)
1862
0
{
1863
0
  int64_t id = (insn >> 19) & 0x3;
1864
0
  int64_t bl = (insn >> 16) & 0x3;
1865
0
  if (id == 1 && (bl == 0 || bl == 1))
1866
0
    *invalid = 1;
1867
0
  return bl;
1868
0
}
1869
1870
/* The n operand of rotrwi, sets SH = 32 - n.  */
1871
1872
static uint64_t
1873
insert_rrwn (uint64_t insn,
1874
       int64_t value,
1875
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1876
       const char **errmsg ATTRIBUTE_UNUSED)
1877
0
{
1878
0
  return insn | ((-value & 0x1f) << 11);
1879
0
}
1880
1881
static int64_t
1882
extract_rrwn (uint64_t insn,
1883
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1884
        int *invalid ATTRIBUTE_UNUSED)
1885
0
{
1886
0
  return 31 & -(insn >> 11);
1887
0
}
1888
1889
/* The n operand of slwi, sets SH = n and ME = 31 - n.  */
1890
1891
static uint64_t
1892
insert_slwn (uint64_t insn,
1893
       int64_t value,
1894
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1895
       const char **errmsg ATTRIBUTE_UNUSED)
1896
0
{
1897
0
  return insn | ((value & 0x1f) << 11) | ((~value & 0x1f) << 1);
1898
0
}
1899
1900
static int64_t
1901
extract_slwn (uint64_t insn,
1902
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1903
        int *invalid)
1904
420
{
1905
420
  int64_t sh = (insn >> 11) & 0x1f;
1906
420
  int64_t nme = ~(insn >> 1) & 0x1f;
1907
420
  if (sh != nme)
1908
360
    *invalid = 1;
1909
420
  return sh;
1910
420
}
1911
1912
/* The n operand of srwi, sets SH = 32 - n and MB = n.  */
1913
1914
static uint64_t
1915
insert_srwn (uint64_t insn,
1916
       int64_t value,
1917
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1918
       const char **errmsg ATTRIBUTE_UNUSED)
1919
0
{
1920
0
  return insn | ((-value & 0x1f) << 11) | ((value & 0x1f) << 6);
1921
0
}
1922
1923
static int64_t
1924
extract_srwn (uint64_t insn,
1925
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1926
        int *invalid)
1927
225
{
1928
225
  int64_t nsh = -(insn >> 11) & 0x1f;
1929
225
  int64_t mb = (insn >> 6) & 0x1f;
1930
225
  if (nsh != mb)
1931
199
    *invalid = 1;
1932
225
  return nsh;
1933
225
}
1934
1935
/* The SH field in an MD form instruction.  This is split.  */
1936
1937
static uint64_t
1938
insert_sh6 (uint64_t insn,
1939
      int64_t value,
1940
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1941
      const char **errmsg ATTRIBUTE_UNUSED)
1942
0
{
1943
0
  return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
1944
0
}
1945
1946
static int64_t
1947
extract_sh6 (uint64_t insn,
1948
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1949
       int *invalid ATTRIBUTE_UNUSED)
1950
6.23k
{
1951
6.23k
  return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
1952
6.23k
}
1953
1954
/* The n operand of rotrdi, which writes to SH field.  */
1955
1956
static uint64_t
1957
insert_rrdn (uint64_t insn,
1958
       int64_t value,
1959
       ppc_cpu_t dialect,
1960
       const char **errmsg)
1961
0
{
1962
0
  return insert_sh6 (insn, -value, dialect, errmsg);
1963
0
}
1964
1965
static int64_t
1966
extract_rrdn (uint64_t insn,
1967
        ppc_cpu_t dialect,
1968
        int *invalid)
1969
950
{
1970
950
  return -extract_sh6 (insn, dialect, invalid) & 63;
1971
950
}
1972
1973
/* The n operand of sldi, which writes to SH and ME fields.  */
1974
1975
static uint64_t
1976
insert_sldn (uint64_t insn,
1977
       int64_t value,
1978
       ppc_cpu_t dialect,
1979
       const char **errmsg)
1980
0
{
1981
0
  insn = insert_sh6 (insn, value, dialect, errmsg);
1982
0
  return insert_crdn (insn, value, dialect, errmsg);
1983
0
}
1984
1985
static int64_t
1986
extract_sldn (uint64_t insn,
1987
        ppc_cpu_t dialect,
1988
        int *invalid)
1989
702
{
1990
702
  int64_t sh = extract_sh6 (insn, dialect, invalid);
1991
702
  int64_t me = extract_crdn (insn, dialect, invalid);
1992
702
  if (me != sh)
1993
646
    *invalid = 1;
1994
702
  return sh;
1995
702
}
1996
1997
/* The n operand of srdi, which writes to SH and MB fields.  */
1998
1999
static uint64_t
2000
insert_srdn (uint64_t insn,
2001
       int64_t value,
2002
       ppc_cpu_t dialect,
2003
       const char **errmsg)
2004
0
{
2005
0
  insn = insert_rrdn (insn, value, dialect, errmsg);
2006
0
  return insert_mb6 (insn, value, dialect, errmsg);
2007
0
}
2008
2009
static int64_t
2010
extract_srdn (uint64_t insn,
2011
        ppc_cpu_t dialect,
2012
        int *invalid)
2013
950
{
2014
950
  int64_t sh = extract_rrdn (insn, dialect, invalid);
2015
950
  int64_t mb = extract_mb6 (insn, dialect, invalid);
2016
950
  if (mb != sh)
2017
798
    *invalid = 1;
2018
950
  return sh;
2019
950
}
2020
2021
/* The b operand of extrdi, which sets SH field.  */
2022
2023
static uint64_t
2024
insert_erdb (uint64_t insn,
2025
       int64_t value,
2026
       ppc_cpu_t dialect,
2027
       const char **errmsg)
2028
0
{
2029
0
  int64_t n = extract_erdn (insn, dialect, NULL);
2030
0
  return insert_sh6 (insn, value + n, dialect, errmsg);
2031
0
}
2032
2033
static int64_t
2034
extract_erdb (uint64_t insn,
2035
        ppc_cpu_t dialect,
2036
        int *invalid)
2037
0
{
2038
0
  int64_t sh = extract_sh6 (insn, dialect, invalid);
2039
0
  int64_t n = extract_erdn (insn, dialect, invalid);
2040
0
  return (sh - n) & 63;
2041
0
}
2042
2043
/* The b and n operands of clrlsldi.  */
2044
2045
static uint64_t
2046
insert_csldn (uint64_t insn,
2047
        int64_t value,
2048
        ppc_cpu_t dialect,
2049
        const char **errmsg)
2050
0
{
2051
0
  uint64_t mb6 = 0x3f << 5;
2052
0
  int64_t b = extract_mb6 (insn, dialect, NULL);
2053
0
  insn = insert_mb6 (insn & ~mb6, b - value, dialect, errmsg);
2054
0
  return insert_sh6 (insn, value, dialect, errmsg);
2055
0
}
2056
2057
static int64_t
2058
extract_csldb (uint64_t insn,
2059
         ppc_cpu_t dialect,
2060
         int *invalid)
2061
0
{
2062
0
  int64_t sh = extract_sh6 (insn, dialect, invalid);
2063
0
  int64_t mb = extract_mb6 (insn, dialect, invalid);
2064
0
  return (mb + sh) & 63;
2065
0
}
2066
2067
/* The b and n operands of insrdi.  */
2068
2069
static uint64_t
2070
insert_irdb (uint64_t insn,
2071
       int64_t value,
2072
       ppc_cpu_t dialect,
2073
       const char **errmsg)
2074
0
{
2075
0
  uint64_t sh6 = (0x1f << 11) | 2;
2076
0
  int64_t n = extract_sh6 (insn, dialect, NULL);
2077
0
  insn = insert_sh6 (insn & ~sh6, -(value + n), dialect, errmsg);
2078
0
  return insert_mb6 (insn, value, dialect, errmsg);
2079
0
}
2080
2081
static int64_t
2082
extract_irdn (uint64_t insn,
2083
        ppc_cpu_t dialect,
2084
        int *invalid)
2085
0
{
2086
0
  int64_t sh = extract_sh6 (insn, dialect, invalid);
2087
0
  int64_t mb = extract_mb6 (insn, dialect, invalid);
2088
0
  return (~(mb + sh) & 63) + 1;
2089
0
}
2090
2091
/* The SPR field in an XFX form instruction.  This is flipped--the
2092
   lower 5 bits are stored in the upper 5 and vice- versa.  */
2093
2094
static uint64_t
2095
insert_spr (uint64_t insn,
2096
      int64_t value,
2097
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2098
      const char **errmsg ATTRIBUTE_UNUSED)
2099
0
{
2100
0
  return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
2101
0
}
2102
2103
static int64_t
2104
extract_spr (uint64_t insn,
2105
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2106
       int *invalid ATTRIBUTE_UNUSED)
2107
362
{
2108
362
  return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
2109
362
}
2110
2111
/* Some dialects have 8 [DI]BAT registers instead of the standard 4.  */
2112
84
#define ALLOW8_BAT (PPC_OPCODE_750)
2113
2114
static uint64_t
2115
insert_sprbat (uint64_t insn,
2116
         int64_t value,
2117
         ppc_cpu_t dialect,
2118
         const char **errmsg)
2119
0
{
2120
0
  if ((uint64_t) value > 7
2121
0
      || ((uint64_t) value > 3 && (dialect & ALLOW8_BAT) == 0))
2122
0
    *errmsg = _("invalid bat number");
2123
2124
  /* If this is [di]bat4..7 then use spr 560..575, otherwise 528..543.  */
2125
0
  if ((uint64_t) value > 3)
2126
0
    value = ((value & 3) << 6) | 1;
2127
0
  else
2128
0
    value = value << 6;
2129
2130
0
  return insn | (value << 11);
2131
0
}
2132
2133
static int64_t
2134
extract_sprbat (uint64_t insn,
2135
    ppc_cpu_t dialect,
2136
    int *invalid)
2137
92
{
2138
92
  uint64_t val = (insn >> 17) & 0x3;
2139
2140
92
  val = val + ((insn >> 9) & 0x4);
2141
92
  if (val > 3 && (dialect & ALLOW8_BAT) == 0)
2142
84
    *invalid = 1;
2143
92
  return val;
2144
92
}
2145
2146
/* Some dialects have 8 SPRG registers instead of the standard 4.  */
2147
348
#define ALLOW8_SPRG (PPC_OPCODE_BOOKE | PPC_OPCODE_405)
2148
2149
static uint64_t
2150
insert_sprg (uint64_t insn,
2151
       int64_t value,
2152
       ppc_cpu_t dialect,
2153
       const char **errmsg)
2154
0
{
2155
0
  if ((uint64_t) value > 7
2156
0
      || ((uint64_t) value > 3 && (dialect & ALLOW8_SPRG) == 0))
2157
0
    *errmsg = _("invalid sprg number");
2158
2159
  /* If this is mfsprg4..7 then use spr 260..263 which can be read in
2160
     user mode.  Anything else must use spr 272..279.  */
2161
0
  if ((uint64_t) value <= 3 || (insn & 0x100) != 0)
2162
0
    value |= 0x10;
2163
2164
0
  return insn | ((value & 0x17) << 16);
2165
0
}
2166
2167
static int64_t
2168
extract_sprg (uint64_t insn,
2169
        ppc_cpu_t dialect,
2170
        int *invalid)
2171
374
{
2172
374
  uint64_t val = (insn >> 16) & 0x1f;
2173
2174
  /* mfsprg can use 260..263 and 272..279.  mtsprg only uses spr 272..279
2175
     If not BOOKE, 405 or VLE, then both use only 272..275.  */
2176
374
  if ((val - 0x10 > 3 && (dialect & ALLOW8_SPRG) == 0)
2177
254
      || (val - 0x10 > 7 && (insn & 0x100) != 0)
2178
237
      || val <= 3
2179
183
      || (val & 8) != 0)
2180
332
    *invalid = 1;
2181
374
  return val & 7;
2182
374
}
2183
2184
/* The TBR field in an XFX instruction.  This is just like SPR, but it
2185
   is optional.  */
2186
2187
static uint64_t
2188
insert_tbr (uint64_t insn,
2189
      int64_t value,
2190
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2191
      const char **errmsg)
2192
0
{
2193
0
  if (value != 268 && value != 269)
2194
0
    *errmsg = _("invalid tbr number");
2195
0
  return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
2196
0
}
2197
2198
static int64_t
2199
extract_tbr (uint64_t insn,
2200
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2201
       int *invalid)
2202
655
{
2203
  /* Missing optional operands have a value of 268.  */
2204
655
  if (*invalid < 0)
2205
161
    return 268;
2206
2207
494
  int64_t ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
2208
494
  if (ret != 268 && ret != 269)
2209
172
    *invalid = 1;
2210
494
  return ret;
2211
655
}
2212
2213
/* The XT and XS fields in an XX1 or XX3 form instruction.  This is split.  */
2214
2215
static uint64_t
2216
insert_xt6 (uint64_t insn,
2217
      int64_t value,
2218
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2219
      const char **errmsg ATTRIBUTE_UNUSED)
2220
0
{
2221
0
  return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 5);
2222
0
}
2223
2224
static int64_t
2225
extract_xt6 (uint64_t insn,
2226
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2227
       int *invalid ATTRIBUTE_UNUSED)
2228
13.5k
{
2229
13.5k
  return ((insn << 5) & 0x20) | ((insn >> 21) & 0x1f);
2230
13.5k
}
2231
2232
/* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
2233
static uint64_t
2234
insert_xtq6 (uint64_t insn,
2235
       int64_t value,
2236
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2237
       const char **errmsg ATTRIBUTE_UNUSED)
2238
0
{
2239
0
  return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 2);
2240
0
}
2241
2242
static int64_t
2243
extract_xtq6 (uint64_t insn,
2244
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2245
        int *invalid ATTRIBUTE_UNUSED)
2246
5.92k
{
2247
5.92k
  return ((insn << 2) & 0x20) | ((insn >> 21) & 0x1f);
2248
5.92k
}
2249
2250
/* The 5-bit XAp field in an XX3 form instruction.  This is split.  */
2251
2252
static uint64_t
2253
insert_xa5 (uint64_t insn,
2254
      int64_t value,
2255
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2256
      const char **errmsg ATTRIBUTE_UNUSED)
2257
0
{
2258
0
  return insn | ((value & 0x1e) << 16) | ((value & 0x20) >> 3);
2259
0
}
2260
2261
static int64_t
2262
extract_xa5 (uint64_t insn,
2263
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2264
       int *invalid ATTRIBUTE_UNUSED)
2265
231
{
2266
231
  return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1e);
2267
231
}
2268
2269
/* The XA field in an XX3 form instruction.  This is split.  */
2270
2271
static uint64_t
2272
insert_xa6 (uint64_t insn,
2273
      int64_t value,
2274
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2275
      const char **errmsg ATTRIBUTE_UNUSED)
2276
0
{
2277
0
  return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3);
2278
0
}
2279
2280
static int64_t
2281
extract_xa6 (uint64_t insn,
2282
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2283
       int *invalid ATTRIBUTE_UNUSED)
2284
13.3k
{
2285
13.3k
  return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
2286
13.3k
}
2287
2288
/* The XA field in an MMA XX3 form instruction.  This is split
2289
   and must not overlap with the ACC operand.  */
2290
2291
static uint64_t
2292
insert_xa6a (uint64_t insn,
2293
       int64_t value,
2294
       ppc_cpu_t dialect,
2295
       const char **errmsg)
2296
0
{
2297
0
  int64_t acc = (insn >> 23) & 0x7;
2298
  /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions.  */
2299
0
  if ((dialect & PPC_OPCODE_FUTURE) == 0
2300
0
      && (value >> 2) == acc)
2301
0
    *errmsg = _("VSR overlaps ACC operand");
2302
0
  return insert_xa6 (insn, value, dialect, errmsg);
2303
0
}
2304
2305
static int64_t
2306
extract_xa6a (uint64_t insn,
2307
        ppc_cpu_t dialect,
2308
        int *invalid)
2309
192
{
2310
192
  int64_t acc = (insn >> 23) & 0x7;
2311
192
  int64_t value = extract_xa6 (insn, dialect, invalid);
2312
  /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions.  */
2313
192
  if ((dialect & PPC_OPCODE_FUTURE) == 0
2314
192
      && (value >> 2) == acc)
2315
80
    *invalid = 1;
2316
192
  return value;
2317
192
}
2318
2319
/* The 5-bit XB field in an XX3 form instruction.  This is split.  */
2320
2321
static uint64_t
2322
insert_xb5 (uint64_t insn,
2323
      int64_t value,
2324
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2325
      const char **errmsg ATTRIBUTE_UNUSED)
2326
0
{
2327
0
  return insn | ((value & 0x1e) << 11) | ((value & 0x20) >> 4);
2328
0
}
2329
2330
static int64_t
2331
extract_xb5 (uint64_t insn,
2332
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2333
       int *invalid ATTRIBUTE_UNUSED)
2334
89
{
2335
89
  return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1e);
2336
89
}
2337
/* The XB field in an XX3 form instruction.  This is split.  */
2338
2339
static uint64_t
2340
insert_xb6 (uint64_t insn,
2341
      int64_t value,
2342
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2343
      const char **errmsg ATTRIBUTE_UNUSED)
2344
0
{
2345
0
  return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
2346
0
}
2347
2348
static int64_t
2349
extract_xb6 (uint64_t insn,
2350
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2351
       int *invalid ATTRIBUTE_UNUSED)
2352
13.8k
{
2353
13.8k
  return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1f);
2354
13.8k
}
2355
2356
/* The XB field in an MMA XX3 form instruction.  This is split
2357
   and must not overlap with the ACC operand.  */
2358
2359
static uint64_t
2360
insert_xb6a (uint64_t insn,
2361
       int64_t value,
2362
       ppc_cpu_t dialect,
2363
       const char **errmsg)
2364
0
{
2365
0
  int64_t acc = (insn >> 23) & 0x7;
2366
  /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions.  */
2367
0
  if ((dialect & PPC_OPCODE_FUTURE) == 0
2368
0
      && (value >> 2) == acc)
2369
0
    *errmsg = _("VSR overlaps ACC operand");
2370
0
  return insert_xb6 (insn, value, dialect, errmsg);
2371
0
}
2372
2373
static int64_t
2374
extract_xb6a (uint64_t insn,
2375
        ppc_cpu_t dialect,
2376
        int *invalid)
2377
192
{
2378
192
  int64_t acc = (insn >> 23) & 0x7;
2379
192
  int64_t value = extract_xb6 (insn, dialect, invalid);
2380
  /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions.  */
2381
192
  if ((dialect & PPC_OPCODE_FUTURE) == 0
2382
192
      && (value >> 2) == acc)
2383
52
    *invalid = 1;
2384
192
  return value;
2385
192
}
2386
2387
/* The XA and XB fields in an XX3 form instruction when they must be the same.
2388
   This is used for extended mnemonics like xvmovdp.  The extraction function
2389
   enforces that the fields are the same.  */
2390
2391
static uint64_t
2392
insert_xab6 (uint64_t insn,
2393
       int64_t value,
2394
       ppc_cpu_t dialect,
2395
       const char **errmsg)
2396
0
{
2397
0
  return insert_xa6 (insn, value, dialect, errmsg)
2398
0
   | insert_xb6 (insn, value, dialect, errmsg);
2399
0
}
2400
2401
static int64_t
2402
extract_xab6 (uint64_t insn,
2403
        ppc_cpu_t dialect,
2404
        int *invalid)
2405
650
{
2406
650
  int64_t xa6 = extract_xa6 (insn, dialect, invalid);
2407
650
  int64_t xb6 = extract_xb6 (insn, dialect, invalid);
2408
2409
650
  if (xa6 != xb6)
2410
537
    *invalid = 1;
2411
650
  return xa6;
2412
650
}
2413
2414
/* The S field (bits 21-23) in vector multiply multiply XX3 form instruction.  */
2415
2416
static uint64_t
2417
insert_s3 (uint64_t insn,
2418
     int64_t value,
2419
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2420
     const char **errmsg)
2421
0
{
2422
0
  if (value < 0 || value > 6)
2423
0
    *errmsg = _("invalid S value (must be 0 - 6)");
2424
0
  return insn | ((value & 0x7) << 8);
2425
0
}
2426
2427
static int64_t
2428
extract_s3 (uint64_t insn,
2429
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2430
      int *invalid)
2431
348
{
2432
348
  int64_t value = (insn >> 8) & 0x7;
2433
2434
348
  if (value == 7)
2435
86
    *invalid = 1;
2436
348
  return value;
2437
348
}
2438
2439
/* The XC field in an XX4 form instruction.  This is split.  */
2440
2441
static uint64_t
2442
insert_xc6 (uint64_t insn,
2443
      int64_t value,
2444
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2445
      const char **errmsg ATTRIBUTE_UNUSED)
2446
0
{
2447
0
  return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 2);
2448
0
}
2449
2450
static int64_t
2451
extract_xc6 (uint64_t insn,
2452
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2453
       int *invalid ATTRIBUTE_UNUSED)
2454
5.54k
{
2455
5.54k
  return ((insn << 2) & 0x20) | ((insn >> 6) & 0x1f);
2456
5.54k
}
2457
2458
/* The split XTp and XSp field in a vector paired insn.  */
2459
2460
static uint64_t
2461
insert_xtp (uint64_t insn,
2462
      int64_t value,
2463
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2464
      const char **errmsg ATTRIBUTE_UNUSED)
2465
0
{
2466
0
  return insn | ((value & 0x1e) << 21) | ((value & 0x20) << (21 - 5));
2467
0
}
2468
2469
static int64_t
2470
extract_xtp (uint64_t insn,
2471
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2472
       int *invalid ATTRIBUTE_UNUSED)
2473
3.01k
{
2474
3.01k
  return ((insn >> (21 - 5)) & 0x20) | ((insn >> 21) & 0x1e);
2475
3.01k
}
2476
2477
/* The split XT field in a vector splat insn.  */
2478
2479
static uint64_t
2480
insert_xts (uint64_t insn,
2481
      int64_t value,
2482
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2483
      const char **errmsg ATTRIBUTE_UNUSED)
2484
0
{
2485
0
  return insn | ((value & 0x1f) << 21) | ((value & 0x20) << (16 - 5));
2486
0
}
2487
2488
static int64_t
2489
extract_xts (uint64_t insn,
2490
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2491
       int *invalid ATTRIBUTE_UNUSED)
2492
10
{
2493
10
  return ((insn >> (16 - 5)) & 0x20) | ((insn >> 21) & 0x1f);
2494
10
}
2495
2496
static uint64_t
2497
insert_dm (uint64_t insn,
2498
     int64_t value,
2499
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2500
     const char **errmsg)
2501
0
{
2502
0
  if (value != 0 && value != 1)
2503
0
    *errmsg = _("invalid constant");
2504
0
  return insn | (((value) ? 3 : 0) << 8);
2505
0
}
2506
2507
static int64_t
2508
extract_dm (uint64_t insn,
2509
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2510
      int *invalid)
2511
602
{
2512
602
  int64_t value = (insn >> 8) & 3;
2513
602
  if (value != 0 && value != 3)
2514
80
    *invalid = 1;
2515
602
  return (value) ? 1 : 0;
2516
602
}
2517
2518
static uint64_t
2519
insert_m2 (uint64_t insn,
2520
    int64_t value,
2521
    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2522
    const char **errmsg)
2523
0
{
2524
0
  if (value != 0 && value != 1 && value != 2)
2525
0
    *errmsg = _("invalid M value");
2526
0
  return insn | ((value & 0x2) << (15)) | ((value & 0x1) << 11);
2527
0
}
2528
2529
static int64_t
2530
extract_m2 (uint64_t insn,
2531
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2532
     int *invalid)
2533
75
{
2534
75
  int64_t value = ((insn >> 15) & 0x2) | ((insn >> 11) & 0x1);
2535
75
  if (value == 3)
2536
75
    *invalid = 1;
2537
75
  return value;
2538
75
}
2539
2540
/* The VLESIMM field in an I16A form instruction.  This is split.  */
2541
2542
static uint64_t
2543
insert_vlesi (uint64_t insn,
2544
        int64_t value,
2545
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2546
        const char **errmsg ATTRIBUTE_UNUSED)
2547
0
{
2548
0
  return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2549
0
}
2550
2551
static int64_t
2552
extract_vlesi (uint64_t insn,
2553
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2554
         int *invalid ATTRIBUTE_UNUSED)
2555
0
{
2556
0
  int64_t value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2557
0
  value = (value ^ 0x8000) - 0x8000;
2558
0
  return value;
2559
0
}
2560
2561
static uint64_t
2562
insert_vlensi (uint64_t insn,
2563
         int64_t value,
2564
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2565
         const char **errmsg ATTRIBUTE_UNUSED)
2566
0
{
2567
0
  value = -value;
2568
0
  return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2569
0
}
2570
static int64_t
2571
extract_vlensi (uint64_t insn,
2572
    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2573
    int *invalid)
2574
0
{
2575
0
  int64_t value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2576
0
  value = (value ^ 0x8000) - 0x8000;
2577
  /* Don't use for disassembly.  */
2578
0
  *invalid = 1;
2579
0
  return -value;
2580
0
}
2581
2582
/* The VLEUIMM field in an I16A form instruction.  This is split.  */
2583
2584
static uint64_t
2585
insert_vleui (uint64_t insn,
2586
        int64_t value,
2587
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2588
        const char **errmsg ATTRIBUTE_UNUSED)
2589
0
{
2590
0
  return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2591
0
}
2592
2593
static int64_t
2594
extract_vleui (uint64_t insn,
2595
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2596
         int *invalid ATTRIBUTE_UNUSED)
2597
0
{
2598
0
  return ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2599
0
}
2600
2601
/* The VLEUIMML field in an I16L form instruction.  This is split.  */
2602
2603
static uint64_t
2604
insert_vleil (uint64_t insn,
2605
        int64_t value,
2606
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2607
        const char **errmsg ATTRIBUTE_UNUSED)
2608
0
{
2609
0
  return insn | ((value & 0xf800) << 5) | (value & 0x7ff);
2610
0
}
2611
2612
static int64_t
2613
extract_vleil (uint64_t insn,
2614
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2615
         int *invalid ATTRIBUTE_UNUSED)
2616
0
{
2617
0
  return ((insn >> 5) & 0xf800) | (insn & 0x7ff);
2618
0
}
2619
2620
static uint64_t
2621
insert_evuimm1_ex0 (uint64_t insn,
2622
        int64_t value,
2623
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2624
        const char **errmsg)
2625
0
{
2626
0
  if (value <= 0 || value > 0x1f)
2627
0
    *errmsg = _("UIMM = 00000 is illegal");
2628
0
  return insn | ((value & 0x1f) << 11);
2629
0
}
2630
2631
static int64_t
2632
extract_evuimm1_ex0 (uint64_t insn,
2633
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2634
         int *invalid)
2635
289
{
2636
289
  int64_t value = ((insn >> 11) & 0x1f);
2637
289
  if (value == 0)
2638
133
    *invalid = 1;
2639
2640
289
  return value;
2641
289
}
2642
2643
static uint64_t
2644
insert_evuimm2_ex0 (uint64_t insn,
2645
        int64_t value,
2646
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2647
        const char **errmsg)
2648
0
{
2649
0
  if (value <= 0 || value > 0x3e)
2650
0
    *errmsg = _("UIMM = 00000 is illegal");
2651
0
  return insn | ((value & 0x3e) << 10);
2652
0
}
2653
2654
static int64_t
2655
extract_evuimm2_ex0 (uint64_t insn,
2656
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2657
         int *invalid)
2658
244
{
2659
244
  int64_t value = ((insn >> 10) & 0x3e);
2660
244
  if (value == 0)
2661
42
    *invalid = 1;
2662
2663
244
  return value;
2664
244
}
2665
2666
static uint64_t
2667
insert_evuimm4_ex0 (uint64_t insn,
2668
        int64_t value,
2669
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2670
        const char **errmsg)
2671
0
{
2672
0
  if (value <= 0 || value > 0x7c)
2673
0
    *errmsg = _("UIMM = 00000 is illegal");
2674
0
  return insn | ((value & 0x7c) << 9);
2675
0
}
2676
2677
static int64_t
2678
extract_evuimm4_ex0 (uint64_t insn,
2679
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2680
         int *invalid)
2681
167
{
2682
167
  int64_t value = ((insn >> 9) & 0x7c);
2683
167
  if (value == 0)
2684
131
    *invalid = 1;
2685
2686
167
  return value;
2687
167
}
2688
2689
static uint64_t
2690
insert_evuimm8_ex0 (uint64_t insn,
2691
        int64_t value,
2692
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2693
        const char **errmsg)
2694
0
{
2695
0
  if (value <= 0 || value > 0xf8)
2696
0
    *errmsg = _("UIMM = 00000 is illegal");
2697
0
  return insn | ((value & 0xf8) << 8);
2698
0
}
2699
2700
static int64_t
2701
extract_evuimm8_ex0 (uint64_t insn,
2702
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2703
         int *invalid)
2704
173
{
2705
173
  int64_t value = ((insn >> 8) & 0xf8);
2706
173
  if (value == 0)
2707
47
    *invalid = 1;
2708
2709
173
  return value;
2710
173
}
2711
2712
static uint64_t
2713
insert_evuimm_lt8 (uint64_t insn,
2714
       int64_t value,
2715
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2716
       const char **errmsg)
2717
0
{
2718
0
  if (value < 0 || value > 7)
2719
0
    *errmsg = _("UIMM values >7 are illegal");
2720
0
  return insn | ((value & 0x7) << 11);
2721
0
}
2722
2723
static int64_t
2724
extract_evuimm_lt8 (uint64_t insn,
2725
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2726
        int *invalid)
2727
254
{
2728
254
  int64_t value = ((insn >> 11) & 0x1f);
2729
254
  if (value > 7)
2730
184
    *invalid = 1;
2731
2732
254
  return value;
2733
254
}
2734
2735
static uint64_t
2736
insert_evuimm_lt16 (uint64_t insn,
2737
        int64_t value,
2738
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2739
        const char **errmsg)
2740
0
{
2741
0
  if (value < 0 || value > 15)
2742
0
    *errmsg = _("UIMM values >15 are illegal");
2743
0
  return insn | ((value & 0xf) << 11);
2744
0
}
2745
2746
static int64_t
2747
extract_evuimm_lt16 (uint64_t insn,
2748
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2749
         int *invalid)
2750
86
{
2751
86
  int64_t value = ((insn >> 11) & 0x1f);
2752
86
  if (value > 15)
2753
6
    *invalid = 1;
2754
2755
86
  return value;
2756
86
}
2757
2758
static uint64_t
2759
insert_rD_rS_even (uint64_t insn,
2760
       int64_t value,
2761
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2762
       const char **errmsg)
2763
0
{
2764
0
  if ((value & 0x1) != 0)
2765
0
    *errmsg = _("GPR odd is illegal");
2766
0
  return insn | ((value & 0x1e) << 21);
2767
0
}
2768
2769
static int64_t
2770
extract_rD_rS_even (uint64_t insn,
2771
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2772
        int *invalid)
2773
602
{
2774
602
  int64_t value = ((insn >> 21) & 0x1f);
2775
602
  if ((value & 0x1) != 0)
2776
415
    *invalid = 1;
2777
2778
602
  return value;
2779
602
}
2780
2781
static uint64_t
2782
insert_off_lsp (uint64_t insn,
2783
    int64_t value,
2784
    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2785
    const char **errmsg)
2786
0
{
2787
0
  if (value <= 0 || value > 0x3)
2788
0
    *errmsg = _("invalid offset");
2789
0
  return insn | (value & 0x3);
2790
0
}
2791
2792
static int64_t
2793
extract_off_lsp (uint64_t insn,
2794
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2795
     int *invalid)
2796
0
{
2797
0
  int64_t value = (insn & 0x3);
2798
0
  if (value == 0)
2799
0
    *invalid = 1;
2800
2801
0
  return value;
2802
0
}
2803
2804
static uint64_t
2805
insert_off_spe2 (uint64_t insn,
2806
     int64_t value,
2807
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2808
     const char **errmsg)
2809
0
{
2810
0
  if (value <= 0 || value > 0x7)
2811
0
    *errmsg = _("invalid offset");
2812
0
  return insn | (value & 0x7);
2813
0
}
2814
2815
static int64_t
2816
extract_off_spe2 (uint64_t insn,
2817
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2818
      int *invalid)
2819
33
{
2820
33
  int64_t value = (insn & 0x7);
2821
33
  if (value == 0)
2822
3
    *invalid = 1;
2823
2824
33
  return value;
2825
33
}
2826
2827
static uint64_t
2828
insert_Ddd (uint64_t insn,
2829
      int64_t value,
2830
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2831
      const char **errmsg)
2832
0
{
2833
0
  if (value < 0 || value > 0x7)
2834
0
    *errmsg = _("invalid Ddd value");
2835
0
  return insn | ((value & 0x3) << 11) | ((value & 0x4) >> 2);
2836
0
}
2837
2838
static int64_t
2839
extract_Ddd (uint64_t insn,
2840
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2841
       int *invalid ATTRIBUTE_UNUSED)
2842
82
{
2843
82
  return ((insn >> 11) & 0x3) | ((insn << 2) & 0x4);
2844
82
}
2845
2846
static uint64_t
2847
insert_sxl (uint64_t insn,
2848
      int64_t value,
2849
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2850
      const char **errmsg ATTRIBUTE_UNUSED)
2851
0
{
2852
0
  return insn | ((value & 0x1) << 11);
2853
0
}
2854
2855
static int64_t
2856
extract_sxl (uint64_t insn,
2857
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2858
       int *invalid)
2859
0
{
2860
  /* Missing optional operands have a value of one.  */
2861
0
  if (*invalid < 0)
2862
0
    return 1;
2863
0
  return (insn >> 11) & 0x1;
2864
0
}
2865
2866
/* The list of embedded processors that use the embedded operand ordering
2867
   for the 3 operand dcbt and dcbtst instructions.  */
2868
341
#define DCBT_EO (PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \
2869
341
     | PPC_OPCODE_A2)
2870
2871
/* ISA 2.03 and later specify extended mnemonics dcbtct, dcbtds, and
2872
   dcbtstct, dcbtstds with a note saying these should be used in new
2873
   programs rather than the base mnemonics "so that it can be coded
2874
   with TH as the last operand for all categories".  For that reason
2875
   the extended mnemonics are enabled in the assembler for the
2876
   embedded processors, but not for the disassembler so as to display
2877
   the embedded dcbt or dcbtst expected form with TH first for
2878
   embedded programmers.  */
2879
2880
static uint64_t
2881
insert_thct (uint64_t insn,
2882
      int64_t value,
2883
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2884
      const char **errmsg)
2885
0
{
2886
0
  if ((uint64_t) value > 7)
2887
0
    *errmsg = _("invalid TH value");
2888
0
  return insn | ((value & 7) << 21);
2889
0
}
2890
2891
static int64_t
2892
extract_thct (uint64_t insn,
2893
        ppc_cpu_t dialect,
2894
        int *invalid)
2895
248
{
2896
  /* Missing optional operands have a value of 0.  */
2897
248
  if (*invalid < 0)
2898
40
    return 0;
2899
2900
208
  int64_t value = (insn >> 21) & 0x1f;
2901
208
  if (value > 7 || (dialect & DCBT_EO) != 0)
2902
89
    *invalid = 1;
2903
2904
208
  return value;
2905
248
}
2906
2907
static uint64_t
2908
insert_thds (uint64_t insn,
2909
       int64_t value,
2910
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2911
       const char **errmsg)
2912
0
{
2913
0
  if (value < 8 || value > 15)
2914
0
    *errmsg = _("invalid TH value");
2915
0
  return insn | ((value & 0x1f) << 21);
2916
0
}
2917
2918
static int64_t
2919
extract_thds (uint64_t insn,
2920
        ppc_cpu_t dialect,
2921
        int *invalid)
2922
311
{
2923
  /* Missing optional operands have a value of 8.  */
2924
311
  if (*invalid < 0)
2925
74
    return 8;
2926
2927
237
  int64_t value = (insn >> 21) & 0x1f;
2928
237
  if (value < 8 || value > 15 || (dialect & DCBT_EO) != 0)
2929
15
    *invalid = 1;
2930
2931
237
  return value;
2932
311
}
2933

2934
/* The operands table.
2935
2936
   The fields are bitm, shift, insert, extract, flags.
2937
2938
   We used to put parens around the various additions, like the one
2939
   for BA just below.  However, that caused trouble with feeble
2940
   compilers with a limit on depth of a parenthesized expression, like
2941
   (reportedly) the compiler in Microsoft Developer Studio 5.  So we
2942
   omit the parens, since the macros are never used in a context where
2943
   the addition will be ambiguous.  */
2944
2945
const struct powerpc_operand powerpc_operands[] =
2946
{
2947
  /* The zero index is used to indicate the end of the list of
2948
     operands.  */
2949
#define UNUSED 0
2950
  { 0, 0, NULL, NULL, 0 },
2951
2952
  /* The BA field in an XL form instruction.  */
2953
#define BA UNUSED + 1
2954
  /* The BI field in a B form or XL form instruction.  */
2955
#define BI BA
2956
#define BI_MASK (0x1f << 16)
2957
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
2958
2959
  /* The BT, BA and BB fields in a XL form instruction when they must all
2960
     be the same.  */
2961
#define BTAB BA + 1
2962
  { 0x1f, 21, insert_btab, extract_btab, PPC_OPERAND_CR_BIT },
2963
2964
  /* The BB field in an XL form instruction.  */
2965
#define BB BTAB + 1
2966
#define BB_MASK (0x1f << 11)
2967
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR_BIT },
2968
2969
  /* The BA and BB fields in a XL form instruction when they must be
2970
     the same.  */
2971
#define BAB BB + 1
2972
  { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_CR_BIT },
2973
2974
  /* The VRA and VRB fields in a VX form instruction when they must be the same.
2975
     This is used for extended mnemonics like vmr.  */
2976
#define VAB BAB + 1
2977
  { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_VR },
2978
2979
  /* The RA and RB fields in a VX form instruction when they must be the same.
2980
     This is used for extended mnemonics like evmr.  */
2981
#define RAB VAB + 1
2982
  { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_GPR },
2983
2984
#define BC RAB + 1
2985
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_CR_BIT },
2986
2987
  /* The BD field in a B form instruction.  The lower two bits are
2988
     forced to zero.  */
2989
#define BD BC + 1
2990
  { 0xfffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2991
2992
  /* The BD field in a B form instruction when absolute addressing is
2993
     used.  */
2994
#define BDA BD + 1
2995
  { 0xfffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2996
2997
  /* The BD field in a B form instruction when the - modifier is used.
2998
     This sets the y bit of the BO field appropriately.  */
2999
#define BDM BDA + 1
3000
  { 0xfffc, 0, insert_bdm, extract_bdm,
3001
    PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3002
3003
  /* The BD field in a B form instruction when the - modifier is used
3004
     and absolute address is used.  */
3005
#define BDMA BDM + 1
3006
  { 0xfffc, 0, insert_bdm, extract_bdm,
3007
    PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
3008
3009
  /* The BD field in a B form instruction when the + modifier is used.
3010
     This sets the y bit of the BO field appropriately.  */
3011
#define BDP BDMA + 1
3012
  { 0xfffc, 0, insert_bdp, extract_bdp,
3013
    PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3014
3015
  /* The BD field in a B form instruction when the + modifier is used
3016
     and absolute addressing is used.  */
3017
#define BDPA BDP + 1
3018
  { 0xfffc, 0, insert_bdp, extract_bdp,
3019
    PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
3020
3021
  /* The BF field in an X or XL form instruction.  */
3022
#define BF BDPA + 1
3023
  /* The CRFD field in an X form instruction.  */
3024
#define CRFD BF
3025
  /* The CRD field in an XL form instruction.  */
3026
#define CRD BF
3027
  { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG },
3028
3029
  /* The BF field in an X or XL form instruction.  */
3030
#define BFF BF + 1
3031
  { 0x7, 23, NULL, NULL, 0 },
3032
3033
  /* The ACC field in a VSX ACC 8LS:D-form instruction.  */
3034
#define ACC BFF + 1
3035
  { 0x7, 23, NULL, NULL, PPC_OPERAND_ACC },
3036
3037
  /* The DMR field in a MMA instruction.  */
3038
#define DMR ACC + 1
3039
  { 0x7, 23, NULL, NULL, PPC_OPERAND_DMR },
3040
3041
  /* The second DMR field in a two DMR operand MMA instruction.  */
3042
#define DMRAB DMR + 1
3043
  { 0x7, 13, NULL, NULL, PPC_OPERAND_DMR },
3044
3045
  /* The field in a SHA3 instruction representing the target
3046
     DMR pair registers.  */
3047
#define DMRATp DMRAB + 1
3048
  { 0x3, 24, NULL, NULL, PPC_OPERAND_DMR },
3049
3050
  /* An optional BF field.  This is used for comparison instructions,
3051
     in which an omitted BF field is taken as zero.  */
3052
#define OBF DMRATp + 1
3053
  { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
3054
3055
  /* The BFA field in an X or XL form instruction.  */
3056
#define BFA OBF + 1
3057
  { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG },
3058
3059
  /* The BO field in a B form instruction.  Certain values are
3060
     illegal.  */
3061
#define BO BFA + 1
3062
#define BO_MASK (0x1f << 21)
3063
  { 0x1f, 21, insert_bo, extract_bo, 0 },
3064
3065
  /* The BO field in a B form instruction when the - modifier is used.  */
3066
#define BOM BO + 1
3067
  { 0x1f, 21, insert_bom, extract_bom, 0 },
3068
3069
  /* The BO field in a B form instruction when the + modifier is used.  */
3070
#define BOP BOM + 1
3071
  { 0x1f, 21, insert_bop, extract_bop, 0 },
3072
3073
  /* The RM field in an X form instruction.  */
3074
#define RM BOP + 1
3075
#define DD RM
3076
#define mo1 RM
3077
  { 0x3, 11, NULL, NULL, 0 },
3078
3079
#define BH RM + 1
3080
  { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
3081
3082
  /* The BT field in an X or XL form instruction.  */
3083
#define BT BH + 1
3084
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT },
3085
3086
  /* The BT field in a mtfsb0 or mtfsb1 instruction.  */
3087
#define BTF BT + 1
3088
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT | PPC_OPERAND_CR_REG },
3089
3090
  /* The BI16 field in a BD8 form instruction.  */
3091
#define BI16 BTF + 1
3092
  { 0x3, 8, NULL, NULL, PPC_OPERAND_CR_BIT },
3093
3094
  /* The BI32 field in a BD15 form instruction.  */
3095
#define BI32 BI16 + 1
3096
  { 0xf, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
3097
3098
  /* The BO32 field in a BD15 form instruction.  */
3099
#define BO32 BI32 + 1
3100
  { 0x3, 20, NULL, NULL, 0 },
3101
3102
  /* The B8 field in a BD8 form instruction.  */
3103
#define B8 BO32 + 1
3104
  { 0x1fe, -1, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3105
3106
  /* The B15 field in a BD15 form instruction.  The lowest bit is
3107
     forced to zero.  */
3108
#define B15 B8 + 1
3109
  { 0xfffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3110
3111
  /* The B24 field in a BD24 form instruction.  The lowest bit is
3112
     forced to zero.  */
3113
#define B24 B15 + 1
3114
  { 0x1fffffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3115
3116
  /* The condition register number portion of the BI field in a B form
3117
     or XL form instruction.  This is used for the extended
3118
     conditional branch mnemonics, which set the lower two bits of the
3119
     BI field.  This field is optional.  */
3120
#define CR B24 + 1
3121
  { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
3122
3123
  /* The CRB field in an X form instruction.  */
3124
#define CRB CR + 1
3125
  /* The MB field in an M form instruction.  */
3126
#define MB CRB
3127
#define MB_MASK (0x1f << 6)
3128
  { 0x1f, 6, NULL, NULL, 0 },
3129
3130
  /* The CRD32 field in an XL form instruction.  */
3131
#define CRD32 CRB + 1
3132
  { 0x3, 21, NULL, NULL, PPC_OPERAND_CR_REG },
3133
3134
  /* The CRFS field in an X form instruction.  */
3135
#define CRFS CRD32 + 1
3136
  { 0x7, 0, NULL, NULL, PPC_OPERAND_CR_REG },
3137
3138
#define CRS CRFS + 1
3139
  { 0x3, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
3140
3141
  /* The CT field in an X form instruction.  */
3142
#define CT CRS + 1
3143
  /* The MO field in an mbar instruction.  */
3144
#define MO CT
3145
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
3146
3147
  /* The TH field in dcbtct.  */
3148
#define THCT CT + 1
3149
  { 0x1f, 21, insert_thct, extract_thct, PPC_OPERAND_OPTIONAL },
3150
3151
  /* The TH field in dcbtds.  */
3152
#define THDS THCT + 1
3153
  { 0x1f, 21, insert_thds, extract_thds, PPC_OPERAND_OPTIONAL },
3154
3155
  /* The D field in a D form instruction.  This is a displacement off
3156
     a register, and implies that the next operand is a register in
3157
     parentheses.  */
3158
#define D THDS + 1
3159
  { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3160
3161
  /* The D8 field in a D form instruction.  This is a displacement off
3162
     a register, and implies that the next operand is a register in
3163
     parentheses.  */
3164
#define D8 D + 1
3165
  { 0xff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3166
3167
  /* The DCMX field in an X form instruction.  */
3168
#define DCMX D8 + 1
3169
  { 0x7f, 16, NULL, NULL, 0 },
3170
3171
  /* The split DCMX field in an X form instruction.  */
3172
#define DCMXS DCMX + 1
3173
  { 0x7f, PPC_OPSHIFT_INV, insert_dcmxs, extract_dcmxs, 0 },
3174
3175
  /* The DQ field in a DQ form instruction.  This is like D, but the
3176
     lower four bits are forced to zero. */
3177
#define DQ DCMXS + 1
3178
  { 0xfff0, 0, NULL, NULL,
3179
    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
3180
3181
  /* The DS field in a DS form instruction.  This is like D, but the
3182
     lower two bits are forced to zero.  */
3183
#define DS DQ + 1
3184
  { 0xfffc, 0, NULL, NULL,
3185
    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS },
3186
3187
  /* The D field in an 8-byte D form prefix instruction.  This is a displacement
3188
     off a register, and implies that the next operand is a register in
3189
     parentheses.  */
3190
#define D34 DS + 1
3191
  { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_d34, extract_d34,
3192
    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3193
3194
  /* The SI field in an 8-byte D form prefix instruction.  */
3195
#define SI34 D34 + 1
3196
  { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_d34, extract_d34, PPC_OPERAND_SIGNED },
3197
3198
  /* The NSI field in an 8-byte D form prefix instruction.  This is the
3199
     same as the SI34 field, only negated.  */
3200
#define NSI34 SI34 + 1
3201
  { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_nsi34, extract_nsi34,
3202
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
3203
3204
  /* The 32bit SI field in an 8-byte D form prefix instruction.  */
3205
#define SI32 NSI34 + 1
3206
  { UINT64_C(0xffffffff), PPC_OPSHIFT_INV, insert_si32, extract_si32, PPC_OPERAND_SIGNED },
3207
3208
  /* The NSI field in an 8-byte D form prefix instruction with 32bit SI field.  This is
3209
     the same as the SI32 field, only negated.  */
3210
#define NSI32 SI32 + 1
3211
  { UINT64_C(0xffffffff), PPC_OPSHIFT_INV, insert_nsi32, extract_nsi32,
3212
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
3213
3214
  /* The IMM32 field in a vector splat immediate prefix instruction.  */
3215
#define IMM32 NSI32 + 1
3216
  { 0xffffffff, PPC_OPSHIFT_INV, insert_imm32, extract_imm32, 0},
3217
3218
  /* The UIM field in a vector permute extended prefix instruction.  */
3219
#define UIM3 IMM32 + 1
3220
  { 0x7, 32, NULL, NULL, 0},
3221
3222
  /* The UIM field in a vector eval prefix instruction.  */
3223
#define UIM8 UIM3 + 1
3224
  { 0xff, 32, NULL, NULL, 0},
3225
3226
  /* The IX field in xxsplti32dx.  */
3227
#define IX UIM8 + 1
3228
  { 0x1, 17, NULL, NULL, 0 },
3229
3230
  /* The 1-bit E field in SHA Pad instruction.  */
3231
#define PADE IX + 1
3232
  { 0x1, 18, NULL, NULL, 0 },
3233
3234
  /* The PMSK field in GER rank 8 prefix instructions.  */
3235
#define PMSK8 PADE + 1
3236
  { 0xff, 40, NULL, NULL, 0 },
3237
3238
  /* The PMSK field in GER rank 4 prefix instructions.  */
3239
#define PMSK4 PMSK8 + 1
3240
  { 0xf, 44, NULL, NULL, 0 },
3241
3242
  /* The PMSK field in GER rank 2 prefix instructions.  */
3243
#define PMSK2 PMSK4 + 1
3244
  { 0x3, 46, NULL, NULL, 0 },
3245
3246
  /* The XMSK field in GER prefix instructions.  */
3247
#define XMSK PMSK2 + 1
3248
  { 0xf, 36, NULL, NULL, 0 },
3249
3250
  /* The XMSK field in GERX prefix instructions.  */
3251
#define XMSK8 XMSK + 1
3252
  { 0xff, 36, NULL, NULL, 0 },
3253
3254
  /* The YMSK field in GER prefix instructions.  */
3255
#define YMSK XMSK8 + 1
3256
  { 0xf, 32, NULL, NULL, 0 },
3257
3258
  /* The YMSK field in 64-bit GER prefix instructions.  */
3259
#define YMSK2 YMSK + 1
3260
  { 0x3, 34, NULL, NULL, 0 },
3261
3262
  /* The DUIS or BHRBE fields in a XFX form instruction, 10 bits
3263
     unsigned imediate */
3264
#define DUIS YMSK2 + 1
3265
#define BHRBE DUIS
3266
  { 0x3ff, 11, NULL, NULL, 0 },
3267
3268
  /* The split DW field in a X form instruction.  */
3269
#define DW DUIS + 1
3270
  { -1, PPC_OPSHIFT_INV, insert_dw, extract_dw,
3271
    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED},
3272
3273
  /* The split D field in a DX form instruction.  */
3274
#define DXD DW + 1
3275
  { 0xffff, PPC_OPSHIFT_INV, insert_dxd, extract_dxd,
3276
    PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
3277
3278
  /* The split ND field in a DX form instruction.
3279
     This is the same as the DX field, only negated.  */
3280
#define NDXD DXD + 1
3281
  { 0xffff, PPC_OPSHIFT_INV, insert_dxdn, extract_dxdn,
3282
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
3283
3284
  /* The E field in a wrteei instruction.  */
3285
  /* And the W bit in the pair singles instructions.  */
3286
  /* And the ST field in a VX form instruction.  */
3287
#define E NDXD + 1
3288
#define PSW E
3289
#define ST E
3290
  { 0x1, 15, NULL, NULL, 0 },
3291
3292
  /* The FL1 field in a POWER SC form instruction.  */
3293
#define FL1 E + 1
3294
  /* The U field in an X form instruction.  */
3295
#define U FL1
3296
  { 0xf, 12, NULL, NULL, 0 },
3297
3298
  /* The FL2 field in a POWER SC form instruction.  */
3299
#define FL2 FL1 + 1
3300
  { 0x7, 2, NULL, NULL, 0 },
3301
3302
  /* The FLM field in an XFL form instruction.  */
3303
#define FLM FL2 + 1
3304
  { 0xff, 17, NULL, NULL, 0 },
3305
3306
  /* The FRA field in an X or A form instruction.  */
3307
#define FRA FLM + 1
3308
#define FRA_MASK (0x1f << 16)
3309
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_FPR },
3310
3311
  /* The FRAp field of DFP instructions.  */
3312
#define FRAp FRA + 1
3313
  { 0x1e, 16, NULL, NULL, PPC_OPERAND_FPR },
3314
3315
  /* The FRB field in an X or A form instruction.  */
3316
#define FRB FRAp + 1
3317
#define FRB_MASK (0x1f << 11)
3318
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_FPR },
3319
3320
  /* The FRBp field of DFP instructions.  */
3321
#define FRBp FRB + 1
3322
  { 0x1e, 11, NULL, NULL, PPC_OPERAND_FPR },
3323
3324
  /* The FRC field in an A form instruction.  */
3325
#define FRC FRBp + 1
3326
#define FRC_MASK (0x1f << 6)
3327
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_FPR },
3328
3329
  /* The FRS field in an X form instruction or the FRT field in a D, X
3330
     or A form instruction.  */
3331
#define FRS FRC + 1
3332
#define FRT FRS
3333
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_FPR },
3334
3335
  /* The FRSp field of stfdp or the FRTp field of lfdp and DFP
3336
     instructions.  */
3337
#define FRSp FRS + 1
3338
#define FRTp FRSp
3339
  { 0x1e, 21, NULL, NULL, PPC_OPERAND_FPR },
3340
3341
  /* The FXM field in an XFX instruction.  */
3342
#define FXM FRSp + 1
3343
  { 0xff, 12, insert_fxm, extract_fxm, 0 },
3344
3345
  /* Power4 version for mfcr.  */
3346
#define FXM4 FXM + 1
3347
  { 0xff, 12, insert_fxm, extract_fxm, PPC_OPERAND_OPTIONAL },
3348
3349
  /* The IMM20 field in an LI instruction.  */
3350
#define IMM20 FXM4 + 1
3351
  { 0xfffff, PPC_OPSHIFT_INV, insert_li20, extract_li20, PPC_OPERAND_SIGNED},
3352
3353
  /* The 1-bit T field denoting the hash mode in SHA2 instruction.  */
3354
#define HASHT IMM20 + 1
3355
  /* The L field in a D or X form instruction.  */
3356
#define L HASHT
3357
  { 0x1, 21, NULL, NULL, 0 },
3358
3359
  /* The optional L field in tlbie and tlbiel instructions.  */
3360
#define LOPT L + 1
3361
  /* The R field in a HTM X form instruction.  */
3362
#define HTM_R LOPT
3363
  { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
3364
3365
  /* The optional L field in the paste. instruction. This is similar to LOPT
3366
     above, but with a default value of 1.  */
3367
#define L1OPT LOPT + 1
3368
  { 0x1, 21, insert_l1opt, extract_l1opt, PPC_OPERAND_OPTIONAL },
3369
3370
  /* The optional (for 32-bit) L field in cmp[l][i] instructions.  */
3371
#define L32OPT L1OPT + 1
3372
  { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL32 },
3373
3374
  /* The 2-bit L or WC field in an X (sync, dcbf or wait) form instruction.  */
3375
#define L2OPT L32OPT + 1
3376
#define LS L2OPT
3377
#define WC L2OPT
3378
  { 0x3, 21, insert_ls, extract_ls, PPC_OPERAND_OPTIONAL },
3379
3380
  /* The LEV field in a POWER SVC / POWER9 SCV form instruction.  */
3381
#define SVC_LEV L2OPT + 1
3382
  { 0x7f, 5, NULL, NULL, 0 },
3383
3384
  /* The LEV field in an SC form instruction.  */
3385
#define LEV SVC_LEV + 1
3386
  { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL },
3387
3388
  /* The LI field in an I form instruction.  The lower two bits are
3389
     forced to zero.  */
3390
#define LI LEV + 1
3391
  { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3392
3393
  /* The LI field in an I form instruction when used as an absolute
3394
     address.  */
3395
#define LIA LI + 1
3396
  { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
3397
3398
  /* The 3-bit L field in a sync or dcbf instruction.  */
3399
#define LS3 LIA + 1
3400
#define L3OPT LS3
3401
  { 0x7, 21, insert_ls, extract_ls, PPC_OPERAND_OPTIONAL },
3402
3403
  /* The ME field in an M form instruction.  */
3404
#define ME LS3 + 1
3405
#define ME_MASK (0x1f << 1)
3406
  { 0x1f, 1, NULL, NULL, 0 },
3407
3408
#define CRWn ME + 1
3409
  { 0x1f, 1, insert_crwn, extract_crwn, 0 },
3410
3411
#define ELWn CRWn + 1
3412
  { 0x1f, 1, insert_elwn, extract_elwn, PPC_OPERAND_PLUS1 },
3413
3414
#define ERWn ELWn + 1
3415
  { 0x1f, 6, insert_erwn, extract_erwn, 0 },
3416
3417
#define ERWb ERWn + 1
3418
  { 0x1f, 11, insert_erwb, extract_erwb, 0 },
3419
3420
#define CSLWb ERWb + 1
3421
  { 0x1f, 6, NULL, extract_cslwb, 0 },
3422
3423
#define CSLWn CSLWb + 1
3424
  { 0x1f, 11, insert_cslwn, NULL, 0 },
3425
3426
#define ILWn CSLWn + 1
3427
  { 0x1f, 1, NULL, extract_ilwn, PPC_OPERAND_PLUS1 },
3428
3429
#define ILWb ILWn + 1
3430
  { 0x1f, 6, insert_ilwb, NULL, 0 },
3431
3432
#define IRWn ILWb + 1
3433
  { 0x1f, 1, NULL, extract_irwn, PPC_OPERAND_PLUS1 },
3434
3435
#define IRWb IRWn + 1
3436
  { 0x1f, 6, insert_irwb, NULL, 0 },
3437
3438
  /* The MB and ME fields in an M form instruction expressed a single
3439
     operand which is a bitmask indicating which bits to select.  This
3440
     is a two operand form using PPC_OPERAND_NEXT.  See the
3441
     description in opcode/ppc.h for what this means.  */
3442
#define MBE IRWb + 1
3443
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT },
3444
  { -1, 0, insert_mbe, extract_mbe, 0 },
3445
3446
  /* The MB or ME field in an MD or MDS form instruction.  The high
3447
     bit is wrapped to the low end.  */
3448
#define MB6 MBE + 2
3449
#define ME6 MB6
3450
#define MB6_MASK (0x3f << 5)
3451
  { 0x3f, 5, insert_mb6, extract_mb6, 0 },
3452
3453
#define ELDn MB6 + 1
3454
  { 0x3f, 5, insert_eldn, extract_eldn, PPC_OPERAND_PLUS1 },
3455
3456
#define ERDn ELDn + 1
3457
  { 0x3f, 5, insert_erdn, extract_erdn, 0 },
3458
3459
#define CRDn ERDn + 1
3460
  { 0x3f, 5, insert_crdn, extract_crdn, 0 },
3461
3462
  /* The NB field in an X form instruction.  The value 32 is stored as
3463
     0.  */
3464
#define NB CRDn + 1
3465
  { 0x1f, 11, NULL, extract_nb, PPC_OPERAND_PLUS1 },
3466
3467
  /* The NBI field in an lswi instruction, which has special value
3468
     restrictions.  The value 32 is stored as 0.  */
3469
#define NBI NB + 1
3470
  { 0x1f, 11, insert_nbi, extract_nb, PPC_OPERAND_PLUS1 },
3471
3472
  /* The NSI field in a D form instruction.  This is the same as the
3473
     SI field, only negated.  */
3474
#define NSI NBI + 1
3475
  { 0xffff, 0, insert_nsi, extract_nsi,
3476
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
3477
3478
  /* The NSI field in a D form instruction when we accept a wide range
3479
     of positive values.  */
3480
#define NSISIGNOPT NSI + 1
3481
  { 0xffff, 0, insert_nsi, extract_nsi,
3482
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3483
3484
  /* The RA field in an D, DS, DQ, X, XO, M, or MDS form instruction.  */
3485
#define RA NSISIGNOPT + 1
3486
#define RA_MASK (0x1f << 16)
3487
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR },
3488
3489
  /* As above, but 0 in the RA field means zero, not r0.  */
3490
#define RA0 RA + 1
3491
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 },
3492
3493
  /* Similar to above, but optional.  */
3494
#define PRA0 RA0 + 1
3495
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 | PPC_OPERAND_OPTIONAL },
3496
3497
  /* The RA field in the DQ form lq or an lswx instruction, which have
3498
     special value restrictions.  */
3499
#define RAQ PRA0 + 1
3500
#define RAX RAQ
3501
  { 0x1f, 16, insert_raq, extract_raq, PPC_OPERAND_GPR_0 },
3502
3503
  /* Similar to above, but optional.  */
3504
#define PRAQ RAQ + 1
3505
  { 0x1f, 16, insert_raq, extract_raq,
3506
    PPC_OPERAND_GPR_0 | PPC_OPERAND_OPTIONAL },
3507
3508
  /* The R field in an 8-byte D, DS, DQ or X form prefix instruction.  */
3509
#define PCREL PRAQ + 1
3510
#define PCREL_MASK (1ULL << 52)
3511
  { 0x1, 52, insert_pcrel, extract_pcrel, PPC_OPERAND_OPTIONAL },
3512
3513
#define PCREL1 PCREL + 1
3514
  { 0x1, 52, insert_pcrel, extract_pcrel1, PPC_OPERAND_OPTIONAL },
3515
3516
  /* The RA field in a D or X form instruction which is an updating
3517
     load, which means that the RA field may not be zero and may not
3518
     equal the RT field.  */
3519
#define RAL PCREL1 + 1
3520
  { 0x1f, 16, insert_ral, extract_ral, PPC_OPERAND_GPR_0 },
3521
3522
  /* The RA field in an lmw instruction, which has special value
3523
     restrictions.  */
3524
#define RAM RAL + 1
3525
  { 0x1f, 16, insert_ram, extract_ram, PPC_OPERAND_GPR_0 },
3526
3527
  /* The RA field in a D or X form instruction which is an updating
3528
     store or an updating floating point load or a hash store or check,
3529
     which means that the RA field may not be zero.  */
3530
#define RAS RAM + 1
3531
  { 0x1f, 16, insert_ras, extract_ras, PPC_OPERAND_GPR_0 },
3532
3533
  /* The RA field of the tlbwe, dccci and iccci instructions,
3534
     which are optional.  */
3535
#define RAOPT RAS + 1
3536
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
3537
3538
  /* The RB field in an X, XO, M, or MDS form instruction.  */
3539
#define RB RAOPT + 1
3540
#define RB_MASK (0x1f << 11)
3541
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR },
3542
3543
  /* The RS and RB fields in an X form instruction when they must be the same.
3544
     This is used for extended mnemonics like mr.  */
3545
#define RSB RB + 1
3546
  { 0x1f, 11, insert_rsb, extract_rsb, PPC_OPERAND_GPR },
3547
3548
  /* The RB field in an lswx instruction, which has special value
3549
     restrictions.  */
3550
#define RBX RSB + 1
3551
  { 0x1f, 11, insert_rbx, extract_rbx, PPC_OPERAND_GPR },
3552
3553
  /* The RB field of the dccci and iccci instructions, which are optional.  */
3554
#define RBOPT RBX + 1
3555
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
3556
3557
  /* The RC register field in an maddld, maddhd or maddhdu instruction.  */
3558
#define RC RBOPT + 1
3559
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_GPR },
3560
3561
  /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
3562
     instruction or the RT field in a D, DS, X, XFX or XO form
3563
     instruction.  */
3564
#define RS RC + 1
3565
#define RT RS
3566
#define RT_MASK (0x1f << 21)
3567
#define RD RS
3568
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR },
3569
3570
#define RD_EVEN RS + 1
3571
#define RS_EVEN RD_EVEN
3572
  { 0x1f, 21, insert_rD_rS_even, extract_rD_rS_even, PPC_OPERAND_GPR },
3573
3574
  /* The RS and RT fields of the DS form stq and DQ form lq instructions,
3575
     which have special value restrictions.  */
3576
#define RSQ RS_EVEN + 1
3577
#define RTQ RSQ
3578
#define Q_MASK (1 << 21)
3579
  { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR },
3580
3581
  /* The RS field of the tlbwe instruction, which is optional.  */
3582
#define RSO RSQ + 1
3583
#define RTO RSO
3584
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
3585
3586
  /* The RX field of the SE_RR form instruction.  */
3587
#define RX RSO + 1
3588
  { 0x1f, PPC_OPSHIFT_INV, insert_rx, extract_rx, PPC_OPERAND_GPR },
3589
3590
  /* The ARX field of the SE_RR form instruction.  */
3591
#define ARX RX + 1
3592
  { 0x1f, PPC_OPSHIFT_INV, insert_arx, extract_arx, PPC_OPERAND_GPR },
3593
3594
  /* The RY field of the SE_RR form instruction.  */
3595
#define RY ARX + 1
3596
#define RZ RY
3597
  { 0x1f, PPC_OPSHIFT_INV, insert_ry, extract_ry, PPC_OPERAND_GPR },
3598
3599
  /* The ARY field of the SE_RR form instruction.  */
3600
#define ARY RY + 1
3601
  { 0x1f, PPC_OPSHIFT_INV, insert_ary, extract_ary, PPC_OPERAND_GPR },
3602
3603
  /* The SCLSCI8 field in a D form instruction.  */
3604
#define SCLSCI8 ARY + 1
3605
  { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8, extract_sci8, 0 },
3606
3607
  /* The SCLSCI8N field in a D form instruction.  This is the same as the
3608
     SCLSCI8 field, only negated.  */
3609
#define SCLSCI8N SCLSCI8 + 1
3610
  { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8n, extract_sci8n,
3611
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
3612
3613
  /* The SD field of the SD4 form instruction.  */
3614
#define SE_SD SCLSCI8N + 1
3615
  { 0xf, 8, NULL, NULL, PPC_OPERAND_PARENS },
3616
3617
  /* The SD field of the SD4 form instruction, for halfword.  */
3618
#define SE_SDH SE_SD + 1
3619
  { 0x1e, 7, NULL, NULL, PPC_OPERAND_PARENS },
3620
3621
  /* The SD field of the SD4 form instruction, for word.  */
3622
#define SE_SDW SE_SDH + 1
3623
  { 0x3c, 6, NULL, NULL, PPC_OPERAND_PARENS },
3624
3625
  /* The SH field in an X or M form instruction.  */
3626
#define SH SE_SDW + 1
3627
#define SH_MASK (0x1f << 11)
3628
  /* The other UIMM field in a EVX form instruction.  */
3629
#define EVUIMM SH
3630
  /* The FC field in an atomic X form instruction.  */
3631
#define FC SH
3632
#define UIM5 SH
3633
  { 0x1f, 11, NULL, NULL, 0 },
3634
3635
  /* The SR field indicating number of hash computation
3636
     rounds in SHA3 Hash instruction.  */
3637
#define HASHSR SH + 1
3638
  { 0x1f, 11, insert_sr, extract_sr, 0 },
3639
3640
#define RRWn HASHSR + 1
3641
  { 0x1f, 11, insert_rrwn, extract_rrwn, 0 },
3642
3643
#define SLWn RRWn + 1
3644
  { 0x1f, 11, insert_slwn, extract_slwn, 0 },
3645
3646
#define SRWn SLWn + 1
3647
  { 0x1f, 11, insert_srwn, extract_srwn, 0 },
3648
3649
#define EVUIMM_LT8 SRWn + 1
3650
  { 0x1f, 11, insert_evuimm_lt8, extract_evuimm_lt8, 0 },
3651
3652
#define EVUIMM_LT16 EVUIMM_LT8 + 1
3653
  { 0x1f, 11, insert_evuimm_lt16, extract_evuimm_lt16, 0 },
3654
3655
  /* The SI field in a HTM X form instruction.  */
3656
#define HTM_SI EVUIMM_LT16 + 1
3657
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_SIGNED },
3658
3659
  /* The SH field in an MD form instruction.  This is split.  */
3660
#define SH6 HTM_SI + 1
3661
#define SH6_MASK ((0x1f << 11) | (1 << 1))
3662
  { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_sh6, 0 },
3663
3664
#define RRDn SH6 + 1
3665
  { 0x3f, PPC_OPSHIFT_INV, insert_rrdn, extract_rrdn, 0 },
3666
3667
#define SLDn RRDn + 1
3668
  { 0x3f, PPC_OPSHIFT_INV, insert_sldn, extract_sldn, 0 },
3669
3670
#define SRDn SLDn + 1
3671
  { 0x3f, PPC_OPSHIFT_INV, insert_srdn, extract_srdn, 0 },
3672
3673
#define ERDb SRDn + 1
3674
  { 0x3f, PPC_OPSHIFT_INV, insert_erdb, extract_erdb, 0 },
3675
3676
#define CSLDn ERDb + 1
3677
  { 0x3f, PPC_OPSHIFT_SH6, insert_csldn, extract_sh6, 0 },
3678
3679
#define CSLDb CSLDn + 1
3680
  { 0x3f, 5, insert_mb6, extract_csldb, 0 },
3681
3682
#define IRDn CSLDb + 1
3683
  { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_irdn, PPC_OPERAND_PLUS1 },
3684
3685
#define IRDb IRDn + 1
3686
  { 0x3f, 5, insert_irdb, extract_mb6, 0 },
3687
3688
  /* The SH field of some variants of the tlbre and tlbwe
3689
     instructions, and the ELEV field of the e_sc instruction.  */
3690
#define SHO IRDb + 1
3691
#define ELEV SHO
3692
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
3693
3694
  /* The SI field in a D form instruction.  */
3695
#define SI SHO + 1
3696
  { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
3697
3698
  /* The SI field in a D form instruction when we accept a wide range
3699
     of positive values.  */
3700
#define SISIGNOPT SI + 1
3701
  { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3702
3703
  /* The SI8 field in a D form instruction.  */
3704
#define SI8 SISIGNOPT + 1
3705
  { 0xff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
3706
3707
  /* The SPR field in an XFX form instruction.  This is flipped--the
3708
     lower 5 bits are stored in the upper 5 and vice- versa.  */
3709
#define SPR SI8 + 1
3710
#define PMR SPR
3711
#define TMR SPR
3712
#define SPR_MASK (0x3ff << 11)
3713
  { 0x3ff, 11, insert_spr, extract_spr, PPC_OPERAND_SPR },
3714
3715
  /* The BAT index number in an XFX form m[ft]ibat[lu] instruction.  */
3716
#define SPRBAT SPR + 1
3717
#define SPRBAT_MASK (0xc1 << 11)
3718
  { 0x7, PPC_OPSHIFT_INV, insert_sprbat, extract_sprbat, PPC_OPERAND_SPR },
3719
3720
  /* The GQR index number in an XFX form m[ft]gqr instruction.  */
3721
#define SPRGQR SPRBAT + 1
3722
#define SPRGQR_MASK (0x7 << 16)
3723
  { 0x7, 16, NULL, NULL, PPC_OPERAND_GQR },
3724
3725
  /* The SPRG register number in an XFX form m[ft]sprg instruction.  */
3726
#define SPRG SPRGQR + 1
3727
  { 0x1f, 16, insert_sprg, extract_sprg, PPC_OPERAND_SPR },
3728
3729
  /* The SR field in an X form instruction.  */
3730
#define SR SPRG + 1
3731
  /* The 4-bit UIMM field in a VX form instruction.  */
3732
#define UIMM4 SR
3733
  { 0xf, 16, NULL, NULL, 0 },
3734
3735
  /* The STRM field in an X AltiVec form instruction.  */
3736
#define STRM SR + 1
3737
  /* The T field in a tlbilx form instruction.  */
3738
#define T STRM
3739
  /* The L field in wclr instructions.  */
3740
#define L2 STRM
3741
  { 0x3, 21, NULL, NULL, 0 },
3742
3743
  /* The ESYNC field in an X (sync) form instruction.  */
3744
#define ESYNC STRM + 1
3745
  { 0xf, 16, insert_esync, extract_esync, PPC_OPERAND_OPTIONAL },
3746
3747
  /* The SV field in a POWER SC form instruction.  */
3748
#define SV ESYNC + 1
3749
  { 0x3fff, 2, NULL, NULL, 0 },
3750
3751
  /* The TBR field in an XFX form instruction.  This is like the SPR
3752
     field, but it is optional.  */
3753
#define TBR SV + 1
3754
  { 0x3ff, 11, insert_tbr, extract_tbr,
3755
    PPC_OPERAND_SPR | PPC_OPERAND_OPTIONAL },
3756
3757
  /* The TO field in a D or X form instruction.  */
3758
#define TO TBR + 1
3759
#define DUI TO
3760
#define SVme TO
3761
#define SVG TO
3762
#define TO_MASK (0x1f << 21)
3763
  { 0x1f, 21, NULL, NULL, 0 },
3764
3765
  /* The UI field in a D form instruction.  */
3766
#define UI TO + 1
3767
  { 0xffff, 0, NULL, NULL, 0 },
3768
3769
#define UISIGNOPT UI + 1
3770
  { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNOPT },
3771
3772
  /* The IMM field in an SE_IM5 instruction.  */
3773
#define UI5 UISIGNOPT + 1
3774
  { 0x1f, 4, NULL, NULL, 0 },
3775
3776
  /* The OIMM field in an SE_OIM5 instruction.  */
3777
#define OIMM5 UI5 + 1
3778
  { 0x1f, 4, insert_oimm, extract_oimm, PPC_OPERAND_PLUS1 },
3779
3780
  /* The UI7 field in an SE_LI instruction.  */
3781
#define UI7 OIMM5 + 1
3782
  { 0x7f, 4, NULL, NULL, 0 },
3783
3784
  /* The VA field in a VA, VX or VXR form instruction.  */
3785
#define VA UI7 + 1
3786
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_VR },
3787
3788
  /* The VB field in a VA, VX or VXR form instruction.  */
3789
#define VB VA + 1
3790
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_VR },
3791
3792
  /* The VC field in a VA form instruction.  */
3793
#define VC VB + 1
3794
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR },
3795
3796
  /* The VD or VS field in a VA, VX, VXR or X form instruction.  */
3797
#define VD VC + 1
3798
#define VS VD
3799
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR },
3800
3801
  /* The SIMM field in a VX form instruction, and TE in Z form.  */
3802
#define SIMM VD + 1
3803
#define TE SIMM
3804
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED},
3805
3806
  /* The UIMM field in a VX form instruction.  */
3807
#define UIMM SIMM + 1
3808
#define DCTL UIMM
3809
#define rmm UIMM
3810
  { 0x1f, 16, NULL, NULL, 0 },
3811
3812
  /* The 3-bit UIMM field in a VX form instruction.  */
3813
#define UIMM3 UIMM + 1
3814
  { 0x7, 16, NULL, NULL, 0 },
3815
3816
  /* The 6-bit UIM field in a X form instruction.  */
3817
#define UIM6 UIMM3 + 1
3818
  { 0x3f, 16, NULL, NULL, 0 },
3819
3820
  /* The SIX field in a VX form instruction.  */
3821
#define SIX UIM6 + 1
3822
#define MMMM SIX
3823
  { 0xf, 11, NULL, NULL, 0 },
3824
3825
  /* The P bit in vector scaled multiply-sum XX4 form prefix instruction.  */
3826
#define PSSUMEXT SIX + 1
3827
  { 0x1, 4, NULL, NULL, 0 },
3828
3829
  /* The S1 bit in a vector multiply multiply XX3 form instruction (bit 22).  */
3830
#define S1EXP PSSUMEXT + 1
3831
  /* The PS field in a VX form instruction.  */
3832
#define PS S1EXP
3833
  { 0x1, 9, NULL, NULL, 0 },
3834
3835
  /* The SH field in a vector shift double by bit immediate instruction.  */
3836
#define SH3 PS + 1
3837
  { 0x7, 6, NULL, NULL, 0 },
3838
3839
  /* The SHB field in a VA form instruction.  */
3840
#define SHB SH3 + 1
3841
  { 0xf, 6, NULL, NULL, 0 },
3842
3843
  /* The other UIMM field in a half word EVX form instruction.  */
3844
#define EVUIMM_1 SHB + 1
3845
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_PARENS },
3846
3847
#define EVUIMM_1_EX0 EVUIMM_1 + 1
3848
  { 0x1f, 11, insert_evuimm1_ex0, extract_evuimm1_ex0, PPC_OPERAND_PARENS },
3849
3850
#define EVUIMM_2 EVUIMM_1_EX0 + 1
3851
  { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
3852
3853
#define EVUIMM_2_EX0 EVUIMM_2 + 1
3854
  { 0x3e, 10, insert_evuimm2_ex0, extract_evuimm2_ex0, PPC_OPERAND_PARENS },
3855
3856
  /* The other UIMM field in a word EVX form instruction.  */
3857
#define EVUIMM_4 EVUIMM_2_EX0 + 1
3858
  { 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS },
3859
3860
#define EVUIMM_4_EX0 EVUIMM_4 + 1
3861
  { 0x7c, 9, insert_evuimm4_ex0, extract_evuimm4_ex0, PPC_OPERAND_PARENS },
3862
3863
  /* The other UIMM field in a double EVX form instruction.  */
3864
#define EVUIMM_8 EVUIMM_4_EX0 + 1
3865
  { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS },
3866
3867
#define EVUIMM_8_EX0 EVUIMM_8 + 1
3868
  { 0xf8, 8, insert_evuimm8_ex0, extract_evuimm8_ex0, PPC_OPERAND_PARENS },
3869
3870
  /* The WS or DRM field in an X form instruction.  */
3871
#define WS EVUIMM_8_EX0 + 1
3872
#define DRM WS
3873
  /* The NNN field in a VX form instruction for SPE2  */
3874
#define NNN WS
3875
  { 0x7, 11, NULL, NULL, 0 },
3876
3877
  /* PowerPC paired singles extensions.  */
3878
  /* W bit in the pair singles instructions for x type instructions.  */
3879
#define PSWM WS + 1
3880
  /* The P bit in vector scaled multiply-sum XX3 form instructions (bit 21).  */
3881
#define PSSUM PSWM
3882
  /* The S0 bit in a vector multiply multiply XX3 form instruction (bit 21).  */
3883
#define S0EXP PSWM
3884
  /* The BO16 field in a BD8 form instruction.  */
3885
#define BO16 PSWM
3886
  /* The pst field in a SVRM form instruction.  */
3887
#define pst PSWM
3888
  /* The L field in a XO form instruction.  */
3889
#define XOL PSWM
3890
  {  0x1, 10, 0, 0, 0 },
3891
3892
  /* IDX bits for quantization in the pair singles instructions.  */
3893
#define PSQ PSWM + 1
3894
  {  0x7, 12, 0, 0, PPC_OPERAND_GQR },
3895
3896
  /* IDX bits for quantization in the pair singles x-type instructions.  */
3897
#define PSQM PSQ + 1
3898
  {  0x7, 7, 0, 0, PPC_OPERAND_GQR },
3899
3900
  /* The S field (bits 21-23) in vector multiply multiply XX3 form
3901
     as an arithmetic function.  */
3902
#define SFUNC PSQM + 1
3903
  {  0x7, 8, insert_s3, extract_s3, 0 },
3904
3905
  /* Smaller D field for quantization in the pair singles instructions.  */
3906
#define PSD SFUNC + 1
3907
  {  0xfff, 0, 0, 0,  PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3908
3909
  /* The L field in an mtmsrd or A form instruction or R or W in an
3910
     X form.  */
3911
#define A_L PSD + 1
3912
#define W A_L
3913
#define X_R A_L
3914
  { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
3915
3916
  /* The RMC or CY field in a Z23 form instruction.  */
3917
#define RMC A_L + 1
3918
#define CY RMC
3919
#define ew RMC
3920
  { 0x3, 9, NULL, NULL, 0 },
3921
3922
#define R RMC + 1
3923
#define MP R
3924
#define UIMM1 R
3925
#define P1 R
3926
  { 0x1, 16, NULL, NULL, 0 },
3927
3928
#define RIC R + 1
3929
  { 0x3, 18, NULL, NULL, PPC_OPERAND_OPTIONAL },
3930
3931
#define PRS RIC + 1
3932
  { 0x1, 17, NULL, NULL, PPC_OPERAND_OPTIONAL },
3933
3934
#define SP PRS + 1
3935
  /* The 2-bit ID field in SHA Pad instruction.  */
3936
#define PADID SP
3937
#define mi0 SP
3938
  { 0x3, 19, NULL, NULL, 0 },
3939
3940
#define S SP + 1
3941
  { 0x1, 20, NULL, NULL, 0 },
3942
3943
  /* The S field in a XL form instruction.  */
3944
#define SXL S + 1
3945
  { 0x1, 11, insert_sxl, extract_sxl, PPC_OPERAND_OPTIONAL },
3946
3947
  /* SH field starting at bit position 16.  */
3948
#define SH16 SXL + 1
3949
  /* The DCM and DGM fields in a Z form instruction.  */
3950
#define DCM SH16
3951
#define DGM DCM
3952
  { 0x3f, 10, NULL, NULL, 0 },
3953
3954
  /* The EH field in larx instruction.  */
3955
#define EH SH16 + 1
3956
  { 0x1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL },
3957
3958
  /* The L field in an mtfsf or XFL form instruction.  */
3959
  /* The A field in a HTM X form instruction.  */
3960
#define XFL_L EH + 1
3961
#define HTM_A XFL_L
3962
  { 0x1, 25, NULL, NULL, PPC_OPERAND_OPTIONAL},
3963
3964
  /* Xilinx APU related masks and macros */
3965
#define FCRT XFL_L + 1
3966
#define FCRT_MASK (0x1f << 21)
3967
  { 0x1f, 21, 0, 0, PPC_OPERAND_FCR },
3968
3969
  /* Xilinx FSL related masks and macros */
3970
#define FSL FCRT + 1
3971
#define FSL_MASK (0x1f << 11)
3972
  { 0x1f, 11, 0, 0, PPC_OPERAND_FSL },
3973
3974
  /* Xilinx UDI related masks and macros */
3975
#define URT FSL + 1
3976
  { 0x1f, 21, 0, 0, PPC_OPERAND_UDI },
3977
3978
#define URA URT + 1
3979
  { 0x1f, 16, 0, 0, PPC_OPERAND_UDI },
3980
3981
#define URB URA + 1
3982
  { 0x1f, 11, 0, 0, PPC_OPERAND_UDI },
3983
3984
#define URC URB + 1
3985
  { 0x1f, 6, 0, 0, PPC_OPERAND_UDI },
3986
3987
  /* The VLESIMM field in a D form instruction.  */
3988
#define VLESIMM URC + 1
3989
  { 0xffff, PPC_OPSHIFT_INV, insert_vlesi, extract_vlesi,
3990
    PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3991
3992
  /* The VLENSIMM field in a D form instruction.  */
3993
#define VLENSIMM VLESIMM + 1
3994
  { 0xffff, PPC_OPSHIFT_INV, insert_vlensi, extract_vlensi,
3995
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3996
3997
  /* The VLEUIMM field in a D form instruction.  */
3998
#define VLEUIMM VLENSIMM + 1
3999
  { 0xffff, PPC_OPSHIFT_INV, insert_vleui, extract_vleui, 0 },
4000
4001
  /* The VLEUIMML field in a D form instruction.  */
4002
#define VLEUIMML VLEUIMM + 1
4003
  { 0xffff, PPC_OPSHIFT_INV, insert_vleil, extract_vleil, 0 },
4004
4005
  /* The XT and XS fields in an XX1 or XX3 form instruction.  This is
4006
     split.  */
4007
#define XS6 VLEUIMML + 1
4008
#define XT6 XS6
4009
  { 0x3f, PPC_OPSHIFT_INV, insert_xt6, extract_xt6, PPC_OPERAND_VSR },
4010
4011
  /* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
4012
#define XSQ6 XT6 + 1
4013
#define XTQ6 XSQ6
4014
  { 0x3f, PPC_OPSHIFT_INV, insert_xtq6, extract_xtq6, PPC_OPERAND_VSR },
4015
4016
  /* The split XTp and XSp field in a vector paired instruction.  */
4017
#define XTP XSQ6 + 1
4018
#define XSP XTP
4019
  { 0x3e, PPC_OPSHIFT_INV, insert_xtp, extract_xtp, PPC_OPERAND_VSR },
4020
4021
#define XTS XTP + 1
4022
  { 0x3f, PPC_OPSHIFT_INV, insert_xts, extract_xts, PPC_OPERAND_VSR },
4023
4024
  /* The XT field in a plxv instruction.  Runs into the OP field.  */
4025
#define XTOP XTS + 1
4026
  { 0x3f, 21, NULL, NULL, PPC_OPERAND_VSR },
4027
4028
  /* The XA field in an XX3 form instruction.  This is split.  */
4029
#define XA6 XTOP + 1
4030
  { 0x3f, PPC_OPSHIFT_INV, insert_xa6, extract_xa6, PPC_OPERAND_VSR },
4031
4032
  /* The XA field in an MMA XX3 form instruction.  This is split and
4033
     must not overlap with the ACC operand.  */
4034
#define XA6a XA6 + 1
4035
  { 0x3f, PPC_OPSHIFT_INV, insert_xa6a, extract_xa6a, PPC_OPERAND_VSR },
4036
4037
  /* The XAp field in an MMA XX3 form instruction.  This is split.
4038
     This is like XA6a, but must be even.  */
4039
#define XA6ap XA6a + 1
4040
  { 0x3e, PPC_OPSHIFT_INV, insert_xa6a, extract_xa6a, PPC_OPERAND_VSR },
4041
4042
  /* The 5-bit XAp field in an MMA XX3 form instruction.  This is split.
4043
     This is like XA6, but must be even.  */
4044
#define XA5p XA6ap + 1
4045
  { 0x3e, PPC_OPSHIFT_INV, insert_xa5, extract_xa5, PPC_OPERAND_VSR },
4046
4047
  /* The XB field in an XX2 or XX3 form instruction.  This is split.  */
4048
#define XB6 XA5p + 1
4049
  { 0x3f, PPC_OPSHIFT_INV, insert_xb6, extract_xb6, PPC_OPERAND_VSR },
4050
4051
  /* The XB field in an XX3 form instruction.  This is split and
4052
     must not overlap with the ACC operand.  */
4053
#define XB6a XB6 + 1
4054
  { 0x3f, PPC_OPSHIFT_INV, insert_xb6a, extract_xb6a, PPC_OPERAND_VSR },
4055
4056
  /* The 5-bit XBp field in an MMA XX3 form instruction.  This is split.
4057
     This is like XB6, but must be even.  */
4058
#define XB5p XB6a + 1
4059
  { 0x3e, PPC_OPSHIFT_INV, insert_xb5, extract_xb5, PPC_OPERAND_VSR },
4060
4061
  /* The XA and XB fields in an XX3 form instruction when they must be the same.
4062
     This is used in extended mnemonics like xvmovdp.  This is split.  */
4063
#define XAB6 XB5p + 1
4064
  { 0x3f, PPC_OPSHIFT_INV, insert_xab6, extract_xab6, PPC_OPERAND_VSR },
4065
4066
  /* The XC field in an XX4 form instruction.  This is split.  */
4067
#define XC6 XAB6 + 1
4068
  { 0x3f, PPC_OPSHIFT_INV, insert_xc6, extract_xc6, PPC_OPERAND_VSR },
4069
4070
  /* The DM or SHW field in an XX3 form instruction.  */
4071
#define DM XC6 + 1
4072
#define SHW DM
4073
  { 0x3, 8, NULL, NULL, 0 },
4074
4075
  /* The DM field in an extended mnemonic XX3 form instruction.  */
4076
#define DMEX DM + 1
4077
  { 0x3, 8, insert_dm, extract_dm, 0 },
4078
4079
  /* The 2-bit M field in an AES XX2/XX3 form instruction. This is split.  */
4080
#define AESM DMEX + 1
4081
  { 0x3, PPC_OPSHIFT_INV, insert_m2, extract_m2, 0 },
4082
4083
  /* The 2-bit BL field in SHA Pad instruction.  */
4084
#define PADBL AESM + 1
4085
  { 0x3, 16, insert_bl, extract_bl, 0 },
4086
4087
  /* The UIM field in an XX2 form instruction.  */
4088
#define UIM PADBL + 1
4089
  /* The 2-bit UIMM field in a VX form instruction.  */
4090
#define UIMM2 UIM
4091
  /* The 2-bit L field in a darn instruction.  */
4092
#define LRAND UIM
4093
  { 0x3, 16, NULL, NULL, 0 },
4094
4095
#define ERAT_T UIM + 1
4096
  { 0x7, 21, NULL, NULL, 0 },
4097
4098
#define IH ERAT_T + 1
4099
  { 0x7, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
4100
4101
  /* The 2-bit SC or PL field in an X form instruction.  */
4102
#define SC2 IH + 1
4103
#define PL SC2
4104
  { 0x3, 16, insert_pl, extract_pl, PPC_OPERAND_OPTIONAL },
4105
4106
#define P2 PL + 1
4107
  { 0x3, PPC_OPSHIFT_INV, insert_p2, extract_p2, 0 },
4108
4109
  /* The 8-bit IMM8 field in a XX1 form instruction.  */
4110
#define IMM8 P2 + 1
4111
  { 0xff, 11, NULL, NULL, PPC_OPERAND_SIGNOPT },
4112
4113
#define VX_OFF IMM8 + 1
4114
  { 0x3, 0, insert_off_lsp, extract_off_lsp, 0 },
4115
4116
#define VX_OFF_SPE2 VX_OFF + 1
4117
  { 0x7, 0, insert_off_spe2, extract_off_spe2, 0 },
4118
4119
#define BBB VX_OFF_SPE2 + 1
4120
  { 0x7, 13, NULL, NULL, 0 },
4121
4122
#define DDD BBB + 1
4123
#define VX_MASK_DDD  (VX_MASK & ~0x1)
4124
  { 0x7, PPC_OPSHIFT_INV, insert_Ddd, extract_Ddd, 0 },
4125
4126
#define HH DDD + 1
4127
#define mo0 HH
4128
  { 0x3, 13, NULL, NULL, 0 },
4129
4130
#define SVi HH + 1
4131
  { 0x3f, 9, NULL, NULL, PPC_OPERAND_NONZERO },
4132
4133
#define vf SVi + 1
4134
#define sk vf
4135
  { 0x1, 6, NULL, NULL, 0 },
4136
4137
#define vs vf + 1
4138
#define mm vs
4139
  { 0x1, 7, NULL, NULL, 0 },
4140
4141
#define ms vs + 1
4142
#define yx ms
4143
  /* The S2 bit in a vector multiply multiply XX3 form instruction (bit 23).  */
4144
#define S2EXP ms
4145
  /* The P field in Galois Field XX3 form instruction.  */
4146
#define PGF1 yx
4147
  { 0x1, 8, NULL, NULL, 0 },
4148
4149
#define SVLcr ms + 1
4150
  { 0x1, 5, NULL, NULL, 0 },
4151
4152
#define SVxd SVLcr + 1
4153
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_NONZERO },
4154
4155
#define SVyd SVxd + 1
4156
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_NONZERO },
4157
4158
#define SVzd SVyd + 1
4159
#define SVd SVzd
4160
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_NONZERO },
4161
4162
#define SVrm SVzd + 1
4163
  { 0xf, 7, NULL, NULL, 0 },
4164
4165
#define mi1 SVrm + 1
4166
  { 0x3, 17, NULL, NULL, 0 },
4167
4168
#define mi2 mi1 + 1
4169
  { 0x3, 15, NULL, NULL, 0 },
4170
};
4171
4172
const unsigned int num_powerpc_operands = ARRAY_SIZE (powerpc_operands);
4173

4174
/* Macros used to form opcodes.  */
4175
4176
/* The main opcode.  */
4177
#define OP(x) ((((uint64_t)(x)) & 0x3f) << 26)
4178
#define OP_MASK OP (0x3f)
4179
4180
/* The prefix opcode.  */
4181
#define PREFIX_OP (1ULL << 58)
4182
4183
/* The 2-bit prefix form.  */
4184
#define PREFIX_FORM(x) ((x & 3ULL) << 56)
4185
4186
#define SUFFIX_MASK ((1ULL << 32) - 1)
4187
#define PREFIX_MASK (SUFFIX_MASK << 32)
4188
4189
/* Prefix insn, eight byte load/store form 8LS.  */
4190
#define P8LS (PREFIX_OP | PREFIX_FORM (0))
4191
4192
/* Prefix insn, eight byte register to register form 8RR.  */
4193
#define P8RR (PREFIX_OP | PREFIX_FORM (1))
4194
4195
/* Prefix insn, modified load/store form MLS.  */
4196
#define PMLS (PREFIX_OP | PREFIX_FORM (2))
4197
4198
/* Prefix insn, modified register to register form MRR.  */
4199
#define PMRR (PREFIX_OP | PREFIX_FORM (3))
4200
4201
/* Prefix insn, modified masked immediate register to register form MMIRR.  */
4202
#define PMMIRR (PREFIX_OP | PREFIX_FORM (3) | (9ULL << 52))
4203
4204
/* An 8-byte D form prefix instruction.  */
4205
#define P_D_MASK (((-1ULL << 50) & ~PCREL_MASK) | OP_MASK)
4206
4207
/* An 8-byte D form prefix instruction with 32bit SI field.  */
4208
#define P_D_SI32_MASK (((-1ULL << 48) & ~PCREL_MASK) | OP_MASK)
4209
4210
/* The same as P_D_MASK, but with the RA and PCREL fields specified.  */
4211
#define P_DRAPCREL_MASK (P_D_MASK | PCREL_MASK | RA_MASK)
4212
4213
/* The same as P_D_SI32_MASK, but with the RA and PCREL fields specified.  */
4214
#define P_DRAPCREL_SI32_MASK (P_D_SI32_MASK | PCREL_MASK | RA_MASK)
4215
4216
/* Mask for prefix X form instructions.  */
4217
#define P_X_MASK (PREFIX_MASK | X_MASK)
4218
#define P_XX1_MASK (PREFIX_MASK | XX1_MASK)
4219
4220
/* Mask for prefix vector permute insns.  */
4221
#define P_XX4_MASK (PREFIX_MASK | XX4_MASK)
4222
#define P_UXX4_MASK (P_XX4_MASK & ~(7ULL << 32))
4223
#define P_U8XX4_MASK (P_XX4_MASK & ~(0xffULL << 32))
4224
4225
/* The opcode and mask for vector scaled multiply-sum prefix instruction.  */
4226
#define VMSOP(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1) << 5))
4227
#define P_VMS_MASK (PREFIX_MASK | VMSOP (0x3f, 0x1))
4228
4229
/* MMIRR:XX3-form 8-byte outer product instructions.  */
4230
#define P_GER_MASK ((-1ULL << 40) | XX3ACC_MASK)
4231
#define P_GER2_MASK (P_GER_MASK & ~(3ULL << 46))
4232
#define P_GER4_MASK (P_GER_MASK & ~(15ULL << 44))
4233
#define P_GER8_MASK (P_GER_MASK & ~(255ULL << 40))
4234
#define P_GER64_MASK (P_GER_MASK | (3ULL << 32))
4235
#define P_GERX4_MASK ((-1ULL << 48) | XX3GERX_MASK)
4236
#define P_GERX2_MASK (P_GERX4_MASK & ~(3ULL << 46))
4237
4238
/* Vector splat immediate op.  */
4239
#define VSOP(op, xop) (OP (op) | (xop << 17))
4240
#define P_VS_MASK ((-1ULL << 48) | VSOP (0x3f, 0xf))
4241
#define P_VSI_MASK ((-1ULL << 48) | VSOP (0x3f, 0xe))
4242
4243
/* The main opcode combined with a trap code in the TO field of a D
4244
   form instruction.  Used for extended mnemonics for the trap
4245
   instructions.  */
4246
#define OPTO(x,to) (OP (x) | ((((uint64_t)(to)) & 0x1f) << 21))
4247
#define OPTO_MASK (OP_MASK | TO_MASK)
4248
4249
/* The main opcode combined with a comparison size bit in the L field
4250
   of a D form or X form instruction.  Used for extended mnemonics for
4251
   the comparison instructions.  */
4252
#define OPL(x,l) (OP (x) | ((((uint64_t)(l)) & 1) << 21))
4253
#define OPL_MASK OPL (0x3f,1)
4254
4255
/* The main opcode combined with an update code in D form instruction.
4256
   Used for extended mnemonics for VLE memory instructions.  */
4257
#define OPVUP(x,vup) (OP (x) | ((((uint64_t)(vup)) & 0xff) << 8))
4258
#define OPVUP_MASK OPVUP (0x3f,  0xff)
4259
4260
/* The main opcode combined with an update code and the RT fields
4261
   specified in D form instruction.  Used for VLE volatile context
4262
   save/restore instructions.  */
4263
#define OPVUPRT(x,vup,rt)     \
4264
  (OPVUP (x, vup)       \
4265
   | ((((uint64_t)(rt)) & 0x1f) << 21))
4266
#define OPVUPRT_MASK OPVUPRT (0x3f, 0xff, 0x1f)
4267
4268
/* An A form instruction.  */
4269
#define A(op, xop, rc)        \
4270
  (OP (op)          \
4271
   | ((((uint64_t)(xop)) & 0x1f) << 1)  \
4272
   | (((uint64_t)(rc)) & 1))
4273
#define A_MASK A (0x3f, 0x1f, 1)
4274
4275
/* An A_MASK with the FRB field fixed.  */
4276
#define AFRB_MASK (A_MASK | FRB_MASK)
4277
4278
/* An A_MASK with the FRC field fixed.  */
4279
#define AFRC_MASK (A_MASK | FRC_MASK)
4280
4281
/* An A_MASK with the FRA and FRC fields fixed.  */
4282
#define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
4283
4284
/* An AFRAFRC_MASK, but with L bit clear.  */
4285
#define AFRALFRC_MASK (AFRAFRC_MASK & ~((uint64_t) 1 << 16))
4286
4287
/* A B form instruction.  */
4288
#define B(op, aa, lk)       \
4289
  (OP (op)          \
4290
   | ((((uint64_t)(aa)) & 1) << 1)    \
4291
   | ((lk) & 1))
4292
#define B_MASK B (0x3f, 1, 1)
4293
4294
/* A BD8 form instruction.  This is a 16-bit instruction.  */
4295
#define BD8(op, aa, lk)       \
4296
  (((((uint64_t)(op)) & 0x3f) << 10)  \
4297
   | (((aa) & 1) << 9)        \
4298
   | (((lk) & 1) << 8))
4299
#define BD8_MASK BD8 (0x3f, 1, 1)
4300
4301
/* Another BD8 form instruction.  This is a 16-bit instruction.  */
4302
#define BD8IO(op) ((((uint64_t)(op)) & 0x1f) << 11)
4303
#define BD8IO_MASK BD8IO (0x1f)
4304
4305
/* A BD8 form instruction for simplified mnemonics.  */
4306
#define EBD8IO(op, bo, bi) (BD8IO ((op)) | ((bo) << 10) | ((bi) << 8))
4307
/* A mask that excludes BO32 and BI32.  */
4308
#define EBD8IO1_MASK 0xf800
4309
/* A mask that includes BO32 and excludes BI32.  */
4310
#define EBD8IO2_MASK 0xfc00
4311
/* A mask that include BO32 AND BI32.  */
4312
#define EBD8IO3_MASK 0xff00
4313
4314
/* A BD15 form instruction.  */
4315
#define BD15(op, aa, lk)      \
4316
  (OP (op)          \
4317
   | ((((uint64_t)(aa)) & 0xf) << 22) \
4318
   | ((lk) & 1))
4319
#define BD15_MASK BD15 (0x3f, 0xf, 1)
4320
4321
/* A BD15 form instruction for extended conditional branch mnemonics.  */
4322
#define EBD15(op, aa, bo, lk)     \
4323
  (((op) & 0x3fu) << 26)      \
4324
  | (((aa) & 0xf) << 22)      \
4325
  | (((bo) & 0x3) << 20)      \
4326
  | ((lk) & 1)
4327
#define EBD15_MASK 0xfff00001
4328
4329
/* A BD15 form instruction for extended conditional branch mnemonics
4330
   with BI.  */
4331
#define EBD15BI(op, aa, bo, bi, lk)   \
4332
  ((((op) & 0x3fu) << 26)     \
4333
   | (((aa) & 0xf) << 22)     \
4334
   | (((bo) & 0x3) << 20)     \
4335
   | (((bi) & 0x3) << 16)     \
4336
   | ((lk) & 1))
4337
4338
#define EBD15BI_MASK  0xfff30001
4339
4340
/* A BD24 form instruction.  */
4341
#define BD24(op, aa, lk)      \
4342
  (OP (op)          \
4343
   | ((((uint64_t)(aa)) & 1) << 25) \
4344
   | ((lk) & 1))
4345
#define BD24_MASK BD24 (0x3f, 1, 1)
4346
4347
/* A B form instruction setting the BO field.  */
4348
#define BBO(op, bo, aa, lk)     \
4349
  (B ((op), (aa), (lk))       \
4350
   | ((((uint64_t)(bo)) & 0x1f) << 21))
4351
#define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
4352
4353
/* A BBO_MASK with the y bit of the BO field removed.  This permits
4354
   matching a conditional branch regardless of the setting of the y
4355
   bit.  Similarly for the 'at' bits used for power4 branch hints.  */
4356
#define Y_MASK   (((uint64_t) 1) << 21)
4357
#define AT1_MASK (((uint64_t) 3) << 21)
4358
#define AT2_MASK (((uint64_t) 9) << 21)
4359
#define BBOY_MASK  (BBO_MASK &~ Y_MASK)
4360
#define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
4361
4362
/* A B form instruction setting the BO field and the condition bits of
4363
   the BI field.  */
4364
#define BBOCB(op, bo, cb, aa, lk) \
4365
  (BBO ((op), (bo), (aa), (lk)) | ((((uint64_t)(cb)) & 0x3) << 16))
4366
#define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
4367
4368
/* A BBOCB_MASK with the y bit of the BO field removed.  */
4369
#define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
4370
#define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
4371
#define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
4372
4373
/* A BBOYCB_MASK in which the BI field is fixed.  */
4374
#define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
4375
#define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
4376
4377
/* A VLE C form instruction.  */
4378
#define C_LK(x, lk) (((((uint64_t)(x)) & 0x7fff) << 1) | ((lk) & 1))
4379
#define C_LK_MASK C_LK(0x7fff, 1)
4380
#define C(x) ((((uint64_t)(x)) & 0xffff))
4381
#define C_MASK C(0xffff)
4382
4383
/* An Context form instruction.  */
4384
#define CTX(op, xop)   (OP (op) | (((uint64_t)(xop)) & 0x7))
4385
#define CTX_MASK CTX(0x3f, 0x7)
4386
4387
/* An User Context form instruction.  */
4388
#define UCTX(op, xop)  (OP (op) | (((uint64_t)(xop)) & 0x1f))
4389
#define UCTX_MASK UCTX(0x3f, 0x1f)
4390
4391
/* The main opcode mask with the RA field clear.  */
4392
#define DRA_MASK (OP_MASK | RA_MASK)
4393
4394
/* A DQ form VSX instruction.  */
4395
#define DQX(op, xop) (OP (op) | ((xop) & 0x7))
4396
#define DQX_MASK DQX (0x3f, 7)
4397
4398
/* A DQ form VSX vector paired instruction.  */
4399
#define DQXP(op, xop) (OP (op) | ((xop) & 0xf))
4400
#define DQXP_MASK DQXP (0x3f, 0xf)
4401
4402
/* A DS form instruction.  */
4403
#define DSO(op, xop) (OP (op) | ((xop) & 0x3))
4404
#define DS_MASK DSO (0x3f, 3)
4405
4406
/* An DX form instruction.  */
4407
#define DX(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
4408
#define DX_MASK DX (0x3f, 0x1f)
4409
/* An DX form instruction with the D bits specified.  */
4410
#define NODX_MASK (DX_MASK | 0x1fffc1)
4411
4412
/* An EVSEL form instruction.  */
4413
#define EVSEL(op, xop) (OP (op) | (((uint64_t)(xop)) & 0xff) << 3)
4414
#define EVSEL_MASK EVSEL(0x3f, 0xff)
4415
4416
/* An IA16 form instruction.  */
4417
#define IA16(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
4418
#define IA16_MASK IA16(0x3f, 0x1f)
4419
4420
/* An I16A form instruction.  */
4421
#define I16A(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
4422
#define I16A_MASK I16A(0x3f, 0x1f)
4423
4424
/* An I16L form instruction.  */
4425
#define I16L(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
4426
#define I16L_MASK I16L(0x3f, 0x1f)
4427
4428
/* An IM7 form instruction.  */
4429
#define IM7(op) ((((uint64_t)(op)) & 0x1f) << 11)
4430
#define IM7_MASK IM7(0x1f)
4431
4432
/* An M form instruction.  */
4433
#define M(op, rc) (OP (op) | ((rc) & 1))
4434
#define M_MASK M (0x3f, 1)
4435
4436
/* An LI20 form instruction.  */
4437
#define LI20(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1) << 15)
4438
#define LI20_MASK LI20(0x3f, 0x1)
4439
4440
/* An M form instruction with the ME field specified.  */
4441
#define MME(op, me, rc)       \
4442
  (M ((op), (rc))       \
4443
   | ((((uint64_t)(me)) & 0x1f) << 1))
4444
4445
/* An M_MASK with the MB field fixed.  */
4446
#define MMB_MASK (M_MASK | MB_MASK)
4447
4448
/* An M_MASK with the ME field fixed.  */
4449
#define MME_MASK (M_MASK | ME_MASK)
4450
4451
/* An M_MASK with the MB and ME fields fixed.  */
4452
#define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
4453
4454
/* An M_MASK with the SH and ME fields fixed.  */
4455
#define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
4456
4457
/* An M_MASK with the SH and MB fields fixed.  */
4458
#define MSHMB_MASK (M_MASK | SH_MASK | MB_MASK)
4459
4460
/* An MD form instruction.  */
4461
#define MD(op, xop, rc)       \
4462
  (OP (op)          \
4463
   | ((((uint64_t)(xop)) & 0x7) << 2) \
4464
   | ((rc) & 1))
4465
#define MD_MASK MD (0x3f, 0x7, 1)
4466
4467
/* An MD_MASK with the MB field fixed.  */
4468
#define MDMB_MASK (MD_MASK | MB6_MASK)
4469
4470
/* An MD_MASK with the SH field fixed.  */
4471
#define MDSH_MASK (MD_MASK | SH6_MASK)
4472
4473
/* An MDS form instruction.  */
4474
#define MDS(op, xop, rc)      \
4475
  (OP (op)          \
4476
   | ((((uint64_t)(xop)) & 0xf) << 1) \
4477
   | ((rc) & 1))
4478
#define MDS_MASK MDS (0x3f, 0xf, 1)
4479
4480
/* An MDS_MASK with the MB field fixed.  */
4481
#define MDSMB_MASK (MDS_MASK | MB6_MASK)
4482
4483
/* An SC form instruction.  */
4484
#define SC(op, sa, lk)        \
4485
  (OP (op)          \
4486
   | ((((uint64_t)(sa)) & 1) << 1)    \
4487
   | ((lk) & 1))
4488
#define SC_MASK         \
4489
  (OP_MASK          \
4490
   | (((uint64_t) 0x3ff) << 16)   \
4491
   | (((uint64_t) 1) << 1)      \
4492
   | 1)
4493
4494
/* An SCI8 form instruction.  */
4495
#define SCI8(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 11))
4496
#define SCI8_MASK SCI8(0x3f, 0x1f)
4497
4498
/* An SCI8 form instruction.  */
4499
#define SCI8BF(op, fop, xop)      \
4500
  (OP (op)          \
4501
   | ((((uint64_t)(xop)) & 0x1f) << 11) \
4502
   | (((fop) & 7) << 23))
4503
#define SCI8BF_MASK SCI8BF(0x3f, 7, 0x1f)
4504
4505
/* An SD4 form instruction.  This is a 16-bit instruction.  */
4506
#define SD4(op) ((((uint64_t)(op)) & 0xf) << 12)
4507
#define SD4_MASK SD4(0xf)
4508
4509
/* An SE_IM5 form instruction.  This is a 16-bit instruction.  */
4510
#define SE_IM5(op, xop)       \
4511
  (((((uint64_t)(op)) & 0x3f) << 10)  \
4512
   | (((xop) & 0x1) << 9))
4513
#define SE_IM5_MASK SE_IM5(0x3f, 1)
4514
4515
/* An SE_R form instruction.  This is a 16-bit instruction.  */
4516
#define SE_R(op, xop)       \
4517
  (((((uint64_t)(op)) & 0x3f) << 10)  \
4518
   | (((xop) & 0x3f) << 4))
4519
#define SE_R_MASK SE_R(0x3f, 0x3f)
4520
4521
/* An SE_RR form instruction.  This is a 16-bit instruction.  */
4522
#define SE_RR(op, xop)        \
4523
  (((((uint64_t)(op)) & 0x3f) << 10)  \
4524
   | (((xop) & 0x3) << 8))
4525
#define SE_RR_MASK SE_RR(0x3f, 3)
4526
4527
/* A VX form instruction.  */
4528
#define VX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7ff))
4529
4530
/* A VX form instruction with selector bit  */
4531
#define VXSEL5(op, xop, sel) (VX(op, xop) | (((sel) & 0x1f) << 16))
4532
#define VXSEL4(op, xop, sel) (VX(op, xop) | (((sel) & 0xf) << 17))
4533
#define VXSEL3(op, xop, sel) (VX(op, xop) | (((sel) & 0x7) << 18))
4534
#define VXSEL2(op, xop, sel) (VX(op, xop) | (((sel) & 0x3) << 19))
4535
4536
/* The mask for an VX form instruction.  */
4537
#define VX_MASK VX(0x3f, 0x7ff)
4538
4539
/* A VX LSP form instruction.  */
4540
#define VX_LSP(op, xop) (OP (op) | (((uint64_t)(xop)) & 0xffff))
4541
4542
/* The mask for an VX LSP form instruction.  */
4543
#define VX_LSP_MASK VX_LSP(0x3f, 0xffff)
4544
#define VX_LSP_OFF_MASK VX_LSP(0x3f, 0x7fc)
4545
4546
/* Additional format of VX SPE2 form instruction.   */
4547
#define VX_RA_CONST(op, xop, bits11_15)     \
4548
  (OP (op)            \
4549
   | (((uint64_t)(bits11_15) & 0x1f) << 16) \
4550
   | (((uint64_t)(xop)) & 0x7ff))
4551
#define VX_RA_CONST_MASK VX_RA_CONST(0x3f, 0x7ff, 0x1f)
4552
4553
#define VX_RB_CONST(op, xop, bits16_20)     \
4554
  (OP (op)            \
4555
   | (((uint64_t)(bits16_20) & 0x1f) << 11) \
4556
   | (((uint64_t)(xop)) & 0x7ff))
4557
#define VX_RB_CONST_MASK VX_RB_CONST(0x3f, 0x7ff, 0x1f)
4558
4559
#define VX_OFF_SPE2_MASK VX(0x3f, 0x7f8)
4560
4561
#define VX_SPE_CRFD(op, xop, bits9_10)      \
4562
  (OP (op)            \
4563
   | (((uint64_t)(bits9_10) & 0x3) << 21)   \
4564
   | (((uint64_t)(xop)) & 0x7ff))
4565
#define VX_SPE_CRFD_MASK VX_SPE_CRFD(0x3f, 0x7ff, 0x3)
4566
4567
#define VX_SPE2_CLR(op, xop, bit16)     \
4568
  (OP (op)            \
4569
   | (((uint64_t)(bit16) & 0x1) << 15)    \
4570
   | (((uint64_t)(xop)) & 0x7ff))
4571
#define VX_SPE2_CLR_MASK VX_SPE2_CLR(0x3f, 0x7ff, 0x1)
4572
4573
#define VX_SPE2_SPLATB(op, xop, bits19_20)    \
4574
  (OP (op)            \
4575
   | (((uint64_t)(bits19_20) & 0x3) << 11)    \
4576
   | (((uint64_t)(xop)) & 0x7ff))
4577
#define VX_SPE2_SPLATB_MASK VX_SPE2_SPLATB(0x3f, 0x7ff, 0x3)
4578
4579
#define VX_SPE2_OCTET(op, xop, bits16_17)   \
4580
  (OP (op)            \
4581
   | (((uint64_t)(bits16_17) & 0x3) << 14)    \
4582
   | (((uint64_t)(xop)) & 0x7ff))
4583
#define VX_SPE2_OCTET_MASK VX_SPE2_OCTET(0x3f, 0x7ff, 0x7)
4584
4585
#define VX_SPE2_DDHH(op, xop, bit16)      \
4586
  (OP (op)            \
4587
   | (((uint64_t)(bit16) & 0x1) << 15)    \
4588
   | (((uint64_t)(xop)) & 0x7ff))
4589
#define VX_SPE2_DDHH_MASK VX_SPE2_DDHH(0x3f, 0x7ff, 0x1)
4590
4591
#define VX_SPE2_HH(op, xop, bit16, bits19_20)   \
4592
  (OP (op)            \
4593
   | (((uint64_t)(bit16) & 0x1) << 15)    \
4594
   | (((uint64_t)(bits19_20) & 0x3) << 11)  \
4595
   | (((uint64_t)(xop)) & 0x7ff))
4596
#define VX_SPE2_HH_MASK VX_SPE2_HH(0x3f, 0x7ff, 0x1, 0x3)
4597
4598
#define VX_SPE2_EVMAR(op, xop)        \
4599
  (OP (op)            \
4600
   | ((uint64_t)(0x1) << 11)      \
4601
   | (((uint64_t)(xop)) & 0x7ff))
4602
#define VX_SPE2_EVMAR_MASK        \
4603
  (VX_SPE2_EVMAR(0x3f, 0x7ff)       \
4604
   | ((uint64_t)(0x1) << 11))
4605
4606
/* A VX_MASK with the VA field fixed.  */
4607
#define VXVA_MASK (VX_MASK | (0x1f << 16))
4608
4609
/* A VX_MASK with the VB field fixed.  */
4610
#define VXVB_MASK (VX_MASK | (0x1f << 11))
4611
4612
/* A VX_MASK with the VA and VB fields fixed.  */
4613
#define VXVAVB_MASK (VX_MASK | (0x1f << 16) | (0x1f << 11))
4614
4615
/* A VX_MASK with the VD and VA fields fixed.  */
4616
#define VXVDVA_MASK (VX_MASK | (0x1f << 21) | (0x1f << 16))
4617
4618
/* A VX_MASK with a UIMM4 field.  */
4619
#define VXUIMM4_MASK (VX_MASK | (0x1 << 20))
4620
4621
/* A VX_MASK with a UIMM3 field.  */
4622
#define VXUIMM3_MASK (VX_MASK | (0x3 << 19))
4623
4624
/* A VX_MASK with a UIMM2 field.  */
4625
#define VXUIMM2_MASK (VX_MASK | (0x7 << 18))
4626
4627
/* A VX_MASK with a UIMM1 field.  */
4628
#define VXUIMM1_MASK (VX_MASK | (0xf << 17))
4629
4630
/* A VX_MASK with a PS field.  */
4631
#define VXPS_MASK (VX_MASK & ~(0x1 << 9))
4632
4633
/* A VX_MASK with the VA field fixed with a PS field.  */
4634
#define VXVAPS_MASK (VXVA_MASK & ~(0x1 << 9))
4635
4636
/* A VX_MASK with the VA field fixed with a MP field.  */
4637
#define VXVAM_MASK (VXVA_MASK & ~(0x1 << 16))
4638
4639
/* A VX_MASK for instructions using a BF field.  */
4640
#define VXBF_MASK (VX_MASK | (3 << 21))
4641
4642
/* A VX_MASK for instructions with an RC field.  */
4643
#define VXRC_MASK (VX_MASK & ~(0x1f << 6))
4644
4645
/* A VX_MASK for instructions with a SH field.  */
4646
#define VXSH_MASK (VX_MASK & ~(0x7 << 6))
4647
4648
/* A VA form instruction.  */
4649
#define VXA(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x03f))
4650
4651
/* The mask for an VA form instruction.  */
4652
#define VXA_MASK VXA(0x3f, 0x3f)
4653
4654
/* A VXA_MASK with a SHB field.  */
4655
#define VXASHB_MASK (VXA_MASK | (1 << 10))
4656
4657
/* A VXR form instruction.  */
4658
#define VXR(op, xop, rc)      \
4659
  (OP (op)          \
4660
   | (((uint64_t)(rc) & 1) << 10)   \
4661
   | (((uint64_t)(xop)) & 0x3ff))
4662
4663
/* The mask for a VXR form instruction.  */
4664
#define VXR_MASK VXR(0x3f, 0x3ff, 1)
4665
4666
/* A VX form instruction with a VA tertiary opcode.  */
4667
#define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16))
4668
4669
#define VXASH(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
4670
#define VXASH_MASK VXASH (0x3f, 0x1f)
4671
4672
/* An X form instruction.  */
4673
#define X(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3ff) << 1))
4674
4675
/* A X form instruction for Quad-Precision FP Instructions.  */
4676
#define XVA(op, xop, vaop) (X(op,xop) | (((vaop) & 0x1f) << 16))
4677
4678
/* An X form instruction for SHA hash.  */
4679
#define XSHAHASH XVA
4680
4681
/* An X form instruction for SHA3 hash.  */
4682
#define XSHA3HASH(op, xop, vaop, sr) (XSHAHASH(op, xop, vaop) | ((sr) << 11))
4683
4684
/* An X form instruction for SHA2 hash.  */
4685
#define XSHA2HASH(op, xop, vaop, t) (XSHAHASH(op, xop, vaop) | ((t) << 21))
4686
4687
/* An EX form instruction.  */
4688
#define EX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7ff))
4689
4690
/* The mask for an EX form instruction.  */
4691
#define EX_MASK EX (0x3f, 0x7ff)
4692
4693
/* An XX2 form instruction.  */
4694
#define XX2(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1ff) << 2))
4695
4696
/* An XX2 form SHA pad instruction.  */
4697
#define XX2PAD(op, xop, id, bl)                 \
4698
  (XX2(op, xop)                                 \
4699
   | (((uint64_t)(id) & 0x3) << 19)             \
4700
   | (((uint64_t)(bl) & 0x3) << 16))
4701
4702
/* An XX2 form SHA pad instruction with E bit as 0.  */
4703
#define XX2PADE(op, xop, id, bl)  (XX2PAD(op, xop, id, bl) | (0 << 18))
4704
4705
/* A XX2 form instruction with the VA bits specified.  */
4706
#define XX2VA(op, xop, vaop) (XX2(op,xop) | (((vaop) & 0x1f) << 16))
4707
4708
/* An XX2 form instruction with the M bits specified.  */
4709
#define XX2M(op, xop, m)      \
4710
  (XX2 (op, xop)        \
4711
   | (((uint64_t)(m) & 0x2) << 15)    \
4712
   | (((uint64_t)(m) & 0x1) << 11))
4713
4714
/* An XX3 form instruction.  */
4715
#define XX3(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0xff) << 3))
4716
4717
/* An XX3 form instruction with the RC bit specified.  */
4718
#define XX3RC(op, xop, rc)      \
4719
  (OP (op)          \
4720
   | (((uint64_t)(rc) & 1) << 10)   \
4721
   | ((((uint64_t)(xop)) & 0x7f) << 3))
4722
4723
/* An XX3 form instruction with the M bits specified.  */
4724
#define XX3M(op, xop, m)      \
4725
  (XX3 (op, xop)        \
4726
   | (((uint64_t)(m) & 0x2) << 15)    \
4727
   | (((uint64_t)(m) & 0x1) << 11))
4728
4729
/* A GF XX3 form instruction with the P bit specified.  */
4730
#define XX3GF(op, xop, xop1, p)     \
4731
  (XX3 (op, xop)        \
4732
   | (((uint64_t)(xop1) & 3) << 9)    \
4733
   | (((uint64_t)(p) & 1) << 8))
4734
4735
/* An XX4 form instruction.  */
4736
#define XX4(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3) << 4))
4737
4738
/* A Z form instruction.  */
4739
#define Z(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1ff) << 1))
4740
4741
/* An X form instruction with the RC bit specified.  */
4742
#define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
4743
4744
/* A X form instruction for Quad-Precision FP Instructions with RC bit.  */
4745
#define XVARC(op, xop, vaop, rc) (XVA ((op), (xop), (vaop)) | ((rc) & 1))
4746
4747
/* An X form instruction with the RA bits specified as two ops.  */
4748
#define XMMF(op, xop, mop0, mop1)   \
4749
  (X ((op), (xop))        \
4750
   | ((mop0) & 3) << 19       \
4751
   | ((mop1) & 7) << 16)
4752
4753
/* A Z form instruction with the RC bit specified.  */
4754
#define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
4755
4756
/* The mask for an X form instruction.  */
4757
#define X_MASK XRC (0x3f, 0x3ff, 1)
4758
4759
/* The mask for an X form instruction with the BF bits specified.  */
4760
#define XBF_MASK (X_MASK | (3 << 21))
4761
4762
/* An X form instruction without the RC field specified.  */
4763
#define XRC_MASK XRC (0x3f, 0x3ff, 0)
4764
4765
/* An X form wait instruction with everything filled in except the WC
4766
   field.  */
4767
#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
4768
4769
/* The mask of TLB invalidate Entry with 20th bit specified.  */
4770
#define XTLBIE_MASK (X_MASK | (1<<20))
4771
4772
/* The mask of TLB invalidate Entry for I/O device.  */
4773
#define XTLBIEIO_MASK (XTLBIE_MASK | (3<<16))
4774
4775
/* An X form wait instruction with everything filled in except the WC
4776
   and PL fields.  */
4777
#define XWCPL_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | (3 << 18) | RB_MASK)
4778
4779
/* The mask for an XX1 form instruction.  */
4780
#define XX1_MASK X (0x3f, 0x3ff)
4781
4782
/* An XX1_MASK with the RB field fixed.  */
4783
#define XX1RB_MASK (XX1_MASK | RB_MASK)
4784
4785
/* The mask for an XX2 form instruction.  */
4786
#define XX2_MASK (XX2 (0x3f, 0x1ff) | (0x1f << 16))
4787
4788
/* The mask for an XX2 form instruction with the UIM bits specified.  */
4789
#define XX2UIM_MASK (XX2 (0x3f, 0x1ff) | (7 << 18))
4790
4791
/* The mask for an XX2 form instruction with the 4 UIM bits specified.  */
4792
#define XX2UIM4_MASK (XX2 (0x3f, 0x1ff) | (1 << 20))
4793
4794
/* The mask for an XX2 form instruction with the BF bits specified.  */
4795
#define XX2BF_MASK (XX2_MASK | (3 << 21) | (1))
4796
4797
/* The mask for an XX2 form instruction with the BF and DCMX bits
4798
   specified.  */
4799
#define XX2BFD_MASK (XX2 (0x3f, 0x1ff) | 1)
4800
4801
/* The mask for an XX2 form instruction with a split DCMX bits
4802
   specified.  */
4803
#define XX2DCMXS_MASK XX2 (0x3f, 0x1ee)
4804
4805
/* The mask for an XX3 form instruction.  */
4806
#define XX3_MASK XX3 (0x3f, 0xff)
4807
4808
/* The mask for an XX3 form instruction with the BF bits specified.  */
4809
#define XX3BF_MASK (XX3 (0x3f, 0xff) | (3 << 21) | (1))
4810
4811
/* An X_MASK with an accumulator register and the RA and RB fields fixed.  */
4812
#define XACC_MASK (X_MASK | RA_MASK | RB_MASK | (3 << 21))
4813
#define XDMR_MASK XACC_MASK
4814
4815
/* An X_MASK with two dense math register.  */
4816
#define XDMRDMR_MASK (X_MASK | RA_MASK | (3 << 21) | (3 << 11))
4817
4818
/* Masks for X form SHA instructions.  */
4819
#define XSHAHASH_MASK XVA_MASK
4820
#define XSHA2HASH_MASK (XSHAHASH_MASK | (1 << 22) | (3 << 11))
4821
#define XSHA3SR_MASK (XSHAHASH_MASK | (7 << 21))
4822
#define XSHA3HASH_MASK (XSHA3SR_MASK | RB_MASK)
4823
4824
/* The mask for an XX3 form instruction with the S1, S2, DM or SHW bits
4825
   specified.  */
4826
#define XX3DM_MASK (XX3 (0x3f, 0x1f) | (1 << 10))
4827
#define XX3SHW_MASK XX3DM_MASK
4828
#define XX3MADD_MASK XX3DM_MASK
4829
4830
/* The masks for X* form instructions with an ACC/DMR register.  */
4831
#define XX2ACC_MASK (XX2 (0x3f, 0x1ff) | (3 << 21) | 1)
4832
#define XX3ACC_MASK (XX3_MASK | (3 << 21) | 1)
4833
#define XX3DMR_MASK (XX3ACC_MASK | (1 << 11))
4834
#define XX2DMR_MASK (XX2ACC_MASK | (0xf << 17))
4835
#define XX3GERX_MASK (XX3ACC_MASK | (1 << 16))
4836
4837
/* Masks for XX2 form SHA pad instructions.  */
4838
#define XX2PAD_MASK (XX2ACC_MASK | (3 << 19) | (3 << 16))
4839
#define XX2PADE_MASK (XX2PAD_MASK | (1 << 18))
4840
4841
/* The masks for XX2 AES instructions with m0, m1 bits.  */
4842
#define XX2AES_MASK (XX2 (0x3f, 0x1ff) | (0xf << 17) | 1)
4843
#define XX2AESM_MASK (XX2AES_MASK | (1 << 16) | (1 << 11))
4844
4845
/* The masks for XX3 AES instructions with m0, m1 bits.  */
4846
#define XX3AES_MASK (XX3 (0x3f, 0xff) | 1)
4847
#define XX3AESM_MASK (XX3AES_MASK | (1 << 16) | (1 << 11))
4848
4849
/* The masks for XX3 GF instructions with P bit.  */
4850
#define XX3GF_MASK (XX3 (0x3f, 0xff) & ~(1 << 8))
4851
4852
/* The masks for VSX multiply XX3 instructions with scale bits.  */
4853
#define XX3MUL_MASK (XX3 (0x3f, 0x1f))
4854
4855
/* The masks for VSX multiply-sum XX3 instructions with p bits.  */
4856
#define XX3SUM_MASK (XX3 (0x3f, 0x7f))
4857
4858
/* The mask for an XX4 form instruction.  */
4859
#define XX4_MASK XX4 (0x3f, 0x3)
4860
4861
/* An X form wait instruction with everything filled in except the WC
4862
   field.  */
4863
#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
4864
4865
/* The mask for an XMMF form instruction.  */
4866
#define XMMF_MASK (XMMF (0x3f, 0x3ff, 3, 7) | (1))
4867
4868
/* The mask for a Z form instruction.  */
4869
#define Z_MASK ZRC (0x3f, 0x1ff, 1)
4870
#define Z2_MASK ZRC (0x3f, 0xff, 1)
4871
4872
/* An X_MASK with the RA/VA field fixed.  */
4873
#define XRA_MASK (X_MASK | RA_MASK)
4874
#define XVA_MASK XRA_MASK
4875
4876
/* An XRA_MASK with the A_L/W field clear.  */
4877
#define XWRA_MASK (XRA_MASK & ~((uint64_t) 1 << 16))
4878
#define XRLA_MASK XWRA_MASK
4879
4880
/* An X_MASK with the RB field fixed.  */
4881
#define XRB_MASK (X_MASK | RB_MASK)
4882
4883
/* An X_MASK with the RT field fixed.  */
4884
#define XRT_MASK (X_MASK | RT_MASK)
4885
4886
/* An XRT_MASK mask with the 2 L bits clear.  */
4887
#define XLRT_MASK (XRT_MASK & ~((uint64_t) 0x3 << 21))
4888
4889
/* An XRT_MASK mask with the 3 L bits clear.  */
4890
#define XL3RT_MASK (XRT_MASK & ~((uint64_t) 0x7 << 21))
4891
4892
/* An X_MASK with the RA and RB fields fixed.  */
4893
#define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
4894
4895
/* An XBF_MASK with the RA and RB fields fixed.  */
4896
#define XBFRARB_MASK (XBF_MASK | RA_MASK | RB_MASK)
4897
4898
/* An XRARB_MASK, but with the L bit clear.  */
4899
#define XRLARB_MASK (XRARB_MASK & ~((uint64_t) 1 << 16))
4900
4901
/* An XRARB_MASK, but with the L bits in a darn instruction clear.  */
4902
#define XLRAND_MASK (XRARB_MASK & ~((uint64_t) 3 << 16))
4903
4904
/* An X_MASK with the RT and RA fields fixed.  */
4905
#define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
4906
4907
/* An X_MASK with the RT and RB fields fixed.  */
4908
#define XRTRB_MASK (X_MASK | RT_MASK | RB_MASK)
4909
4910
/* An XRTRA_MASK, but with L bit clear.  */
4911
#define XRTLRA_MASK (XRTRA_MASK & ~((uint64_t) 1 << 21))
4912
4913
/* An X_MASK with the RT, RA and RB fields fixed.  */
4914
#define XRTRARB_MASK (X_MASK | RT_MASK | RA_MASK | RB_MASK)
4915
4916
/* An XRTRARB_MASK, but with L bit clear.  */
4917
#define XRTLRARB_MASK (XRTRARB_MASK & ~((uint64_t) 1 << 21))
4918
4919
/* An XRTRARB_MASK, but with A bit clear.  */
4920
#define XRTARARB_MASK (XRTRARB_MASK & ~((uint64_t) 1 << 25))
4921
4922
/* An XRTRARB_MASK, but with BF bits clear.  */
4923
#define XRTBFRARB_MASK (XRTRARB_MASK & ~((uint64_t) 7 << 23))
4924
4925
/* An X form instruction with the L bit specified.  */
4926
#define XOPL(op, xop, l)      \
4927
  (X ((op), (xop))        \
4928
   | ((((uint64_t)(l)) & 1) << 21))
4929
4930
/* An X form instruction with the 2 L bits specified.  */
4931
#define XOPL2(op, xop, l)     \
4932
  (X ((op), (xop))        \
4933
   | ((((uint64_t)(l)) & 3) << 21))
4934
4935
/* An X form instruction with the 3 L bits specified.  */
4936
#define XOPL3(op, xop, l)     \
4937
  (X ((op), (xop))        \
4938
   | ((((uint64_t)(l)) & 7) << 21))
4939
4940
/* An X form instruction with the WC and PL bits specified.  */
4941
#define XWCPL(op, xop, wc, pl)      \
4942
  (XOPL3 ((op), (xop), (wc))      \
4943
   | ((((uint64_t)(pl)) & 3) << 16))
4944
4945
/* An X form instruction with the L bit and RC bit specified.  */
4946
#define XRCL(op, xop, l, rc)      \
4947
  (XRC ((op), (xop), (rc))      \
4948
   | ((((uint64_t)(l)) & 1) << 21))
4949
4950
/* An X form instruction with RT fields specified */
4951
#define XRT(op, xop, rt)      \
4952
  (X ((op), (xop))        \
4953
   | ((((uint64_t)(rt)) & 0x1f) << 21))
4954
4955
/* An X form instruction with RT and RA fields specified */
4956
#define XRTRA(op, xop, rt, ra)      \
4957
  (X ((op), (xop))        \
4958
   | ((((uint64_t)(rt)) & 0x1f) << 21)  \
4959
   | ((((uint64_t)(ra)) & 0x1f) << 16))
4960
4961
/* The mask for an X form comparison instruction.  */
4962
#define XCMP_MASK (X_MASK | (((uint64_t)1) << 22))
4963
4964
/* The mask for an X form comparison instruction with the L field
4965
   fixed.  */
4966
#define XCMPL_MASK (XCMP_MASK | (((uint64_t)1) << 21))
4967
4968
/* An X form trap instruction with the TO field specified.  */
4969
#define XTO(op, xop, to)      \
4970
  (X ((op), (xop))        \
4971
   | ((((uint64_t)(to)) & 0x1f) << 21))
4972
#define XTO_MASK (X_MASK | TO_MASK)
4973
4974
/* An X form tlb instruction with the SH field specified.  */
4975
#define XTLB(op, xop, sh)     \
4976
  (X ((op), (xop))        \
4977
   | ((((uint64_t)(sh)) & 0x1f) << 11))
4978
#define XTLB_MASK (X_MASK | SH_MASK)
4979
4980
/* An X form sync instruction.  */
4981
#define XSYNC(op, xop, l)     \
4982
  (X ((op), (xop))        \
4983
   | ((((uint64_t)(l)) & 3) << 21))
4984
4985
/* An X form sync instruction with everything filled in except the LS
4986
   field.  */
4987
#define XSYNC_MASK (0xff9fffff)
4988
4989
/* An X form sync instruction with everything filled in except the L
4990
   and E fields.  */
4991
#define XSYNCLE_MASK (0xff90ffff)
4992
4993
/* An X form sync instruction.  */
4994
#define XSYNCLS(op, xop, l, s)      \
4995
  (X ((op), (xop))        \
4996
   | ((((uint64_t)(l)) & 7) << 21)    \
4997
   | ((((uint64_t)(s)) & 3) << 16))
4998
4999
/* An X form sync instruction with everything filled in except the
5000
   L and SC fields.  */
5001
#define XSYNCLS_MASK (0xff1cffff)
5002
5003
/* An X_MASK, but with the EH bit clear.  */
5004
#define XEH_MASK (X_MASK & ~((uint64_t )1))
5005
5006
/* An X form AltiVec dss instruction.  */
5007
#define XDSS(op, xop, a) (X ((op), (xop)) | ((((uint64_t)(a)) & 1) << 25))
5008
#define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
5009
5010
/* An XFL form instruction.  */
5011
#define XFL(op, xop, rc)      \
5012
  (OP (op)          \
5013
   | ((((uint64_t)(xop)) & 0x3ff) << 1) \
5014
   | (((uint64_t)(rc)) & 1))
5015
#define XFL_MASK XFL (0x3f, 0x3ff, 1)
5016
5017
/* An X form isel instruction.  */
5018
#define XISEL(op, xop, cr)  (OP (op) | ((xop) << 1) | ((cr) << 6))
5019
#define XISEL_MASK  XISEL(0x3f, 0x1f, 0)
5020
5021
/* An XL form instruction with the LK field set to 0.  */
5022
#define XL(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3ff) << 1))
5023
5024
/* An XL form instruction which uses the LK field.  */
5025
#define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
5026
5027
/* The mask for an XL form instruction.  */
5028
#define XL_MASK XLLK (0x3f, 0x3ff, 1)
5029
5030
/* An XL_MASK with the RT, RA and RB fields fixed, but S bit clear.  */
5031
#define XLS_MASK ((XL_MASK | RT_MASK | RA_MASK | RB_MASK) & ~(1 << 11))
5032
5033
/* An XL form instruction which explicitly sets the BO field.  */
5034
#define XLO(op, bo, xop, lk) \
5035
  (XLLK ((op), (xop), (lk)) | ((((uint64_t)(bo)) & 0x1f) << 21))
5036
#define XLO_MASK (XL_MASK | BO_MASK)
5037
5038
/* An XL form instruction which sets the BO field and the condition
5039
   bits of the BI field.  */
5040
#define XLOCB(op, bo, cb, xop, lk) \
5041
  (XLO ((op), (bo), (xop), (lk)) | ((((uint64_t)(cb)) & 3) << 16))
5042
5043
/* An XL_MASK with the BB field fixed.  */
5044
#define XLBB_MASK (XL_MASK | BB_MASK)
5045
5046
/* A mask for branch instructions using the BH field.  */
5047
#define XLBH_MASK (XL_MASK | (BB_MASK & ~(3 << 11)))
5048
5049
/* An XLBH_MASK with the BO field fixed.  */
5050
#define XLBOBB_MASK (XLBH_MASK | BO_MASK)
5051
5052
/* An XLBH_MASK with the BO and BI fields fixed.  */
5053
#define XLBOBIBB_MASK (XLBOBB_MASK | BI_MASK)
5054
5055
/* An XLBH_MASK with the BO and condition bits of the BI fields fixed.  */
5056
#define XLBOCBBB_MASK (XLBOBB_MASK | (3 << 16))
5057
5058
/* An X form mbar instruction with MO field.  */
5059
#define XMBAR(op, xop, mo)      \
5060
  (X ((op), (xop))        \
5061
   | ((((uint64_t)(mo)) & 1) << 21))
5062
5063
/* An XO form instruction.  */
5064
#define XO(op, xop, oe, rc)     \
5065
  (OP (op)          \
5066
   | ((((uint64_t)(xop)) & 0x1ff) << 1) \
5067
   | ((((uint64_t)(oe)) & 1) << 10) \
5068
   | (((unsigned long)(rc)) & 1))
5069
#define XO_MASK XO (0x3f, 0x1ff, 1, 1)
5070
#define XOL_MASK XO (0x3f, 0x1ff, 0, 1)
5071
5072
/* An XO_MASK with the RB field fixed.  */
5073
#define XORB_MASK (XO_MASK | RB_MASK)
5074
5075
/* An XOPS form instruction for paired singles.  */
5076
#define XOPS(op, xop, rc)     \
5077
  (OP (op)          \
5078
   | ((((uint64_t)(xop)) & 0x3ff) << 1) \
5079
   | (((uint64_t)(rc)) & 1))
5080
#define XOPS_MASK XOPS (0x3f, 0x3ff, 1)
5081
5082
5083
/* An XS form instruction.  */
5084
#define XS(op, xop, rc)       \
5085
  (OP (op)          \
5086
   | ((((uint64_t)(xop)) & 0x1ff) << 2) \
5087
   | (((uint64_t)(rc)) & 1))
5088
#define XS_MASK XS (0x3f, 0x1ff, 1)
5089
5090
/* A mask for the FXM version of an XFX form instruction.  */
5091
#define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
5092
5093
/* An XFX form instruction with the FXM field filled in.  */
5094
#define XFXM(op, xop, fxm, p4)      \
5095
  (X ((op), (xop))        \
5096
   | ((((uint64_t)(fxm)) & 0xff) << 12) \
5097
   | ((uint64_t)(p4) << 20))
5098
5099
/* An XFX form instruction with the SPR field filled in.  */
5100
#define XSPR(op, xop, spr)      \
5101
  (X ((op), (xop))        \
5102
   | ((((uint64_t)(spr)) & 0x1f) << 16) \
5103
   | ((((uint64_t)(spr)) & 0x3e0) << 6))
5104
#define XSPR_MASK (X_MASK | SPR_MASK)
5105
5106
/* An XFX form instruction with the SPR field filled in except for the
5107
   SPRBAT field.  */
5108
#define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
5109
5110
/* An XFX form instruction with the SPR field filled in except for the
5111
   SPRGQR field.  */
5112
#define XSPRGQR_MASK (XSPR_MASK &~ SPRGQR_MASK)
5113
5114
/* An XFX form instruction with the SPR field filled in except for the
5115
   SPRG field.  */
5116
#define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16))
5117
5118
/* An X form instruction with everything filled in except the E field.  */
5119
#define XE_MASK (0xffff7fff)
5120
5121
/* An X form user context instruction.  */
5122
#define XUC(op, xop)  (OP (op) | (((uint64_t)(xop)) & 0x1f))
5123
#define XUC_MASK      XUC(0x3f, 0x1f)
5124
5125
/* An XW form instruction.  */
5126
#define XW(op, xop, rc)       \
5127
  (OP (op)          \
5128
   | ((((uint64_t)(xop)) & 0x3f) << 1)  \
5129
   | ((rc) & 1))
5130
/* The mask for a G form instruction. rc not supported at present.  */
5131
#define XW_MASK XW (0x3f, 0x3f, 0)
5132
5133
/* An APU form instruction.  */
5134
#define APU(op, xop, rc)      \
5135
  (OP (op)          \
5136
   | (((uint64_t)(xop)) & 0x3ff) << 1 \
5137
   | ((rc) & 1))
5138
5139
/* The mask for an APU form instruction.  */
5140
#define APU_MASK APU (0x3f, 0x3ff, 1)
5141
#define APU_RT_MASK (APU_MASK | RT_MASK)
5142
#define APU_RA_MASK (APU_MASK | RA_MASK)
5143
5144
/* An SVL form instruction. */
5145
#define SVL(op, xop, rc)      \
5146
  (OP (op)          \
5147
   | ((((uint64_t)(xop)) & 0x1f) << 1)    \
5148
   | (((uint64_t)(rc)) & 1))
5149
#define SVL_MASK  SVL (0x3f, 0x1f, 1)
5150
5151
/* An SVM form instruction. */
5152
#define SVM(op, xop)        \
5153
  (OP (op)          \
5154
   | (((uint64_t)(xop)) & 0x3f))
5155
#define SVM_MASK  SVM (0x3f, 0x3f)
5156
5157
/* An SVRM form instruction. */
5158
#define SVRM(op, xop)       \
5159
  (OP (op)          \
5160
   | (((uint64_t)(xop)) & 0x3f))
5161
#define SVRM_MASK SVRM (0x3f, 0x3f)
5162
5163
/* An SVI form instruction. */
5164
#define SVI(op, xop)        \
5165
  (OP (op)          \
5166
   | (((uint64_t)(xop)) & 0x3f))
5167
#define SVI_MASK  SVI (0x3f, 0x3f)
5168
5169
/* The BO encodings used in extended conditional branch mnemonics.  */
5170
#define BODNZF  (0x0)
5171
#define BODNZFP (0x1)
5172
#define BODZF (0x2)
5173
#define BODZFP  (0x3)
5174
#define BODNZT  (0x8)
5175
#define BODNZTP (0x9)
5176
#define BODZT (0xa)
5177
#define BODZTP  (0xb)
5178
5179
#define BOF (0x4)
5180
#define BOFP  (0x5)
5181
#define BOFM4 (0x6)
5182
#define BOFP4 (0x7)
5183
#define BOT (0xc)
5184
#define BOTP  (0xd)
5185
#define BOTM4 (0xe)
5186
#define BOTP4 (0xf)
5187
5188
#define BODNZ (0x10)
5189
#define BODNZP  (0x11)
5190
#define BODZ  (0x12)
5191
#define BODZP (0x13)
5192
#define BODNZM4 (0x18)
5193
#define BODNZP4 (0x19)
5194
#define BODZM4  (0x1a)
5195
#define BODZP4  (0x1b)
5196
5197
#define BOU (0x14)
5198
5199
/* The BO16 encodings used in extended VLE conditional branch mnemonics.  */
5200
#define BO16F   (0x0)
5201
#define BO16T   (0x1)
5202
5203
/* The BO32 encodings used in extended VLE conditional branch mnemonics.  */
5204
#define BO32F   (0x0)
5205
#define BO32T   (0x1)
5206
#define BO32DNZ (0x2)
5207
#define BO32DZ  (0x3)
5208
5209
/* The BI condition bit encodings used in extended conditional branch
5210
   mnemonics.  */
5211
#define CBLT  (0)
5212
#define CBGT  (1)
5213
#define CBEQ  (2)
5214
#define CBSO  (3)
5215
5216
/* The TO encodings used in extended trap mnemonics.  */
5217
#define TOLGT (0x1)
5218
#define TOLLT (0x2)
5219
#define TOEQ  (0x4)
5220
#define TOLGE (0x5)
5221
#define TOLNL (0x5)
5222
#define TOLLE (0x6)
5223
#define TOLNG (0x6)
5224
#define TOGT  (0x8)
5225
#define TOGE  (0xc)
5226
#define TONL  (0xc)
5227
#define TOLT  (0x10)
5228
#define TOLE  (0x14)
5229
#define TONG  (0x14)
5230
#define TONE  (0x18)
5231
#define TOU (0x1f)
5232

5233
/* Smaller names for the flags so each entry in the opcodes table will
5234
   fit on a single line.  */
5235
#undef  PPC
5236
#define PPC PPC_OPCODE_PPC
5237
#define PPCCOM  PPC_OPCODE_PPC | PPC_OPCODE_COMMON
5238
#define POWER4  PPC_OPCODE_POWER4
5239
#define POWER5  PPC_OPCODE_POWER5
5240
#define POWER6  PPC_OPCODE_POWER6
5241
#define POWER7  PPC_OPCODE_POWER7
5242
#define POWER8  PPC_OPCODE_POWER8
5243
#define POWER9  PPC_OPCODE_POWER9
5244
#define POWER10 PPC_OPCODE_POWER10
5245
#define FUTURE  PPC_OPCODE_FUTURE
5246
#define CELL  PPC_OPCODE_CELL
5247
#define PPC64 PPC_OPCODE_64 | PPC_OPCODE_64_BRIDGE
5248
#define NON32 (PPC_OPCODE_64 | PPC_OPCODE_POWER4  \
5249
     | PPC_OPCODE_EFS | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
5250
#define PPC403  PPC_OPCODE_403
5251
#define PPC405  PPC_OPCODE_405
5252
#define PPC440  PPC_OPCODE_440
5253
#define PPC464  PPC440
5254
#define PPC476  PPC_OPCODE_476
5255
#define PPC750  PPC_OPCODE_750
5256
#define GEKKO PPC_OPCODE_750
5257
#define BROADWAY PPC_OPCODE_750
5258
#define PPC7450 PPC_OPCODE_7450
5259
#define PPC860  PPC_OPCODE_860
5260
#define PPCPS PPC_OPCODE_PPCPS
5261
#define PPCVEC  PPC_OPCODE_ALTIVEC
5262
#define PPCVEC2 (PPC_OPCODE_POWER8 | PPC_OPCODE_E6500)
5263
#define PPCVEC3 PPC_OPCODE_POWER9
5264
#define PPCVSX  PPC_OPCODE_VSX
5265
#define PPCVSX2 PPC_OPCODE_POWER8
5266
#define PPCVSX3 PPC_OPCODE_POWER9
5267
#define PPCVSX4 PPC_OPCODE_POWER10
5268
#define PPCVSXF PPC_OPCODE_FUTURE
5269
#define POWER PPC_OPCODE_POWER
5270
#define POWER2  PPC_OPCODE_POWER | PPC_OPCODE_POWER2
5271
#define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
5272
#define PPCPWR2 (PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 \
5273
     | PPC_OPCODE_COMMON)
5274
#define COM PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
5275
#define M601  PPC_OPCODE_POWER | PPC_OPCODE_601
5276
#define PWRCOM  PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
5277
#define MFDEC1  PPC_OPCODE_POWER
5278
#define MFDEC2  (PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE \
5279
     | PPC_OPCODE_TITAN)
5280
#define BOOKE PPC_OPCODE_BOOKE
5281
#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
5282
#define PPCE300 PPC_OPCODE_E300
5283
#define PPCSPE  PPC_OPCODE_SPE
5284
#define PPCSPE2 PPC_OPCODE_SPE2
5285
#define PPCISEL PPC_OPCODE_ISEL
5286
#define PPCEFS  PPC_OPCODE_EFS
5287
#define PPCEFS2 PPC_OPCODE_EFS2
5288
#define PPCBRLK PPC_OPCODE_BRLOCK
5289
#define PPCPMR  PPC_OPCODE_PMR
5290
#define PPCTMR  PPC_OPCODE_TMR
5291
#define PPCCHLK PPC_OPCODE_CACHELCK
5292
#define PPCRFMCI PPC_OPCODE_RFMCI
5293
#define E500MC  PPC_OPCODE_E500MC
5294
#define PPCA2 PPC_OPCODE_A2
5295
#define TITAN PPC_OPCODE_TITAN
5296
#define MULHW PPC_OPCODE_405 | PPC_OPCODE_440 | PPC_OPCODE_476 | TITAN
5297
#define E500  PPC_OPCODE_E500
5298
#define E6500 PPC_OPCODE_E6500
5299
#define PPCVLE  PPC_OPCODE_VLE
5300
#define PPCHTM  PPC_OPCODE_POWER8
5301
#define E200Z4  PPC_OPCODE_E200Z4
5302
#define PPCLSP  PPC_OPCODE_LSP
5303
#define SVP64 PPC_OPCODE_SVP64
5304
/* Used to mark extended mnemonic in deprecated field so that -Mraw
5305
   won't use this variant in disassembly.  */
5306
#define EXT PPC_OPCODE_RAW
5307

5308
/* The opcode table.
5309
5310
   The format of the opcode table is:
5311
5312
   NAME   OPCODE    MASK       FLAGS  ANTI    {OPERANDS}
5313
5314
   NAME is the name of the instruction.
5315
   OPCODE is the instruction opcode.
5316
   MASK is the opcode mask; this is used to tell the disassembler
5317
     which bits in the actual opcode must match OPCODE.
5318
   FLAGS are flags indicating which processors support the instruction.
5319
   ANTI indicates which processors don't support the instruction.
5320
   OPERANDS is the list of operands.
5321
5322
   The disassembler reads the table in order and prints the first
5323
   instruction which matches, so this table is sorted to put more
5324
   specific instructions before more general instructions.
5325
5326
   This table must be sorted by major opcode.  Please try to keep it
5327
   vaguely sorted within major opcode too, except of course where
5328
   constrained otherwise by disassembler operation.  */
5329
5330
const struct powerpc_opcode powerpc_opcodes[] = {
5331
{"attn",  X(0,256), X_MASK,   POWER4|PPCA2, PPC476|PPCVLE,  {0}},
5332
{"tdlgti",  OPTO(2,TOLGT),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5333
{"tdllti",  OPTO(2,TOLLT),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5334
{"tdeqi", OPTO(2,TOEQ), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5335
{"tdlgei",  OPTO(2,TOLGE),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5336
{"tdlnli",  OPTO(2,TOLNL),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5337
{"tdllei",  OPTO(2,TOLLE),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5338
{"tdlngi",  OPTO(2,TOLNG),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5339
{"tdgti", OPTO(2,TOGT), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5340
{"tdgei", OPTO(2,TOGE), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5341
{"tdnli", OPTO(2,TONL), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5342
{"tdlti", OPTO(2,TOLT), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5343
{"tdlei", OPTO(2,TOLE), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5344
{"tdngi", OPTO(2,TONG), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5345
{"tdnei", OPTO(2,TONE), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5346
{"tdui",  OPTO(2,TOU),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5347
{"tdi",   OP(2),    OP_MASK,     PPC64, PPCVLE,   {TO, RA, SI}},
5348
5349
{"twlgti",  OPTO(3,TOLGT),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5350
{"tlgti", OPTO(3,TOLGT),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5351
{"twllti",  OPTO(3,TOLLT),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5352
{"tllti", OPTO(3,TOLLT),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5353
{"tweqi", OPTO(3,TOEQ), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5354
{"teqi",  OPTO(3,TOEQ), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5355
{"twlgei",  OPTO(3,TOLGE),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5356
{"tlgei", OPTO(3,TOLGE),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5357
{"twlnli",  OPTO(3,TOLNL),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5358
{"tlnli", OPTO(3,TOLNL),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5359
{"twllei",  OPTO(3,TOLLE),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5360
{"tllei", OPTO(3,TOLLE),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5361
{"twlngi",  OPTO(3,TOLNG),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5362
{"tlngi", OPTO(3,TOLNG),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5363
{"twgti", OPTO(3,TOGT), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5364
{"tgti",  OPTO(3,TOGT), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5365
{"twgei", OPTO(3,TOGE), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5366
{"tgei",  OPTO(3,TOGE), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5367
{"twnli", OPTO(3,TONL), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5368
{"tnli",  OPTO(3,TONL), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5369
{"twlti", OPTO(3,TOLT), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5370
{"tlti",  OPTO(3,TOLT), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5371
{"twlei", OPTO(3,TOLE), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5372
{"tlei",  OPTO(3,TOLE), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5373
{"twngi", OPTO(3,TONG), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5374
{"tngi",  OPTO(3,TONG), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5375
{"twnei", OPTO(3,TONE), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5376
{"tnei",  OPTO(3,TONE), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5377
{"twui",  OPTO(3,TOU),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5378
{"tui",   OPTO(3,TOU),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5379
{"twi",   OP(3),    OP_MASK,     PPCCOM,  PPCVLE,   {TO, RA, SI}},
5380
{"ti",    OP(3),    OP_MASK,     PWRCOM,  PPCVLE,   {TO, RA, SI}},
5381
5382
{"ps_cmpu0",  X  (4,   0),  XBF_MASK,    PPCPS, 0,    {BF, FRA, FRB}},
5383
{"vaddubm", VX (4,   0),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5384
{"vmul10cuq", VX (4,   1),  VXVB_MASK,   PPCVEC3, 0,    {VD, VA}},
5385
{"vmaxub",  VX (4,   2),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5386
{"vucmprhn",  VX (4,   3),  VX_MASK,     FUTURE,  0,    {VD, VA, VB}},
5387
{"vrlb",  VX (4,   4),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5388
{"vrlq",  VX (4,   5),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5389
{"vcmpequb",  VXR(4,   6,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5390
{"vcmpneb", VXR(4,   7,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5391
{"vmuloub", VX (4,   8),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5392
{"vaddfp",  VX (4,  10),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5393
{"vdivuq",  VX (4,  11),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5394
{"psq_lx",  XW (4,   6,0),  XW_MASK,     PPCPS, 0,    {FRT,RA,RB,PSWM,PSQM}},
5395
{"vmrghb",  VX (4,  12),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5396
{"vstribl", VXVA(4,13,0), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5397
{"vstribr", VXVA(4,13,1), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5398
{"vstrihl", VXVA(4,13,2), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5399
{"vstrihr", VXVA(4,13,3), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5400
{"psq_stx", XW (4,   7,0),  XW_MASK,     PPCPS, 0,    {FRS,RA,RB,PSWM,PSQM}},
5401
{"vpkuhum", VX (4,  14),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5402
{"vinsbvlx",  VX (4,  15),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5403
{"mulhhwu", XRC(4,   8,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5404
{"mulhhwu.",  XRC(4,   8,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5405
{"mtvsrbmi",  DX (4,10),  DX_MASK,     POWER10, 0,    {VD, DXD}},
5406
{"ps_sum0", A  (4,  10,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5407
{"ps_sum0.",  A  (4,  10,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5408
{"vsldbi",  VX (4,  22),  VXSH_MASK,   POWER10, 0,    {VD, VA, VB, SH3}},
5409
{"ps_sum1", A  (4,  11,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5410
{"ps_sum1.",  A  (4,  11,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5411
{"vextdubvlx",  VX (4,  24),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5412
{"ps_muls0",  A  (4,  12,0),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5413
{"machhwu", XO (4,  12,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5414
{"vextdubvrx",  VX (4,  25),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5415
{"ps_muls0.", A  (4,  12,1),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5416
{"machhwu.",  XO (4,  12,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5417
{"vextduhvlx",  VX (4,  26),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5418
{"ps_muls1",  A  (4,  13,0),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5419
{"vextduhvrx",  VX (4,  27),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5420
{"ps_muls1.", A  (4,  13,1),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5421
{"vextduwvlx",  VX (4,  28),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5422
{"ps_madds0", A  (4,  14,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5423
{"vextduwvrx",  VX (4,  29),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5424
{"ps_madds0.",  A  (4,  14,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5425
{"vextddvlx", VX (4,  30),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5426
{"ps_madds1", A  (4,  15,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5427
{"vextddvrx", VX (4,  31),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5428
{"ps_madds1.",  A  (4,  15,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5429
{"vmhaddshs", VXA(4,  32),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5430
{"vmhraddshs",  VXA(4,  33),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5431
{"vmladduhm", VXA(4,  34),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5432
{"vmsumudm",  VXA(4,  35),  VXA_MASK,    PPCVEC3, 0,    {VD, VA, VB, VC}},
5433
{"ps_div",  A  (4,  18,0),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5434
{"vmsumcud",  VXA(4,  23),  VXA_MASK,    POWER10, 0,    {VD, VA, VB, VC}},
5435
{"vmsumubm",  VXA(4,  36),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5436
{"ps_div.", A  (4,  18,1),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5437
{"vmsummbm",  VXA(4,  37),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5438
{"vmsumuhm",  VXA(4,  38),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5439
{"vmsumuhs",  VXA(4,  39),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5440
{"ps_sub",  A  (4,  20,0),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5441
{"vmsumshm",  VXA(4,  40),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5442
{"ps_sub.", A  (4,  20,1),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5443
{"vmsumshs",  VXA(4,  41),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5444
{"ps_add",  A  (4,  21,0),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5445
{"vsel",  VXA(4,  42),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5446
{"ps_add.", A  (4,  21,1),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5447
{"vperm", VXA(4,  43),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5448
{"vsldoi",  VXA(4,  44),  VXASHB_MASK, PPCVEC,  0,    {VD, VA, VB, SHB}},
5449
{"vpermxor",  VXA(4,  45),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5450
{"ps_sel",  A  (4,  23,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5451
{"vmaddfp", VXA(4,  46),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VC, VB}},
5452
{"ps_sel.", A  (4,  23,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5453
{"vnmsubfp",  VXA(4,  47),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VC, VB}},
5454
{"ps_res",  A  (4,  24,0), AFRAFRC_MASK, PPCPS, 0,    {FRT, FRB}},
5455
{"maddhd",  VXA(4,  48),  VXA_MASK,    POWER9,  0,    {RT, RA, RB, RC}},
5456
{"ps_res.", A  (4,  24,1), AFRAFRC_MASK, PPCPS, 0,    {FRT, FRB}},
5457
{"maddhdu", VXA(4,  49),  VXA_MASK,    POWER9,  0,    {RT, RA, RB, RC}},
5458
{"ps_mul",  A  (4,  25,0),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5459
{"ps_mul.", A  (4,  25,1),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5460
{"maddld",  VXA(4,  51),  VXA_MASK,    POWER9,  0,    {RT, RA, RB, RC}},
5461
{"ps_rsqrte", A  (4,  26,0), AFRAFRC_MASK, PPCPS, 0,    {FRT, FRB}},
5462
{"ps_rsqrte.",  A  (4,  26,1), AFRAFRC_MASK, PPCPS, 0,    {FRT, FRB}},
5463
{"ps_msub", A  (4,  28,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5464
{"ps_msub.",  A  (4,  28,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5465
{"ps_madd", A  (4,  29,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5466
{"ps_madd.",  A  (4,  29,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5467
{"vpermr",  VXA(4,  59),  VXA_MASK,    PPCVEC3, 0,    {VD, VA, VB, VC}},
5468
{"ps_nmsub",  A  (4,  30,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5469
{"vaddeuqm",  VXA(4,  60),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5470
{"ps_nmsub.", A  (4,  30,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5471
{"vaddecuq",  VXA(4,  61),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5472
{"ps_nmadd",  A  (4,  31,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5473
{"vsubeuqm",  VXA(4,  62),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5474
{"ps_nmadd.", A  (4,  31,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5475
{"vsubecuq",  VXA(4,  63),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5476
{"ps_cmpo0",  X  (4,  32),  XBF_MASK,    PPCPS, 0,    {BF, FRA, FRB}},
5477
{"vadduhm", VX (4,  64),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5478
{"vmul10ecuq",  VX (4,  65),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5479
{"vmaxuh",  VX (4,  66),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5480
{"vucmprln",  VX (4,  67),  VX_MASK,     FUTURE,  0,    {VD, VA, VB}},
5481
{"vrlh",  VX (4,  68),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5482
{"vrlqmi",  VX (4,  69),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5483
{"vcmpequh",  VXR(4,  70,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5484
{"vcmpneh", VXR(4,  71,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5485
{"vmulouh", VX (4,  72),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5486
{"vsubfp",  VX (4,  74),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5487
{"psq_lux", XW (4,  38,0),  XW_MASK,     PPCPS, 0,    {FRT,RA,RB,PSWM,PSQM}},
5488
{"vmrghh",  VX (4,  76),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5489
{"psq_stux",  XW (4,  39,0),  XW_MASK,     PPCPS, 0,    {FRS,RA,RB,PSWM,PSQM}},
5490
{"vpkuwum", VX (4,  78),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5491
{"vinshvlx",  VX (4,  79),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5492
{"ps_neg",  XRC(4,  40,0),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5493
{"mulhhw",  XRC(4,  40,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5494
{"ps_neg.", XRC(4,  40,1),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5495
{"mulhhw.", XRC(4,  40,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5496
{"machhw",  XO (4,  44,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5497
{"machhw.", XO (4,  44,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5498
{"nmachhw", XO (4,  46,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5499
{"nmachhw.",  XO (4,  46,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5500
{"ps_cmpu1",  X  (4,  64),  XBF_MASK,    PPCPS, 0,    {BF, FRA, FRB}},
5501
{"vadduwm", VX (4,  128), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5502
{"vmaxuw",  VX (4,  130), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5503
{"vucmprhb",  VX (4,  131), VX_MASK,     FUTURE,  0,    {VD, VA, VB}},
5504
{"vrlw",  VX (4,  132), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5505
{"vrlwmi",  VX (4,  133), VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5506
{"vcmpequw",  VXR(4,  134,0), VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5507
{"vcmpnew", VXR(4,  135,0), VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5508
{"vmulouw", VX (4,  136), VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5509
{"vmuluwm", VX (4,  137), VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5510
{"vdivuw",  VX (4,  139), VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5511
{"vmrghw",  VX (4,  140), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5512
{"vpkuhus", VX (4,  142), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5513
{"vinswvlx",  VX (4,  143), VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5514
{"ps_mr", XRC(4,  72,0),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5515
{"ps_mr.",  XRC(4,  72,1),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5516
{"machhwsu",  XO (4,  76,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5517
{"machhwsu.", XO (4,  76,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5518
{"ps_cmpo1",  X  (4,  96),  XBF_MASK,    PPCPS, 0,    {BF, FRA, FRB}},
5519
{"vaddudm", VX (4, 192),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5520
{"vmaxud",  VX (4, 194),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5521
{"vucmprlb",  VX (4, 195),  VX_MASK,     FUTURE,  0,    {VD, VA, VB}},
5522
{"vrld",  VX (4, 196),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5523
{"vrldmi",  VX (4, 197),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5524
{"vcmpeqfp",  VXR(4, 198,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5525
{"vcmpequd",  VXR(4, 199,0),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
5526
{"vmuloud", VX (4, 200),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5527
{"vdivud",  VX (4, 203),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5528
{"vpkuwus", VX (4, 206),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5529
{"vinsw", VX (4, 207),   VXUIMM4_MASK, POWER10, 0,    {VD, RB, UIMM4}},
5530
{"machhws", XO (4, 108,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5531
{"machhws.",  XO (4, 108,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5532
{"nmachhws",  XO (4, 110,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5533
{"nmachhws.", XO (4, 110,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5534
{"vadduqm", VX (4, 256),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5535
{"vcmpuq",  VX (4, 257),  VXBF_MASK,   POWER10, 0,    {BF, VA, VB}},
5536
{"vmaxsb",  VX (4, 258),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5537
{"vucmprhh",  VX (4, 259),  VX_MASK,     FUTURE,  0,    {VD, VA, VB}},
5538
{"vslb",  VX (4, 260),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5539
{"vslq",  VX (4, 261),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5540
{"vcmpnezb",  VXR(4, 263,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5541
{"vmulosb", VX (4, 264),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5542
{"vrefp", VX (4, 266),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5543
{"vdivsq",  VX (4, 267),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5544
{"vmrglb",  VX (4, 268),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5545
{"vpkshus", VX (4, 270),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5546
{"vinsbvrx",  VX (4, 271),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5547
{"ps_nabs", XRC(4, 136,0),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5548
{"mulchwu", XRC(4, 136,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5549
{"ps_nabs.",  XRC(4, 136,1),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5550
{"mulchwu.",  XRC(4, 136,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5551
{"macchwu", XO (4, 140,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5552
{"macchwu.",  XO (4, 140,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5553
{"vaddcuq", VX (4, 320),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5554
{"vcmpsq",  VX (4, 321),  VXBF_MASK,   POWER10, 0,    {BF, VA, VB}},
5555
{"vmaxsh",  VX (4, 322),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5556
{"vucmprlh",  VX (4, 323),  VX_MASK,     FUTURE,  0,    {VD, VA, VB}},
5557
{"vslh",  VX (4, 324),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5558
{"vrlqnm",  VX (4, 325),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5559
{"vcmpnezh",  VXR(4, 327,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5560
{"vmulosh", VX (4, 328),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5561
{"vrsqrtefp", VX (4, 330),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5562
{"vmrglh",  VX (4, 332),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5563
{"vpkswus", VX (4, 334),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5564
{"vinshvrx",  VX (4, 335),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5565
{"mulchw",  XRC(4, 168,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5566
{"mulchw.", XRC(4, 168,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5567
{"macchw",  XO (4, 172,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5568
{"macchw.", XO (4, 172,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5569
{"nmacchw", XO (4, 174,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5570
{"nmacchw.",  XO (4, 174,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5571
{"vaddcuw", VX (4, 384),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5572
{"vmaxsw",  VX (4, 386),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5573
{"vupkhsntob",  VXSEL5 (4, 387,0),  VXVA_MASK,  FUTURE, 0,  {VD, VB}},
5574
{"vupklsntob",  VXSEL5 (4, 387,1),  VXVA_MASK,  FUTURE, 0,  {VD, VB}},
5575
{"vupkint8tobf16", VXSEL4 (4, 387,1), VXUIMM1_MASK, FUTURE, 0,  {VD, VB, UIMM1}},
5576
{"vupkint4tobf16", VXSEL3 (4, 387,2), VXUIMM2_MASK, FUTURE, 0,  {VD, VB, UIMM2}},
5577
{"vupkint8tofp32", VXSEL3 (4, 387,3), VXUIMM2_MASK, FUTURE, 0,  {VD, VB, UIMM2}},
5578
{"vupkint4tofp32", VXSEL2 (4, 387,2), VXUIMM3_MASK, FUTURE, 0,  {VD, VB, UIMM3}},
5579
{"vslw",  VX (4, 388),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5580
{"vrlwnm",  VX (4, 389),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5581
{"vcmpnezw",  VXR(4, 391,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5582
{"vmulosw", VX (4, 392),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5583
{"vexptefp",  VX (4, 394),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5584
{"vdivsw",  VX (4, 395),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5585
{"vmrglw",  VX (4, 396),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5586
{"vclrlb",  VX (4, 397),  VX_MASK,     POWER10, 0,    {VD, VA, RB}},
5587
{"vpkshss", VX (4, 398),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5588
{"vinswvrx",  VX (4, 399),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5589
{"macchwsu",  XO (4, 204,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5590
{"macchwsu.", XO (4, 204,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5591
{"vmaxsd",  VX (4, 450),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5592
{"vsl",   VX (4, 452),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5593
{"vrldnm",  VX (4, 453),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5594
{"vcmpgefp",  VXR(4, 454,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5595
{"vcmpequq",  VXR(4, 455,0),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
5596
{"vmulosd", VX (4, 456),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5597
{"vmulld",  VX (4, 457),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5598
{"vlogefp", VX (4, 458),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5599
{"vdivsd",  VX (4, 459),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5600
{"vclrrb",  VX (4, 461),  VX_MASK,     POWER10, 0,    {VD, VA, RB}},
5601
{"vpkswss", VX (4, 462),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5602
{"vinsd", VX (4, 463),   VXUIMM4_MASK, POWER10, 0,    {VD, RB, UIMM4}},
5603
{"macchws", XO (4, 236,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5604
{"macchws.",  XO (4, 236,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5605
{"nmacchws",  XO (4, 238,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5606
{"nmacchws.", XO (4, 238,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5607
{"evaddw",  VX (4, 512),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5608
{"vaddubs", VX (4, 512),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5609
{"vmul10uq",  VX (4, 513),  VXVB_MASK,   PPCVEC3, 0,    {VD, VA}},
5610
{"evaddiw", VX (4, 514),  VX_MASK,     PPCSPE,  0,    {RS, RB, UIMM}},
5611
{"vminub",  VX (4, 514),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5612
{"evsubw",  VX (4, 516),  VX_MASK,     PPCSPE,  EXT,    {RS, RB, RA}},
5613
{"evsubfw", VX (4, 516),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5614
{"vsrb",  VX (4, 516),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5615
{"vsrq",  VX (4, 517),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5616
{"evsubiw", VX (4, 518),  VX_MASK,     PPCSPE,  EXT,    {RS, RB, UIMM}},
5617
{"evsubifw",  VX (4, 518),  VX_MASK,     PPCSPE,  0,    {RS, UIMM, RB}},
5618
{"vcmpgtub",  VXR(4, 518,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5619
{"evabs", VX (4, 520),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5620
{"vmuleub", VX (4, 520),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5621
{"evneg", VX (4, 521),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5622
{"evextsb", VX (4, 522),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5623
{"vrfin", VX (4, 522),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5624
{"vdiveuq", VX (4, 523),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5625
{"evextsh", VX (4, 523),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5626
{"evrndw",  VX (4, 524),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5627
{"vspltb",  VX (4, 524),   VXUIMM4_MASK, PPCVEC,  0,    {VD, VB, UIMM4}},
5628
{"vextractub",  VX (4, 525),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5629
{"evcntlzw",  VX (4, 525),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5630
{"evcntlsw",  VX (4, 526),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5631
{"vupkhsb", VX (4, 526),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5632
{"vinsblx", VX (4, 527),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5633
{"brinc", VX (4, 527),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5634
{"ps_abs",  XRC(4, 264,0),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5635
{"ps_abs.", XRC(4, 264,1),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5636
{"evand", VX (4, 529),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5637
{"evandc",  VX (4, 530),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5638
{"vsrdbi",  VX (4, 534),  VXSH_MASK,   POWER10, 0,    {VD, VA, VB, SH3}},
5639
{"evxor", VX (4, 534),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5640
{"evmr",  VX (4, 535),  VX_MASK,     PPCSPE,  EXT,    {RS, RAB}},
5641
{"evor",  VX (4, 535),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5642
{"evnot", VX (4, 536),  VX_MASK,     PPCSPE,  EXT,    {RS, RAB}},
5643
{"evnor", VX (4, 536),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5644
{"get",   APU(4, 268,0),  APU_RA_MASK, PPC405,  0,    {RT, FSL}},
5645
{"eveqv", VX (4, 537),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5646
{"evorc", VX (4, 539),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5647
{"evnand",  VX (4, 542),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5648
{"evsrwu",  VX (4, 544),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5649
{"evsrws",  VX (4, 545),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5650
{"evsrwiu", VX (4, 546),  VX_MASK,     PPCSPE,  0,    {RS, RA, EVUIMM}},
5651
{"evsrwis", VX (4, 547),  VX_MASK,     PPCSPE,  0,    {RS, RA, EVUIMM}},
5652
{"evslw", VX (4, 548),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5653
{"evslwi",  VX (4, 550),  VX_MASK,     PPCSPE,  0,    {RS, RA, EVUIMM}},
5654
{"evrlw", VX (4, 552),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5655
{"evsplati",  VX (4, 553),  VX_MASK,     PPCSPE,  0,    {RS, SIMM}},
5656
{"evrlwi",  VX (4, 554),  VX_MASK,     PPCSPE,  0,    {RS, RA, EVUIMM}},
5657
{"evsplatfi", VX (4, 555),  VX_MASK,     PPCSPE,  0,    {RS, SIMM}},
5658
{"evmergehi", VX (4, 556),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5659
{"evmergelo", VX (4, 557),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5660
{"evmergehilo", VX (4, 558),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5661
{"evmergelohi", VX (4, 559),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5662
{"evcmpgtu",  VX (4, 560),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5663
{"evcmpgts",  VX (4, 561),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5664
{"evcmpltu",  VX (4, 562),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5665
{"evcmplts",  VX (4, 563),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5666
{"evcmpeq", VX (4, 564),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5667
{"cget",  APU(4, 284,0),  APU_RA_MASK, PPC405,  0,    {RT, FSL}},
5668
{"vadduhs", VX (4, 576),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5669
{"vmul10euq", VX (4, 577),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5670
{"vminuh",  VX (4, 578),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5671
{"vsrh",  VX (4, 580),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5672
{"vcmpgtuh",  VXR(4, 582,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5673
{"vmuleuh", VX (4, 584),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5674
{"vrfiz", VX (4, 586),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5675
{"vsplth",  VX (4, 588),   VXUIMM3_MASK, PPCVEC,  0,    {VD, VB, UIMM3}},
5676
{"vextractuh",  VX (4, 589),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5677
{"vupkhsh", VX (4, 590),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5678
{"vinshlx", VX (4, 591),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5679
{"nget",  APU(4, 300,0),  APU_RA_MASK, PPC405,  0,    {RT, FSL}},
5680
{"evsel", EVSEL(4,79),  EVSEL_MASK,  PPCSPE,  0,    {RS, RA, RB, CRFS}},
5681
{"ncget", APU(4, 316,0),  APU_RA_MASK, PPC405,  0,    {RT, FSL}},
5682
{"evfsadd", VX (4, 640),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5683
{"vadduws", VX (4, 640),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5684
{"evfssub", VX (4, 641),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5685
{"evfsmadd",  VX (4, 642),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5686
{"vminuw",  VX (4, 642),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5687
{"evfsmsub",  VX (4, 643),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5688
{"evfsabs", VX (4, 644),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5689
{"vsrw",  VX (4, 644),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5690
{"evfsnabs",  VX (4, 645),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5691
{"evfsneg", VX (4, 646),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5692
{"vcmpgtuw",  VXR(4, 646,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5693
{"vcmpgtuq",  VXR(4, 647,0),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
5694
{"evfssqrt",  VX_RB_CONST(4, 647, 0),  VX_RB_CONST_MASK,  PPCEFS2,  0,    {RD, RA}},
5695
{"vmuleuw", VX (4, 648),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5696
{"evfsmul", VX (4, 648),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5697
{"vmulhuw", VX (4, 649),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5698
{"evfsdiv", VX (4, 649),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5699
{"evfsnmadd", VX (4, 650),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5700
{"vrfip", VX (4, 650),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5701
{"vdiveuw", VX (4, 651),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5702
{"evfsnmsub", VX (4, 651),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5703
{"evfscmpgt", VX (4, 652),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5704
{"vspltw",  VX (4, 652),   VXUIMM2_MASK, PPCVEC,  0,    {VD, VB, UIMM2}},
5705
{"vextractuw",  VX (4, 653),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5706
{"evfscmplt", VX (4, 653),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5707
{"evfscmpeq", VX (4, 654),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5708
{"vupklsb", VX (4, 654),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5709
{"vinswlx", VX (4, 655),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5710
{"evfscfui",  VX (4, 656),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5711
{"evfscfh", VX_RA_CONST(4, 657, 4),  VX_RA_CONST_MASK,  PPCEFS2,  0,    {RD, RB}},
5712
{"evfscfsi",  VX (4, 657),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5713
{"evfscfuf",  VX (4, 658),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5714
{"evfscfsf",  VX (4, 659),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5715
{"evfsctui",  VX (4, 660),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5716
{"evfscth", VX_RA_CONST(4, 661, 4),  VX_RA_CONST_MASK,  PPCEFS2,  0,    {RD, RB}},
5717
{"evfsctsi",  VX (4, 661),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5718
{"evfsctuf",  VX (4, 662),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5719
{"evfsctsf",  VX (4, 663),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5720
{"evfsctuiz", VX (4, 664),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5721
{"put",   APU(4, 332,0),  APU_RT_MASK, PPC405,  0,    {RA, FSL}},
5722
{"evfsctsiz", VX (4, 666),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5723
{"evfststgt", VX (4, 668),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5724
{"evfststlt", VX (4, 669),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5725
{"evfststeq", VX (4, 670),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5726
{"evfsmax", VX (4, 672),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5727
{"evfsmin", VX (4, 673),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5728
{"evfsaddsub",  VX (4, 674),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5729
{"evfssubadd",  VX (4, 675),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5730
{"evfssum", VX (4, 676),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5731
{"evfsdiff",  VX (4, 677),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5732
{"evfssumdiff", VX (4, 678),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5733
{"evfsdiffsum", VX (4, 679),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5734
{"evfsaddx",  VX (4, 680),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5735
{"evfssubx",  VX (4, 681),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5736
{"evfsaddsubx", VX (4, 682),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5737
{"evfssubaddx", VX (4, 683),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5738
{"evfsmulx",  VX (4, 684),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5739
{"evfsmule",  VX (4, 686),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5740
{"evfsmulo",  VX (4, 687),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5741
{"efsmax",  VX (4, 688),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5742
{"efsmin",  VX (4, 689),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5743
{"efdmax",  VX (4, 696),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5744
{"cput",  APU(4, 348,0),  APU_RT_MASK, PPC405,  0,    {RA, FSL}},
5745
{"efdmin",  VX (4, 697),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5746
{"efsadd",  VX (4, 704),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5747
{"evsadd",  VX (4, 704),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5748
{"efssub",  VX (4, 705),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5749
{"evssub",  VX (4, 705),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5750
{"efsmadd", VX (4, 706),  VX_MASK,     PPCEFS2, 0,    {RS, RA, RB}},
5751
{"vminud",  VX (4, 706),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5752
{"efsmsub", VX (4, 707),  VX_MASK,     PPCEFS2, 0,    {RS, RA, RB}},
5753
{"efsabs",  VX (4, 708),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5754
{"evsabs",  VX (4, 708),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5755
{"vsr",   VX (4, 708),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5756
{"efsnabs", VX (4, 709),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5757
{"evsnabs", VX (4, 709),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5758
{"efsneg",  VX (4, 710),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5759
{"evsneg",  VX (4, 710),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5760
{"vcmpgtfp",  VXR(4, 710,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5761
{"efssqrt", VX_RB_CONST(4, 711, 0), VX_RB_CONST_MASK,PPCEFS2, 0,  {RD, RA}},
5762
{"vcmpgtud",  VXR(4, 711,0),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
5763
{"vmuleud", VX (4, 712),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5764
{"efsmul",  VX (4, 712),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5765
{"evsmul",  VX (4, 712),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5766
{"vmulhud", VX (4, 713),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5767
{"efsdiv",  VX (4, 713),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5768
{"evsdiv",  VX (4, 713),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5769
{"efsnmadd",  VX (4, 714),  VX_MASK,     PPCEFS2, 0,    {RS, RA, RB}},
5770
{"vrfim", VX (4, 714),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5771
{"vdiveud", VX (4, 715),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5772
{"efsnmsub",  VX (4, 715),  VX_MASK,     PPCEFS2, 0,    {RS, RA, RB}},
5773
{"efscmpgt",  VX (4, 716),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5774
{"evscmpgt",  VX (4, 716),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5775
{"vextractd", VX (4, 717),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5776
{"efscmplt",  VX (4, 717),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5777
{"evsgmplt",  VX (4, 717),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5778
{"efscmpeq",  VX (4, 718),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5779
{"evsgmpeq",  VX (4, 718),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5780
{"vupklsh", VX (4, 718),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5781
{"vinsdlx", VX (4, 719),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5782
{"efscfd",  VX (4, 719),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5783
{"efscfui", VX (4, 720),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5784
{"evscfui", VX (4, 720),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5785
{"efscfh",  VX_RA_CONST(4, 721, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5786
{"efscfsi", VX (4, 721),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5787
{"evscfsi", VX (4, 721),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5788
{"efscfuf", VX (4, 722),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5789
{"evscfuf", VX (4, 722),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5790
{"efscfsf", VX (4, 723),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5791
{"evscfsf", VX (4, 723),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5792
{"efsctui", VX (4, 724),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5793
{"evsctui", VX (4, 724),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5794
{"efscth",  VX_RA_CONST(4, 725, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5795
{"efsctsi", VX (4, 725),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5796
{"evsctsi", VX (4, 725),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5797
{"efsctuf", VX (4, 726),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5798
{"evsctuf", VX (4, 726),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5799
{"efsctsf", VX (4, 727),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5800
{"evsctsf", VX (4, 727),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5801
{"efsctuiz",  VX (4, 728),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5802
{"evsctuiz",  VX (4, 728),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5803
{"nput",  APU(4, 364,0),  APU_RT_MASK, PPC405,  0,    {RA, FSL}},
5804
{"efsctsiz",  VX (4, 730),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5805
{"evsctsiz",  VX (4, 730),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5806
{"efststgt",  VX (4, 732),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5807
{"evststgt",  VX (4, 732),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5808
{"efststlt",  VX (4, 733),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5809
{"evststlt",  VX (4, 733),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5810
{"efststeq",  VX (4, 734),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5811
{"evststeq",  VX (4, 734),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5812
{"efdadd",  VX (4, 736),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5813
{"efdsub",  VX (4, 737),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5814
{"efdmadd", VX (4, 738),  VX_MASK,     PPCEFS2,   E500|E500MC,  {RD, RA, RB}},
5815
{"efdcfuid",  VX (4, 738),  VX_MASK,     E500|E500MC,0,   {RS, RB}},
5816
{"efdmsub", VX (4, 739),  VX_MASK,     PPCEFS2,   E500|E500MC,  {RD, RA, RB}},
5817
{"efdcfsid",  VX (4, 739),  VX_MASK,     E500|E500MC,0,   {RS, RB}},
5818
{"efdabs",  VX (4, 740),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5819
{"efdnabs", VX (4, 741),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5820
{"efdneg",  VX (4, 742),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5821
{"efdsqrt", VX_RB_CONST(4, 743, 0), VX_RB_CONST_MASK, PPCEFS2, 0, {RD, RA}},
5822
{"efdmul",  VX (4, 744),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5823
{"efddiv",  VX (4, 745),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5824
{"efdnmadd",  VX (4, 746),  VX_MASK,     PPCEFS2,   E500|E500MC,  {RD, RA, RB}},
5825
{"efdctuidz", VX (4, 746),  VX_MASK,     E500|E500MC,0,   {RS, RB}},
5826
{"efdnmsub",  VX (4, 747),  VX_MASK,     PPCEFS2,   E500|E500MC,  {RD, RA, RB}},
5827
{"efdctsidz", VX (4, 747),  VX_MASK,     E500|E500MC,0,   {RS, RB}},
5828
{"efdcmpgt",  VX (4, 748),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5829
{"efdcmplt",  VX (4, 749),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5830
{"efdcmpeq",  VX (4, 750),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5831
{"efdcfs",  VX (4, 751),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5832
{"efdcfui", VX_RA_CONST(4, 752, 0), VX_RA_CONST_MASK, PPCEFS, 0,  {RS, RB}},
5833
{"efdcfuid",  VX_RA_CONST(4, 752, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
5834
{"efdcfsi", VX_RA_CONST(4, 753, 0), VX_RA_CONST_MASK, PPCEFS, 0,  {RS, RB}},
5835
{"efdcfsid",  VX_RA_CONST(4, 753, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
5836
{"efdcfh",  VX_RA_CONST(4, 753, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5837
{"efdcfuf", VX (4, 754),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5838
{"efdcfsf", VX (4, 755),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5839
{"efdctui", VX (4, 756),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5840
{"efdcth",  VX_RA_CONST(4, 757, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5841
{"efdctsi", VX (4, 757),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5842
{"efdctuf", VX (4, 758),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5843
{"efdctsf", VX (4, 759),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5844
{"efdctuiz",  VX_RA_CONST(4, 760, 0), VX_RA_CONST_MASK, PPCEFS, 0,  {RS, RB}},
5845
{"efdctuidz", VX_RA_CONST(4, 760, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
5846
{"ncput", APU(4, 380,0),  APU_RT_MASK, PPC405,  0,    {RA, FSL}},
5847
{"efdctsiz",  VX_RA_CONST(4, 762, 0), VX_RA_CONST_MASK, PPCEFS, 0,  {RS, RB}},
5848
{"efdctsidz", VX_RA_CONST(4, 762, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
5849
{"efdtstgt",  VX (4, 764),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5850
{"efdtstlt",  VX (4, 765),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5851
{"efdtsteq",  VX (4, 766),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5852
{"evlddx",  VX (4, 768),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5853
{"vaddsbs", VX (4, 768),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5854
{"evldd", VX (4, 769),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5855
{"evldwx",  VX (4, 770),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5856
{"vminsb",  VX (4, 770),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5857
{"evldw", VX (4, 771),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5858
{"evldhx",  VX (4, 772),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5859
{"vsrab", VX (4, 772),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5860
{"vsraq", VX (4, 773),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5861
{"evldh", VX (4, 773),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5862
{"vcmpgtsb",  VXR(4, 774,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5863
{"evlhhesplatx",VX (4, 776),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5864
{"vmulesb", VX (4, 776),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5865
{"evlhhesplat", VX (4, 777),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_2, RA}},
5866
{"vcfux", VX (4, 778),  VX_MASK,     PPCVEC,  0,    {VD, VB, UIMM}},
5867
{"vcuxwfp", VX (4, 778),  VX_MASK,     PPCVEC,  EXT,    {VD, VB, UIMM}},
5868
{"vdivesq", VX (4, 779),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5869
{"evlhhousplatx",VX(4, 780),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5870
{"vspltisb",  VX (4, 780),  VXVB_MASK,   PPCVEC,  0,    {VD, SIMM}},
5871
{"vinsertb",  VX (4, 781),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5872
{"evlhhousplat",VX (4, 781),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_2, RA}},
5873
{"evlhhossplatx",VX(4, 782),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5874
{"vpkpx", VX (4, 782),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5875
{"vinsbrx", VX (4, 783),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5876
{"evlhhossplat",VX (4, 783),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_2, RA}},
5877
{"mullhwu", XRC(4, 392,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5878
{"evlwhex", VX (4, 784),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5879
{"mullhwu.",  XRC(4, 392,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5880
{"evlwhe",  VX (4, 785),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5881
{"evlwhoux",  VX (4, 788),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5882
{"evlwhou", VX (4, 789),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5883
{"evlwhosx",  VX (4, 790),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5884
{"evlwhos", VX (4, 791),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5885
{"maclhwu", XO (4, 396,0,0),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5886
{"evlwwsplatx", VX (4, 792),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5887
{"maclhwu.",  XO (4, 396,0,1),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5888
{"evlwwsplat",  VX (4, 793),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5889
{"evlwhsplatx", VX (4, 796),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5890
{"evlwhsplat",  VX (4, 797),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5891
{"evstddx", VX (4, 800),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5892
{"evstdd",  VX (4, 801),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5893
{"evstdwx", VX (4, 802),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5894
{"evstdw",  VX (4, 803),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5895
{"evstdhx", VX (4, 804),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5896
{"evstdh",  VX (4, 805),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5897
{"evstwhex",  VX (4, 816),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5898
{"evstwhe", VX (4, 817),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5899
{"evstwhox",  VX (4, 820),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5900
{"evstwho", VX (4, 821),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5901
{"evstwwex",  VX (4, 824),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5902
{"evstwwe", VX (4, 825),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5903
{"evstwwox",  VX (4, 828),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5904
{"evstwwo", VX (4, 829),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5905
{"vaddshs", VX (4, 832),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5906
{"bcdcpsgn.", VX (4, 833),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5907
{"vminsh",  VX (4, 834),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5908
{"vsrah", VX (4, 836),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5909
{"vcmpgtsh",  VXR(4, 838,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5910
{"vmulesh", VX (4, 840),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5911
{"vcfsx", VX (4, 842),  VX_MASK,     PPCVEC,  0,    {VD, VB, UIMM}},
5912
{"vcsxwfp", VX (4, 842),  VX_MASK,     PPCVEC,  EXT,    {VD, VB, UIMM}},
5913
{"vspltish",  VX (4, 844),  VXVB_MASK,   PPCVEC,  0,    {VD, SIMM}},
5914
{"vinserth",  VX (4, 845),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5915
{"vupkhpx", VX (4, 846),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5916
{"vinshrx", VX (4, 847),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5917
{"mullhw",  XRC(4, 424,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5918
{"mullhw.", XRC(4, 424,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5919
{"maclhw",  XO (4, 428,0,0),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5920
{"maclhw.", XO (4, 428,0,1),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5921
{"nmaclhw", XO (4, 430,0,0),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5922
{"nmaclhw.",  XO (4, 430,0,1),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5923
{"vaddsws", VX (4, 896),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5924
{"vminsw",  VX (4, 898),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5925
{"vsraw", VX (4, 900),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5926
{"vcmpgtsw",  VXR(4, 902,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5927
{"vcmpgtsq",  VXR(4, 903,0),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
5928
{"vmulesw", VX (4, 904),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5929
{"vmulhsw", VX (4, 905),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5930
{"vctuxs",  VX (4, 906),  VX_MASK,     PPCVEC,  0,    {VD, VB, UIMM}},
5931
{"vcfpuxws",  VX (4, 906),  VX_MASK,     PPCVEC,  EXT,    {VD, VB, UIMM}},
5932
{"vdivesw", VX (4, 907),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5933
{"vspltisw",  VX (4, 908),  VXVB_MASK,   PPCVEC,  0,    {VD, SIMM}},
5934
{"vinsertw",  VX (4, 909),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5935
{"vinswrx", VX (4, 911),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5936
{"maclhwsu",  XO (4, 460,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5937
{"maclhwsu.", XO (4, 460,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5938
{"vminsd",  VX (4, 962),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5939
{"vsrad", VX (4, 964),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5940
{"vcmpbfp", VXR(4, 966,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5941
{"vcmpgtsd",  VXR(4, 967,0),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
5942
{"vmulesd", VX (4, 968),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5943
{"vmulhsd", VX (4, 969),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5944
{"vctsxs",  VX (4, 970),  VX_MASK,     PPCVEC,  0,    {VD, VB, UIMM}},
5945
{"vcfpsxws",  VX (4, 970),  VX_MASK,     PPCVEC,  EXT,    {VD, VB, UIMM}},
5946
{"vdivesd", VX (4, 971),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5947
{"vinsertd",  VX (4, 973),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5948
{"vupklpx", VX (4, 974),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5949
{"vinsdrx", VX (4, 975),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5950
{"maclhws", XO (4, 492,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5951
{"maclhws.",  XO (4, 492,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5952
{"nmaclhws",  XO (4, 494,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5953
{"nmaclhws.", XO (4, 494,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5954
{"vsububm", VX (4,1024),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5955
{"bcdadd.", VX (4,1025),  VXPS_MASK,   PPCVEC2, 0,    {VD, VA, VB, PS}},
5956
{"vavgub",  VX (4,1026),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5957
{"vabsdub", VX (4,1027),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5958
{"evmhessf",  VX (4,1027),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5959
{"vand",  VX (4,1028),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5960
{"vcmpequb.", VXR(4,   6,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5961
{"vcmpneb.",  VXR(4,   7,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5962
{"udi0fcm.",  APU(4, 515,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5963
{"udi0fcm", APU(4, 515,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5964
{"evmhossf",  VX (4,1031),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5965
{"vpmsumb", VX (4,1032),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5966
{"evmheumi",  VX (4,1032),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5967
{"evmhesmi",  VX (4,1033),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5968
{"vmaxfp",  VX (4,1034),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5969
{"evmhesmf",  VX (4,1035),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5970
{"evmhoumi",  VX (4,1036),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5971
{"vslo",  VX (4,1036),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5972
{"vstribl.",  VXVA(4,1037,0), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5973
{"vstribr.",  VXVA(4,1037,1), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5974
{"vstrihl.",  VXVA(4,1037,2), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5975
{"vstrihr.",  VXVA(4,1037,3), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5976
{"evmhosmi",  VX (4,1037),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5977
{"evmhosmf",  VX (4,1039),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5978
{"machhwuo",  XO (4,  12,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5979
{"machhwuo.", XO (4,  12,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5980
{"ps_merge00",  XOPS(4,528,0),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5981
{"ps_merge00.", XOPS(4,528,1),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5982
{"evmhessfa", VX (4,1059),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5983
{"evmhossfa", VX (4,1063),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5984
{"evmheumia", VX (4,1064),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5985
{"evmhesmia", VX (4,1065),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5986
{"evmhesmfa", VX (4,1067),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5987
{"evmhoumia", VX (4,1068),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5988
{"evmhosmia", VX (4,1069),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5989
{"evmhosmfa", VX (4,1071),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5990
{"vsubuhm", VX (4,1088),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5991
{"bcdsub.", VX (4,1089),  VXPS_MASK,   PPCVEC2, 0,    {VD, VA, VB, PS}},
5992
{"vavguh",  VX (4,1090),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5993
{"evmwlssf",  VX (4,1091),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5994
{"vabsduh", VX (4,1091),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5995
{"vandc", VX (4,1092),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5996
{"vcmpequh.", VXR(4,  70,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5997
{"udi1fcm.",  APU(4, 547,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5998
{"udi1fcm", APU(4, 547,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5999
{"vcmpneh.",  VXR(4,  71,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
6000
{"evmwhssf",  VX (4,1095),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6001
{"vpmsumh", VX (4,1096),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6002
{"evmwlumi",  VX (4,1096),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6003
{"vminfp",  VX (4,1098),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6004
{"evmwlsmf",  VX (4,1099),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6005
{"evmwhumi",  VX (4,1100),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6006
{"vsro",  VX (4,1100),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6007
{"evmwhsmi",  VX (4,1101),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6008
{"vpkudum", VX (4,1102),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6009
{"evmwhsmf",  VX (4,1103),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6010
{"evmwssf", VX (4,1107),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6011
{"machhwo", XO (4,  44,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6012
{"evmwumi", VX (4,1112),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6013
{"machhwo.",  XO (4,  44,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6014
{"evmwsmi", VX (4,1113),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6015
{"evmwsmf", VX (4,1115),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6016
{"nmachhwo",  XO (4,  46,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6017
{"nmachhwo.", XO (4,  46,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6018
{"ps_merge01",  XOPS(4,560,0),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
6019
{"ps_merge01.", XOPS(4,560,1),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
6020
{"evmwlssfa", VX (4,1123),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6021
{"evmwhssfa", VX (4,1127),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6022
{"evmwlumia", VX (4,1128),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6023
{"evmwlsmfa", VX (4,1131),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6024
{"evmwhumia", VX (4,1132),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6025
{"evmwhsmia", VX (4,1133),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6026
{"evmwhsmfa", VX (4,1135),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6027
{"evmwssfa",  VX (4,1139),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6028
{"evmwumia",  VX (4,1144),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6029
{"evmwsmia",  VX (4,1145),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6030
{"evmwsmfa",  VX (4,1147),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6031
{"vsubuwm", VX (4,1152),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6032
{"bcdus.",  VX (4,1153),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
6033
{"vavguw",  VX (4,1154),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6034
{"vabsduw", VX (4,1155),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6035
{"vmr",   VX (4,1156),  VX_MASK,     PPCVEC,  EXT,    {VD, VAB}},
6036
{"vor",   VX (4,1156),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6037
{"vcmpnew.",  VXR(4, 135,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
6038
{"vpmsumw", VX (4,1160),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6039
{"vcmpequw.", VXR(4, 134,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6040
{"udi2fcm.",  APU(4, 579,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
6041
{"udi2fcm", APU(4, 579,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
6042
{"machhwsuo", XO (4,  76,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6043
{"machhwsuo.",  XO (4,  76,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6044
{"ps_merge10",  XOPS(4,592,0),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
6045
{"ps_merge10.", XOPS(4,592,1),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
6046
{"vsubudm", VX (4,1216),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6047
{"evaddusiaaw", VX (4,1216),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
6048
{"bcds.", VX (4,1217),  VXPS_MASK,   PPCVEC3, 0,    {VD, VA, VB, PS}},
6049
{"evaddssiaaw", VX (4,1217),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
6050
{"evsubfusiaaw",VX (4,1218),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
6051
{"evsubfssiaaw",VX (4,1219),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
6052
{"evmra", VX (4,1220),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
6053
{"vxor",  VX (4,1220),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6054
{"evdivws", VX (4,1222),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6055
{"vcmpeqfp.", VXR(4, 198,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6056
{"udi3fcm.",  APU(4, 611,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
6057
{"vcmpequd.", VXR(4, 199,1),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
6058
{"udi3fcm", APU(4, 611,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
6059
{"evdivwu", VX (4,1223),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6060
{"vpmsumd", VX (4,1224),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6061
{"evaddumiaaw", VX (4,1224),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
6062
{"evaddsmiaaw", VX (4,1225),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
6063
{"evsubfumiaaw",VX (4,1226),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
6064
{"evsubfsmiaaw",VX (4,1227),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
6065
{"vgnb",  VX (4,1228),  VX_MASK,     POWER10, 0,    {RT, VB, UIMM3}},
6066
{"vpkudus", VX (4,1230),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6067
{"machhwso",  XO (4, 108,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6068
{"machhwso.", XO (4, 108,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6069
{"nmachhwso", XO (4, 110,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6070
{"nmachhwso.",  XO (4, 110,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6071
{"ps_merge11",  XOPS(4,624,0),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
6072
{"ps_merge11.", XOPS(4,624,1),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
6073
{"vsubuqm", VX (4,1280),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6074
{"evmheusiaaw", VX (4,1280),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6075
{"bcdtrunc.", VX (4,1281),  VXPS_MASK,   PPCVEC3, 0,    {VD, VA, VB, PS}},
6076
{"evmhessiaaw", VX (4,1281),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6077
{"vavgsb",  VX (4,1282),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6078
{"evmhessfaaw", VX (4,1283),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6079
{"evmhousiaaw", VX (4,1284),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6080
{"vnot",  VX (4,1284),  VX_MASK,     PPCVEC,  EXT,    {VD, VAB}},
6081
{"vnor",  VX (4,1284),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6082
{"evmhossiaaw", VX (4,1285),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6083
{"udi4fcm.",  APU(4, 643,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
6084
{"udi4fcm", APU(4, 643,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
6085
{"vcmpnezb.", VXR(4, 263,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
6086
{"evmhossfaaw", VX (4,1287),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6087
{"evmheumiaaw", VX (4,1288),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6088
{"vcipher", VX (4,1288),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6089
{"vcipherlast", VX (4,1289),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6090
{"evmhesmiaaw", VX (4,1289),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6091
{"evmhesmfaaw", VX (4,1291),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6092
{"vgbbd", VX (4,1292),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6093
{"evmhoumiaaw", VX (4,1292),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6094
{"evmhosmiaaw", VX (4,1293),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6095
{"evmhosmfaaw", VX (4,1295),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6096
{"macchwuo",  XO (4, 140,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6097
{"macchwuo.", XO (4, 140,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6098
{"evmhegumiaa", VX (4,1320),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6099
{"evmhegsmiaa", VX (4,1321),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6100
{"evmhegsmfaa", VX (4,1323),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6101
{"evmhogumiaa", VX (4,1324),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6102
{"evmhogsmiaa", VX (4,1325),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6103
{"evmhogsmfaa", VX (4,1327),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6104
{"vsubcuq", VX (4,1344),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6105
{"evmwlusiaaw", VX (4,1344),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6106
{"bcdutrunc.",  VX (4,1345),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
6107
{"evmwlssiaaw", VX (4,1345),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6108
{"vavgsh",  VX (4,1346),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6109
{"evmwlssfaaw", VX (4,1347),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6110
{"evmwhusiaa",  VX (4,1348),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6111
{"vorc",  VX (4,1348),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6112
{"evmwhssmaa",  VX (4,1349),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6113
{"udi5fcm.",  APU(4, 675,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
6114
{"udi5fcm", APU(4, 675,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
6115
{"vcmpnezh.", VXR(4, 327,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
6116
{"evmwhssfaa",  VX (4,1351),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6117
{"vncipher",  VX (4,1352),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6118
{"evmwlumiaaw", VX (4,1352),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6119
{"vncipherlast",VX (4,1353),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6120
{"evmwlsmiaaw", VX (4,1353),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6121
{"evmwlsmfaaw", VX (4,1355),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6122
{"evmwhumiaa",  VX (4,1356),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6123
{"vbpermq", VX (4,1356),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6124
{"vcfuged", VX (4,1357),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6125
{"evmwhsmiaa",  VX (4,1357),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6126
{"vpksdus", VX (4,1358),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6127
{"evmwhsmfaa",  VX (4,1359),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6128
{"evmwssfaa", VX (4,1363),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6129
{"macchwo", XO (4, 172,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6130
{"evmwumiaa", VX (4,1368),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6131
{"macchwo.",  XO (4, 172,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6132
{"evmwsmiaa", VX (4,1369),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6133
{"evmwsmfaa", VX (4,1371),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6134
{"nmacchwo",  XO (4, 174,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6135
{"nmacchwo.", XO (4, 174,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6136
{"evmwhgumiaa", VX (4,1380),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6137
{"evmwhgsmiaa", VX (4,1381),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6138
{"evmwhgssfaa", VX (4,1383),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6139
{"evmwhgsmfaa", VX (4,1391),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6140
{"evmheusianw", VX (4,1408),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6141
{"vsubcuw", VX (4,1408),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6142
{"evmhessianw", VX (4,1409),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6143
{"bcdctsq.",  VXVA(4,1409,0), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
6144
{"bcdcfsq.",  VXVA(4,1409,2), VXVAPS_MASK, PPCVEC3, 0,    {VD, VB, PS}},
6145
{"bcdctz.", VXVA(4,1409,4), VXVAPS_MASK, PPCVEC3, 0,    {VD, VB, PS}},
6146
{"bcdctn.", VXVA(4,1409,5), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
6147
{"bcdcfz.", VXVA(4,1409,6), VXVAPS_MASK, PPCVEC3, 0,    {VD, VB, PS}},
6148
{"bcdcfn.", VXVA(4,1409,7), VXVAPS_MASK, PPCVEC3, 0,    {VD, VB, PS}},
6149
{"bcdsetsgn.",  VXVA(4,1409,31), VXVAPS_MASK, PPCVEC3,  0,    {VD, VB, PS}},
6150
{"vavgsw",  VX (4,1410),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6151
{"evmhessfanw", VX (4,1411),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6152
{"vnand", VX (4,1412),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6153
{"evmhousianw", VX (4,1412),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6154
{"evmhossianw", VX (4,1413),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6155
{"udi6fcm.",  APU(4, 707,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
6156
{"udi6fcm", APU(4, 707,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
6157
{"vcmpnezw.", VXR(4, 391,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
6158
{"evmhossfanw", VX (4,1415),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6159
{"evmheumianw", VX (4,1416),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6160
{"evmhesmianw", VX (4,1417),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6161
{"evmhesmfanw", VX (4,1419),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6162
{"evmhoumianw", VX (4,1420),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6163
{"vpextd",  VX (4,1421),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6164
{"evmhosmianw", VX (4,1421),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6165
{"evmhosmfanw", VX (4,1423),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6166
{"macchwsuo", XO (4, 204,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6167
{"macchwsuo.",  XO (4, 204,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6168
{"evmhegumian", VX (4,1448),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6169
{"evmhegsmian", VX (4,1449),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6170
{"evmhegsmfan", VX (4,1451),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6171
{"evmhogumian", VX (4,1452),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6172
{"evmhogsmian", VX (4,1453),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6173
{"evmhogsmfan", VX (4,1455),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6174
{"evmwlusianw", VX (4,1472),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6175
{"bcdsr.",  VX (4,1473),  VXPS_MASK,   PPCVEC3, 0,    {VD, VA, VB, PS}},
6176
{"evmwlssianw", VX (4,1473),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6177
{"evmwlssfanw", VX (4,1475),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6178
{"evmwhusian",  VX (4,1476),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6179
{"vsld",  VX (4,1476),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6180
{"evmwhssian",  VX (4,1477),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6181
{"vcmpgefp.", VXR(4, 454,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6182
{"udi7fcm.",  APU(4, 739,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
6183
{"udi7fcm", APU(4, 739,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
6184
{"vcmpequq.", VXR(4, 455,1),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
6185
{"evmwhssfan",  VX (4,1479),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6186
{"vsbox", VX (4,1480),  VXVB_MASK,   PPCVEC2, 0,    {VD, VA}},
6187
{"evmwlumianw", VX (4,1480),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6188
{"evmwlsmianw", VX (4,1481),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6189
{"evmwlsmfanw", VX (4,1483),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6190
{"evmwhumian",  VX (4,1484),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6191
{"vbpermd", VX (4,1484),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
6192
{"vpdepd",  VX (4,1485),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6193
{"evmwhsmian",  VX (4,1485),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6194
{"vpksdss", VX (4,1486),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6195
{"evmwhsmfan",  VX (4,1487),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6196
{"evmwssfan", VX (4,1491),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6197
{"macchwso",  XO (4, 236,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6198
{"evmwumian", VX (4,1496),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6199
{"macchwso.", XO (4, 236,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6200
{"evmwsmian", VX (4,1497),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6201
{"evmwsmfan", VX (4,1499),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6202
{"evmwhgumian", VX (4,1508),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6203
{"evmwhgsmian", VX (4,1509),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6204
{"evmwhgssfan", VX (4,1511),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6205
{"evmwhgsmfan", VX (4,1519),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6206
{"nmacchwso", XO (4, 238,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6207
{"nmacchwso.",  XO (4, 238,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6208
{"vsububs", VX (4,1536),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6209
{"vclzlsbb",  VXVA(4,1538,0), VXVA_MASK,   PPCVEC3, 0,    {RT, VB}},
6210
{"vctzlsbb",  VXVA(4,1538,1), VXVA_MASK,   PPCVEC3, 0,    {RT, VB}},
6211
{"vnegw", VXVA(4,1538,6), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
6212
{"vnegd", VXVA(4,1538,7), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
6213
{"vprtybw", VXVA(4,1538,8), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
6214
{"vprtybd", VXVA(4,1538,9), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
6215
{"vprtybq", VXVA(4,1538,10), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6216
{"vextsb2w",  VXVA(4,1538,16), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6217
{"vextsh2w",  VXVA(4,1538,17), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6218
{"vextsb2d",  VXVA(4,1538,24), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6219
{"vextsh2d",  VXVA(4,1538,25), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6220
{"vextsw2d",  VXVA(4,1538,26), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6221
{"vextsd2q",  VXVA(4,1538,27), VXVA_MASK,  POWER10, 0,    {VD, VB}},
6222
{"vctzb", VXVA(4,1538,28), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6223
{"vctzh", VXVA(4,1538,29), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6224
{"vctzw", VXVA(4,1538,30), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6225
{"vctzd", VXVA(4,1538,31), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6226
{"mfvscr",  VX (4,1540),  VXVAVB_MASK, PPCVEC,  0,    {VD}},
6227
{"vcmpgtub.", VXR(4, 518,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6228
{"udi8fcm.",  APU(4, 771,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6229
{"udi8fcm", APU(4, 771,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6230
{"vsum4ubs",  VX (4,1544),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6231
{"vmoduq",  VX (4,1547),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6232
{"vextublx",  VX (4,1549),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
6233
{"vsubuhs", VX (4,1600),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6234
6235
{"vexpandbm", VXVA(4,1602,0),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
6236
{"vexpandhm", VXVA(4,1602,1),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
6237
{"vexpandwm", VXVA(4,1602,2),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
6238
{"vexpanddm", VXVA(4,1602,3),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
6239
{"vexpandqm", VXVA(4,1602,4),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
6240
{"vextractbm",  VXVA(4,1602,8),  VXVA_MASK,  POWER10, 0,    {RT, VB}},
6241
{"vextracthm",  VXVA(4,1602,9),  VXVA_MASK,  POWER10, 0,    {RT, VB}},
6242
{"vextractwm",  VXVA(4,1602,10), VXVA_MASK,  POWER10, 0,    {RT, VB}},
6243
{"vextractdm",  VXVA(4,1602,11), VXVA_MASK,  POWER10, 0,    {RT, VB}},
6244
{"vextractqm",  VXVA(4,1602,12), VXVA_MASK,  POWER10, 0,    {RT, VB}},
6245
{"mtvsrbm", VXVA(4,1602,16), VXVA_MASK,  POWER10, 0,    {VD, RB}},
6246
{"mtvsrhm", VXVA(4,1602,17), VXVA_MASK,  POWER10, 0,    {VD, RB}},
6247
{"mtvsrwm", VXVA(4,1602,18), VXVA_MASK,  POWER10, 0,    {VD, RB}},
6248
{"mtvsrdm", VXVA(4,1602,19), VXVA_MASK,  POWER10, 0,    {VD, RB}},
6249
{"mtvsrqm", VXVA(4,1602,20), VXVA_MASK,  POWER10, 0,    {VD, RB}},
6250
{"vcntmbb", VXVA(4,1602,24), VXVAM_MASK, POWER10, 0,    {RT, VB, MP}},
6251
{"vcntmbh", VXVA(4,1602,26), VXVAM_MASK, POWER10, 0,    {RT, VB, MP}},
6252
{"vcntmbw", VXVA(4,1602,28), VXVAM_MASK, POWER10, 0,    {RT, VB, MP}},
6253
{"vcntmbd", VXVA(4,1602,30), VXVAM_MASK, POWER10, 0,    {RT, VB, MP}},
6254
6255
{"mtvscr",  VX (4,1604),  VXVDVA_MASK, PPCVEC,  0,    {VB}},
6256
{"vcmpgtuh.", VXR(4, 582,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6257
{"vsum4shs",  VX (4,1608),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6258
{"udi9fcm.",  APU(4, 804,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6259
{"udi9fcm", APU(4, 804,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6260
{"vextuhlx",  VX (4,1613),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
6261
{"vupkhsw", VX (4,1614),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6262
{"vsubuws", VX (4,1664),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6263
{"vshasigmaw",  VX (4,1666),  VX_MASK,     PPCVEC2, 0,    {VD, VA, ST, SIX}},
6264
{"veqv",  VX (4,1668),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6265
{"vcmpgtuw.", VXR(4, 646,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6266
{"udi10fcm.", APU(4, 835,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6267
{"vcmpgtuq.", VXR(4, 647,1),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
6268
{"udi10fcm",  APU(4, 835,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6269
{"vsum2sws",  VX (4,1672),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6270
{"vmoduw",  VX (4,1675),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6271
{"vmrgow",  VX (4,1676),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6272
{"vextuwlx",  VX (4,1677),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
6273
{"vshasigmad",  VX (4,1730),  VX_MASK,     PPCVEC2, 0,    {VD, VA, ST, SIX}},
6274
{"vsrd",  VX (4,1732),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6275
{"vcmpgtfp.", VXR(4, 710,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6276
{"udi11fcm.", APU(4, 867,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6277
{"vcmpgtud.", VXR(4, 711,1),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
6278
{"udi11fcm",  APU(4, 867,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6279
{"vmodud",  VX (4,1739),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6280
{"vupklsw", VX (4,1742),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6281
{"vsubsbs", VX (4,1792),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6282
{"vclzb", VX (4,1794),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6283
{"vpopcntb",  VX (4,1795),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6284
{"vsrv",  VX (4,1796),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
6285
{"vcmpgtsb.", VXR(4, 774,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6286
{"udi12fcm.", APU(4, 899,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6287
{"udi12fcm",  APU(4, 899,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6288
{"vsum4sbs",  VX (4,1800),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6289
{"vmodsq",  VX (4,1803),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6290
{"vextubrx",  VX (4,1805),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
6291
{"maclhwuo",  XO (4, 396,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6292
{"maclhwuo.", XO (4, 396,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6293
{"vsubshs", VX (4,1856),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6294
{"vclzh", VX (4,1858),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6295
{"vpopcnth",  VX (4,1859),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6296
{"vslv",  VX (4,1860),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
6297
{"vcmpgtsh.", VXR(4, 838,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6298
{"vextuhrx",  VX (4,1869),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
6299
{"udi13fcm.", APU(4, 931,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6300
{"udi13fcm",  APU(4, 931,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6301
{"maclhwo", XO (4, 428,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6302
{"maclhwo.",  XO (4, 428,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6303
{"nmaclhwo",  XO (4, 430,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6304
{"nmaclhwo.", XO (4, 430,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6305
{"vsubsws", VX (4,1920),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6306
{"vclzw", VX (4,1922),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6307
{"vpopcntw",  VX (4,1923),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6308
{"vclzdm",  VX (4,1924),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6309
{"vcmpgtsw.", VXR(4, 902,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6310
{"udi14fcm.", APU(4, 963,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6311
{"vcmpgtsq.", VXR(4, 903,1),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
6312
{"udi14fcm",  APU(4, 963,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6313
{"vsumsws", VX (4,1928),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6314
{"vmodsw",  VX (4,1931),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6315
{"vmrgew",  VX (4,1932),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6316
{"vextuwrx",  VX (4,1933),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
6317
{"maclhwsuo", XO (4, 460,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6318
{"maclhwsuo.",  XO (4, 460,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6319
{"vclzd", VX (4,1986),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6320
{"vpopcntd",  VX (4,1987),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6321
{"vctzdm",  VX (4,1988),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6322
{"vcmpbfp.",  VXR(4, 966,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6323
{"udi15fcm.", APU(4, 995,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6324
{"vcmpgtsd.", VXR(4, 967,1),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
6325
{"udi15fcm",  APU(4, 995,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6326
{"vmodsd",  VX (4,1995),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6327
{"maclhwso",  XO (4, 492,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6328
{"maclhwso.", XO (4, 492,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6329
{"nmaclhwso", XO (4, 494,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6330
{"nmaclhwso.",  XO (4, 494,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6331
{"dcbz_l",  X  (4,1014),  XRT_MASK,    PPCPS, 0,    {RA, RB}},
6332
6333
{"lxvp",  DQXP(6,0),  DQXP_MASK,   POWER10, PPCVLE,   {XTP, DQ, RA0}},
6334
{"stxvp", DQXP(6,1),  DQXP_MASK,   POWER10, PPCVLE,   {XSP, DQ, RA0}},
6335
6336
{"mulli", OP(7),    OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA, SI}},
6337
{"muli",  OP(7),    OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA, SI}},
6338
6339
{"subfic",  OP(8),    OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA, SI}},
6340
{"sfi",   OP(8),    OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA, SI}},
6341
6342
{"dozi",  OP(9),    OP_MASK,     M601,  PPCVLE,   {RT, RA, SI}},
6343
6344
{"cmplwi",  OPL(10,0),  OPL_MASK,    PPCCOM,  PPCVLE|EXT, {OBF, RA, UISIGNOPT}},
6345
{"cmpldi",  OPL(10,1),  OPL_MASK,    PPC64, PPCVLE|EXT, {OBF, RA, UISIGNOPT}},
6346
{"cmpli", OP(10),   OP_MASK,     PPC, PPCVLE,   {BF, L32OPT, RA, UISIGNOPT}},
6347
{"cmpli", OP(10),   OP_MASK,     PWRCOM,  PPC|PPCVLE, {BF, RA, UISIGNOPT}},
6348
6349
{"cmpwi", OPL(11,0),  OPL_MASK,    PPCCOM,  PPCVLE|EXT, {OBF, RA, SI}},
6350
{"cmpdi", OPL(11,1),  OPL_MASK,    PPC64, PPCVLE|EXT, {OBF, RA, SI}},
6351
{"cmpi",  OP(11),   OP_MASK,     PPC, PPCVLE,   {BF, L32OPT, RA, SI}},
6352
{"cmpi",  OP(11),   OP_MASK,     PWRCOM,  PPC|PPCVLE, {BF, RA, SI}},
6353
6354
{"addic", OP(12),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA, SI}},
6355
{"ai",    OP(12),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA, SI}},
6356
{"subic", OP(12),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, RA, NSI}},
6357
6358
{"addic.",  OP(13),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA, SI}},
6359
{"ai.",   OP(13),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA, SI}},
6360
{"subic.",  OP(13),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, RA, NSI}},
6361
6362
{"li",    OP(14),   DRA_MASK,    PPCCOM,  PPCVLE|EXT, {RT, SI}},
6363
{"lil",   OP(14),   DRA_MASK,    PWRCOM,  PPCVLE|EXT, {RT, SI}},
6364
{"addi",  OP(14),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA0, SI}},
6365
{"cal",   OP(14),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, D, RA0}},
6366
{"subi",  OP(14),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, RA0, NSI}},
6367
{"la",    OP(14),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, D, RA0}},
6368
6369
{"lis",   OP(15),   DRA_MASK,    PPCCOM,  PPCVLE|EXT, {RT, SISIGNOPT}},
6370
{"liu",   OP(15),   DRA_MASK,    PWRCOM,  PPCVLE|EXT, {RT, SISIGNOPT}},
6371
{"addis", OP(15),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA0, SISIGNOPT}},
6372
{"cau",   OP(15),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA0, SISIGNOPT}},
6373
{"subis", OP(15),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, RA0, NSISIGNOPT}},
6374
6375
{"bdnz-",    BBO(16,BODNZ,0,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDM}},
6376
{"bdnz+",    BBO(16,BODNZ,0,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDP}},
6377
{"bdnz",     BBO(16,BODNZ,0,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BD}},
6378
{"bdn",      BBO(16,BODNZ,0,0),   BBOATBI_MASK,  PWRCOM,   PPCVLE|EXT,  {BD}},
6379
{"bdnzl-",   BBO(16,BODNZ,0,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDM}},
6380
{"bdnzl+",   BBO(16,BODNZ,0,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDP}},
6381
{"bdnzl",    BBO(16,BODNZ,0,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BD}},
6382
{"bdnl",     BBO(16,BODNZ,0,1),   BBOATBI_MASK,  PWRCOM,   PPCVLE|EXT,  {BD}},
6383
{"bdnza-",   BBO(16,BODNZ,1,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDMA}},
6384
{"bdnza+",   BBO(16,BODNZ,1,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDPA}},
6385
{"bdnza",    BBO(16,BODNZ,1,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDA}},
6386
{"bdna",     BBO(16,BODNZ,1,0),   BBOATBI_MASK,  PWRCOM,   PPCVLE|EXT,  {BDA}},
6387
{"bdnzla-",  BBO(16,BODNZ,1,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDMA}},
6388
{"bdnzla+",  BBO(16,BODNZ,1,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDPA}},
6389
{"bdnzla",   BBO(16,BODNZ,1,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDA}},
6390
{"bdnla",    BBO(16,BODNZ,1,1),   BBOATBI_MASK,  PWRCOM,   PPCVLE|EXT,  {BDA}},
6391
{"bdz-",     BBO(16,BODZ,0,0),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDM}},
6392
{"bdz+",     BBO(16,BODZ,0,0),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDP}},
6393
{"bdz",      BBO(16,BODZ,0,0),    BBOATBI_MASK,  COM,  PPCVLE|EXT,  {BD}},
6394
{"bdzl-",    BBO(16,BODZ,0,1),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDM}},
6395
{"bdzl+",    BBO(16,BODZ,0,1),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDP}},
6396
{"bdzl",     BBO(16,BODZ,0,1),    BBOATBI_MASK,  COM,  PPCVLE|EXT,  {BD}},
6397
{"bdza-",    BBO(16,BODZ,1,0),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDMA}},
6398
{"bdza+",    BBO(16,BODZ,1,0),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDPA}},
6399
{"bdza",     BBO(16,BODZ,1,0),    BBOATBI_MASK,  COM,  PPCVLE|EXT,  {BDA}},
6400
{"bdzla-",   BBO(16,BODZ,1,1),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDMA}},
6401
{"bdzla+",   BBO(16,BODZ,1,1),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDPA}},
6402
{"bdzla",    BBO(16,BODZ,1,1),    BBOATBI_MASK,  COM,  PPCVLE|EXT,  {BDA}},
6403
6404
{"bge-",     BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6405
{"bge+",     BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6406
{"bge",      BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6407
{"bnl-",     BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6408
{"bnl+",     BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6409
{"bnl",      BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6410
{"bgel-",    BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6411
{"bgel+",    BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6412
{"bgel",     BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6413
{"bnll-",    BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6414
{"bnll+",    BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6415
{"bnll",     BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6416
{"bgea-",    BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6417
{"bgea+",    BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6418
{"bgea",     BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6419
{"bnla-",    BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6420
{"bnla+",    BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6421
{"bnla",     BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6422
{"bgela-",   BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6423
{"bgela+",   BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6424
{"bgela",    BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6425
{"bnlla-",   BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6426
{"bnlla+",   BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6427
{"bnlla",    BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6428
{"ble-",     BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6429
{"ble+",     BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6430
{"ble",      BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6431
{"bng-",     BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6432
{"bng+",     BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6433
{"bng",      BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6434
{"blel-",    BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6435
{"blel+",    BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6436
{"blel",     BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6437
{"bngl-",    BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6438
{"bngl+",    BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6439
{"bngl",     BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6440
{"blea-",    BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6441
{"blea+",    BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6442
{"blea",     BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6443
{"bnga-",    BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6444
{"bnga+",    BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6445
{"bnga",     BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6446
{"blela-",   BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6447
{"blela+",   BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6448
{"blela",    BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6449
{"bngla-",   BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6450
{"bngla+",   BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6451
{"bngla",    BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6452
{"bne-",     BBOCB(16,BOF,CBEQ,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6453
{"bne+",     BBOCB(16,BOF,CBEQ,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6454
{"bne",      BBOCB(16,BOF,CBEQ,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6455
{"bnel-",    BBOCB(16,BOF,CBEQ,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6456
{"bnel+",    BBOCB(16,BOF,CBEQ,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6457
{"bnel",     BBOCB(16,BOF,CBEQ,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6458
{"bnea-",    BBOCB(16,BOF,CBEQ,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6459
{"bnea+",    BBOCB(16,BOF,CBEQ,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6460
{"bnea",     BBOCB(16,BOF,CBEQ,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6461
{"bnela-",   BBOCB(16,BOF,CBEQ,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6462
{"bnela+",   BBOCB(16,BOF,CBEQ,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6463
{"bnela",    BBOCB(16,BOF,CBEQ,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6464
{"bns-",     BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6465
{"bns+",     BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6466
{"bns",      BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6467
{"bnu-",     BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6468
{"bnu+",     BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6469
{"bnu",      BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BD}},
6470
{"bnsl-",    BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6471
{"bnsl+",    BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6472
{"bnsl",     BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6473
{"bnul-",    BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6474
{"bnul+",    BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6475
{"bnul",     BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BD}},
6476
{"bnsa-",    BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6477
{"bnsa+",    BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6478
{"bnsa",     BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6479
{"bnua-",    BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6480
{"bnua+",    BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6481
{"bnua",     BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDA}},
6482
{"bnsla-",   BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6483
{"bnsla+",   BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6484
{"bnsla",    BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6485
{"bnula-",   BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6486
{"bnula+",   BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6487
{"bnula",    BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDA}},
6488
6489
{"blt-",     BBOCB(16,BOT,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6490
{"blt+",     BBOCB(16,BOT,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6491
{"blt",      BBOCB(16,BOT,CBLT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6492
{"bltl-",    BBOCB(16,BOT,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6493
{"bltl+",    BBOCB(16,BOT,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6494
{"bltl",     BBOCB(16,BOT,CBLT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6495
{"blta-",    BBOCB(16,BOT,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6496
{"blta+",    BBOCB(16,BOT,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6497
{"blta",     BBOCB(16,BOT,CBLT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6498
{"bltla-",   BBOCB(16,BOT,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6499
{"bltla+",   BBOCB(16,BOT,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6500
{"bltla",    BBOCB(16,BOT,CBLT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6501
{"bgt-",     BBOCB(16,BOT,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6502
{"bgt+",     BBOCB(16,BOT,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6503
{"bgt",      BBOCB(16,BOT,CBGT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6504
{"bgtl-",    BBOCB(16,BOT,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6505
{"bgtl+",    BBOCB(16,BOT,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6506
{"bgtl",     BBOCB(16,BOT,CBGT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6507
{"bgta-",    BBOCB(16,BOT,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6508
{"bgta+",    BBOCB(16,BOT,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6509
{"bgta",     BBOCB(16,BOT,CBGT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6510
{"bgtla-",   BBOCB(16,BOT,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6511
{"bgtla+",   BBOCB(16,BOT,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6512
{"bgtla",    BBOCB(16,BOT,CBGT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6513
{"beq-",     BBOCB(16,BOT,CBEQ,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6514
{"beq+",     BBOCB(16,BOT,CBEQ,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6515
{"beq",      BBOCB(16,BOT,CBEQ,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6516
{"beql-",    BBOCB(16,BOT,CBEQ,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6517
{"beql+",    BBOCB(16,BOT,CBEQ,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6518
{"beql",     BBOCB(16,BOT,CBEQ,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6519
{"beqa-",    BBOCB(16,BOT,CBEQ,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6520
{"beqa+",    BBOCB(16,BOT,CBEQ,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6521
{"beqa",     BBOCB(16,BOT,CBEQ,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6522
{"beqla-",   BBOCB(16,BOT,CBEQ,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6523
{"beqla+",   BBOCB(16,BOT,CBEQ,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6524
{"beqla",    BBOCB(16,BOT,CBEQ,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6525
{"bso-",     BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6526
{"bso+",     BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6527
{"bso",      BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6528
{"bun-",     BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6529
{"bun+",     BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6530
{"bun",      BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BD}},
6531
{"bsol-",    BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6532
{"bsol+",    BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6533
{"bsol",     BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6534
{"bunl-",    BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6535
{"bunl+",    BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6536
{"bunl",     BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BD}},
6537
{"bsoa-",    BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6538
{"bsoa+",    BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6539
{"bsoa",     BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6540
{"buna-",    BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6541
{"buna+",    BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6542
{"buna",     BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDA}},
6543
{"bsola-",   BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6544
{"bsola+",   BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6545
{"bsola",    BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6546
{"bunla-",   BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6547
{"bunla+",   BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6548
{"bunla",    BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDA}},
6549
6550
{"bdnzf-",   BBO(16,BODNZF,0,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6551
{"bdnzf+",   BBO(16,BODNZF,0,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6552
{"bdnzf",    BBO(16,BODNZF,0,0),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6553
{"bdnzfl-",  BBO(16,BODNZF,0,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6554
{"bdnzfl+",  BBO(16,BODNZF,0,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6555
{"bdnzfl",   BBO(16,BODNZF,0,1),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6556
{"bdnzfa-",  BBO(16,BODNZF,1,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6557
{"bdnzfa+",  BBO(16,BODNZF,1,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6558
{"bdnzfa",   BBO(16,BODNZF,1,0),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6559
{"bdnzfla-", BBO(16,BODNZF,1,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6560
{"bdnzfla+", BBO(16,BODNZF,1,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6561
{"bdnzfla",  BBO(16,BODNZF,1,1),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6562
{"bdzf-",    BBO(16,BODZF,0,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6563
{"bdzf+",    BBO(16,BODZF,0,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6564
{"bdzf",     BBO(16,BODZF,0,0),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6565
{"bdzfl-",   BBO(16,BODZF,0,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6566
{"bdzfl+",   BBO(16,BODZF,0,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6567
{"bdzfl",    BBO(16,BODZF,0,1),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6568
{"bdzfa-",   BBO(16,BODZF,1,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6569
{"bdzfa+",   BBO(16,BODZF,1,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6570
{"bdzfa",    BBO(16,BODZF,1,0),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6571
{"bdzfla-",  BBO(16,BODZF,1,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6572
{"bdzfla+",  BBO(16,BODZF,1,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6573
{"bdzfla",   BBO(16,BODZF,1,1),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6574
6575
{"bf-",      BBO(16,BOF,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDM}},
6576
{"bf+",      BBO(16,BOF,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDP}},
6577
{"bf",       BBO(16,BOF,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BD}},
6578
{"bbf",      BBO(16,BOF,0,0),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BD}},
6579
{"bfl-",     BBO(16,BOF,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDM}},
6580
{"bfl+",     BBO(16,BOF,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDP}},
6581
{"bfl",      BBO(16,BOF,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BD}},
6582
{"bbfl",     BBO(16,BOF,0,1),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BD}},
6583
{"bfa-",     BBO(16,BOF,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDMA}},
6584
{"bfa+",     BBO(16,BOF,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDPA}},
6585
{"bfa",      BBO(16,BOF,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDA}},
6586
{"bbfa",     BBO(16,BOF,1,0),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BDA}},
6587
{"bfla-",    BBO(16,BOF,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDMA}},
6588
{"bfla+",    BBO(16,BOF,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDPA}},
6589
{"bfla",     BBO(16,BOF,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDA}},
6590
{"bbfla",    BBO(16,BOF,1,1),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BDA}},
6591
6592
{"bdnzt-",   BBO(16,BODNZT,0,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6593
{"bdnzt+",   BBO(16,BODNZT,0,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6594
{"bdnzt",    BBO(16,BODNZT,0,0),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6595
{"bdnztl-",  BBO(16,BODNZT,0,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6596
{"bdnztl+",  BBO(16,BODNZT,0,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6597
{"bdnztl",   BBO(16,BODNZT,0,1),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6598
{"bdnzta-",  BBO(16,BODNZT,1,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6599
{"bdnzta+",  BBO(16,BODNZT,1,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6600
{"bdnzta",   BBO(16,BODNZT,1,0),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6601
{"bdnztla-", BBO(16,BODNZT,1,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6602
{"bdnztla+", BBO(16,BODNZT,1,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6603
{"bdnztla",  BBO(16,BODNZT,1,1),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6604
{"bdzt-",    BBO(16,BODZT,0,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6605
{"bdzt+",    BBO(16,BODZT,0,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6606
{"bdzt",     BBO(16,BODZT,0,0),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6607
{"bdztl-",   BBO(16,BODZT,0,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6608
{"bdztl+",   BBO(16,BODZT,0,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6609
{"bdztl",    BBO(16,BODZT,0,1),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6610
{"bdzta-",   BBO(16,BODZT,1,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6611
{"bdzta+",   BBO(16,BODZT,1,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6612
{"bdzta",    BBO(16,BODZT,1,0),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6613
{"bdztla-",  BBO(16,BODZT,1,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6614
{"bdztla+",  BBO(16,BODZT,1,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6615
{"bdztla",   BBO(16,BODZT,1,1),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6616
6617
{"bt-",      BBO(16,BOT,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDM}},
6618
{"bt+",      BBO(16,BOT,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDP}},
6619
{"bt",       BBO(16,BOT,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BD}},
6620
{"bbt",      BBO(16,BOT,0,0),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BD}},
6621
{"btl-",     BBO(16,BOT,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDM}},
6622
{"btl+",     BBO(16,BOT,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDP}},
6623
{"btl",      BBO(16,BOT,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BD}},
6624
{"bbtl",     BBO(16,BOT,0,1),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BD}},
6625
{"bta-",     BBO(16,BOT,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDMA}},
6626
{"bta+",     BBO(16,BOT,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDPA}},
6627
{"bta",      BBO(16,BOT,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDA}},
6628
{"bbta",     BBO(16,BOT,1,0),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BDA}},
6629
{"btla-",    BBO(16,BOT,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDMA}},
6630
{"btla+",    BBO(16,BOT,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDPA}},
6631
{"btla",     BBO(16,BOT,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDA}},
6632
{"bbtla",    BBO(16,BOT,1,1),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BDA}},
6633
6634
{"bc-",   B(16,0,0),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOM, BI, BDM}},
6635
{"bc+",   B(16,0,0),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOP, BI, BDP}},
6636
{"bc",    B(16,0,0),  B_MASK,      COM, PPCVLE,   {BO, BI, BD}},
6637
{"bcl-",  B(16,0,1),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOM, BI, BDM}},
6638
{"bcl+",  B(16,0,1),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOP, BI, BDP}},
6639
{"bcl",   B(16,0,1),  B_MASK,      COM, PPCVLE,   {BO, BI, BD}},
6640
{"bca-",  B(16,1,0),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOM, BI, BDMA}},
6641
{"bca+",  B(16,1,0),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOP, BI, BDPA}},
6642
{"bca",   B(16,1,0),  B_MASK,      COM, PPCVLE,   {BO, BI, BDA}},
6643
{"bcla-", B(16,1,1),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOM, BI, BDMA}},
6644
{"bcla+", B(16,1,1),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOP, BI, BDPA}},
6645
{"bcla",  B(16,1,1),  B_MASK,      COM, PPCVLE,   {BO, BI, BDA}},
6646
6647
{"svc",   SC(17,0,0), SC_MASK,     POWER, PPCVLE,   {SVC_LEV, FL1, FL2}},
6648
{"scv",   SC(17,0,1), SC_MASK,     POWER9,  PPCVLE,   {SVC_LEV}},
6649
{"svcl",  SC(17,0,1), SC_MASK,     POWER, PPCVLE,   {SVC_LEV, FL1, FL2}},
6650
{"sc",    SC(17,1,0), SC_MASK,     PPC, PPCVLE,   {LEV}},
6651
{"svca",  SC(17,1,0), SC_MASK,     PWRCOM,  PPCVLE,   {SV}},
6652
{"svcla", SC(17,1,1), SC_MASK,     POWER, PPCVLE,   {SV}},
6653
6654
{"b",   B(18,0,0),  B_MASK,      COM, PPCVLE,   {LI}},
6655
{"bl",    B(18,0,1),  B_MASK,      COM, PPCVLE,   {LI}},
6656
{"ba",    B(18,1,0),  B_MASK,      COM, PPCVLE,   {LIA}},
6657
{"bla",   B(18,1,1),  B_MASK,      COM, PPCVLE,   {LIA}},
6658
6659
{"mcrf",     XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM,  PPCVLE,   {BF, BFA}},
6660
6661
{"lnia",     DX(19,2),    NODX_MASK,   POWER9,  PPCVLE|EXT, {RT}},
6662
{"addpcis",  DX(19,2),    DX_MASK,     POWER9,  PPCVLE,   {RT, DXD}},
6663
{"subpcis",  DX(19,2),    DX_MASK,     POWER9,  PPCVLE|EXT, {RT, NDXD}},
6664
6665
{"bdnzlr-",  XLO(19,BODNZ,16,0),  XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6666
{"bdnzlr+",  XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6667
{"bdnzlr",   XLO(19,BODNZ,16,0),  XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6668
{"bdnzlrl-", XLO(19,BODNZ,16,1),  XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6669
{"bdnzlrl+", XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6670
{"bdnzlrl",  XLO(19,BODNZ,16,1),  XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6671
{"bdzlr-",   XLO(19,BODZ,16,0),   XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6672
{"bdzlr+",   XLO(19,BODZP,16,0),  XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6673
{"bdzlr",    XLO(19,BODZ,16,0),   XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6674
{"bdzlrl-",  XLO(19,BODZ,16,1),   XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6675
{"bdzlrl+",  XLO(19,BODZP,16,1),  XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6676
{"bdzlrl",   XLO(19,BODZ,16,1),   XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6677
{"blr",      XLO(19,BOU,16,0),    XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6678
{"br",       XLO(19,BOU,16,0),    XLBOBIBB_MASK, PWRCOM,   PPCVLE|EXT,    {BH}},
6679
{"blrl",     XLO(19,BOU,16,1),    XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6680
{"brl",      XLO(19,BOU,16,1),    XLBOBIBB_MASK, PWRCOM,   PPCVLE|EXT,    {BH}},
6681
{"bdnzlr-",  XLO(19,BODNZM4,16,0),  XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6682
{"bdnzlrl-", XLO(19,BODNZM4,16,1),  XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6683
{"bdnzlr+",  XLO(19,BODNZP4,16,0),  XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6684
{"bdnzlrl+", XLO(19,BODNZP4,16,1),  XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6685
{"bdzlr-",   XLO(19,BODZM4,16,0), XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6686
{"bdzlrl-",  XLO(19,BODZM4,16,1), XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6687
{"bdzlr+",   XLO(19,BODZP4,16,0), XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6688
{"bdzlrl+",  XLO(19,BODZP4,16,1), XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6689
6690
{"bgelr-",   XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6691
{"bgelr+",   XLOCB(19,BOFP,CBLT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6692
{"bgelr",    XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6693
{"bger",     XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6694
{"bnllr-",   XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6695
{"bnllr+",   XLOCB(19,BOFP,CBLT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6696
{"bnllr",    XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6697
{"bnlr",     XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6698
{"bgelrl-",  XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6699
{"bgelrl+",  XLOCB(19,BOFP,CBLT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6700
{"bgelrl",   XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6701
{"bgerl",    XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6702
{"bnllrl-",  XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6703
{"bnllrl+",  XLOCB(19,BOFP,CBLT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6704
{"bnllrl",   XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6705
{"bnlrl",    XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6706
{"blelr-",   XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6707
{"blelr+",   XLOCB(19,BOFP,CBGT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6708
{"blelr",    XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6709
{"bler",     XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6710
{"bnglr-",   XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6711
{"bnglr+",   XLOCB(19,BOFP,CBGT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6712
{"bnglr",    XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6713
{"bngr",     XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6714
{"blelrl-",  XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6715
{"blelrl+",  XLOCB(19,BOFP,CBGT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6716
{"blelrl",   XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6717
{"blerl",    XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6718
{"bnglrl-",  XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6719
{"bnglrl+",  XLOCB(19,BOFP,CBGT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6720
{"bnglrl",   XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6721
{"bngrl",    XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6722
{"bnelr-",   XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6723
{"bnelr+",   XLOCB(19,BOFP,CBEQ,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6724
{"bnelr",    XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6725
{"bner",     XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6726
{"bnelrl-",  XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6727
{"bnelrl+",  XLOCB(19,BOFP,CBEQ,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6728
{"bnelrl",   XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6729
{"bnerl",    XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6730
{"bnslr-",   XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6731
{"bnslr+",   XLOCB(19,BOFP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6732
{"bnslr",    XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6733
{"bnsr",     XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6734
{"bnulr-",   XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6735
{"bnulr+",   XLOCB(19,BOFP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6736
{"bnulr",    XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6737
{"bnslrl-",  XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6738
{"bnslrl+",  XLOCB(19,BOFP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6739
{"bnslrl",   XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6740
{"bnsrl",    XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6741
{"bnulrl-",  XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6742
{"bnulrl+",  XLOCB(19,BOFP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6743
{"bnulrl",   XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6744
{"bgelr-",   XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6745
{"bnllr-",   XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6746
{"bgelrl-",  XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6747
{"bnllrl-",  XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6748
{"blelr-",   XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6749
{"bnglr-",   XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6750
{"blelrl-",  XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6751
{"bnglrl-",  XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6752
{"bnelr-",   XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6753
{"bnelrl-",  XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6754
{"bnslr-",   XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6755
{"bnulr-",   XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6756
{"bnslrl-",  XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6757
{"bnulrl-",  XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6758
{"bgelr+",   XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6759
{"bnllr+",   XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6760
{"bgelrl+",  XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6761
{"bnllrl+",  XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6762
{"blelr+",   XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6763
{"bnglr+",   XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6764
{"blelrl+",  XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6765
{"bnglrl+",  XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6766
{"bnelr+",   XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6767
{"bnelrl+",  XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6768
{"bnslr+",   XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6769
{"bnulr+",   XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6770
{"bnslrl+",  XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6771
{"bnulrl+",  XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6772
{"bltlr-",   XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6773
{"bltlr+",   XLOCB(19,BOTP,CBLT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6774
{"bltlr",    XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6775
{"bltr",     XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6776
{"bltlrl-",  XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6777
{"bltlrl+",  XLOCB(19,BOTP,CBLT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6778
{"bltlrl",   XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6779
{"bltrl",    XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6780
{"bgtlr-",   XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6781
{"bgtlr+",   XLOCB(19,BOTP,CBGT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6782
{"bgtlr",    XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6783
{"bgtr",     XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6784
{"bgtlrl-",  XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6785
{"bgtlrl+",  XLOCB(19,BOTP,CBGT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6786
{"bgtlrl",   XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6787
{"bgtrl",    XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6788
{"beqlr-",   XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6789
{"beqlr+",   XLOCB(19,BOTP,CBEQ,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6790
{"beqlr",    XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6791
{"beqr",     XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6792
{"beqlrl-",  XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6793
{"beqlrl+",  XLOCB(19,BOTP,CBEQ,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6794
{"beqlrl",   XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6795
{"beqrl",    XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6796
{"bsolr-",   XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6797
{"bsolr+",   XLOCB(19,BOTP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6798
{"bsolr",    XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6799
{"bsor",     XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6800
{"bunlr-",   XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6801
{"bunlr+",   XLOCB(19,BOTP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6802
{"bunlr",    XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6803
{"bsolrl-",  XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6804
{"bsolrl+",  XLOCB(19,BOTP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6805
{"bsolrl",   XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6806
{"bsorl",    XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6807
{"bunlrl-",  XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6808
{"bunlrl+",  XLOCB(19,BOTP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6809
{"bunlrl",   XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6810
{"bltlr-",   XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6811
{"bltlrl-",  XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6812
{"bgtlr-",   XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6813
{"bgtlrl-",  XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6814
{"beqlr-",   XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6815
{"beqlrl-",  XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6816
{"bsolr-",   XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6817
{"bunlr-",   XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6818
{"bsolrl-",  XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6819
{"bunlrl-",  XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6820
{"bltlr+",   XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6821
{"bltlrl+",  XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6822
{"bgtlr+",   XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6823
{"bgtlrl+",  XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6824
{"beqlr+",   XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6825
{"beqlrl+",  XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6826
{"bsolr+",   XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6827
{"bunlr+",   XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6828
{"bsolrl+",  XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6829
{"bunlrl+",  XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6830
6831
{"bdnzflr-", XLO(19,BODNZF,16,0), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6832
{"bdnzflr+", XLO(19,BODNZFP,16,0),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6833
{"bdnzflr",  XLO(19,BODNZF,16,0), XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6834
{"bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6835
{"bdnzflrl+",XLO(19,BODNZFP,16,1),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6836
{"bdnzflrl", XLO(19,BODNZF,16,1), XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6837
{"bdzflr-",  XLO(19,BODZF,16,0),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6838
{"bdzflr+",  XLO(19,BODZFP,16,0), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6839
{"bdzflr",   XLO(19,BODZF,16,0),  XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6840
{"bdzflrl-", XLO(19,BODZF,16,1),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6841
{"bdzflrl+", XLO(19,BODZFP,16,1), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6842
{"bdzflrl",  XLO(19,BODZF,16,1),  XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6843
{"bflr-",    XLO(19,BOF,16,0),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6844
{"bflr+",    XLO(19,BOFP,16,0),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6845
{"bflr",     XLO(19,BOF,16,0),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6846
{"bbfr",     XLO(19,BOF,16,0),    XLBOBB_MASK,   PWRCOM,   PPCVLE|EXT,    {BI, BH}},
6847
{"bflrl-",   XLO(19,BOF,16,1),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6848
{"bflrl+",   XLO(19,BOFP,16,1),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6849
{"bflrl",    XLO(19,BOF,16,1),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6850
{"bbfrl",    XLO(19,BOF,16,1),    XLBOBB_MASK,   PWRCOM,   PPCVLE|EXT,    {BI, BH}},
6851
{"bflr-",    XLO(19,BOFM4,16,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6852
{"bflrl-",   XLO(19,BOFM4,16,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6853
{"bflr+",    XLO(19,BOFP4,16,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6854
{"bflrl+",   XLO(19,BOFP4,16,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6855
{"bdnztlr-", XLO(19,BODNZT,16,0), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6856
{"bdnztlr+", XLO(19,BODNZTP,16,0),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6857
{"bdnztlr",  XLO(19,BODNZT,16,0), XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6858
{"bdnztlrl-", XLO(19,BODNZT,16,1),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6859
{"bdnztlrl+", XLO(19,BODNZTP,16,1), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6860
{"bdnztlrl", XLO(19,BODNZT,16,1), XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6861
{"bdztlr-",  XLO(19,BODZT,16,0),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6862
{"bdztlr+",  XLO(19,BODZTP,16,0), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6863
{"bdztlr",   XLO(19,BODZT,16,0),  XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6864
{"bdztlrl-", XLO(19,BODZT,16,1),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6865
{"bdztlrl+", XLO(19,BODZTP,16,1), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6866
{"bdztlrl",  XLO(19,BODZT,16,1),  XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6867
{"btlr-",    XLO(19,BOT,16,0),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6868
{"btlr+",    XLO(19,BOTP,16,0),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6869
{"btlr",     XLO(19,BOT,16,0),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6870
{"bbtr",     XLO(19,BOT,16,0),    XLBOBB_MASK,   PWRCOM,   PPCVLE|EXT,    {BI, BH}},
6871
{"btlrl-",   XLO(19,BOT,16,1),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6872
{"btlrl+",   XLO(19,BOTP,16,1),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6873
{"btlrl",    XLO(19,BOT,16,1),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6874
{"bbtrl",    XLO(19,BOT,16,1),    XLBOBB_MASK,   PWRCOM,   PPCVLE|EXT,    {BI, BH}},
6875
{"btlr-",    XLO(19,BOTM4,16,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6876
{"btlrl-",   XLO(19,BOTM4,16,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6877
{"btlr+",    XLO(19,BOTP4,16,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6878
{"btlrl+",   XLO(19,BOTP4,16,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6879
6880
{"bclr-",    XLLK(19,16,0),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOM, BI, BH}},
6881
{"bclr+",    XLLK(19,16,0),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOP, BI, BH}},
6882
{"bclr",     XLLK(19,16,0),   XLBH_MASK,     PPCCOM,   PPCVLE,  {BO, BI, BH}},
6883
{"bcr",      XLLK(19,16,0),   XLBH_MASK,     PWRCOM,   PPCVLE,  {BO, BI, BH}},
6884
{"bclrl-",   XLLK(19,16,1),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOM, BI, BH}},
6885
{"bclrl+",   XLLK(19,16,1),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOP, BI, BH}},
6886
{"bclrl",    XLLK(19,16,1),   XLBH_MASK,     PPCCOM,   PPCVLE,  {BO, BI, BH}},
6887
{"bcrl",     XLLK(19,16,1),   XLBH_MASK,     PWRCOM,   PPCVLE,  {BO, BI, BH}},
6888
6889
{"rfid",  XL(19,18),  0xffffffff,  PPC64, PPCVLE, {0}},
6890
6891
{"crnot", XL(19,33),  XL_MASK,     PPCCOM,  PPCVLE|EXT, {BT, BAB}},
6892
{"crnor", XL(19,33),  XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6893
6894
{"rfmci", X(19,38),    0xffffffff, PPCRFMCI|PPCA2|PPC476, PPCVLE, {0}},
6895
{"rfdi",  XL(19,39),  0xffffffff,  E500MC,  PPCVLE,   {0}},
6896
{"rfi",   XL(19,50),  0xffffffff,  COM, PPCVLE,   {0}},
6897
{"rfci",  XL(19,51), 0xffffffff, PPC403|BOOKE|PPCE300|PPCA2|PPC476, PPCVLE, {0}},
6898
6899
{"rfscv", XL(19,82),  0xffffffff,  POWER9,  PPCVLE,   {0}},
6900
{"rfsvc", XL(19,82),  0xffffffff,  POWER, PPCVLE,   {0}},
6901
6902
{"rfgi",  XL(19,102),   0xffffffff, E500MC|PPCA2, PPCVLE,   {0}},
6903
6904
{"crandc",  XL(19,129), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6905
6906
{"rfebb", XL(19,146), XLS_MASK,    POWER8,  PPCVLE,   {SXL}},
6907
6908
{"isync", XL(19,150), 0xffffffff,  PPCCOM,  PPCVLE,   {0}},
6909
{"ics",   XL(19,150), 0xffffffff,  PWRCOM,  PPCVLE,   {0}},
6910
6911
{"crclr", XL(19,193), XL_MASK,     PPCCOM,  PPCVLE|EXT, {BTAB}},
6912
{"crxor", XL(19,193), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6913
6914
{"dnh",   X(19,198),  X_MASK,      E500MC,  PPCVLE,   {DUI, DUIS}},
6915
6916
{"crnand",  XL(19,225), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6917
6918
{"crand", XL(19,257), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6919
6920
{"hrfid", XL(19,274),    0xffffffff, POWER5|CELL, PPC476|PPCVLE,  {0}},
6921
6922
{"crset", XL(19,289), XL_MASK,     PPCCOM,  PPCVLE|EXT, {BTAB}},
6923
{"creqv", XL(19,289), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6924
6925
{"urfid", XL(19,306), 0xffffffff,  POWER9,  PPCVLE,   {0}},
6926
{"stop",  XL(19,370), 0xffffffff,  POWER9,  PPCVLE,   {0}},
6927
6928
{"doze",  XL(19,402), 0xffffffff,  POWER6,  POWER9|PPCVLE,  {0}},
6929
6930
{"crorc", XL(19,417), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6931
6932
{"nap",   XL(19,434), 0xffffffff,  POWER6,  POWER9|PPCVLE,  {0}},
6933
6934
{"crmove",  XL(19,449), XL_MASK,     PPCCOM,  PPCVLE|EXT, {BT, BAB}},
6935
{"cror",  XL(19,449), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6936
6937
{"sleep", XL(19,466), 0xffffffff,  POWER6,  POWER9|PPCVLE,  {0}},
6938
{"rvwinkle",  XL(19,498), 0xffffffff,  POWER6,  POWER9|PPCVLE,  {0}},
6939
6940
{"bctr",    XLO(19,BOU,528,0),    XLBOBIBB_MASK, COM,  PPCVLE|EXT,    {BH}},
6941
{"bctrl",   XLO(19,BOU,528,1),    XLBOBIBB_MASK, COM,  PPCVLE|EXT,    {BH}},
6942
{"bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6943
{"bgectr+", XLOCB(19,BOFP,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6944
{"bgectr",  XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6945
{"bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6946
{"bnlctr+", XLOCB(19,BOFP,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6947
{"bnlctr",  XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6948
{"bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6949
{"bgectrl+",XLOCB(19,BOFP,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6950
{"bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6951
{"bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6952
{"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6953
{"bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6954
{"blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6955
{"blectr+", XLOCB(19,BOFP,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6956
{"blectr",  XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6957
{"bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6958
{"bngctr+", XLOCB(19,BOFP,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6959
{"bngctr",  XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6960
{"blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6961
{"blectrl+",XLOCB(19,BOFP,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6962
{"blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6963
{"bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6964
{"bngctrl+",XLOCB(19,BOFP,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6965
{"bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6966
{"bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6967
{"bnectr+", XLOCB(19,BOFP,CBEQ,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6968
{"bnectr",  XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6969
{"bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6970
{"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6971
{"bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6972
{"bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6973
{"bnsctr+", XLOCB(19,BOFP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6974
{"bnsctr",  XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6975
{"bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6976
{"bnuctr+", XLOCB(19,BOFP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6977
{"bnuctr",  XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6978
{"bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6979
{"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6980
{"bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6981
{"bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6982
{"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6983
{"bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6984
{"bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6985
{"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6986
{"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6987
{"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6988
{"blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6989
{"bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6990
{"blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6991
{"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6992
{"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6993
{"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6994
{"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6995
{"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6996
{"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6997
{"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6998
{"bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6999
{"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7000
{"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7001
{"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7002
{"blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7003
{"bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7004
{"blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7005
{"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7006
{"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7007
{"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7008
{"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7009
{"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7010
{"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7011
{"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7012
{"bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7013
{"bltctr+", XLOCB(19,BOTP,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7014
{"bltctr",  XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
7015
{"bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7016
{"bltctrl+",XLOCB(19,BOTP,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7017
{"bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
7018
{"bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7019
{"bgtctr+", XLOCB(19,BOTP,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7020
{"bgtctr",  XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
7021
{"bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7022
{"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7023
{"bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
7024
{"beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7025
{"beqctr+", XLOCB(19,BOTP,CBEQ,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7026
{"beqctr",  XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
7027
{"beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7028
{"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7029
{"beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
7030
{"bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7031
{"bsoctr+", XLOCB(19,BOTP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7032
{"bsoctr",  XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
7033
{"bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7034
{"bunctr+", XLOCB(19,BOTP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7035
{"bunctr",  XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
7036
{"bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7037
{"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7038
{"bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
7039
{"bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7040
{"bunctrl+",XLOCB(19,BOTP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
7041
{"bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
7042
{"bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7043
{"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7044
{"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7045
{"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7046
{"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7047
{"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7048
{"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7049
{"bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7050
{"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7051
{"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7052
{"bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7053
{"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7054
{"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7055
{"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7056
{"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7057
{"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7058
{"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7059
{"bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7060
{"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7061
{"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
7062
7063
{"bfctr-",  XLO(19,BOF,528,0),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
7064
{"bfctr+",  XLO(19,BOFP,528,0),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
7065
{"bfctr",   XLO(19,BOF,528,0),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
7066
{"bfctrl-", XLO(19,BOF,528,1),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
7067
{"bfctrl+", XLO(19,BOFP,528,1),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
7068
{"bfctrl",  XLO(19,BOF,528,1),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
7069
{"bfctr-",  XLO(19,BOFM4,528,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
7070
{"bfctrl-", XLO(19,BOFM4,528,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
7071
{"bfctr+",  XLO(19,BOFP4,528,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
7072
{"bfctrl+", XLO(19,BOFP4,528,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
7073
{"btctr-",  XLO(19,BOT,528,0),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
7074
{"btctr+",  XLO(19,BOTP,528,0),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
7075
{"btctr",   XLO(19,BOT,528,0),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
7076
{"btctrl-", XLO(19,BOT,528,1),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
7077
{"btctrl+", XLO(19,BOTP,528,1),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
7078
{"btctrl",  XLO(19,BOT,528,1),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
7079
{"btctr-",  XLO(19,BOTM4,528,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
7080
{"btctrl-", XLO(19,BOTM4,528,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
7081
{"btctr+",  XLO(19,BOTP4,528,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
7082
{"btctrl+", XLO(19,BOTP4,528,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
7083
7084
{"bcctr-",  XLLK(19,528,0),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOM, BI, BH}},
7085
{"bcctr+",  XLLK(19,528,0),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOP, BI, BH}},
7086
{"bcctr",   XLLK(19,528,0),   XLBH_MASK,     PPCCOM,   PPCVLE,  {BO, BI, BH}},
7087
{"bcc",     XLLK(19,528,0),   XLBH_MASK,     PWRCOM,   PPCVLE,  {BO, BI, BH}},
7088
{"bcctrl-", XLLK(19,528,1),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOM, BI, BH}},
7089
{"bcctrl+", XLLK(19,528,1),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOP, BI, BH}},
7090
{"bcctrl",  XLLK(19,528,1),   XLBH_MASK,     PPCCOM,   PPCVLE,  {BO, BI, BH}},
7091
{"bccl",    XLLK(19,528,1),   XLBH_MASK,     PWRCOM,   PPCVLE,  {BO, BI, BH}},
7092
7093
{"bdnztar",   XLO(19,BODNZ,560,0),  XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
7094
{"bdnztarl",  XLO(19,BODNZ,560,1),  XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
7095
{"bdztar",    XLO(19,BODZ,560,0), XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
7096
{"bdztarl",   XLO(19,BODZ,560,1), XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
7097
{"btar",      XLO(19,BOU,560,0),  XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
7098
{"btarl",     XLO(19,BOU,560,1),  XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
7099
{"bdnztar-",  XLO(19,BODNZM4,560,0),    XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
7100
{"bdnztarl-", XLO(19,BODNZM4,560,1),    XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
7101
{"bdnztar+",  XLO(19,BODNZP4,560,0),    XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
7102
{"bdnztarl+", XLO(19,BODNZP4,560,1),    XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
7103
{"bdztar-",   XLO(19,BODZM4,560,0),     XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
7104
{"bdztarl-",  XLO(19,BODZM4,560,1),     XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
7105
{"bdztar+",   XLO(19,BODZP4,560,0),     XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
7106
{"bdztarl+",  XLO(19,BODZP4,560,1),     XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
7107
7108
{"bgetar",  XLOCB(19,BOF,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7109
{"bnltar",  XLOCB(19,BOF,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7110
{"bgetarl", XLOCB(19,BOF,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7111
{"bnltarl", XLOCB(19,BOF,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7112
{"bletar",  XLOCB(19,BOF,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7113
{"bngtar",  XLOCB(19,BOF,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7114
{"bletarl", XLOCB(19,BOF,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7115
{"bngtarl", XLOCB(19,BOF,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7116
{"bnetar",  XLOCB(19,BOF,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7117
{"bnetarl", XLOCB(19,BOF,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7118
{"bnstar",  XLOCB(19,BOF,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7119
{"bnutar",  XLOCB(19,BOF,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7120
{"bnstarl", XLOCB(19,BOF,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7121
{"bnutarl", XLOCB(19,BOF,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7122
{"bgetar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7123
{"bnltar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7124
{"bgetarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7125
{"bnltarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7126
{"bletar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7127
{"bngtar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7128
{"bletarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7129
{"bngtarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7130
{"bnetar-", XLOCB(19,BOFM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7131
{"bnetarl-",XLOCB(19,BOFM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7132
{"bnstar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7133
{"bnutar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7134
{"bnstarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7135
{"bnutarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7136
{"bgetar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7137
{"bnltar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7138
{"bgetarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7139
{"bnltarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7140
{"bletar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7141
{"bngtar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7142
{"bletarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7143
{"bngtarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7144
{"bnetar+", XLOCB(19,BOFP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7145
{"bnetarl+",XLOCB(19,BOFP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7146
{"bnstar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7147
{"bnutar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7148
{"bnstarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7149
{"bnutarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7150
{"blttar",  XLOCB(19,BOT,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7151
{"blttarl", XLOCB(19,BOT,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7152
{"bgttar",  XLOCB(19,BOT,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7153
{"bgttarl", XLOCB(19,BOT,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7154
{"beqtar",  XLOCB(19,BOT,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7155
{"beqtarl", XLOCB(19,BOT,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7156
{"bsotar",  XLOCB(19,BOT,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7157
{"buntar",  XLOCB(19,BOT,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7158
{"bsotarl", XLOCB(19,BOT,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7159
{"buntarl", XLOCB(19,BOT,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7160
{"blttar-", XLOCB(19,BOTM4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7161
{"blttarl-",XLOCB(19,BOTM4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7162
{"bgttar-", XLOCB(19,BOTM4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7163
{"bgttarl-",XLOCB(19,BOTM4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7164
{"beqtar-", XLOCB(19,BOTM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7165
{"beqtarl-",XLOCB(19,BOTM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7166
{"bsotar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7167
{"buntar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7168
{"bsotarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7169
{"buntarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7170
{"blttar+", XLOCB(19,BOTP4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7171
{"blttarl+",XLOCB(19,BOTP4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7172
{"bgttar+", XLOCB(19,BOTP4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7173
{"bgttarl+",XLOCB(19,BOTP4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7174
{"beqtar+", XLOCB(19,BOTP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7175
{"beqtarl+",XLOCB(19,BOTP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7176
{"bsotar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7177
{"buntar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7178
{"bsotarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7179
{"buntarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
7180
7181
{"bdnzftar",  XLO(19,BODNZF,560,0),     XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7182
{"bdnzftarl", XLO(19,BODNZF,560,1),     XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7183
{"bdzftar",   XLO(19,BODZF,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7184
{"bdzftarl",  XLO(19,BODZF,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7185
7186
{"bftar",     XLO(19,BOF,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7187
{"bftarl",    XLO(19,BOF,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7188
{"bftar-",    XLO(19,BOFM4,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7189
{"bftarl-",   XLO(19,BOFM4,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7190
{"bftar+",    XLO(19,BOFP4,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7191
{"bftarl+",   XLO(19,BOFP4,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7192
7193
{"bdnzttar",  XLO(19,BODNZT,560,0),     XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7194
{"bdnzttarl", XLO(19,BODNZT,560,1),     XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7195
{"bdzttar",   XLO(19,BODZT,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7196
{"bdzttarl",  XLO(19,BODZT,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7197
7198
{"bttar",     XLO(19,BOT,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7199
{"bttarl",    XLO(19,BOT,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7200
{"bttar-",    XLO(19,BOTM4,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7201
{"bttarl-",   XLO(19,BOTM4,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7202
{"bttar+",    XLO(19,BOTP4,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7203
{"bttarl+",   XLO(19,BOTP4,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7204
7205
{"bctar-",  XLLK(19,560,0),   XLBH_MASK,     POWER8,   PPCVLE|EXT,  {BOM, BI, BH}},
7206
{"bctar+",  XLLK(19,560,0),   XLBH_MASK,     POWER8,   PPCVLE|EXT,  {BOP, BI, BH}},
7207
{"bctar",   XLLK(19,560,0),   XLBH_MASK,     POWER8,   PPCVLE,  {BO, BI, BH}},
7208
{"bctarl-", XLLK(19,560,1),   XLBH_MASK,     POWER8,   PPCVLE|EXT,  {BOM, BI, BH}},
7209
{"bctarl+", XLLK(19,560,1),   XLBH_MASK,     POWER8,   PPCVLE|EXT,  {BOP, BI, BH}},
7210
{"bctarl",  XLLK(19,560,1),   XLBH_MASK,     POWER8,   PPCVLE,  {BO, BI, BH}},
7211
7212
{"rlwimi",  M(20,0),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7213
{"inslwi",  M(20,0),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, ILWn, ILWb}},
7214
{"insrwi",  M(20,0),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, IRWn, IRWb}},
7215
{"rlimi", M(20,0),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7216
7217
{"rlwimi.", M(20,1),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7218
{"inslwi.", M(20,1),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, ILWn, ILWb}},
7219
{"insrwi.", M(20,1),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, IRWn, IRWb}},
7220
{"rlimi.",  M(20,1),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7221
7222
{"rotlwi",  MME(21,31,0), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, SH}},
7223
{"rotrwi",  MME(21,31,0), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, RRWn}},
7224
{"clrlwi",  MME(21,31,0), MSHME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, MB}},
7225
{"clrrwi",  M(21,0),  MSHMB_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, CRWn}},
7226
{"slwi",  M(21,0),  MMB_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, SLWn}},
7227
{"srwi",  MME(21,31,0), MME_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, SRWn}},
7228
{"rlwinm",  M(21,0),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7229
{"extlwi",  M(21,0),  MMB_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, ELWn, SH}},
7230
{"extrwi",  MME(21,31,0), MME_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, ERWn, ERWb}},
7231
{"clrlslwi",  M(21,0),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, CSLWb, CSLWn}},
7232
{"sli",   M(21,0),  MMB_MASK,    PWRCOM,  PPCVLE|EXT, {RA, RS, SLWn}},
7233
{"sri",   MME(21,31,0), MME_MASK,    PWRCOM,  PPCVLE|EXT, {RA, RS, SRWn}},
7234
{"rlinm", M(21,0),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7235
{"rotlwi.", MME(21,31,1), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, SH}},
7236
{"rotrwi.", MME(21,31,1), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, RRWn}},
7237
{"clrlwi.", MME(21,31,1), MSHME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, MB}},
7238
{"clrrwi.", M(21,1),  MSHMB_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, CRWn}},
7239
{"slwi.", M(21,1),  MMB_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, SLWn}},
7240
{"srwi.", MME(21,31,1), MME_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, SRWn}},
7241
{"rlwinm.", M(21,1),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7242
{"extlwi.", M(21,1),  MMB_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, ELWn, SH}},
7243
{"extrwi.", MME(21,31,1), MME_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, ERWn, ERWb}},
7244
{"clrlslwi.", M(21,1),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, CSLWb, CSLWn}},
7245
{"sli.",  M(21,1),  MMB_MASK,    PWRCOM,  PPCVLE|EXT, {RA, RS, SLWn}},
7246
{"sri.",  MME(21,31,1), MME_MASK,    PWRCOM,  PPCVLE|EXT, {RA, RS, SRWn}},
7247
{"rlinm.",  M(21,1),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7248
7249
{"rlmi",  M(22,0),  M_MASK,      M601,  PPCVLE,   {RA, RS, RB, MBE, ME}},
7250
{"rlmi.", M(22,1),  M_MASK,      M601,  PPCVLE,   {RA, RS, RB, MBE, ME}},
7251
7252
{"svstep",  SVL(22,19,0), SVL_MASK, SVP64,  PPCVLE, {RT, SVi, vf}},
7253
{"svstep.", SVL(22,19,1), SVL_MASK, SVP64,  PPCVLE, {RT, SVi, vf}},
7254
7255
{"svshape", SVM(22,25), SVM_MASK, SVP64,  PPCVLE, {SVxd, SVyd, SVzd, SVrm, vf}},
7256
7257
{"setvl", SVL(22,27,0), SVL_MASK, SVP64,  PPCVLE, {RT, RA, SVi, vf, vs, ms}},
7258
{"setvl.",  SVL(22,27,1), SVL_MASK, SVP64,  PPCVLE, {RT, RA, SVi, vf, vs, ms}},
7259
7260
{"svindex", SVI(22,41), SVI_MASK, SVP64,  PPCVLE, {SVG, rmm, SVd, ew, yx, mm, sk}},
7261
7262
{"svremap", SVRM(22,57),  SVRM_MASK,  SVP64,  PPCVLE, {SVme, mi0, mi1, mi2, mo0, mo1, pst}},
7263
7264
{"rotlw", MME(23,31,0), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, RB}},
7265
{"rlwnm", M(23,0),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, RB, MBE, ME}},
7266
{"rlnm",  M(23,0),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, RB, MBE, ME}},
7267
{"rotlw.",  MME(23,31,1), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, RB}},
7268
{"rlwnm.",  M(23,1),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, RB, MBE, ME}},
7269
{"rlnm.", M(23,1),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, RB, MBE, ME}},
7270
7271
{"nop",   OP(24),   0xffffffff,  PPCCOM,  PPCVLE|EXT, {0}},
7272
{"exser", 0x63ff0000, 0xffffffff,  POWER9,  PPCVLE|EXT, {0}},
7273
{"ori",   OP(24),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
7274
{"oril",  OP(24),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
7275
7276
{"oris",  OP(25),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
7277
{"oriu",  OP(25),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
7278
7279
{"xnop",  OP(26),   0xffffffff,  PPCCOM,  PPCVLE|EXT, {0}},
7280
{"xori",  OP(26),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
7281
{"xoril", OP(26),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
7282
7283
{"xoris", OP(27),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
7284
{"xoriu", OP(27),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
7285
7286
{"andi.", OP(28),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
7287
{"andil.",  OP(28),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
7288
7289
{"andis.",  OP(29),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
7290
{"andiu.",  OP(29),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
7291
7292
{"rotldi",  MD(30,0,0), MDMB_MASK,   PPC64, PPCVLE|EXT, {RA, RS, SH6}},
7293
{"rotrdi",  MD(30,0,0), MDMB_MASK,   PPC64, PPCVLE|EXT, {RA, RS, RRDn}},
7294
{"clrldi",  MD(30,0,0), MDSH_MASK,   PPC64, PPCVLE|EXT, {RA, RS, MB6}},
7295
{"srdi",  MD(30,0,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, SRDn}},
7296
{"rldicl",  MD(30,0,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7297
{"extrdi",  MD(30,0,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, ERDn, ERDb}},
7298
{"rotldi.", MD(30,0,1), MDMB_MASK,   PPC64, PPCVLE|EXT, {RA, RS, SH6}},
7299
{"rotrdi.", MD(30,0,1), MDMB_MASK,   PPC64, PPCVLE|EXT, {RA, RS, RRDn}},
7300
{"clrldi.", MD(30,0,1), MDSH_MASK,   PPC64, PPCVLE|EXT, {RA, RS, MB6}},
7301
{"srdi.", MD(30,0,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, SRDn}},
7302
{"rldicl.", MD(30,0,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7303
{"extrdi.", MD(30,0,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, ERDn, ERDb}},
7304
7305
{"clrrdi",  MD(30,1,0), MDSH_MASK,   PPC64, PPCVLE|EXT, {RA, RS, CRDn}},
7306
{"sldi",  MD(30,1,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, SLDn}},
7307
{"rldicr",  MD(30,1,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, ME6}},
7308
{"extldi",  MD(30,1,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, ELDn, SH6}},
7309
{"clrrdi.", MD(30,1,1), MDSH_MASK,   PPC64, PPCVLE|EXT, {RA, RS, CRDn}},
7310
{"sldi.", MD(30,1,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, SLDn}},
7311
{"rldicr.", MD(30,1,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, ME6}},
7312
{"extldi.", MD(30,1,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, ELDn, SH6}},
7313
7314
{"rldic", MD(30,2,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7315
{"clrlsldi",  MD(30,2,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, CSLDb, CSLDn}},
7316
{"rldic.",  MD(30,2,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7317
{"clrlsldi.", MD(30,2,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, CSLDb, CSLDn}},
7318
7319
{"rldimi",  MD(30,3,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7320
{"insrdi",  MD(30,3,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, IRDn, IRDb}},
7321
{"rldimi.", MD(30,3,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7322
{"insrdi.", MD(30,3,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, IRDn, IRDb}},
7323
7324
{"rotld", MDS(30,8,0),  MDSMB_MASK,  PPC64, PPCVLE|EXT, {RA, RS, RB}},
7325
{"rldcl", MDS(30,8,0),  MDS_MASK,    PPC64, PPCVLE,   {RA, RS, RB, MB6}},
7326
{"rotld.",  MDS(30,8,1),  MDSMB_MASK,  PPC64, PPCVLE|EXT, {RA, RS, RB}},
7327
{"rldcl.",  MDS(30,8,1),  MDS_MASK,    PPC64, PPCVLE,   {RA, RS, RB, MB6}},
7328
7329
{"rldcr", MDS(30,9,0),  MDS_MASK,    PPC64, PPCVLE,   {RA, RS, RB, ME6}},
7330
{"rldcr.",  MDS(30,9,1),  MDS_MASK,    PPC64, PPCVLE,   {RA, RS, RB, ME6}},
7331
7332
{"cmpw",  XOPL(31,0,0), XCMPL_MASK,  PPCCOM,  EXT,    {OBF, RA, RB}},
7333
{"cmpd",  XOPL(31,0,1), XCMPL_MASK,  PPC64, EXT,    {OBF, RA, RB}},
7334
{"cmp",   X(31,0),  XCMP_MASK,   PPC, 0,    {BF, L32OPT, RA, RB}},
7335
{"cmp",   X(31,0),  XCMPL_MASK,  PWRCOM,  PPC,    {BF, RA, RB}},
7336
7337
{"twlgt", XTO(31,4,TOLGT), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7338
{"tlgt",  XTO(31,4,TOLGT), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7339
{"twllt", XTO(31,4,TOLLT), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7340
{"tllt",  XTO(31,4,TOLLT), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7341
{"tweq",  XTO(31,4,TOEQ),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7342
{"teq",   XTO(31,4,TOEQ),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7343
{"twlge", XTO(31,4,TOLGE), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7344
{"tlge",  XTO(31,4,TOLGE), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7345
{"twlnl", XTO(31,4,TOLNL), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7346
{"tlnl",  XTO(31,4,TOLNL), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7347
{"twlle", XTO(31,4,TOLLE), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7348
{"tlle",  XTO(31,4,TOLLE), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7349
{"twlng", XTO(31,4,TOLNG), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7350
{"tlng",  XTO(31,4,TOLNG), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7351
{"twgt",  XTO(31,4,TOGT),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7352
{"tgt",   XTO(31,4,TOGT),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7353
{"twge",  XTO(31,4,TOGE),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7354
{"tge",   XTO(31,4,TOGE),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7355
{"twnl",  XTO(31,4,TONL),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7356
{"tnl",   XTO(31,4,TONL),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7357
{"twlt",  XTO(31,4,TOLT),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7358
{"tlt",   XTO(31,4,TOLT),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7359
{"twle",  XTO(31,4,TOLE),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7360
{"tle",   XTO(31,4,TOLE),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7361
{"twng",  XTO(31,4,TONG),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7362
{"tng",   XTO(31,4,TONG),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7363
{"twne",  XTO(31,4,TONE),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7364
{"tne",   XTO(31,4,TONE),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7365
{"trap",  XTO(31,4,TOU),   0xffffffff, PPCCOM,  EXT,    {0}},
7366
{"twu",   XTO(31,4,TOU),   XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7367
{"tu",    XTO(31,4,TOU),   XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7368
{"tw",    X(31,4),   X_MASK,     PPCCOM,  0,    {TO, RA, RB}},
7369
{"t",   X(31,4),   X_MASK,     PWRCOM,  0,    {TO, RA, RB}},
7370
7371
{"lvsl",  X(31,6),  X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7372
{"lvebx", X(31,7),  X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7373
{"lbfcmx",  APU(31,7,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7374
7375
{"subfc", XO(31,8,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7376
{"sf",    XO(31,8,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7377
{"subc",  XO(31,8,0,0), XO_MASK,     PPCCOM,  EXT,    {RT, RB, RA}},
7378
{"subfc.",  XO(31,8,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7379
{"sf.",   XO(31,8,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7380
{"subc.", XO(31,8,0,1), XO_MASK,     PPCCOM,  EXT,    {RT, RB, RA}},
7381
7382
{"mulhdu",  XO(31,9,0,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7383
{"mulhdu.", XO(31,9,0,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7384
7385
{"addc",  XO(31,10,0,0),  XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7386
{"a",   XO(31,10,0,0),  XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7387
{"addc.", XO(31,10,0,1),  XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7388
{"a.",    XO(31,10,0,1),  XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7389
7390
{"mulhwu",  XO(31,11,0,0),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7391
{"mulhwu.", XO(31,11,0,1),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7392
7393
{"lxsiwzx", X(31,12), XX1_MASK,    PPCVSX2, 0,    {XT6, RA0, RB}},
7394
7395
{"lxvrbx",  X(31,13), XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7396
7397
{"isellt",  XISEL(31,15,0), X_MASK,      PPCISEL, EXT,    {RT, RA0, RB}},
7398
{"iselgt",  XISEL(31,15,1), X_MASK,      PPCISEL, EXT,    {RT, RA0, RB}},
7399
{"iseleq",  XISEL(31,15,2), X_MASK,      PPCISEL, EXT,    {RT, RA0, RB}},
7400
{"isel",  XISEL(31,15,0), XISEL_MASK, PPCISEL|TITAN, 0,   {RT, RA0, RB, BC}},
7401
7402
{"tlbieio", X(31,18),   XTLBIEIO_MASK, FUTURE,  0,    {RB, RS, RIC}},
7403
{"tlbilxlpid",  XTO(31,18,0), XTO_MASK, E500MC|PPCA2, 0,    {0}},
7404
{"tlbilxpid", XTO(31,18,1), XTO_MASK, E500MC|PPCA2, 0,    {0}},
7405
{"tlbilxva",  XTO(31,18,3), XTO_MASK, E500MC|PPCA2, 0,    {RA0, RB}},
7406
{"tlbilx",  X(31,18), X_MASK,   E500MC|PPCA2, 0,    {T, RA0, RB}},
7407
7408
{"mfcr",  XFXM(31,19,0,0), XFXFXM_MASK, COM,  0,    {RT, FXM4}},
7409
{"mfocrf",  XFXM(31,19,0,1), XFXFXM_MASK, COM,  0,    {RT, FXM}},
7410
7411
{"lwarx", X(31,20), XEH_MASK,    PPC, 0,    {RT, RA0, RB, EH}},
7412
7413
{"ldx",   X(31,21), X_MASK,      PPC64, 0,    {RT, RA0, RB}},
7414
7415
{"icbt",  X(31,22), X_MASK, POWER5|BOOKE|PPCE300, 0,    {CT, RA0, RB}},
7416
7417
{"lwzx",  X(31,23), X_MASK,      PPCCOM,  0,    {RT, RA0, RB}},
7418
{"lx",    X(31,23), X_MASK,      PWRCOM,  0,    {RT, RA, RB}},
7419
7420
{"slw",   XRC(31,24,0), X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
7421
{"sl",    XRC(31,24,0), X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
7422
{"slw.",  XRC(31,24,1), X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
7423
{"sl.",   XRC(31,24,1), X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
7424
7425
{"cntlzw",  XRC(31,26,0), XRB_MASK,    PPCCOM,  0,    {RA, RS}},
7426
{"cntlz", XRC(31,26,0), XRB_MASK,    PWRCOM,  0,    {RA, RS}},
7427
{"cntlzw.", XRC(31,26,1), XRB_MASK,    PPCCOM,  0,    {RA, RS}},
7428
{"cntlz.",  XRC(31,26,1), XRB_MASK,    PWRCOM,  0,    {RA, RS}},
7429
7430
{"sld",   XRC(31,27,0), X_MASK,      PPC64, 0,    {RA, RS, RB}},
7431
{"sld.",  XRC(31,27,1), X_MASK,      PPC64, 0,    {RA, RS, RB}},
7432
7433
{"and",   XRC(31,28,0), X_MASK,      COM, 0,    {RA, RS, RB}},
7434
{"and.",  XRC(31,28,1), X_MASK,      COM, 0,    {RA, RS, RB}},
7435
7436
{"maskg", XRC(31,29,0), X_MASK,      M601,  PPCA2,    {RA, RS, RB}},
7437
{"maskg.",  XRC(31,29,1), X_MASK,      M601,  PPCA2,    {RA, RS, RB}},
7438
7439
{"ldepx", X(31,29), X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7440
7441
{"waitasec",  X(31,30),      XRTRARB_MASK, POWER8,  POWER9,   {0}},
7442
{"waitrsv", XWCPL(31,30,1,0),0xffffffff, POWER10, EXT,    {0}},
7443
{"pause_short", XWCPL(31,30,2,0),0xffffffff, POWER10, EXT,    {0}},
7444
{"wait",  X(31,30), XWCPL_MASK,  POWER10, 0,    {WC, PL}},
7445
{"wait",  X(31,30), XWC_MASK,    POWER9,  POWER10,  {WC}},
7446
7447
{"lwepx", X(31,31), X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7448
7449
{"cmplw", XOPL(31,32,0),  XCMPL_MASK,  PPCCOM,  EXT,    {OBF, RA, RB}},
7450
{"cmpld", XOPL(31,32,1),  XCMPL_MASK,  PPC64, EXT,    {OBF, RA, RB}},
7451
{"cmpl",  X(31,32), XCMP_MASK,   PPC, 0,    {BF, L32OPT, RA, RB}},
7452
{"cmpl",  X(31,32), XCMPL_MASK,  PWRCOM,  PPC,    {BF, RA, RB}},
7453
7454
{"lvsr",  X(31,38), X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7455
{"lvehx", X(31,39), X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7456
{"lhfcmx",  APU(31,39,0), APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7457
7458
{"lxvrhx",  X(31,45), XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7459
7460
{"mviwsplt",  X(31,46), X_MASK,      E6500, 0,    {VD, RA, RB}},
7461
7462
{"tlbiep",  X(31,50), XTLBIE_MASK, FUTURE,  TITAN,    {RB, RS, RIC, PRS, X_R}},
7463
7464
{"lvewx", X(31,71), X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7465
7466
{"addg6s",  XO(31,74,0,0),  XO_MASK,     POWER6,  0,    {RT, RA, RB}},
7467
7468
{"lxsiwax", X(31,76), XX1_MASK,    PPCVSX2, 0,    {XT6, RA0, RB}},
7469
7470
{"lxvrwx",  X(31,77), XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7471
7472
{"subf",  XO(31,40,0,0),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7473
{"sub",   XO(31,40,0,0),  XO_MASK,     PPC, EXT,    {RT, RB, RA}},
7474
{"subf.", XO(31,40,0,1),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7475
{"sub.",  XO(31,40,0,1),  XO_MASK,     PPC, EXT,    {RT, RB, RA}},
7476
7477
{"mffprd",  X(31,51), XX1RB_MASK|1, PPCVSX2,  EXT,    {RA, FRS}},
7478
{"mfvrd", X(31,51)|1, XX1RB_MASK|1, PPCVSX2,  EXT,    {RA, VS}},
7479
{"mfvsrd",  X(31,51), XX1RB_MASK,   PPCVSX2,  0,    {RA, XS6}},
7480
{"eratilx", X(31,51), X_MASK,      PPCA2, 0,    {ERAT_T, RA, RB}},
7481
7482
{"lbarx", X(31,52), XEH_MASK, POWER8|E6500, 0,    {RT, RA0, RB, EH}},
7483
7484
{"ldux",  X(31,53), X_MASK,      PPC64, 0,    {RT, RAL, RB}},
7485
7486
{"dcbst", X(31,54), XRT_MASK,    PPC, 0,    {RA0, RB}},
7487
7488
{"lwzux", X(31,55), X_MASK,      PPCCOM,  0,    {RT, RAL, RB}},
7489
{"lux",   X(31,55), X_MASK,      PWRCOM,  0,    {RT, RA, RB}},
7490
7491
{"cntlzd",  XRC(31,58,0), XRB_MASK,    PPC64, 0,    {RA, RS}},
7492
{"cntlzd.", XRC(31,58,1), XRB_MASK,    PPC64, 0,    {RA, RS}},
7493
7494
{"cntlzdm", X(31,59), X_MASK,      POWER10, 0,    {RA, RS, RB}},
7495
7496
{"andc",  XRC(31,60,0), X_MASK,      COM, 0,    {RA, RS, RB}},
7497
{"andc.", XRC(31,60,1), X_MASK,      COM, 0,    {RA, RS, RB}},
7498
7499
{"waitrsv", X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, EXT,  {0}},
7500
{"waitimpl",  X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, EXT,  {0}},
7501
{"wait",  X(31,62), XWC_MASK,    E500MC|PPCA2, 0,   {WC}},
7502
7503
{"dcbstep", XRT(31,63,0), XRT_MASK,    E500MC|PPCA2, 0,   {RA0, RB}},
7504
7505
{"tdlgt", XTO(31,68,TOLGT), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7506
{"tdllt", XTO(31,68,TOLLT), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7507
{"tdeq",  XTO(31,68,TOEQ),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7508
{"tdlge", XTO(31,68,TOLGE), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7509
{"tdlnl", XTO(31,68,TOLNL), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7510
{"tdlle", XTO(31,68,TOLLE), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7511
{"tdlng", XTO(31,68,TOLNG), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7512
{"tdgt",  XTO(31,68,TOGT),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7513
{"tdge",  XTO(31,68,TOGE),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7514
{"tdnl",  XTO(31,68,TONL),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7515
{"tdlt",  XTO(31,68,TOLT),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7516
{"tdle",  XTO(31,68,TOLE),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7517
{"tdng",  XTO(31,68,TONG),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7518
{"tdne",  XTO(31,68,TONE),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7519
{"tdu",   XTO(31,68,TOU),   XTO_MASK,  PPC64, EXT,    {RA, RB}},
7520
{"td",    X(31,68), X_MASK,      PPC64, 0,    {TO, RA, RB}},
7521
7522
{"lwfcmx",  APU(31,71,0), APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7523
{"subwus",  XO(31,72,0,0),  XO_MASK,     FUTURE,  EXT,    {RT, RB, RA}},
7524
{"subwus.", XO(31,72,0,1),  XO_MASK,     FUTURE,  EXT,    {RT, RB, RA}},
7525
{"subdus",  XO(31,72,1,0),  XO_MASK,     FUTURE,  EXT,    {RT, RB, RA}},
7526
{"subdus.", XO(31,72,1,1),  XO_MASK,     FUTURE,  EXT,    {RT, RB, RA}},
7527
{"subfus",  XO(31,72,0,0),  XOL_MASK,    FUTURE,  0,    {RT, XOL, RA, RB}},
7528
{"subfus.", XO(31,72,0,1),  XOL_MASK,    FUTURE,  0,    {RT, XOL, RA, RB}},
7529
{"mulhd", XO(31,73,0,0),  XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7530
{"mulhd.",  XO(31,73,0,1),  XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7531
7532
{"mulhw", XO(31,75,0,0),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7533
{"mulhw.",  XO(31,75,0,1),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7534
7535
{"msgsndu", XRTRA(31,78,0,0), XRTRA_MASK, POWER9, 0,    {RB}},
7536
{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440|PPC476|TITAN, 0,  {RA, RS, RB}},
7537
{"dlmzb.",  XRC(31,78,1), X_MASK, PPC403|PPC440|PPC476|TITAN, 0,  {RA, RS, RB}},
7538
7539
{"mtsrd", X(31,82),  XRB_MASK|(1<<20), PPC64, 0,    {SR, RS}},
7540
7541
{"mfmsr", X(31,83), XRARB_MASK,  COM, 0,    {RT}},
7542
7543
{"ldarx", X(31,84), XEH_MASK,    PPC64, 0,    {RT, RA0, RB, EH}},
7544
7545
{"dcbfl", XOPL(31,86,1),  XRT_MASK,    POWER5,  PPC476|EXT, {RA0, RB}},
7546
{"dcbflp",  XOPL2(31,86,3), XRT_MASK,    POWER9,  PPC476|EXT, {RA0, RB}},
7547
{"dcbfps",  XOPL3(31,86,4), XRT_MASK,    POWER10,   PPC476|EXT, {RA0, RB}},
7548
{"dcbstps", XOPL3(31,86,6), XRT_MASK,    POWER10,   PPC476|EXT, {RA0, RB}},
7549
{"dcbf",  X(31,86), XL3RT_MASK,  POWER10, PPC476,   {RA0, RB, L3OPT}},
7550
{"dcbf",  X(31,86), XLRT_MASK,   PPC, POWER10,  {RA0, RB, L2OPT}},
7551
7552
{"lbzx",  X(31,87), X_MASK,      COM, 0,    {RT, RA0, RB}},
7553
7554
{"lbepx", X(31,95), X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7555
7556
{"dni",   XRC(31,97,1), XRB_MASK,    E6500, 0,    {DUI, DCTL}},
7557
7558
{"lvx",   X(31,103),  X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7559
{"lqfcmx",  APU(31,103,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7560
7561
{"neg",   XO(31,104,0,0), XORB_MASK,   COM, 0,    {RT, RA}},
7562
{"neg.",  XO(31,104,0,1), XORB_MASK,   COM, 0,    {RT, RA}},
7563
7564
{"mul",   XO(31,107,0,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
7565
{"mul.",  XO(31,107,0,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
7566
7567
{"lxvrdx",  X(31,109),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7568
7569
{"msgclru", XRTRA(31,110,0,0), XRTRA_MASK, POWER9,  0,    {RB}},
7570
{"mvidsplt",  X(31,110),  X_MASK,      E6500, 0,    {VD, RA, RB}},
7571
7572
{"mtsrdin", X(31,114),  XRA_MASK,    PPC64, 0,    {RS, RB}},
7573
7574
{"mffprwz", X(31,115),  XX1RB_MASK|1, PPCVSX2,  EXT,    {RA, FRS}},
7575
{"mfvrwz",  X(31,115)|1,  XX1RB_MASK|1, PPCVSX2,  EXT,    {RA, VS}},
7576
{"mfvsrwz", X(31,115),  XX1RB_MASK,   PPCVSX2,  0,    {RA, XS6}},
7577
7578
{"lharx", X(31,116),  XEH_MASK, POWER8|E6500, 0,    {RT, RA0, RB, EH}},
7579
7580
{"clf",   X(31,118),  XTO_MASK,    POWER, 0,    {RA, RB}},
7581
7582
{"lbzux", X(31,119),  X_MASK,      COM, 0,    {RT, RAL, RB}},
7583
7584
{"popcntb", X(31,122),  XRB_MASK,    POWER5,  0,    {RA, RS}},
7585
7586
{"not",   XRC(31,124,0),  X_MASK,      COM, EXT,    {RA, RSB}},
7587
{"nor",   XRC(31,124,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
7588
{"not.",  XRC(31,124,1),  X_MASK,      COM, EXT,    {RA, RSB}},
7589
{"nor.",  XRC(31,124,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
7590
7591
{"dcbfep",  XRT(31,127,0),  XRT_MASK, E500MC|PPCA2, 0,    {RA0, RB}},
7592
7593
{"setb",  X(31,128),  XRB_MASK|(3<<16), POWER9, 0,    {RT, BFA}},
7594
7595
{"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,  {RS}},
7596
7597
{"dcbtstls",  X(31,134),  X_MASK, PPCCHLK|PPC476|TITAN, 0,  {CT, RA0, RB}},
7598
7599
{"stvebx",  X(31,135),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
7600
{"stbfcmx", APU(31,135,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7601
7602
{"subfe", XO(31,136,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7603
{"sfe",   XO(31,136,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7604
{"subfe.",  XO(31,136,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7605
{"sfe.",  XO(31,136,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7606
7607
{"adde",  XO(31,138,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7608
{"ae",    XO(31,138,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7609
{"adde.", XO(31,138,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7610
{"ae.",   XO(31,138,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7611
7612
{"stxsiwx", X(31,140),  XX1_MASK,    PPCVSX2, 0,    {XS6, RA0, RB}},
7613
7614
{"stxvrbx", X(31,141),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7615
7616
{"msgsndp", XRTRA(31,142,0,0), XRTRA_MASK, POWER8,  0,    {RB}},
7617
{"dcbtstlse", X(31,142),  X_MASK,      PPCCHLK, E500MC,   {CT, RA0, RB}},
7618
7619
{"mtcr",  XFXM(31,144,0xff,0), XRARB_MASK, COM, EXT,    {RS}},
7620
{"mtcrf", XFXM(31,144,0,0), XFXFXM_MASK, COM, 0,    {FXM, RS}},
7621
{"mtocrf",  XFXM(31,144,0,1), XFXFXM_MASK, COM, 0,    {FXM, RS}},
7622
7623
{"mtmsr", X(31,146),  XRLARB_MASK, COM, 0,    {RS, A_L}},
7624
7625
{"mtsle", X(31,147),    XRTLRARB_MASK, POWER8,  0,    {L}},
7626
{"eratsx",  XRC(31,147,0),  X_MASK,      PPCA2, 0,    {RT, RA0, RB}},
7627
{"eratsx.", XRC(31,147,1),  X_MASK,      PPCA2, 0,    {RT, RA0, RB}},
7628
7629
{"stdx",  X(31,149),  X_MASK,      PPC64, 0,    {RS, RA0, RB}},
7630
7631
{"stwcx.",  XRC(31,150,1),  X_MASK,      PPC, 0,    {RS, RA0, RB}},
7632
7633
{"stwx",  X(31,151),  X_MASK,      PPCCOM,  0,    {RS, RA0, RB}},
7634
{"stx",   X(31,151),  X_MASK,      PWRCOM,  0,    {RS, RA, RB}},
7635
7636
{"slq",   XRC(31,152,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
7637
{"slq.",  XRC(31,152,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
7638
7639
{"sle",   XRC(31,153,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
7640
{"sle.",  XRC(31,153,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
7641
7642
{"prtyw", X(31,154),    XRB_MASK, POWER6|PPCA2|PPC476, 0,   {RA, RS}},
7643
7644
{"brw",   X(31,155),  XRB_MASK,    POWER10, 0,    {RA, RS}},
7645
{"pdepd", X(31,156),  X_MASK,      POWER10, 0,    {RA, RS, RB}},
7646
7647
{"stdepx",  X(31,157),  X_MASK,   E500MC|PPCA2, 0,    {RS, RA0, RB}},
7648
7649
{"stwepx",  X(31,159),  X_MASK,   E500MC|PPCA2, 0,    {RS, RA0, RB}},
7650
7651
{"wrteei",  X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {E}},
7652
7653
{"dcbtls",  X(31,166),  X_MASK,  PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
7654
7655
{"stvehx",  X(31,167),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
7656
{"sthfcmx", APU(31,167,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7657
7658
{"addex", ZRC(31,170,0),  Z2_MASK,     POWER9,  0,    {RT, RA, RB, CY}},
7659
7660
{"stxvrhx", X(31,173),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7661
7662
{"msgclrp", XRTRA(31,174,0,0), XRTRA_MASK, POWER8,  0,    {RB}},
7663
{"dcbtlse", X(31,174),  X_MASK,      PPCCHLK, E500MC,   {CT, RA0, RB}},
7664
7665
{"dmxxmfacc", XVA(31,177,0),  XACC_MASK,   POWER10, 0,    {ACC}},
7666
{"xxmfacc", XVA(31,177,0),  XACC_MASK,   POWER10, 0,    {ACC}},
7667
{"dmxxmtacc", XVA(31,177,1),  XACC_MASK,   POWER10, 0,    {ACC}},
7668
{"xxmtacc", XVA(31,177,1),  XACC_MASK,   POWER10, 0,    {ACC}},
7669
{"dmsetdmrz", XVA(31,177,2),  XDMR_MASK,   FUTURE,  0,    {DMR}},
7670
{"dmsetaccz", XVA(31,177,3),  XACC_MASK,   POWER10, 0,    {ACC}},
7671
{"xxsetaccz", XVA(31,177,3),  XACC_MASK,   POWER10, 0,    {ACC}},
7672
{"dmmr",  XVA(31,177,6),  XDMRDMR_MASK,FUTURE,  0,    {DMR, DMRAB}},
7673
{"dmxor", XVA(31,177,7),  XDMRDMR_MASK,FUTURE,  0,    {DMR, DMRAB}},
7674
{"dmsha256hash", XSHA2HASH(31,177,14,0),  XDMRDMR_MASK,   FUTURE, EXT,  {DMR, DMRAB}},
7675
{"dmsha512hash", XSHA2HASH(31,177,14,1),  XDMRDMR_MASK,   FUTURE, EXT,  {DMR, DMRAB}},
7676
{"dmsha2hash",   XSHAHASH(31,177,14),     XSHA2HASH_MASK, FUTURE, 0,  {DMR, DMRAB, HASHT}},
7677
{"dmsha3dw",     XSHA3HASH(31,177,15,0),  XSHA3HASH_MASK, FUTURE, EXT,  {DMRATp}},
7678
{"dmcryshash",   XSHA3HASH(31,177,15,12), XSHA3HASH_MASK, FUTURE, EXT,  {DMRATp}},
7679
{"dmsha3hash",   XSHAHASH(31,177,15),     XSHA3SR_MASK,   FUTURE, 0,  {DMRATp, HASHSR}},
7680
7681
{"mtmsrd",  X(31,178),  XRLARB_MASK, PPC64, 0,    {RS, A_L}},
7682
7683
{"mtfprd",  X(31,179),  XX1RB_MASK|1, PPCVSX2,  EXT,    {FRT, RA}},
7684
{"mtvrd", X(31,179)|1,  XX1RB_MASK|1, PPCVSX2,  EXT,    {VD, RA}},
7685
{"mtvsrd",  X(31,179),  XX1RB_MASK,   PPCVSX2,  0,    {XT6, RA}},
7686
{"eratre",  X(31,179),  X_MASK,      PPCA2, 0,    {RT, RA, WS}},
7687
7688
{"stdux", X(31,181),  X_MASK,      PPC64, 0,    {RS, RAS, RB}},
7689
7690
{"stqcx.",  XRC(31,182,1), X_MASK|Q_MASK, POWER8, 0,    {RSQ, RA0, RB}},
7691
{"wchkall", X(31,182),  X_MASK,      PPCA2, 0,    {OBF}},
7692
7693
{"stwux", X(31,183),  X_MASK,      PPCCOM,  0,    {RS, RAS, RB}},
7694
{"stux",  X(31,183),  X_MASK,      PWRCOM,  0,    {RS, RA0, RB}},
7695
7696
{"sliq",  XRC(31,184,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
7697
{"sliq.", XRC(31,184,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
7698
7699
{"prtyd", X(31,186),  XRB_MASK, POWER6|PPCA2, 0,    {RA, RS}},
7700
7701
{"brd",   X(31,187),  XRB_MASK,    POWER10, 0,    {RA, RS}},
7702
{"pextd", X(31,188),  X_MASK,      POWER10, 0,    {RA, RS, RB}},
7703
7704
{"cmprb", X(31,192),  XCMP_MASK,   POWER9,  0,    {BF, L, RA, RB}},
7705
7706
{"icblq.",  XRC(31,198,1),  X_MASK,      E6500, 0,    {CT, RA0, RB}},
7707
7708
{"stvewx",  X(31,199),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
7709
{"stwfcmx", APU(31,199,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7710
7711
{"subfze",  XO(31,200,0,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7712
{"sfze",  XO(31,200,0,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7713
{"subfze.", XO(31,200,0,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7714
{"sfze.", XO(31,200,0,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7715
7716
{"addze", XO(31,202,0,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7717
{"aze",   XO(31,202,0,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7718
{"addze.",  XO(31,202,0,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7719
{"aze.",  XO(31,202,0,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7720
7721
{"stxvrwx", X(31,205),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7722
7723
{"msgsnd",  XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0,  {RB}},
7724
7725
{"mtsr",  X(31,210), XRB_MASK|(1<<20), COM, NON32,    {SR, RS}},
7726
7727
{"mtfprwa", X(31,211),  XX1RB_MASK|1, PPCVSX2,  EXT,    {FRT, RA}},
7728
{"mtvrwa",  X(31,211)|1,  XX1RB_MASK|1, PPCVSX2,  EXT,    {VD, RA}},
7729
{"mtvsrwa", X(31,211),  XX1RB_MASK,   PPCVSX2,  0,    {XT6, RA}},
7730
{"eratwe",  X(31,211),  X_MASK,      PPCA2, 0,    {RS, RA, WS}},
7731
7732
{"ldawx.",  XRC(31,212,1),  X_MASK,      PPCA2, 0,    {RT, RA0, RB}},
7733
7734
{"stdcx.",  XRC(31,214,1),  X_MASK,      PPC64, 0,    {RS, RA0, RB}},
7735
7736
{"stbx",  X(31,215),  X_MASK,      COM, 0,    {RS, RA0, RB}},
7737
7738
{"sllq",  XRC(31,216,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
7739
{"sllq.", XRC(31,216,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
7740
7741
{"sleq",  XRC(31,217,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
7742
{"sleq.", XRC(31,217,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
7743
7744
{"brh",   X(31,219),  XRB_MASK,    POWER10, 0,    {RA, RS}},
7745
{"cfuged",  X(31,220),  X_MASK,      POWER10, 0,    {RA, RS, RB}},
7746
7747
{"stbepx",  X(31,223),  X_MASK,   E500MC|PPCA2, 0,    {RS, RA0, RB}},
7748
7749
{"cmpeqb",  X(31,224),  XCMPL_MASK,  POWER9,  0,    {BF, RA, RB}},
7750
7751
{"icblc", X(31,230),  X_MASK, PPCCHLK|PPC476|TITAN, 0,  {CT, RA0, RB}},
7752
7753
{"stvx",  X(31,231),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
7754
{"stqfcmx", APU(31,231,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7755
7756
{"subfme",  XO(31,232,0,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7757
{"sfme",  XO(31,232,0,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7758
{"subfme.", XO(31,232,0,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7759
{"sfme.", XO(31,232,0,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7760
7761
{"mulld", XO(31,233,0,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7762
{"mulld.",  XO(31,233,0,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7763
7764
{"addme", XO(31,234,0,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7765
{"ame",   XO(31,234,0,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7766
{"addme.",  XO(31,234,0,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7767
{"ame.",  XO(31,234,0,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7768
7769
{"mullw", XO(31,235,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7770
{"muls",  XO(31,235,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7771
{"mullw.",  XO(31,235,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7772
{"muls.", XO(31,235,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7773
7774
{"stxvrdx", X(31,237),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7775
7776
{"icblce",  X(31,238),  X_MASK,      PPCCHLK, E500MC|PPCA2, {CT, RA, RB}},
7777
{"msgclr",  XRTRA(31,238,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0,  {RB}},
7778
{"mtsrin",  X(31,242),  XRA_MASK,    PPC, NON32,    {RS, RB}},
7779
{"mtsri", X(31,242),  XRA_MASK,    POWER, NON32,    {RS, RB}},
7780
7781
{"mtfprwz", X(31,243),  XX1RB_MASK|1, PPCVSX2,  EXT,    {FRT, RA}},
7782
{"mtvrwz",  X(31,243)|1,  XX1RB_MASK|1, PPCVSX2,  EXT,    {VD, RA}},
7783
{"mtvsrwz", X(31,243),  XX1RB_MASK,   PPCVSX2,  0,    {XT6, RA}},
7784
7785
{"dcbtstt", XRT(31,246,0x10), XRT_MASK,  POWER7,  EXT,    {RA0, RB}},
7786
{"dcbtstct",  X(31,246),  X_MASK,      POWER4,  EXT,    {RA0, RB, THCT}},
7787
{"dcbtstds",  X(31,246),  X_MASK,      POWER4,  EXT,    {RA0, RB, THDS}},
7788
{"dcbtst",  X(31,246),  X_MASK,      POWER4,  DCBT_EO,  {RA0, RB, CT}},
7789
{"dcbtst",  X(31,246),  X_MASK,      DCBT_EO, 0,    {CT, RA0, RB}},
7790
{"dcbtst",  X(31,246),  X_MASK,      PPC, POWER4|DCBT_EO, {RA0, RB}},
7791
7792
{"stbux", X(31,247),  X_MASK,      COM, 0,    {RS, RAS, RB}},
7793
7794
{"slliq", XRC(31,248,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
7795
{"slliq.",  XRC(31,248,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
7796
7797
{"bpermd",  X(31,252),  X_MASK,   POWER7|PPCA2, 0,    {RA, RS, RB}},
7798
7799
{"dcbtstep",  XRT(31,255,0),  X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7800
7801
{"mfdcrx",  X(31,259),  X_MASK, BOOKE|PPCA2|PPC476, TITAN,  {RS, RA}},
7802
{"mfdcrx.", XRC(31,259,1),  X_MASK,      PPCA2, 0,    {RS, RA}},
7803
7804
{"lvexbx",  X(31,261),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7805
7806
{"icbt",  X(31,262),  XRT_MASK,    PPC403,  0,    {RA, RB}},
7807
7808
{"lvepxl",  X(31,263),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7809
{"ldfcmx",  APU(31,263,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7810
7811
{"doz",   XO(31,264,0,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
7812
{"doz.",  XO(31,264,0,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
7813
7814
{"modud", X(31,265),  X_MASK,      POWER9,  0,    {RT, RA, RB}},
7815
7816
{"add",   XO(31,266,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7817
{"cax",   XO(31,266,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7818
{"add.",  XO(31,266,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7819
{"cax.",  XO(31,266,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7820
7821
{"moduw", X(31,267),  X_MASK,      POWER9,  0,    {RT, RA, RB}},
7822
7823
{"lxvx",  X(31,268),  XX1_MASK|1<<6, PPCVSX3, 0,    {XT6, RA0, RB}},
7824
{"lxvl",  X(31,269),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
7825
7826
{"ehpriv",  X(31,270),  0xffffffff,  E500MC|PPCA2, 0,   {0}},
7827
7828
{"tlbiel",  X(31,274),  X_MASK|1<<20,POWER9,  0,    {RB, RSO, RIC, PRS, X_R}},
7829
{"tlbiel",  X(31,274),  XRTLRA_MASK, POWER4,  POWER9|PPC476,  {RB, LOPT}},
7830
7831
{"mtlpl", X(31,275),  XRA_MASK,    FUTURE,  0,    {RB, RS}},
7832
{"mfapidi", X(31,275),  X_MASK,      BOOKE, E500|TITAN, {RT, RA}},
7833
7834
{"lqarx", X(31,276),  XEH_MASK|Q_MASK, POWER8,  0,    {RTQ, RAX, RBX, EH}},
7835
7836
{"lscbx", XRC(31,277,0),  X_MASK,      M601,  0,    {RT, RA, RB}},
7837
{"lscbx.",  XRC(31,277,1),  X_MASK,      M601,  0,    {RT, RA, RB}},
7838
7839
{"dcbtt", XRT(31,278,0x10), XRT_MASK,  POWER7,  EXT,    {RA0, RB}},
7840
{"dcbna", XRT(31,278,0x11), XRT_MASK,  POWER10, EXT,    {RA0, RB}},
7841
{"dcbtct",  X(31,278),  X_MASK,      POWER4,  EXT,    {RA0, RB, THCT}},
7842
{"dcbtds",  X(31,278),  X_MASK,      POWER4,  EXT,    {RA0, RB, THDS}},
7843
{"dcbt",  X(31,278),  X_MASK,      POWER4,  DCBT_EO,  {RA0, RB, CT}},
7844
{"dcbt",  X(31,278),  X_MASK,      DCBT_EO, 0,    {CT, RA0, RB}},
7845
{"dcbt",  X(31,278),  X_MASK,      PPC, POWER4|DCBT_EO, {RA0, RB}},
7846
7847
{"lhzx",  X(31,279),  X_MASK,      COM, 0,    {RT, RA0, RB}},
7848
7849
{"cdtbcd",  X(31,282),  XRB_MASK,    POWER6,  0,    {RA, RS}},
7850
7851
{"eqv",   XRC(31,284,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
7852
{"eqv.",  XRC(31,284,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
7853
7854
{"lhepx", X(31,287),  X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7855
7856
{"mfdcrux", X(31,291),  X_MASK,  PPC464|PPC476, 0,    {RS, RA}},
7857
7858
{"lvexhx",  X(31,293),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7859
{"lvepx", X(31,295),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7860
7861
{"lxvll", X(31,301),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
7862
7863
{"mfbhrbe", X(31,302),  X_MASK,      POWER8,  0,    {RT, BHRBE}},
7864
7865
{"tlbie", X(31,306),  X_MASK|1<<20,POWER9,  TITAN,    {RB, RS, RIC, PRS, X_R}},
7866
{"tlbie", X(31,306),  XRA_MASK,    POWER7,  POWER9|TITAN, {RB, RS}},
7867
{"tlbie", X(31,306),  XRTLRA_MASK, PPC,    E500|POWER7|TITAN, {RB, LOPT}},
7868
{"tlbi",  X(31,306),  XRT_MASK,    POWER, 0,    {RA0, RB}},
7869
7870
{"mfvsrld", X(31,307),  XX1RB_MASK,  PPCVSX3, 0,    {RA, XS6}},
7871
7872
{"eciwx", X(31,310),  X_MASK,      PPC, E500|TITAN, {RT, RA0, RB}},
7873
7874
{"lhzux", X(31,311),  X_MASK,      COM, 0,    {RT, RAL, RB}},
7875
7876
{"cbcdtd",  X(31,314),  XRB_MASK,    POWER6,  0,    {RA, RS}},
7877
7878
{"xor",   XRC(31,316,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
7879
{"xor.",  XRC(31,316,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
7880
7881
{"dcbtep",  XRT(31,319,0),  X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7882
7883
{"mfexisr", XSPR(31,323, 64), XSPR_MASK, PPC403,  0,    {RT}},
7884
{"mfexier", XSPR(31,323, 66), XSPR_MASK, PPC403,  0,    {RT}},
7885
{"mfbr0", XSPR(31,323,128), XSPR_MASK, PPC403,  0,    {RT}},
7886
{"mfbr1", XSPR(31,323,129), XSPR_MASK, PPC403,  0,    {RT}},
7887
{"mfbr2", XSPR(31,323,130), XSPR_MASK, PPC403,  0,    {RT}},
7888
{"mfbr3", XSPR(31,323,131), XSPR_MASK, PPC403,  0,    {RT}},
7889
{"mfbr4", XSPR(31,323,132), XSPR_MASK, PPC403,  0,    {RT}},
7890
{"mfbr5", XSPR(31,323,133), XSPR_MASK, PPC403,  0,    {RT}},
7891
{"mfbr6", XSPR(31,323,134), XSPR_MASK, PPC403,  0,    {RT}},
7892
{"mfbr7", XSPR(31,323,135), XSPR_MASK, PPC403,  0,    {RT}},
7893
{"mfbear",  XSPR(31,323,144), XSPR_MASK, PPC403,  0,    {RT}},
7894
{"mfbesr",  XSPR(31,323,145), XSPR_MASK, PPC403,  0,    {RT}},
7895
{"mfiocr",  XSPR(31,323,160), XSPR_MASK, PPC403,  0,    {RT}},
7896
{"mfdmacr0",  XSPR(31,323,192), XSPR_MASK, PPC403,  0,    {RT}},
7897
{"mfdmact0",  XSPR(31,323,193), XSPR_MASK, PPC403,  0,    {RT}},
7898
{"mfdmada0",  XSPR(31,323,194), XSPR_MASK, PPC403,  0,    {RT}},
7899
{"mfdmasa0",  XSPR(31,323,195), XSPR_MASK, PPC403,  0,    {RT}},
7900
{"mfdmacc0",  XSPR(31,323,196), XSPR_MASK, PPC403,  0,    {RT}},
7901
{"mfdmacr1",  XSPR(31,323,200), XSPR_MASK, PPC403,  0,    {RT}},
7902
{"mfdmact1",  XSPR(31,323,201), XSPR_MASK, PPC403,  0,    {RT}},
7903
{"mfdmada1",  XSPR(31,323,202), XSPR_MASK, PPC403,  0,    {RT}},
7904
{"mfdmasa1",  XSPR(31,323,203), XSPR_MASK, PPC403,  0,    {RT}},
7905
{"mfdmacc1",  XSPR(31,323,204), XSPR_MASK, PPC403,  0,    {RT}},
7906
{"mfdmacr2",  XSPR(31,323,208), XSPR_MASK, PPC403,  0,    {RT}},
7907
{"mfdmact2",  XSPR(31,323,209), XSPR_MASK, PPC403,  0,    {RT}},
7908
{"mfdmada2",  XSPR(31,323,210), XSPR_MASK, PPC403,  0,    {RT}},
7909
{"mfdmasa2",  XSPR(31,323,211), XSPR_MASK, PPC403,  0,    {RT}},
7910
{"mfdmacc2",  XSPR(31,323,212), XSPR_MASK, PPC403,  0,    {RT}},
7911
{"mfdmacr3",  XSPR(31,323,216), XSPR_MASK, PPC403,  0,    {RT}},
7912
{"mfdmact3",  XSPR(31,323,217), XSPR_MASK, PPC403,  0,    {RT}},
7913
{"mfdmada3",  XSPR(31,323,218), XSPR_MASK, PPC403,  0,    {RT}},
7914
{"mfdmasa3",  XSPR(31,323,219), XSPR_MASK, PPC403,  0,    {RT}},
7915
{"mfdmacc3",  XSPR(31,323,220), XSPR_MASK, PPC403,  0,    {RT}},
7916
{"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403,  0,    {RT}},
7917
{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {RT, SPR}},
7918
{"mfdcr.",  XRC(31,323,1),  X_MASK,      PPCA2, 0,    {RT, SPR}},
7919
7920
{"lvexwx",  X(31,325),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7921
7922
{"dcread",  X(31,326),  X_MASK,   PPC476|TITAN, 0,    {RT, RA0, RB}},
7923
7924
{"div",   XO(31,331,0,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
7925
{"div.",  XO(31,331,0,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
7926
7927
{"lxvdsx",  X(31,332),  XX1_MASK,    PPCVSX,  0,    {XT6, RA0, RB}},
7928
7929
{"lxvpx", X(31,333),  XX1_MASK,    POWER10, 0,    {XTP, RA0, RB}},
7930
7931
{"mfpmr", X(31,334),  X_MASK, PPCPMR|PPCE300, 0,    {RT, PMR}},
7932
{"mftmr", X(31,366),  X_MASK,      PPCTMR,  0,    {RT, TMR}},
7933
7934
{"slbsync", X(31,338),  0xffffffff,  POWER9,  0,    {0}},
7935
7936
{"mfmq",  XSPR(31,339,  0), XSPR_MASK, M601,  EXT,    {RT}},
7937
{"mfxer", XSPR(31,339,  1), XSPR_MASK, COM, EXT,    {RT}},
7938
{"mfudscr", XSPR(31,339,  3), XSPR_MASK, POWER9,  EXT,    {RS}},
7939
{"mfrtcu",  XSPR(31,339,  4), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7940
{"mfrtcl",  XSPR(31,339,  5), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7941
{"mfdec", XSPR(31,339,  6), XSPR_MASK, MFDEC1,  EXT,    {RT}},
7942
{"mflr",  XSPR(31,339,  8), XSPR_MASK, COM, EXT,    {RT}},
7943
{"mfctr", XSPR(31,339,  9), XSPR_MASK, COM, EXT,    {RT}},
7944
{"mfuamr",  XSPR(31,339, 13), XSPR_MASK, POWER9,  EXT,    {RS}},
7945
{"mfdscr",  XSPR(31,339, 17), XSPR_MASK, POWER6,  EXT,    {RT}},
7946
{"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, EXT,    {RT}},
7947
{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7948
{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7949
{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2,  MFDEC1|EXT, {RT}},
7950
{"mfsdr0",  XSPR(31,339, 24), XSPR_MASK, POWER, EXT,    {RT}},
7951
{"mfsdr1",  XSPR(31,339, 25), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7952
{"mfsrr0",  XSPR(31,339, 26), XSPR_MASK, COM, EXT,    {RT}},
7953
{"mfsrr1",  XSPR(31,339, 27), XSPR_MASK, COM, EXT,    {RT}},
7954
{"mfcfar",  XSPR(31,339, 28), XSPR_MASK, POWER6,  EXT,    {RT}},
7955
{"mfamr", XSPR(31,339, 29), XSPR_MASK, POWER7,  EXT,    {RS}},
7956
{"mfpidr",  XSPR(31,339, 48), XSPR_MASK, POWER10, EXT,    {RS}},
7957
{"mfpid", XSPR(31,339, 48), XSPR_MASK, BOOKE, EXT,    {RT}},
7958
{"mfcsrr0", XSPR(31,339, 58), XSPR_MASK, BOOKE, EXT,    {RT}},
7959
{"mfcsrr1", XSPR(31,339, 59), XSPR_MASK, BOOKE, EXT,    {RT}},
7960
{"mfiamr",  XSPR(31,339, 61), XSPR_MASK, POWER10, EXT,    {RS}},
7961
{"mfdear",  XSPR(31,339, 61), XSPR_MASK, BOOKE, EXT,    {RT}},
7962
{"mfesr", XSPR(31,339, 62), XSPR_MASK, BOOKE, EXT,    {RT}},
7963
{"mfivpr",  XSPR(31,339, 63), XSPR_MASK, BOOKE, EXT,    {RT}},
7964
{"mfctrl",  XSPR(31,339,136), XSPR_MASK, POWER4,  EXT,    {RT}},
7965
{"mfcmpa",  XSPR(31,339,144), XSPR_MASK, PPC860,  EXT,    {RT}},
7966
{"mfcmpb",  XSPR(31,339,145), XSPR_MASK, PPC860,  EXT,    {RT}},
7967
{"mfcmpc",  XSPR(31,339,146), XSPR_MASK, PPC860,  EXT,    {RT}},
7968
{"mfcmpd",  XSPR(31,339,147), XSPR_MASK, PPC860,  EXT,    {RT}},
7969
{"mficr", XSPR(31,339,148), XSPR_MASK, PPC860,  EXT,    {RT}},
7970
{"mfder", XSPR(31,339,149), XSPR_MASK, PPC860,  EXT,    {RT}},
7971
{"mfcounta",  XSPR(31,339,150), XSPR_MASK, PPC860,  EXT,    {RT}},
7972
{"mfcountb",  XSPR(31,339,151), XSPR_MASK, PPC860,  EXT,    {RT}},
7973
{"mfcmpe",  XSPR(31,339,152), XSPR_MASK, PPC860,  EXT,    {RT}},
7974
{"mffscr",  XSPR(31,339,153), XSPR_MASK, POWER10, EXT,    {RS}},
7975
{"mfcmpf",  XSPR(31,339,153), XSPR_MASK, PPC860,  EXT,    {RT}},
7976
{"mfcmpg",  XSPR(31,339,154), XSPR_MASK, PPC860,  EXT,    {RT}},
7977
{"mfcmph",  XSPR(31,339,155), XSPR_MASK, PPC860,  EXT,    {RT}},
7978
{"mflctrl1",  XSPR(31,339,156), XSPR_MASK, PPC860,  EXT,    {RT}},
7979
{"mfuamor", XSPR(31,339,157), XSPR_MASK, POWER7,  EXT,    {RS}},
7980
{"mflctrl2",  XSPR(31,339,157), XSPR_MASK, PPC860,  EXT,    {RT}},
7981
{"mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860,  EXT,    {RT}},
7982
{"mfpspb",  XSPR(31,339,159), XSPR_MASK, POWER10, EXT,    {RS}},
7983
{"mfbar", XSPR(31,339,159), XSPR_MASK, PPC860,  EXT,    {RT}},
7984
{"mfdpdes", XSPR(31,339,176), XSPR_MASK, POWER10, EXT,    {RS}},
7985
{"mfdawr0", XSPR(31,339,180), XSPR_MASK, POWER10, EXT,    {RS}},
7986
{"mfdawr1", XSPR(31,339,181), XSPR_MASK, POWER10, EXT,    {RS}},
7987
{"mfrpr", XSPR(31,339,186), XSPR_MASK, POWER10, EXT,    {RS}},
7988
{"mfciabr", XSPR(31,339,187), XSPR_MASK, POWER10, EXT,    {RS}},
7989
{"mfdawrx0",  XSPR(31,339,188), XSPR_MASK, POWER10, EXT,    {RS}},
7990
{"mfdawrx1",  XSPR(31,339,189), XSPR_MASK, POWER10, EXT,    {RS}},
7991
{"mfhfscr", XSPR(31,339,190), XSPR_MASK, POWER10, EXT,    {RS}},
7992
{"mfvrsave",  XSPR(31,339,256), XSPR_MASK, PPCVEC,  EXT,    {RT}},
7993
{"mfusprg0",  XSPR(31,339,256), XSPR_MASK, BOOKE, EXT,    {RT}},
7994
{"mfsprg",  XSPR(31,339,256), XSPRG_MASK, PPC,  EXT,    {RT, SPRG}},
7995
{"mfusprg3",  XSPR(31,339,259), XSPR_MASK, POWER10, EXT,    {RT}},
7996
{"mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, EXT,   {RT}},
7997
{"mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, EXT,   {RT}},
7998
{"mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, EXT,   {RT}},
7999
{"mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, EXT,   {RT}},
8000
{"mftbu", XSPR(31,339,269), XSPR_MASK, POWER4|BOOKE, EXT,   {RT}},
8001
{"mftb",  X(31,339),    X_MASK,    POWER4|BOOKE, EXT,   {RT, TBR}},
8002
{"mftbl", XSPR(31,339,268), XSPR_MASK, POWER4|BOOKE, EXT,   {RT}},
8003
{"mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, EXT,    {RT}},
8004
{"mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, EXT,    {RT}},
8005
{"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, EXT,    {RT}},
8006
{"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, EXT,    {RT}},
8007
{"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, EXT,    {RT}},
8008
{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, TITAN|EXT,  {RT}},
8009
{"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, EXT,    {RT}},
8010
{"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, EXT,    {RT}},
8011
{"mfhsprg0",  XSPR(31,339,304), XSPR_MASK, POWER10, EXT,    {RS}},
8012
{"mfdbsr",  XSPR(31,339,304), XSPR_MASK, BOOKE, EXT,    {RT}},
8013
{"mfhsprg1",  XSPR(31,339,305), XSPR_MASK, POWER10, EXT,    {RS}},
8014
{"mfhdisr", XSPR(31,339,306), XSPR_MASK, POWER10, EXT,    {RS}},
8015
{"mfhdar",  XSPR(31,339,307), XSPR_MASK, POWER10, EXT,    {RS}},
8016
{"mfspurr", XSPR(31,339,308), XSPR_MASK, POWER10, EXT,    {RS}},
8017
{"mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, EXT,    {RT}},
8018
{"mfpurr",  XSPR(31,339,309), XSPR_MASK, POWER10, EXT,    {RS}},
8019
{"mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, EXT,    {RT}},
8020
{"mfhdec",  XSPR(31,339,310), XSPR_MASK, POWER10, EXT,    {RS}},
8021
{"mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, EXT,    {RT}},
8022
{"mfiac1",  XSPR(31,339,312), XSPR_MASK, BOOKE, EXT,    {RT}},
8023
{"mfhrmor", XSPR(31,339,313), XSPR_MASK, POWER10, EXT,    {RS}},
8024
{"mfiac2",  XSPR(31,339,313), XSPR_MASK, BOOKE, EXT,    {RT}},
8025
{"mfhsrr0", XSPR(31,339,314), XSPR_MASK, POWER10, EXT,    {RS}},
8026
{"mfiac3",  XSPR(31,339,314), XSPR_MASK, BOOKE, EXT,    {RT}},
8027
{"mfhsrr1", XSPR(31,339,315), XSPR_MASK, POWER10, EXT,    {RS}},
8028
{"mfiac4",  XSPR(31,339,315), XSPR_MASK, BOOKE, EXT,    {RT}},
8029
{"mfdac1",  XSPR(31,339,316), XSPR_MASK, BOOKE, EXT,    {RT}},
8030
{"mfdac2",  XSPR(31,339,317), XSPR_MASK, BOOKE, EXT,    {RT}},
8031
{"mflpcr",  XSPR(31,339,318), XSPR_MASK, POWER10, EXT,    {RS}},
8032
{"mfdvc1",  XSPR(31,339,318), XSPR_MASK, BOOKE, EXT,    {RT}},
8033
{"mflpidr", XSPR(31,339,319), XSPR_MASK, POWER10, EXT,    {RS}},
8034
{"mfdvc2",  XSPR(31,339,319), XSPR_MASK, BOOKE, EXT,    {RT}},
8035
{"mfhmer",  XSPR(31,339,336), XSPR_MASK, POWER7,  EXT,    {RS}},
8036
{"mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, EXT,    {RT}},
8037
{"mfhmeer", XSPR(31,339,337), XSPR_MASK, POWER7,  EXT,    {RS}},
8038
{"mfpcr", XSPR(31,339,338), XSPR_MASK, POWER10, EXT,    {RS}},
8039
{"mfheir",  XSPR(31,339,339), XSPR_MASK, POWER10, EXT,    {RS}},
8040
{"mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, EXT,    {RT}},
8041
{"mfamor",  XSPR(31,339,349), XSPR_MASK, POWER7,  EXT,    {RS}},
8042
{"mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, EXT,    {RT}},
8043
{"mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, EXT,    {RT}},
8044
{"mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, EXT,    {RT}},
8045
{"mfivor3", XSPR(31,339,403), XSPR_MASK, BOOKE, EXT,    {RT}},
8046
{"mfivor4", XSPR(31,339,404), XSPR_MASK, BOOKE, EXT,    {RT}},
8047
{"mfivor5", XSPR(31,339,405), XSPR_MASK, BOOKE, EXT,    {RT}},
8048
{"mfivor6", XSPR(31,339,406), XSPR_MASK, BOOKE, EXT,    {RT}},
8049
{"mfivor7", XSPR(31,339,407), XSPR_MASK, BOOKE, EXT,    {RT}},
8050
{"mfivor8", XSPR(31,339,408), XSPR_MASK, BOOKE, EXT,    {RT}},
8051
{"mfivor9", XSPR(31,339,409), XSPR_MASK, BOOKE, EXT,    {RT}},
8052
{"mfivor10",  XSPR(31,339,410), XSPR_MASK, BOOKE, EXT,    {RT}},
8053
{"mfivor11",  XSPR(31,339,411), XSPR_MASK, BOOKE, EXT,    {RT}},
8054
{"mfivor12",  XSPR(31,339,412), XSPR_MASK, BOOKE, EXT,    {RT}},
8055
{"mfivor13",  XSPR(31,339,413), XSPR_MASK, BOOKE, EXT,    {RT}},
8056
{"mfivor14",  XSPR(31,339,414), XSPR_MASK, BOOKE, EXT,    {RT}},
8057
{"mfivor15",  XSPR(31,339,415), XSPR_MASK, BOOKE, EXT,    {RT}},
8058
{"mftir", XSPR(31,339,446), XSPR_MASK, POWER10, EXT,    {RS}},
8059
{"mfptcr",  XSPR(31,339,464), XSPR_MASK, POWER10, EXT,    {RS}},
8060
{"mfusprg0",  XSPR(31,339,496), XSPR_MASK, POWER10, EXT,    {RS}},
8061
{"mfusprg1",  XSPR(31,339,497), XSPR_MASK, POWER10, EXT,    {RS}},
8062
{"mfurmor", XSPR(31,339,505), XSPR_MASK, POWER10, EXT,    {RS}},
8063
{"mfusrr0", XSPR(31,339,506), XSPR_MASK, POWER10, EXT,    {RS}},
8064
{"mfusrr1", XSPR(31,339,507), XSPR_MASK, POWER10, EXT,    {RS}},
8065
{"mfsmfctrl", XSPR(31,339,511), XSPR_MASK, POWER10, EXT,    {RS}},
8066
{"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE,  EXT,    {RT}},
8067
{"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, EXT,    {RT}},
8068
{"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, EXT,    {RT}},
8069
{"mfivor32",  XSPR(31,339,528), XSPR_MASK, PPCSPE|E6500, EXT,   {RT}},
8070
{"mfivor33",  XSPR(31,339,529), XSPR_MASK, PPCSPE|E6500, EXT,   {RT}},
8071
{"mfivor34",  XSPR(31,339,530), XSPR_MASK, PPCSPE,  EXT,    {RT}},
8072
{"mfivor35",  XSPR(31,339,531), XSPR_MASK, PPCPMR,  EXT,    {RT}},
8073
{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC,  TITAN|EXT,  {RT, SPRBAT}},
8074
{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC,  TITAN|EXT,  {RT, SPRBAT}},
8075
{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC,  TITAN|EXT,  {RT, SPRBAT}},
8076
{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC,  TITAN|EXT,  {RT, SPRBAT}},
8077
{"mfic_cst",  XSPR(31,339,560), XSPR_MASK, PPC860,  EXT,    {RT}},
8078
{"mfic_adr",  XSPR(31,339,561), XSPR_MASK, PPC860,  EXT,    {RT}},
8079
{"mfic_dat",  XSPR(31,339,562), XSPR_MASK, PPC860,  EXT,    {RT}},
8080
{"mfdc_cst",  XSPR(31,339,568), XSPR_MASK, PPC860,  EXT,    {RT}},
8081
{"mfdc_adr",  XSPR(31,339,569), XSPR_MASK, PPC860,  EXT,    {RT}},
8082
{"mfdc_dat",  XSPR(31,339,570), XSPR_MASK, PPC860,  EXT,    {RT}},
8083
{"mfmcsrr0",  XSPR(31,339,570), XSPR_MASK, PPCRFMCI,  EXT,    {RT}},
8084
{"mfmcsrr1",  XSPR(31,339,571), XSPR_MASK, PPCRFMCI,  EXT,    {RT}},
8085
{"mfmcsr",  XSPR(31,339,572), XSPR_MASK, PPCRFMCI,  EXT,    {RT}},
8086
{"mfmcar",  XSPR(31,339,573), XSPR_MASK, PPCRFMCI,  TITAN|EXT,  {RT}},
8087
{"mfdpdr",  XSPR(31,339,630), XSPR_MASK, PPC860,  EXT,    {RT}},
8088
{"mfdpir",  XSPR(31,339,631), XSPR_MASK, PPC860,  EXT,    {RT}},
8089
{"mfimmr",  XSPR(31,339,638), XSPR_MASK, PPC860,  EXT,    {RT}},
8090
{"mfusier2",  XSPR(31,339,736), XSPR_MASK, POWER10, EXT,    {RT}},
8091
{"mfsier2", XSPR(31,339,736), XSPR_MASK, POWER10, EXT,    {RT}},
8092
{"mfusier3",  XSPR(31,339,737), XSPR_MASK, POWER10, EXT,    {RT}},
8093
{"mfsier3", XSPR(31,339,737), XSPR_MASK, POWER10, EXT,    {RT}},
8094
{"mfummcr3",  XSPR(31,339,738), XSPR_MASK, POWER10, EXT,    {RT}},
8095
{"mfmmcr3", XSPR(31,339,738), XSPR_MASK, POWER10, EXT,    {RT}},
8096
{"mfummcrae", XSPR(31,339,739), XSPR_MASK, FUTURE,  EXT,    {RT}},
8097
{"mfmmcrae",  XSPR(31,339,739), XSPR_MASK, FUTURE,  EXT,    {RT}},
8098
{"mfummcr1e", XSPR(31,339,740), XSPR_MASK, FUTURE,  EXT,    {RT}},
8099
{"mfmmcr1e",  XSPR(31,339,740), XSPR_MASK, FUTURE,  EXT,    {RT}},
8100
{"mfummcr2e", XSPR(31,339,741), XSPR_MASK, FUTURE,  EXT,    {RT}},
8101
{"mfmmcr2e",  XSPR(31,339,741), XSPR_MASK, FUTURE,  EXT,    {RT}},
8102
{"mfummcr3e", XSPR(31,339,742), XSPR_MASK, FUTURE,  EXT,    {RT}},
8103
{"mfmmcr3e",  XSPR(31,339,742), XSPR_MASK, FUTURE,  EXT,    {RT}},
8104
{"mfusier", XSPR(31,339,768), XSPR_MASK, POWER10, EXT,    {RT}},
8105
{"mfsier",  XSPR(31,339,768), XSPR_MASK, POWER10, EXT,    {RT}},
8106
{"mfummcr2",  XSPR(31,339,769), XSPR_MASK, POWER9,  EXT,    {RT}},
8107
{"mfmmcr2", XSPR(31,339,769), XSPR_MASK, POWER9,  EXT,    {RT}},
8108
{"mfummcra",  XSPR(31,339,770), XSPR_MASK, POWER9,  EXT,    {RS}},
8109
{"mfmmcra", XSPR(31,339,770), XSPR_MASK, POWER7,  EXT,    {RS}},
8110
{"mfupmc1", XSPR(31,339,771), XSPR_MASK, POWER9,  EXT,    {RT}},
8111
{"mfpmc1",  XSPR(31,339,771), XSPR_MASK, POWER7,  EXT,    {RT}},
8112
{"mfupmc2", XSPR(31,339,772), XSPR_MASK, POWER9,  EXT,    {RT}},
8113
{"mfpmc2",  XSPR(31,339,772), XSPR_MASK, POWER7,  EXT,    {RT}},
8114
{"mfupmc3", XSPR(31,339,773), XSPR_MASK, POWER9,  EXT,    {RT}},
8115
{"mfpmc3",  XSPR(31,339,773), XSPR_MASK, POWER7,  EXT,    {RT}},
8116
{"mfupmc4", XSPR(31,339,774), XSPR_MASK, POWER9,  EXT,    {RT}},
8117
{"mfpmc4",  XSPR(31,339,774), XSPR_MASK, POWER7,  EXT,    {RT}},
8118
{"mfupmc5", XSPR(31,339,775), XSPR_MASK, POWER9,  EXT,    {RT}},
8119
{"mfpmc5",  XSPR(31,339,775), XSPR_MASK, POWER7,  EXT,    {RT}},
8120
{"mfupmc6", XSPR(31,339,776), XSPR_MASK, POWER9,  EXT,    {RT}},
8121
{"mfpmc6",  XSPR(31,339,776), XSPR_MASK, POWER7,  EXT,    {RT}},
8122
{"mfupmc7", XSPR(31,339,777), XSPR_MASK, FUTURE,  EXT,    {RT}},
8123
{"mfpmc7",  XSPR(31,339,777), XSPR_MASK, FUTURE,  EXT,    {RT}},
8124
{"mfupmc8", XSPR(31,339,778), XSPR_MASK, FUTURE,  EXT,    {RT}},
8125
{"mfpmc8",  XSPR(31,339,778), XSPR_MASK, FUTURE,  EXT,    {RT}},
8126
{"mfummcr0",  XSPR(31,339,779), XSPR_MASK, POWER9,  EXT,    {RS}},
8127
{"mfmmcr0", XSPR(31,339,779), XSPR_MASK, POWER7,  EXT,    {RS}},
8128
{"mfusiar", XSPR(31,339,780), XSPR_MASK, POWER9,  EXT,    {RS}},
8129
{"mfsiar",  XSPR(31,339,780), XSPR_MASK, POWER9,  EXT,    {RS}},
8130
{"mfusdar", XSPR(31,339,781), XSPR_MASK, POWER9,  EXT,    {RS}},
8131
{"mfsdar",  XSPR(31,339,781), XSPR_MASK, POWER9,  EXT,    {RS}},
8132
{"mfummcr1",  XSPR(31,339,782), XSPR_MASK, POWER9,  EXT,    {RS}},
8133
{"mfmmcr1", XSPR(31,339,782), XSPR_MASK, POWER7,  EXT,    {RS}},
8134
{"mfmi_ctr",  XSPR(31,339,784), XSPR_MASK, PPC860,  EXT,    {RT}},
8135
{"mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860,  EXT,    {RT}},
8136
{"mfmi_epn",  XSPR(31,339,787), XSPR_MASK, PPC860,  EXT,    {RT}},
8137
{"mfmi_twc",  XSPR(31,339,789), XSPR_MASK, PPC860,  EXT,    {RT}},
8138
{"mfmi_rpn",  XSPR(31,339,790), XSPR_MASK, PPC860,  EXT,    {RT}},
8139
{"mfmd_ctr",  XSPR(31,339,792), XSPR_MASK, PPC860,  EXT,    {RT}},
8140
{"mfm_casid", XSPR(31,339,793), XSPR_MASK, PPC860,  EXT,    {RT}},
8141
{"mfmd_ap", XSPR(31,339,794), XSPR_MASK, PPC860,  EXT,    {RT}},
8142
{"mfmd_epn",  XSPR(31,339,795), XSPR_MASK, PPC860,  EXT,    {RT}},
8143
{"mfmd_twb",  XSPR(31,339,796), XSPR_MASK, PPC860,  EXT,    {RT}},
8144
{"mfmd_twc",  XSPR(31,339,797), XSPR_MASK, PPC860,  EXT,    {RT}},
8145
{"mfmd_rpn",  XSPR(31,339,798), XSPR_MASK, PPC860,  EXT,    {RT}},
8146
{"mfm_tw",  XSPR(31,339,799), XSPR_MASK, PPC860,  EXT,    {RT}},
8147
{"mfbescrs",  XSPR(31,339,800), XSPR_MASK, POWER9,  EXT,    {RS}},
8148
{"mfbescrsu", XSPR(31,339,801), XSPR_MASK, POWER9,  EXT,    {RS}},
8149
{"mfbescrr",  XSPR(31,339,802), XSPR_MASK, POWER9,  EXT,    {RS}},
8150
{"mfbescrru", XSPR(31,339,803), XSPR_MASK, POWER9,  EXT,    {RS}},
8151
{"mfebbhr", XSPR(31,339,804), XSPR_MASK, POWER9,  EXT,    {RS}},
8152
{"mfebbrr", XSPR(31,339,805), XSPR_MASK, POWER9,  EXT,    {RS}},
8153
{"mfbescr", XSPR(31,339,806), XSPR_MASK, POWER9,  EXT,    {RS}},
8154
{"mftar", XSPR(31,339,815), XSPR_MASK, POWER9,  EXT,    {RS}},
8155
{"mfasdr",  XSPR(31,339,816), XSPR_MASK, POWER10, EXT,    {RS}},
8156
{"mfmi_dbcam",  XSPR(31,339,816), XSPR_MASK, PPC860,  EXT,    {RT}},
8157
{"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860,  EXT,    {RT}},
8158
{"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860,  EXT,    {RT}},
8159
{"mfpsscr", XSPR(31,339,823), XSPR_MASK, POWER10, EXT,    {RS}},
8160
{"mfmd_dbcam",  XSPR(31,339,824), XSPR_MASK, PPC860,  EXT,    {RT}},
8161
{"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860,  EXT,    {RT}},
8162
{"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860,  EXT,    {RT}},
8163
{"mfic",  XSPR(31,339,848), XSPR_MASK, POWER8,  EXT,    {RS}},
8164
{"mfvtb", XSPR(31,339,849), XSPR_MASK, POWER8,  EXT,    {RS}},
8165
{"mfhpsscr",  XSPR(31,339,855), XSPR_MASK, POWER10, EXT,    {RS}},
8166
{"mfivndx", XSPR(31,339,880), XSPR_MASK, TITAN, EXT,    {RT}},
8167
{"mfdvndx", XSPR(31,339,881), XSPR_MASK, TITAN, EXT,    {RT}},
8168
{"mfivlim", XSPR(31,339,882), XSPR_MASK, TITAN, EXT,    {RT}},
8169
{"mfdvlim", XSPR(31,339,883), XSPR_MASK, TITAN, EXT,    {RT}},
8170
{"mfclcsr", XSPR(31,339,884), XSPR_MASK, TITAN, EXT,    {RT}},
8171
{"mfccr1",  XSPR(31,339,888), XSPR_MASK, TITAN, EXT,    {RT}},
8172
{"mfppr", XSPR(31,339,896), XSPR_MASK, POWER5,  EXT,    {RT}},
8173
{"mfppr32", XSPR(31,339,898), XSPR_MASK, POWER5,  EXT,    {RT}},
8174
{"mfgqr", XSPR(31,339,912), XSPRGQR_MASK, PPCPS,  EXT,    {RT, SPRGQR}},
8175
{"mfhid2",  XSPR(31,339,920), XSPR_MASK, GEKKO, EXT,    {RT}},
8176
{"mfwpar",  XSPR(31,339,921), XSPR_MASK, GEKKO, EXT,    {RT}},
8177
{"mfdmau",  XSPR(31,339,922), XSPR_MASK, GEKKO, EXT,    {RT}},
8178
{"mfdmal",  XSPR(31,339,923), XSPR_MASK, GEKKO, EXT,    {RT}},
8179
{"mfrstcfg",  XSPR(31,339,923), XSPR_MASK, TITAN, EXT,    {RT}},
8180
{"mfdcdbtrl", XSPR(31,339,924), XSPR_MASK, TITAN, EXT,    {RT}},
8181
{"mfdcdbtrh", XSPR(31,339,925), XSPR_MASK, TITAN, EXT,    {RT}},
8182
{"mficdbtr",  XSPR(31,339,927), XSPR_MASK, TITAN, EXT,    {RT}},
8183
{"mfummcr0",  XSPR(31,339,936), XSPR_MASK, PPC750,  EXT,    {RT}},
8184
{"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750,  EXT,    {RT}},
8185
{"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750,  EXT,    {RT}},
8186
{"mfusia",  XSPR(31,339,939), XSPR_MASK, PPC750,  EXT,    {RT}},
8187
{"mfummcr1",  XSPR(31,339,940), XSPR_MASK, PPC750,  EXT,    {RT}},
8188
{"mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750,  EXT,    {RT}},
8189
{"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750,  EXT,    {RT}},
8190
{"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403,  EXT,    {RT}},
8191
{"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403,  EXT,    {RT}},
8192
{"mfmmucr", XSPR(31,339,946), XSPR_MASK, TITAN, EXT,    {RT}},
8193
{"mfccr0",  XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, EXT,   {RT}},
8194
{"mfiac3",  XSPR(31,339,948), XSPR_MASK, PPC405,  EXT,    {RT}},
8195
{"mfiac4",  XSPR(31,339,949), XSPR_MASK, PPC405,  EXT,    {RT}},
8196
{"mfdvc1",  XSPR(31,339,950), XSPR_MASK, PPC405,  EXT,    {RT}},
8197
{"mfdvc2",  XSPR(31,339,951), XSPR_MASK, PPC405,  EXT,    {RT}},
8198
{"mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750,  EXT,    {RT}},
8199
{"mfpmc1",  XSPR(31,339,953), XSPR_MASK, PPC750,  EXT,    {RT}},
8200
{"mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403,  EXT,    {RT}},
8201
{"mfdcwr",  XSPR(31,339,954), XSPR_MASK, PPC403,  EXT,    {RT}},
8202
{"mfpmc2",  XSPR(31,339,954), XSPR_MASK, PPC750,  EXT,    {RT}},
8203
{"mfsia", XSPR(31,339,955), XSPR_MASK, PPC750,  EXT,    {RT}},
8204
{"mfsler",  XSPR(31,339,955), XSPR_MASK, PPC405,  EXT,    {RT}},
8205
{"mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750,  EXT,    {RT}},
8206
{"mfsu0r",  XSPR(31,339,956), XSPR_MASK, PPC405,  EXT,    {RT}},
8207
{"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405,  EXT,    {RT}},
8208
{"mfpmc3",  XSPR(31,339,957), XSPR_MASK, PPC750,  EXT,    {RT}},
8209
{"mfpmc4",  XSPR(31,339,958), XSPR_MASK, PPC750,  EXT,    {RT}},
8210
{"mficdbdr",  XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, EXT,   {RT}},
8211
{"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403,  EXT,    {RT}},
8212
{"mfdear",  XSPR(31,339,981), XSPR_MASK, PPC403,  EXT,    {RT}},
8213
{"mfevpr",  XSPR(31,339,982), XSPR_MASK, PPC403,  EXT,    {RT}},
8214
{"mfcdbcr", XSPR(31,339,983), XSPR_MASK, PPC403,  EXT,    {RT}},
8215
{"mftsr", XSPR(31,339,984), XSPR_MASK, PPC403,  EXT,    {RT}},
8216
{"mftcr", XSPR(31,339,986), XSPR_MASK, PPC403,  EXT,    {RT}},
8217
{"mfpit", XSPR(31,339,987), XSPR_MASK, PPC403,  EXT,    {RT}},
8218
{"mftbhi",  XSPR(31,339,988), XSPR_MASK, PPC403,  EXT,    {RT}},
8219
{"mftblo",  XSPR(31,339,989), XSPR_MASK, PPC403,  EXT,    {RT}},
8220
{"mfsrr2",  XSPR(31,339,990), XSPR_MASK, PPC403,  EXT,    {RT}},
8221
{"mfsrr3",  XSPR(31,339,991), XSPR_MASK, PPC403,  EXT,    {RT}},
8222
{"mfdbsr",  XSPR(31,339,1008), XSPR_MASK, PPC403, EXT,    {RT}},
8223
{"mfhid0",  XSPR(31,339,1008), XSPR_MASK, GEKKO,  EXT,    {RT}},
8224
{"mfhid1",  XSPR(31,339,1009), XSPR_MASK, GEKKO,  EXT,    {RT}},
8225
{"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, EXT,    {RT}},
8226
{"mfiabr",  XSPR(31,339,1010), XSPR_MASK, GEKKO,  EXT,    {RT}},
8227
{"mfhid4",  XSPR(31,339,1011), XSPR_MASK, BROADWAY, EXT,    {RT}},
8228
{"mfdbdr",  XSPR(31,339,1011), XSPR_MASK, TITAN,  EXT,    {RS}},
8229
{"mfiac1",  XSPR(31,339,1012), XSPR_MASK, PPC403, EXT,    {RT}},
8230
{"mfiac2",  XSPR(31,339,1013), XSPR_MASK, PPC403, EXT,    {RT}},
8231
{"mfdabr",  XSPR(31,339,1013), XSPR_MASK, PPC750, EXT,    {RT}},
8232
{"mfdac1",  XSPR(31,339,1014), XSPR_MASK, PPC403, EXT,    {RT}},
8233
{"mfdac2",  XSPR(31,339,1015), XSPR_MASK, PPC403, EXT,    {RT}},
8234
{"mfl2cr",  XSPR(31,339,1017), XSPR_MASK, PPC750, EXT,    {RT}},
8235
{"mfdccr",  XSPR(31,339,1018), XSPR_MASK, PPC403, EXT,    {RT}},
8236
{"mficcr",  XSPR(31,339,1019), XSPR_MASK, PPC403, EXT,    {RT}},
8237
{"mfictc",  XSPR(31,339,1019), XSPR_MASK, PPC750, EXT,    {RT}},
8238
{"mfpbl1",  XSPR(31,339,1020), XSPR_MASK, PPC403, EXT,    {RT}},
8239
{"mfthrm1", XSPR(31,339,1020), XSPR_MASK, PPC750, EXT,    {RT}},
8240
{"mfpbu1",  XSPR(31,339,1021), XSPR_MASK, PPC403, EXT,    {RT}},
8241
{"mfthrm2", XSPR(31,339,1021), XSPR_MASK, PPC750, EXT,    {RT}},
8242
{"mfpbl2",  XSPR(31,339,1022), XSPR_MASK, PPC403, EXT,    {RT}},
8243
{"mfthrm3", XSPR(31,339,1022), XSPR_MASK, PPC750, EXT,    {RT}},
8244
{"mfpir", XSPR(31,339,1023), XSPR_MASK, POWER10,  EXT,    {RT}},
8245
{"mfpbu2",  XSPR(31,339,1023), XSPR_MASK, PPC403, EXT,    {RT}},
8246
{"mfspr", X(31,339),  X_MASK,      COM, 0,    {RT, SPR}},
8247
8248
{"lwax",  X(31,341),  X_MASK,      PPC64, 0,    {RT, RA0, RB}},
8249
8250
{"dst",   XDSS(31,342,0), XDSS_MASK,   PPCVEC,  0,    {RA, RB, STRM}},
8251
{"dstt",  XDSS(31,342,1), XDSS_MASK,   PPCVEC,  0,    {RA, RB, STRM}},
8252
8253
{"lhax",  X(31,343),  X_MASK,      COM, 0,    {RT, RA0, RB}},
8254
8255
{"lvxl",  X(31,359),  X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
8256
8257
{"abs",   XO(31,360,0,0), XORB_MASK,   M601,  0,    {RT, RA}},
8258
{"abs.",  XO(31,360,0,1), XORB_MASK,   M601,  0,    {RT, RA}},
8259
8260
{"divs",  XO(31,363,0,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
8261
{"divs.", XO(31,363,0,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
8262
8263
{"lxvwsx",  X(31,364),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
8264
8265
{"tlbia", X(31,370),  0xffffffff,  PPC, E500|TITAN, {0}},
8266
8267
{"mftbu", XSPR(31,371,269), XSPR_MASK, PPC, NO371|POWER4|EXT, {RT}},
8268
{"mftb",  X(31,371),  X_MASK,      PPC, NO371|POWER4,   {RT, TBR}},
8269
{"mftbl", XSPR(31,371,268), XSPR_MASK, PPC, NO371|POWER4|EXT, {RT}},
8270
8271
{"lwaux", X(31,373),  X_MASK,      PPC64, 0,    {RT, RAL, RB}},
8272
8273
{"dstst", XDSS(31,374,0), XDSS_MASK,   PPCVEC,  0,    {RA, RB, STRM}},
8274
{"dststt",  XDSS(31,374,1), XDSS_MASK,   PPCVEC,  0,    {RA, RB, STRM}},
8275
8276
{"lhaux", X(31,375),  X_MASK,      COM, 0,    {RT, RAL, RB}},
8277
8278
{"popcntw", X(31,378),  XRB_MASK,    POWER7|PPCA2, 0,   {RA, RS}},
8279
8280
{"setbc", X(31,384),  XRB_MASK,    POWER10, 0,    {RT, BI}},
8281
8282
{"mtdcrx",  X(31,387),  X_MASK,      BOOKE|PPCA2|PPC476, TITAN, {RA, RS}},
8283
{"mtdcrx.", XRC(31,387,1),  X_MASK,      PPCA2, 0,    {RA, RS}},
8284
8285
{"stvexbx", X(31,389),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8286
8287
{"dcblc", X(31,390),  X_MASK,  PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
8288
{"stdfcmx", APU(31,391,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8289
8290
{"divdeu",  XO(31,393,0,0), XO_MASK,     POWER7|PPCA2, 0,   {RT, RA, RB}},
8291
{"divdeu.", XO(31,393,0,1), XO_MASK,     POWER7|PPCA2, 0,   {RT, RA, RB}},
8292
{"divweu",  XO(31,395,0,0), XO_MASK,     POWER7|PPCA2, 0,   {RT, RA, RB}},
8293
{"divweu.", XO(31,395,0,1), XO_MASK,     POWER7|PPCA2, 0,   {RT, RA, RB}},
8294
8295
{"stxvx", X(31,396),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
8296
{"stxvl", X(31,397),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
8297
8298
{"dcblce",  X(31,398),  X_MASK,      PPCCHLK, E500MC,   {CT, RA, RB}},
8299
8300
{"slbmte",  X(31,402),  XRA_MASK,    PPC64, 0,    {RS, RB}},
8301
8302
{"mtvsrws", X(31,403),  XX1RB_MASK,  PPCVSX3, 0,    {XT6, RA}},
8303
8304
{"pbt.",  XRC(31,404,1),  X_MASK,      POWER8,  0,    {RS, RA0, RB}},
8305
8306
{"icswx", XRC(31,406,0),  X_MASK,   POWER7|PPCA2, 0,    {RS, RA, RB}},
8307
{"icswx.",  XRC(31,406,1),  X_MASK,   POWER7|PPCA2, 0,    {RS, RA, RB}},
8308
8309
{"sthx",  X(31,407),  X_MASK,      COM, 0,    {RS, RA0, RB}},
8310
8311
{"orc",   XRC(31,412,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
8312
{"orc.",  XRC(31,412,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
8313
8314
{"sthepx",  X(31,415),  X_MASK,   E500MC|PPCA2, 0,    {RS, RA0, RB}},
8315
8316
{"setbcr",  X(31,416),  XRB_MASK,    POWER10, 0,    {RT, BI}},
8317
8318
{"mtdcrux", X(31,419),  X_MASK,  PPC464|PPC476, 0,    {RA, RS}},
8319
8320
{"stvexhx", X(31,421),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8321
8322
{"dcblq.",  XRC(31,422,1),  X_MASK,      E6500, 0,    {CT, RA0, RB}},
8323
8324
{"divde", XO(31,425,0,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8325
{"divde.",  XO(31,425,0,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8326
{"divwe", XO(31,427,0,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8327
{"divwe.",  XO(31,427,0,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8328
8329
{"stxvll",  X(31,429),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
8330
8331
{"clrbhrb", X(31,430),  0xffffffff,  POWER8,  0,    {0}},
8332
8333
{"slbie", X(31,434),  XRTRA_MASK,  PPC64, 0,    {RB}},
8334
8335
{"mtvsrdd", X(31,435),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
8336
8337
{"ecowx", X(31,438),  X_MASK,      PPC, E500|TITAN, {RT, RA0, RB}},
8338
8339
{"sthux", X(31,439),  X_MASK,      COM, 0,    {RS, RAS, RB}},
8340
8341
/* or 1,1,1 */
8342
{"cctpl", 0x7c210b78, 0xffffffff,  CELL,  EXT,    {0}},
8343
/* or 2,2,2 */
8344
{"cctpm", 0x7c421378, 0xffffffff,  CELL,  EXT,    {0}},
8345
/* or 3,3,3 */
8346
{"cctph", 0x7c631b78, 0xffffffff,  CELL,  EXT,    {0}},
8347
/* or 26,26,26 */
8348
{"miso",  0x7f5ad378,   0xffffffff, POWER8|E6500, EXT,    {0}},
8349
/* or 27,27,27 */
8350
{"yield", 0x7f7bdb78, 0xffffffff,  POWER7,  EXT,    {0}},
8351
/* or 28,28,28 */
8352
{"mdors", 0x7f9ce378, 0xffffffff,  E500MC,  EXT,    {0}},
8353
{"db8cyc",  0x7f9ce378, 0xffffffff,  CELL,  EXT,    {0}},
8354
/* or 29,29,29 */
8355
{"mdoio", 0x7fbdeb78, 0xffffffff,  POWER7,  EXT,    {0}},
8356
{"db10cyc", 0x7fbdeb78, 0xffffffff,  CELL,  EXT,    {0}},
8357
/* or 30,30,30 */
8358
{"mdoom", 0x7fdef378, 0xffffffff,  POWER7,  EXT,    {0}},
8359
{"db12cyc", 0x7fdef378, 0xffffffff,  CELL,  EXT,    {0}},
8360
/* or 31,31,31 */
8361
{"db16cyc", 0x7ffffb78, 0xffffffff,  CELL,  EXT,    {0}},
8362
8363
{"mr",    XRC(31,444,0),  X_MASK,      COM, EXT,    {RA, RSB}},
8364
{"or",    XRC(31,444,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
8365
{"mr.",   XRC(31,444,1),  X_MASK,      COM, EXT,    {RA, RSB}},
8366
{"or.",   XRC(31,444,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
8367
8368
{"setnbc",  X(31,448),  XRB_MASK,    POWER10, 0,    {RT, BI}},
8369
8370
{"mtexisr", XSPR(31,451, 64), XSPR_MASK, PPC403,  0,    {RS}},
8371
{"mtexier", XSPR(31,451, 66), XSPR_MASK, PPC403,  0,    {RS}},
8372
{"mtbr0", XSPR(31,451,128), XSPR_MASK, PPC403,  0,    {RS}},
8373
{"mtbr1", XSPR(31,451,129), XSPR_MASK, PPC403,  0,    {RS}},
8374
{"mtbr2", XSPR(31,451,130), XSPR_MASK, PPC403,  0,    {RS}},
8375
{"mtbr3", XSPR(31,451,131), XSPR_MASK, PPC403,  0,    {RS}},
8376
{"mtbr4", XSPR(31,451,132), XSPR_MASK, PPC403,  0,    {RS}},
8377
{"mtbr5", XSPR(31,451,133), XSPR_MASK, PPC403,  0,    {RS}},
8378
{"mtbr6", XSPR(31,451,134), XSPR_MASK, PPC403,  0,    {RS}},
8379
{"mtbr7", XSPR(31,451,135), XSPR_MASK, PPC403,  0,    {RS}},
8380
{"mtbear",  XSPR(31,451,144), XSPR_MASK, PPC403,  0,    {RS}},
8381
{"mtbesr",  XSPR(31,451,145), XSPR_MASK, PPC403,  0,    {RS}},
8382
{"mtiocr",  XSPR(31,451,160), XSPR_MASK, PPC403,  0,    {RS}},
8383
{"mtdmacr0",  XSPR(31,451,192), XSPR_MASK, PPC403,  0,    {RS}},
8384
{"mtdmact0",  XSPR(31,451,193), XSPR_MASK, PPC403,  0,    {RS}},
8385
{"mtdmada0",  XSPR(31,451,194), XSPR_MASK, PPC403,  0,    {RS}},
8386
{"mtdmasa0",  XSPR(31,451,195), XSPR_MASK, PPC403,  0,    {RS}},
8387
{"mtdmacc0",  XSPR(31,451,196), XSPR_MASK, PPC403,  0,    {RS}},
8388
{"mtdmacr1",  XSPR(31,451,200), XSPR_MASK, PPC403,  0,    {RS}},
8389
{"mtdmact1",  XSPR(31,451,201), XSPR_MASK, PPC403,  0,    {RS}},
8390
{"mtdmada1",  XSPR(31,451,202), XSPR_MASK, PPC403,  0,    {RS}},
8391
{"mtdmasa1",  XSPR(31,451,203), XSPR_MASK, PPC403,  0,    {RS}},
8392
{"mtdmacc1",  XSPR(31,451,204), XSPR_MASK, PPC403,  0,    {RS}},
8393
{"mtdmacr2",  XSPR(31,451,208), XSPR_MASK, PPC403,  0,    {RS}},
8394
{"mtdmact2",  XSPR(31,451,209), XSPR_MASK, PPC403,  0,    {RS}},
8395
{"mtdmada2",  XSPR(31,451,210), XSPR_MASK, PPC403,  0,    {RS}},
8396
{"mtdmasa2",  XSPR(31,451,211), XSPR_MASK, PPC403,  0,    {RS}},
8397
{"mtdmacc2",  XSPR(31,451,212), XSPR_MASK, PPC403,  0,    {RS}},
8398
{"mtdmacr3",  XSPR(31,451,216), XSPR_MASK, PPC403,  0,    {RS}},
8399
{"mtdmact3",  XSPR(31,451,217), XSPR_MASK, PPC403,  0,    {RS}},
8400
{"mtdmada3",  XSPR(31,451,218), XSPR_MASK, PPC403,  0,    {RS}},
8401
{"mtdmasa3",  XSPR(31,451,219), XSPR_MASK, PPC403,  0,    {RS}},
8402
{"mtdmacc3",  XSPR(31,451,220), XSPR_MASK, PPC403,  0,    {RS}},
8403
{"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403,  0,    {RS}},
8404
{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {SPR, RS}},
8405
{"mtdcr.",  XRC(31,451,1), X_MASK,       PPCA2, 0,    {SPR, RS}},
8406
8407
{"stvexwx", X(31,453),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8408
8409
{"dccci", X(31,454), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
8410
{"dci",   X(31,454),  XRARB_MASK, PPCA2|PPC476, 0,    {CT}},
8411
8412
{"divdu", XO(31,457,0,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8413
{"divdu.",  XO(31,457,0,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8414
8415
{"divwu", XO(31,459,0,0), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8416
{"divwu.",  XO(31,459,0,1), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8417
8418
{"stxvpx",  X(31,461),  XX1_MASK,    POWER10, 0,    {XSP, RA0, RB}},
8419
8420
{"mtpmr", X(31,462),  X_MASK, PPCPMR|PPCE300, 0,    {PMR, RS}},
8421
{"mttmr", X(31,494),  X_MASK,      PPCTMR,  0,    {TMR, RS}},
8422
8423
{"slbieg",  X(31,466),  XRA_MASK,    POWER9,  0,    {RS, RB}},
8424
8425
{"mtmq",  XSPR(31,467,  0), XSPR_MASK, M601,  EXT,    {RS}},
8426
{"mtxer", XSPR(31,467,  1), XSPR_MASK, COM, EXT,    {RS}},
8427
{"mtudscr", XSPR(31,467,  3), XSPR_MASK, POWER9,  EXT,    {RS}},
8428
{"mtlr",  XSPR(31,467,  8), XSPR_MASK, COM, EXT,    {RS}},
8429
{"mtctr", XSPR(31,467,  9), XSPR_MASK, COM, EXT,    {RS}},
8430
{"mtuamr",  XSPR(31,467, 13), XSPR_MASK, POWER9,  EXT,    {RS}},
8431
{"mtdscr",  XSPR(31,467, 17), XSPR_MASK, POWER6,  EXT,    {RS}},
8432
{"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, EXT,    {RS}},
8433
{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8434
{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8435
{"mtrtcu",  XSPR(31,467, 20), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8436
{"mtrtcl",  XSPR(31,467, 21), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8437
{"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, EXT,    {RS}},
8438
{"mtsdr0",  XSPR(31,467, 24), XSPR_MASK, POWER, EXT,    {RS}},
8439
{"mtsdr1",  XSPR(31,467, 25), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8440
{"mtsrr0",  XSPR(31,467, 26), XSPR_MASK, COM, EXT,    {RS}},
8441
{"mtsrr1",  XSPR(31,467, 27), XSPR_MASK, COM, EXT,    {RS}},
8442
{"mtcfar",  XSPR(31,467, 28), XSPR_MASK, POWER6,  EXT,    {RS}},
8443
{"mtamr", XSPR(31,467, 29), XSPR_MASK, POWER7,  EXT,    {RS}},
8444
{"mtpidr",  XSPR(31,467, 48), XSPR_MASK, POWER10, EXT,    {RS}},
8445
{"mtpid", XSPR(31,467, 48), XSPR_MASK, BOOKE, EXT,    {RS}},
8446
{"mtdecar", XSPR(31,467, 54), XSPR_MASK, BOOKE, EXT,    {RS}},
8447
{"mtcsrr0", XSPR(31,467, 58), XSPR_MASK, BOOKE, EXT,    {RS}},
8448
{"mtcsrr1", XSPR(31,467, 59), XSPR_MASK, BOOKE, EXT,    {RS}},
8449
{"mtiamr",  XSPR(31,467, 61), XSPR_MASK, POWER10, EXT,    {RS}},
8450
{"mtdear",  XSPR(31,467, 61), XSPR_MASK, BOOKE, EXT,    {RS}},
8451
{"mtesr", XSPR(31,467, 62), XSPR_MASK, BOOKE, EXT,    {RS}},
8452
{"mtivpr",  XSPR(31,467, 63), XSPR_MASK, BOOKE, EXT,    {RS}},
8453
{"mttfhar", XSPR(31,467,128), XSPR_MASK, POWER9,  EXT,    {RS}},
8454
{"mttfiar", XSPR(31,467,129), XSPR_MASK, POWER9,  EXT,    {RS}},
8455
{"mttexasr",  XSPR(31,467,130), XSPR_MASK, POWER9,  EXT,    {RS}},
8456
{"mttexasru", XSPR(31,467,131), XSPR_MASK, POWER9,  EXT,    {RS}},
8457
{"mtcmpa",  XSPR(31,467,144), XSPR_MASK, PPC860,  EXT,    {RS}},
8458
{"mtcmpb",  XSPR(31,467,145), XSPR_MASK, PPC860,  EXT,    {RS}},
8459
{"mtcmpc",  XSPR(31,467,146), XSPR_MASK, PPC860,  EXT,    {RS}},
8460
{"mtcmpd",  XSPR(31,467,147), XSPR_MASK, PPC860,  EXT,    {RS}},
8461
{"mticr", XSPR(31,467,148), XSPR_MASK, PPC860,  EXT,    {RS}},
8462
{"mtder", XSPR(31,467,149), XSPR_MASK, PPC860,  EXT,    {RS}},
8463
{"mtcounta",  XSPR(31,467,150), XSPR_MASK, PPC860,  EXT,    {RS}},
8464
{"mtcountb",  XSPR(31,467,151), XSPR_MASK, PPC860,  EXT,    {RS}},
8465
{"mtctrl",  XSPR(31,467,152), XSPR_MASK, POWER4,  EXT,    {RS}},
8466
{"mtcmpe",  XSPR(31,467,152), XSPR_MASK, PPC860,  EXT,    {RS}},
8467
{"mtfscr",  XSPR(31,467,153), XSPR_MASK, POWER10, EXT,    {RS}},
8468
{"mtcmpf",  XSPR(31,467,153), XSPR_MASK, PPC860,  EXT,    {RS}},
8469
{"mtcmpg",  XSPR(31,467,154), XSPR_MASK, PPC860,  EXT,    {RS}},
8470
{"mtcmph",  XSPR(31,467,155), XSPR_MASK, PPC860,  EXT,    {RS}},
8471
{"mtlctrl1",  XSPR(31,467,156), XSPR_MASK, PPC860,  EXT,    {RS}},
8472
{"mtuamor", XSPR(31,467,157), XSPR_MASK, POWER7,  EXT,    {RS}},
8473
{"mtlctrl2",  XSPR(31,467,157), XSPR_MASK, PPC860,  EXT,    {RS}},
8474
{"mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860,  EXT,    {RS}},
8475
{"mtpspb",  XSPR(31,467,159), XSPR_MASK, POWER10, EXT,    {RS}},
8476
{"mtbar", XSPR(31,467,159), XSPR_MASK, PPC860,  EXT,    {RS}},
8477
{"mtdpdes", XSPR(31,467,176), XSPR_MASK, POWER10, EXT,    {RS}},
8478
{"mtdawr0", XSPR(31,467,180), XSPR_MASK, POWER10, EXT,    {RS}},
8479
{"mtdawr1", XSPR(31,467,181), XSPR_MASK, POWER10, EXT,    {RS}},
8480
{"mtrpr", XSPR(31,467,186), XSPR_MASK, POWER10, EXT,    {RS}},
8481
{"mtciabr", XSPR(31,467,187), XSPR_MASK, POWER10, EXT,    {RS}},
8482
{"mtdawrx0",  XSPR(31,467,188), XSPR_MASK, POWER10, EXT,    {RS}},
8483
{"mtdawrx1",  XSPR(31,467,189), XSPR_MASK, POWER10, EXT,    {RS}},
8484
{"mthfscr", XSPR(31,467,190), XSPR_MASK, POWER10, EXT,    {RS}},
8485
{"mtvrsave",  XSPR(31,467,256), XSPR_MASK, PPCVEC,  EXT,    {RS}},
8486
{"mtusprg0",  XSPR(31,467,256), XSPR_MASK, BOOKE, EXT,    {RS}},
8487
{"mtsprg",  XSPR(31,467,256), XSPRG_MASK, PPC,  EXT,    {SPRG, RS}},
8488
{"mtsprg0", XSPR(31,467,272), XSPR_MASK, PPC, EXT,    {RS}},
8489
{"mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, EXT,    {RS}},
8490
{"mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, EXT,    {RS}},
8491
{"mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, EXT,    {RS}},
8492
{"mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, EXT,   {RS}},
8493
{"mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, EXT,   {RS}},
8494
{"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, EXT,   {RS}},
8495
{"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, EXT,   {RS}},
8496
{"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, EXT,    {RS}},
8497
{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, TITAN|EXT,  {RS}},
8498
{"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, EXT,    {RS}},
8499
{"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, EXT,    {RS}},
8500
{"mttbu40", XSPR(31,467,286), XSPR_MASK, POWER10, EXT,    {RS}},
8501
{"mthsprg0",  XSPR(31,467,304), XSPR_MASK, POWER10, EXT,    {RS}},
8502
{"mtdbsr",  XSPR(31,467,304), XSPR_MASK, BOOKE, EXT,    {RS}},
8503
{"mthsprg1",  XSPR(31,467,305), XSPR_MASK, POWER10, EXT,    {RS}},
8504
{"mthdisr", XSPR(31,467,306), XSPR_MASK, POWER10, EXT,    {RS}},
8505
{"mthdar",  XSPR(31,467,307), XSPR_MASK, POWER10, EXT,    {RS}},
8506
{"mtspurr", XSPR(31,467,308), XSPR_MASK, POWER10, EXT,    {RS}},
8507
{"mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, EXT,    {RS}},
8508
{"mtpurr",  XSPR(31,467,309), XSPR_MASK, POWER10, EXT,    {RS}},
8509
{"mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, EXT,    {RS}},
8510
{"mthdec",  XSPR(31,467,310), XSPR_MASK, POWER10, EXT,    {RS}},
8511
{"mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, EXT,    {RS}},
8512
{"mtiac1",  XSPR(31,467,312), XSPR_MASK, BOOKE, EXT,    {RS}},
8513
{"mthrmor", XSPR(31,467,313), XSPR_MASK, POWER10, EXT,    {RS}},
8514
{"mtiac2",  XSPR(31,467,313), XSPR_MASK, BOOKE, EXT,    {RS}},
8515
{"mthsrr0", XSPR(31,467,314), XSPR_MASK, POWER10, EXT,    {RS}},
8516
{"mtiac3",  XSPR(31,467,314), XSPR_MASK, BOOKE, EXT,    {RS}},
8517
{"mthsrr1", XSPR(31,467,315), XSPR_MASK, POWER10, EXT,    {RS}},
8518
{"mtiac4",  XSPR(31,467,315), XSPR_MASK, BOOKE, EXT,    {RS}},
8519
{"mtdac1",  XSPR(31,467,316), XSPR_MASK, BOOKE, EXT,    {RS}},
8520
{"mtdac2",  XSPR(31,467,317), XSPR_MASK, BOOKE, EXT,    {RS}},
8521
{"mtlpcr",  XSPR(31,467,318), XSPR_MASK, POWER10, EXT,    {RS}},
8522
{"mtdvc1",  XSPR(31,467,318), XSPR_MASK, BOOKE, EXT,    {RS}},
8523
{"mtlpidr", XSPR(31,467,319), XSPR_MASK, POWER10, EXT,    {RS}},
8524
{"mtdvc2",  XSPR(31,467,319), XSPR_MASK, BOOKE, EXT,    {RS}},
8525
{"mthmer",  XSPR(31,467,336), XSPR_MASK, POWER7,  EXT,    {RS}},
8526
{"mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, EXT,    {RS}},
8527
{"mthmeer", XSPR(31,467,337), XSPR_MASK, POWER7,  EXT,    {RS}},
8528
{"mtpcr", XSPR(31,467,338), XSPR_MASK, POWER10, EXT,    {RS}},
8529
{"mtheir",  XSPR(31,467,339), XSPR_MASK, POWER10, EXT,    {RS}},
8530
{"mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, EXT,    {RS}},
8531
{"mtamor",  XSPR(31,467,349), XSPR_MASK, POWER7,  EXT,    {RS}},
8532
{"mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, EXT,    {RS}},
8533
{"mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, EXT,    {RS}},
8534
{"mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, EXT,    {RS}},
8535
{"mtivor3", XSPR(31,467,403), XSPR_MASK, BOOKE, EXT,    {RS}},
8536
{"mtivor4", XSPR(31,467,404), XSPR_MASK, BOOKE, EXT,    {RS}},
8537
{"mtivor5", XSPR(31,467,405), XSPR_MASK, BOOKE, EXT,    {RS}},
8538
{"mtivor6", XSPR(31,467,406), XSPR_MASK, BOOKE, EXT,    {RS}},
8539
{"mtivor7", XSPR(31,467,407), XSPR_MASK, BOOKE, EXT,    {RS}},
8540
{"mtivor8", XSPR(31,467,408), XSPR_MASK, BOOKE, EXT,    {RS}},
8541
{"mtivor9", XSPR(31,467,409), XSPR_MASK, BOOKE, EXT,    {RS}},
8542
{"mtivor10",  XSPR(31,467,410), XSPR_MASK, BOOKE, EXT,    {RS}},
8543
{"mtivor11",  XSPR(31,467,411), XSPR_MASK, BOOKE, EXT,    {RS}},
8544
{"mtivor12",  XSPR(31,467,412), XSPR_MASK, BOOKE, EXT,    {RS}},
8545
{"mtivor13",  XSPR(31,467,413), XSPR_MASK, BOOKE, EXT,    {RS}},
8546
{"mtivor14",  XSPR(31,467,414), XSPR_MASK, BOOKE, EXT,    {RS}},
8547
{"mtivor15",  XSPR(31,467,415), XSPR_MASK, BOOKE, EXT,    {RS}},
8548
{"mtptcr",  XSPR(31,467,464), XSPR_MASK, POWER10, EXT,    {RS}},
8549
{"mtusprg0",  XSPR(31,467,496), XSPR_MASK, POWER10, EXT,    {RS}},
8550
{"mtusprg1",  XSPR(31,467,497), XSPR_MASK, POWER10, EXT,    {RS}},
8551
{"mturmor", XSPR(31,467,505), XSPR_MASK, POWER10, EXT,    {RS}},
8552
{"mtusrr0", XSPR(31,467,506), XSPR_MASK, POWER10, EXT,    {RS}},
8553
{"mtusrr1", XSPR(31,467,507), XSPR_MASK, POWER10, EXT,    {RS}},
8554
{"mtsmfctrl", XSPR(31,467,511), XSPR_MASK, POWER10, EXT,    {RS}},
8555
{"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE,  EXT,    {RS}},
8556
{"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, EXT,    {RS}},
8557
{"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, EXT,    {RS}},
8558
{"mtivor32",  XSPR(31,467,528), XSPR_MASK, PPCSPE|E6500, EXT,   {RS}},
8559
{"mtivor33",  XSPR(31,467,529), XSPR_MASK, PPCSPE|E6500, EXT,   {RS}},
8560
{"mtivor34",  XSPR(31,467,530), XSPR_MASK, PPCSPE,  EXT,    {RS}},
8561
{"mtivor35",  XSPR(31,467,531), XSPR_MASK, PPCPMR,  EXT,    {RS}},
8562
{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC,  TITAN|EXT,  {SPRBAT, RS}},
8563
{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC,  TITAN|EXT,  {SPRBAT, RS}},
8564
{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC,  TITAN|EXT,  {SPRBAT, RS}},
8565
{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC,  TITAN|EXT,  {SPRBAT, RS}},
8566
{"mtmcsrr0",  XSPR(31,467,570), XSPR_MASK, PPCRFMCI,  EXT,    {RS}},
8567
{"mtmcsrr1",  XSPR(31,467,571), XSPR_MASK, PPCRFMCI,  EXT,    {RS}},
8568
{"mtmcsr",  XSPR(31,467,572), XSPR_MASK, PPCRFMCI,  EXT,    {RS}},
8569
{"mtummcrae", XSPR(31,467,739), XSPR_MASK, FUTURE,  EXT,    {RS}},
8570
{"mtummcr2e", XSPR(31,467,741), XSPR_MASK, FUTURE,  EXT,    {RS}},
8571
{"mtmmcr2e",  XSPR(31,467,741), XSPR_MASK, FUTURE,  EXT,    {RS}},
8572
{"mtsier2", XSPR(31,467,752), XSPR_MASK, POWER10, EXT,    {RS}},
8573
{"mtsier3", XSPR(31,467,753), XSPR_MASK, POWER10, EXT,    {RS}},
8574
{"mtmmcr3", XSPR(31,467,754), XSPR_MASK, POWER10, EXT,    {RS}},
8575
{"mtmmcrae",  XSPR(31,467,755), XSPR_MASK, FUTURE,  EXT,    {RS}},
8576
{"mtmmcr1e",  XSPR(31,467,756), XSPR_MASK, FUTURE,  EXT,    {RS}},
8577
{"mtmmcr3e",  XSPR(31,467,758), XSPR_MASK, FUTURE,  EXT,    {RS}},
8578
{"mtummcr2",  XSPR(31,467,769), XSPR_MASK, POWER9,  EXT,    {RS}},
8579
{"mtmmcr2", XSPR(31,467,769), XSPR_MASK, POWER9,  EXT,    {RS}},
8580
{"mtummcra",  XSPR(31,467,770), XSPR_MASK, POWER9,  EXT,    {RS}},
8581
{"mtupmc1", XSPR(31,467,771), XSPR_MASK, POWER9,  EXT,    {RS}},
8582
{"mtupmc2", XSPR(31,467,772), XSPR_MASK, POWER9,  EXT,    {RS}},
8583
{"mtupmc3", XSPR(31,467,773), XSPR_MASK, POWER9,  EXT,    {RS}},
8584
{"mtupmc4", XSPR(31,467,774), XSPR_MASK, POWER9,  EXT,    {RS}},
8585
{"mtupmc5", XSPR(31,467,775), XSPR_MASK, POWER9,  EXT,    {RS}},
8586
{"mtupmc6", XSPR(31,467,776), XSPR_MASK, POWER9,  EXT,    {RS}},
8587
{"mtupmc7", XSPR(31,467,777), XSPR_MASK, FUTURE,  EXT,    {RS}},
8588
{"mtupmc8", XSPR(31,467,778), XSPR_MASK, FUTURE,  EXT,    {RS}},
8589
{"mtummcr0",  XSPR(31,467,779), XSPR_MASK, POWER9,  EXT,    {RS}},
8590
{"mtsier",  XSPR(31,467,784), XSPR_MASK, POWER10, EXT,    {RS}},
8591
{"mtmmcra", XSPR(31,467,786), XSPR_MASK, POWER7,  EXT,    {RS}},
8592
{"mtpmc1",  XSPR(31,467,787), XSPR_MASK, POWER7,  EXT,    {RS}},
8593
{"mtpmc2",  XSPR(31,467,788), XSPR_MASK, POWER7,  EXT,    {RS}},
8594
{"mtpmc3",  XSPR(31,467,789), XSPR_MASK, POWER7,  EXT,    {RS}},
8595
{"mtpmc4",  XSPR(31,467,790), XSPR_MASK, POWER7,  EXT,    {RS}},
8596
{"mtpmc5",  XSPR(31,467,791), XSPR_MASK, POWER7,  EXT,    {RS}},
8597
{"mtpmc6",  XSPR(31,467,792), XSPR_MASK, POWER7,  EXT,    {RS}},
8598
{"mtpmc7",  XSPR(31,467,793), XSPR_MASK, FUTURE,  EXT,    {RS}},
8599
{"mtpmc8",  XSPR(31,467,794), XSPR_MASK, FUTURE,  EXT,    {RS}},
8600
{"mtmmcr0", XSPR(31,467,795), XSPR_MASK, POWER7,  EXT,    {RS}},
8601
{"mtsiar",  XSPR(31,467,796), XSPR_MASK, POWER10, EXT,    {RS}},
8602
{"mtsdar",  XSPR(31,467,797), XSPR_MASK, POWER10, EXT,    {RS}},
8603
{"mtmmcr1", XSPR(31,467,798), XSPR_MASK, POWER7,  EXT,    {RS}},
8604
{"mtbescrs",  XSPR(31,467,800), XSPR_MASK, POWER9,  EXT,    {RS}},
8605
{"mtbescrsu", XSPR(31,467,801), XSPR_MASK, POWER9,  EXT,    {RS}},
8606
{"mtbescrr",  XSPR(31,467,802), XSPR_MASK, POWER9,  EXT,    {RS}},
8607
{"mtbescrru", XSPR(31,467,803), XSPR_MASK, POWER9,  EXT,    {RS}},
8608
{"mtebbhr", XSPR(31,467,804), XSPR_MASK, POWER9,  EXT,    {RS}},
8609
{"mtebbrr", XSPR(31,467,805), XSPR_MASK, POWER9,  EXT,    {RS}},
8610
{"mtbescr", XSPR(31,467,806), XSPR_MASK, POWER9,  EXT,    {RS}},
8611
{"mttar", XSPR(31,467,815), XSPR_MASK, POWER9,  EXT,    {RS}},
8612
{"mtasdr",  XSPR(31,467,816), XSPR_MASK, POWER10, EXT,    {RS}},
8613
{"mtpsscr", XSPR(31,467,823), XSPR_MASK, POWER10, EXT,    {RS}},
8614
{"mtic",  XSPR(31,467,848), XSPR_MASK, POWER8,  EXT,    {RS}},
8615
{"mtvtb", XSPR(31,467,849), XSPR_MASK, POWER8,  EXT,    {RS}},
8616
{"mthpsscr",  XSPR(31,467,855), XSPR_MASK, POWER10, EXT,    {RS}},
8617
{"mtivndx", XSPR(31,467,880), XSPR_MASK, TITAN, EXT,    {RS}},
8618
{"mtdvndx", XSPR(31,467,881), XSPR_MASK, TITAN, EXT,    {RS}},
8619
{"mtivlim", XSPR(31,467,882), XSPR_MASK, TITAN, EXT,    {RS}},
8620
{"mtdvlim", XSPR(31,467,883), XSPR_MASK, TITAN, EXT,    {RS}},
8621
{"mtclcsr", XSPR(31,467,884), XSPR_MASK, TITAN, EXT,    {RS}},
8622
{"mtccr1",  XSPR(31,467,888), XSPR_MASK, TITAN, EXT,    {RS}},
8623
{"mtppr", XSPR(31,467,896), XSPR_MASK, POWER5,  EXT,    {RS}},
8624
{"mtppr32", XSPR(31,467,898), XSPR_MASK, POWER5,  EXT,    {RS}},
8625
{"mtgqr", XSPR(31,467,912), XSPRGQR_MASK, PPCPS,  EXT,    {SPRGQR, RS}},
8626
{"mthid2",  XSPR(31,467,920), XSPR_MASK, GEKKO, EXT,    {RS}},
8627
{"mtwpar",  XSPR(31,467,921), XSPR_MASK, GEKKO, EXT,    {RS}},
8628
{"mtdmau",  XSPR(31,467,922), XSPR_MASK, GEKKO, EXT,    {RS}},
8629
{"mtdmal",  XSPR(31,467,923), XSPR_MASK, GEKKO, EXT,    {RS}},
8630
{"mtummcr0",  XSPR(31,467,936), XSPR_MASK, PPC750,  EXT,    {RS}},
8631
{"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750,  EXT,    {RS}},
8632
{"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750,  EXT,    {RS}},
8633
{"mtusia",  XSPR(31,467,939), XSPR_MASK, PPC750,  EXT,    {RS}},
8634
{"mtummcr1",  XSPR(31,467,940), XSPR_MASK, PPC750,  EXT,    {RS}},
8635
{"mtupmc3", XSPR(31,467,941), XSPR_MASK, PPC750,  EXT,    {RS}},
8636
{"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750,  EXT,    {RS}},
8637
{"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403,  EXT,    {RS}},
8638
{"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403,  EXT,    {RS}},
8639
{"mtrmmucr",  XSPR(31,467,946), XSPR_MASK, TITAN, EXT,    {RS}},
8640
{"mtccr0",  XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, EXT,   {RS}},
8641
{"mtiac3",  XSPR(31,467,948), XSPR_MASK, PPC405,  EXT,    {RS}},
8642
{"mtiac4",  XSPR(31,467,949), XSPR_MASK, PPC405,  EXT,    {RS}},
8643
{"mtdvc1",  XSPR(31,467,950), XSPR_MASK, PPC405,  EXT,    {RS}},
8644
{"mtdvc2",  XSPR(31,467,951), XSPR_MASK, PPC405,  EXT,    {RS}},
8645
{"mtmmcr0", XSPR(31,467,952), XSPR_MASK, PPC750,  EXT,    {RS}},
8646
{"mtpmc1",  XSPR(31,467,953), XSPR_MASK, PPC750,  EXT,    {RS}},
8647
{"mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403,  EXT,    {RS}},
8648
{"mtdcwr",  XSPR(31,467,954), XSPR_MASK, PPC403,  EXT,    {RS}},
8649
{"mtpmc2",  XSPR(31,467,954), XSPR_MASK, PPC750,  EXT,    {RS}},
8650
{"mtsia", XSPR(31,467,955), XSPR_MASK, PPC750,  EXT,    {RS}},
8651
{"mtsler",  XSPR(31,467,955), XSPR_MASK, PPC405,  EXT,    {RS}},
8652
{"mtmmcr1", XSPR(31,467,956), XSPR_MASK, PPC750,  EXT,    {RS}},
8653
{"mtsu0r",  XSPR(31,467,956), XSPR_MASK, PPC405,  EXT,    {RS}},
8654
{"mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405,  EXT,    {RS}},
8655
{"mtpmc3",  XSPR(31,467,957), XSPR_MASK, PPC750,  EXT,    {RS}},
8656
{"mtpmc4",  XSPR(31,467,958), XSPR_MASK, PPC750,  EXT,    {RS}},
8657
{"mticdbdr",  XSPR(31,467,979), XSPR_MASK, PPC403,  EXT,    {RS}},
8658
{"mtesr", XSPR(31,467,980), XSPR_MASK, PPC403,  EXT,    {RS}},
8659
{"mtdear",  XSPR(31,467,981), XSPR_MASK, PPC403,  EXT,    {RS}},
8660
{"mtevpr",  XSPR(31,467,982), XSPR_MASK, PPC403,  EXT,    {RS}},
8661
{"mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403,  EXT,    {RS}},
8662
{"mttsr", XSPR(31,467,984), XSPR_MASK, PPC403,  EXT,    {RS}},
8663
{"mttcr", XSPR(31,467,986), XSPR_MASK, PPC403,  EXT,    {RS}},
8664
{"mtpit", XSPR(31,467,987), XSPR_MASK, PPC403,  EXT,    {RS}},
8665
{"mttbhi",  XSPR(31,467,988), XSPR_MASK, PPC403,  EXT,    {RS}},
8666
{"mttblo",  XSPR(31,467,989), XSPR_MASK, PPC403,  EXT,    {RS}},
8667
{"mtsrr2",  XSPR(31,467,990), XSPR_MASK, PPC403,  EXT,    {RS}},
8668
{"mtsrr3",  XSPR(31,467,991), XSPR_MASK, PPC403,  EXT,    {RS}},
8669
{"mtdbsr",  XSPR(31,467,1008), XSPR_MASK, PPC403, EXT,    {RS}},
8670
{"mthid0",  XSPR(31,467,1008), XSPR_MASK, GEKKO,  EXT,    {RS}},
8671
{"mthid1",  XSPR(31,467,1009), XSPR_MASK, GEKKO,  EXT,    {RS}},
8672
{"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, EXT,    {RS}},
8673
{"mtiabr",  XSPR(31,467,1010), XSPR_MASK, GEKKO,  EXT,    {RS}},
8674
{"mthid4",  XSPR(31,467,1011), XSPR_MASK, BROADWAY, EXT,    {RS}},
8675
{"mtdbdr",  XSPR(31,467,1011), XSPR_MASK, TITAN,  EXT,    {RS}},
8676
{"mtiac1",  XSPR(31,467,1012), XSPR_MASK, PPC403, EXT,    {RS}},
8677
{"mtiac2",  XSPR(31,467,1013), XSPR_MASK, PPC403, EXT,    {RS}},
8678
{"mtdabr",  XSPR(31,467,1013), XSPR_MASK, PPC750, EXT,    {RS}},
8679
{"mtdac1",  XSPR(31,467,1014), XSPR_MASK, PPC403, EXT,    {RS}},
8680
{"mtdac2",  XSPR(31,467,1015), XSPR_MASK, PPC403, EXT,    {RS}},
8681
{"mtl2cr",  XSPR(31,467,1017), XSPR_MASK, PPC750, EXT,    {RS}},
8682
{"mtdccr",  XSPR(31,467,1018), XSPR_MASK, PPC403, EXT,    {RS}},
8683
{"mticcr",  XSPR(31,467,1019), XSPR_MASK, PPC403, EXT,    {RS}},
8684
{"mtictc",  XSPR(31,467,1019), XSPR_MASK, PPC750, EXT,    {RS}},
8685
{"mtpbl1",  XSPR(31,467,1020), XSPR_MASK, PPC403, EXT,    {RS}},
8686
{"mtthrm1", XSPR(31,467,1020), XSPR_MASK, PPC750, EXT,    {RS}},
8687
{"mtpbu1",  XSPR(31,467,1021), XSPR_MASK, PPC403, EXT,    {RS}},
8688
{"mtthrm2", XSPR(31,467,1021), XSPR_MASK, PPC750, EXT,    {RS}},
8689
{"mtpbl2",  XSPR(31,467,1022), XSPR_MASK, PPC403, EXT,    {RS}},
8690
{"mtthrm3", XSPR(31,467,1022), XSPR_MASK, PPC750, EXT,    {RS}},
8691
{"mtpbu2",  XSPR(31,467,1023), XSPR_MASK, PPC403, EXT,    {RS}},
8692
{"mtspr", X(31,467),  X_MASK,      COM, 0,    {SPR, RS}},
8693
8694
{"dcbi",  X(31,470),  XRT_MASK,    PPC, 0,    {RA0, RB}},
8695
8696
{"nand",  XRC(31,476,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
8697
{"nand.", XRC(31,476,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
8698
8699
{"setnbcr", X(31,480),  XRB_MASK,    POWER10, 0,    {RT, BI}},
8700
8701
{"dsn",   X(31,483),  XRT_MASK,    E500MC,  0,    {RA, RB}},
8702
8703
{"dcread",  X(31,486),  X_MASK,  PPC403|PPC440, PPCA2,    {RT, RA0, RB}},
8704
8705
{"icbtls",  X(31,486),  X_MASK,  PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
8706
8707
{"stvxl", X(31,487),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
8708
8709
{"nabs",  XO(31,488,0,0), XORB_MASK,   M601,  0,    {RT, RA}},
8710
{"nabs.", XO(31,488,0,1), XORB_MASK,   M601,  0,    {RT, RA}},
8711
8712
{"divd",  XO(31,489,0,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8713
{"divd.", XO(31,489,0,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8714
8715
{"divw",  XO(31,491,0,0), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8716
{"divw.", XO(31,491,0,1), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8717
8718
{"icbtlse", X(31,494),  X_MASK,      PPCCHLK, E500MC,   {CT, RA, RB}},
8719
8720
{"slbia", X(31,498),  0xff1fffff,  POWER6,  0,    {IH}},
8721
{"slbia", X(31,498),  0xffffffff,  PPC64, POWER6,   {0}},
8722
8723
{"cli",   X(31,502),  XRB_MASK,    POWER, 0,    {RT, RA}},
8724
8725
{"popcntd", X(31,506),  XRB_MASK, POWER7|PPCA2, 0,    {RA, RS}},
8726
8727
{"cmpb",  X(31,508),  X_MASK, POWER6|PPCA2|PPC476, 0,   {RA, RS, RB}},
8728
8729
{"mcrxr", X(31,512),  XBFRARB_MASK, COM,  POWER7,   {BF}},
8730
8731
{"lbdcbx",  X(31,514),  X_MASK,      E200Z4,  0,    {RT, RA, RB}},
8732
{"lbdx",  X(31,515),  X_MASK,  E500MC|E200Z4, 0,    {RT, RA, RB}},
8733
8734
{"bblels",  X(31,518),  X_MASK,      PPCBRLK, 0,    {0}},
8735
8736
{"lvlx",  X(31,519),  X_MASK,      CELL,  0,    {VD, RA0, RB}},
8737
{"lbfcmux", APU(31,519,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8738
8739
{"subfco",  XO(31,8,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8740
{"sfo",   XO(31,8,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8741
{"subco", XO(31,8,1,0), XO_MASK,     PPCCOM,  EXT,    {RT, RB, RA}},
8742
{"subfco.", XO(31,8,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8743
{"sfo.",  XO(31,8,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8744
{"subco.",  XO(31,8,1,1), XO_MASK,     PPCCOM,  EXT,    {RT, RB, RA}},
8745
8746
{"addco", XO(31,10,1,0),  XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8747
{"ao",    XO(31,10,1,0),  XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8748
{"addco.",  XO(31,10,1,1),  XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8749
{"ao.",   XO(31,10,1,1),  XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8750
8751
{"lxsspx",  X(31,524),  XX1_MASK,    PPCVSX2, 0,    {XT6, RA0, RB}},
8752
{"lxvrl", X(31,525),  XX1_MASK,    PPCVSXF, 0,    {XT6, RA0, RB}},
8753
8754
{"clcs",  X(31,531),  XRB_MASK,    M601,  0,    {RT, RA}},
8755
8756
{"ldbrx", X(31,532),  X_MASK, CELL|POWER7|PPCA2, 0,   {RT, RA0, RB}},
8757
8758
{"lswx",  X(31,533),  X_MASK,      PPCCOM,  E500|E500MC,  {RT, RAX, RBX}},
8759
{"lsx",   X(31,533),  X_MASK,      PWRCOM,  0,    {RT, RA, RB}},
8760
8761
{"lwbrx", X(31,534),  X_MASK,      PPCCOM,  0,    {RT, RA0, RB}},
8762
{"lbrx",  X(31,534),  X_MASK,      PWRCOM,  0,    {RT, RA, RB}},
8763
8764
{"lfsx",  X(31,535),  X_MASK,      COM, PPCEFS,   {FRT, RA0, RB}},
8765
8766
{"srw",   XRC(31,536,0),  X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
8767
{"sr",    XRC(31,536,0),  X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
8768
{"srw.",  XRC(31,536,1),  X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
8769
{"sr.",   XRC(31,536,1),  X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
8770
8771
{"rrib",  XRC(31,537,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8772
{"rrib.", XRC(31,537,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8773
8774
{"cnttzw",  XRC(31,538,0),  XRB_MASK,    POWER9,  0,    {RA, RS}},
8775
{"cnttzw.", XRC(31,538,1),  XRB_MASK,    POWER9,  0,    {RA, RS}},
8776
8777
{"srd",   XRC(31,539,0),  X_MASK,      PPC64, 0,    {RA, RS, RB}},
8778
{"srd.",  XRC(31,539,1),  X_MASK,      PPC64, 0,    {RA, RS, RB}},
8779
8780
{"maskir",  XRC(31,541,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8781
{"maskir.", XRC(31,541,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8782
8783
{"lhdcbx",  X(31,546),  X_MASK,      E200Z4,  0,    {RT, RA, RB}},
8784
{"lhdx",  X(31,547),  X_MASK,  E500MC|E200Z4, 0,    {RT, RA, RB}},
8785
8786
{"lvtrx", X(31,549),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8787
8788
{"bbelr", X(31,550),  X_MASK,      PPCBRLK, 0,    {0}},
8789
8790
{"lvrx",  X(31,551),  X_MASK,      CELL,  0,    {VD, RA0, RB}},
8791
{"lhfcmux", APU(31,551,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8792
8793
{"subfo", XO(31,40,1,0),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
8794
{"subo",  XO(31,40,1,0),  XO_MASK,     PPC, EXT,    {RT, RB, RA}},
8795
{"subfo.",  XO(31,40,1,1),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
8796
{"subo.", XO(31,40,1,1),  XO_MASK,     PPC, EXT,    {RT, RB, RA}},
8797
8798
{"lxvrll",  X(31,557),  XX1_MASK,    PPCVSXF, 0,    {XT6, RA0, RB}},
8799
8800
{"tlbsyncio", X(31,564),  XRARB_MASK,  FUTURE,  0,    {RS}},
8801
8802
{"tlbsync", X(31,566),  0xffffffff,  PPC, 0,    {0}},
8803
8804
{"lfsux", X(31,567),  X_MASK,      COM, PPCEFS,   {FRT, RAS, RB}},
8805
8806
{"cnttzd",  XRC(31,570,0),  XRB_MASK,    POWER9,  0,    {RA, RS}},
8807
{"cnttzd.", XRC(31,570,1),  XRB_MASK,    POWER9,  0,    {RA, RS}},
8808
8809
{"cnttzdm", X(31,571),  X_MASK,      POWER10, 0,    {RA, RS, RB}},
8810
8811
{"mcrxrx",  X(31,576),     XBFRARB_MASK, POWER9,  0,    {BF}},
8812
8813
{"lwdcbx",  X(31,578),  X_MASK,      E200Z4,  0,    {RT, RA, RB}},
8814
{"lwdx",  X(31,579),  X_MASK,  E500MC|E200Z4, 0,    {RT, RA, RB}},
8815
8816
{"lvtlx", X(31,581),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8817
8818
{"lwat",  X(31,582),  X_MASK,      POWER9,  0,    {RT, RA0, FC}},
8819
8820
{"lwfcmux", APU(31,583,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8821
8822
{"lxsdx", X(31,588),  XX1_MASK,    PPCVSX,  0,    {XT6, RA0, RB}},
8823
{"lxvprl",  X(31,589),  XX1_MASK,    PPCVSXF, 0,    {XTP, RA0, RB}},
8824
8825
{"mfsr",  X(31,595), XRB_MASK|(1<<20), COM, NON32,    {RT, SR}},
8826
8827
{"ptesyncio", X(31,596),  XRARB_MASK,  FUTURE,  0,    {RS}},
8828
8829
{"lswi",  X(31,597),  X_MASK,      PPCCOM,  E500|E500MC,  {RT, RAX, NBI}},
8830
{"lsi",   X(31,597),  X_MASK,      PWRCOM,  0,    {RT, RA0, NB}},
8831
8832
{"hwsync",  XSYNC(31,598,0), 0xffffffff, POWER4,  BOOKE|PPC476|EXT, {0}},
8833
{"lwsync",  XSYNC(31,598,1), 0xffffffff, PPC, E500|EXT,   {0}},
8834
{"ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, EXT,      {0}},
8835
{"phwsync", XSYNCLS(31,598,4,0), 0xffffffff, POWER10, EXT,      {0}},
8836
{"plwsync", XSYNCLS(31,598,5,0), 0xffffffff, POWER10, EXT,      {0}},
8837
{"stncisync", XSYNCLS(31,598,1,1), 0xffffffff, POWER10, EXT,      {0}},
8838
{"stcisync",  XSYNCLS(31,598,0,2), 0xffffffff, POWER10, EXT,      {0}},
8839
{"stsync",  XSYNCLS(31,598,0,3), 0xffffffff, POWER10, EXT,      {0}},
8840
{"sync",  X(31,598),     XSYNCLS_MASK, POWER10, BOOKE|PPC476,   {LS3, SC2}},
8841
{"sync",  X(31,598),     XSYNCLE_MASK, E6500, 0,      {LS, ESYNC}},
8842
{"sync",  X(31,598),     XSYNC_MASK,   PPCCOM,  POWER10|BOOKE|PPC476, {LS}},
8843
{"msync", X(31,598),     0xffffffff, BOOKE|PPCA2|PPC476, 0,   {0}},
8844
{"sync",  X(31,598),     0xffffffff,   BOOKE|PPC476, E6500,   {0}},
8845
{"lwsync",  X(31,598),     0xffffffff,   E500,  0,      {0}},
8846
{"dcs",   X(31,598),     0xffffffff,   PWRCOM,  0,      {0}},
8847
8848
{"lfdx",  X(31,599),  X_MASK,      COM, PPCEFS,   {FRT, RA0, RB}},
8849
8850
{"mffgpr",  XRC(31,607,0),  XRA_MASK,    POWER6,  POWER7,   {FRT, RB}},
8851
{"lfdepx",  X(31,607),  X_MASK,   E500MC|PPCA2, 0,    {FRT, RA0, RB}},
8852
8853
{"lddx",  X(31,611),  X_MASK,      E500MC,  0,    {RT, RA, RB}},
8854
8855
{"lvswx", X(31,613),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8856
8857
{"ldat",  X(31,614),  X_MASK,      POWER9,  0,    {RT, RA0, FC}},
8858
8859
{"lqfcmux", APU(31,615,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8860
8861
{"nego",  XO(31,104,1,0), XORB_MASK,   COM, 0,    {RT, RA}},
8862
{"nego.", XO(31,104,1,1), XORB_MASK,   COM, 0,    {RT, RA}},
8863
8864
{"mulo",  XO(31,107,1,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
8865
{"mulo.", XO(31,107,1,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
8866
8867
{"lxvprll", X(31,621),  XX1_MASK,    PPCVSXF, 0,    {XTP, RA0, RB}},
8868
8869
{"mfsri", X(31,627),  X_MASK,      M601,  0,    {RT, RA, RB}},
8870
8871
{"dclst", X(31,630),  XRB_MASK,    M601,  0,    {RS, RA}},
8872
8873
{"lfdux", X(31,631),  X_MASK,      COM, PPCEFS,   {FRT, RAS, RB}},
8874
8875
{"stbdcbx", X(31,642),  X_MASK,      E200Z4,  0,    {RS, RA, RB}},
8876
{"stbdx", X(31,643),  X_MASK,  E500MC|E200Z4, 0,    {RS, RA, RB}},
8877
8878
{"stvlx", X(31,647),  X_MASK,      CELL,  0,    {VS, RA0, RB}},
8879
{"stbfcmux",  APU(31,647,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8880
8881
{"stxsspx", X(31,652),  XX1_MASK,    PPCVSX2, 0,    {XS6, RA0, RB}},
8882
{"stxvrl",  X(31,653),  XX1_MASK,    PPCVSXF, 0,    {XS6, RA0, RB}},
8883
8884
{"tbegin.", XRC(31,654,1), XRTLRARB_MASK, PPCHTM, 0,    {HTM_R}},
8885
8886
{"subfeo",  XO(31,136,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8887
{"sfeo",  XO(31,136,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8888
{"subfeo.", XO(31,136,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8889
{"sfeo.", XO(31,136,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8890
8891
{"addeo", XO(31,138,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8892
{"aeo",   XO(31,138,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8893
{"addeo.",  XO(31,138,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8894
{"aeo.",  XO(31,138,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8895
8896
{"hashstp", X(31,658),  XRC_MASK,    POWER8,  0,    {RB, DW, RAS}},
8897
8898
{"mfsrin",  X(31,659),  XRA_MASK,    PPC, NON32,    {RT, RB}},
8899
8900
{"stdbrx",  X(31,660),  X_MASK, CELL|POWER7|PPCA2, 0,   {RS, RA0, RB}},
8901
8902
{"stswx", X(31,661),  X_MASK,      PPCCOM,  E500|E500MC,  {RS, RA0, RB}},
8903
{"stsx",  X(31,661),  X_MASK,      PWRCOM,  0,    {RS, RA0, RB}},
8904
8905
{"stwbrx",  X(31,662),  X_MASK,      PPCCOM,  0,    {RS, RA0, RB}},
8906
{"stbrx", X(31,662),  X_MASK,      PWRCOM,  0,    {RS, RA0, RB}},
8907
8908
{"stfsx", X(31,663),  X_MASK,      COM, PPCEFS,   {FRS, RA0, RB}},
8909
8910
{"srq",   XRC(31,664,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8911
{"srq.",  XRC(31,664,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8912
8913
{"sre",   XRC(31,665,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8914
{"sre.",  XRC(31,665,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8915
8916
{"sthdcbx", X(31,674),  X_MASK,      E200Z4,  0,    {RS, RA, RB}},
8917
{"sthdx", X(31,675),  X_MASK,  E500MC|E200Z4, 0,    {RS, RA, RB}},
8918
8919
{"stvfrx",  X(31,677),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8920
8921
{"stvrx", X(31,679),  X_MASK,      CELL,  0,    {VS, RA0, RB}},
8922
{"sthfcmux",  APU(31,679,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8923
8924
{"stxvrll", X(31,685),  XX1_MASK,    PPCVSXF, 0,    {XS6, RA0, RB}},
8925
8926
{"tendall.",  XRC(31,686,1)|(1<<25), XRTRARB_MASK, PPCHTM, 0,   {0}},
8927
{"tend.", XRC(31,686,1), XRTARARB_MASK, PPCHTM, 0,    {HTM_A}},
8928
8929
{"hashchkp",  X(31,690),  XRC_MASK,    POWER8,  0,    {RB, DW, RAS}},
8930
8931
{"stbcx.",  XRC(31,694,1),  X_MASK,   POWER8|E6500, 0,    {RS, RA0, RB}},
8932
8933
{"stfsux",  X(31,695),  X_MASK,      COM, PPCEFS,   {FRS, RAS, RB}},
8934
8935
{"sriq",  XRC(31,696,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
8936
{"sriq.", XRC(31,696,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
8937
8938
{"stwdcbx", X(31,706),  X_MASK,      E200Z4,  0,    {RS, RA, RB}},
8939
{"stwdx", X(31,707),  X_MASK,  E500MC|E200Z4, 0,    {RS, RA, RB}},
8940
8941
{"stvflx",  X(31,709),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8942
8943
{"stwat", X(31,710),  X_MASK,      POWER9,  0,    {RS, RA0, FC}},
8944
8945
{"stwfcmux",  APU(31,711,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8946
8947
{"stxsdx",  X(31,716),  XX1_MASK,    PPCVSX,  0,    {XS6, RA0, RB}},
8948
{"stxvprl", X(31,717),  XX1_MASK,    PPCVSXF, 0,    {XSP, RA0, RB}},
8949
8950
{"tcheck",  X(31,718),   XRTBFRARB_MASK, PPCHTM,  0,    {BF}},
8951
8952
{"subfzeo", XO(31,200,1,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8953
{"sfzeo", XO(31,200,1,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8954
{"subfzeo.",  XO(31,200,1,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8955
{"sfzeo.",  XO(31,200,1,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8956
8957
{"addzeo",  XO(31,202,1,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8958
{"azeo",  XO(31,202,1,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8959
{"addzeo.", XO(31,202,1,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8960
{"azeo.", XO(31,202,1,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8961
8962
{"hashst",  X(31,722),  XRC_MASK,    POWER8,  0,    {RB, DW, RAS}},
8963
8964
{"stswi", X(31,725),  X_MASK,      PPCCOM,  E500|E500MC,  {RS, RA0, NB}},
8965
{"stsi",  X(31,725),  X_MASK,      PWRCOM,  0,    {RS, RA0, NB}},
8966
8967
{"sthcx.",  XRC(31,726,1),  X_MASK,   POWER8|E6500, 0,    {RS, RA0, RB}},
8968
8969
{"stfdx", X(31,727),  X_MASK,      COM, PPCEFS,   {FRS, RA0, RB}},
8970
8971
{"srlq",  XRC(31,728,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8972
{"srlq.", XRC(31,728,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8973
8974
{"sreq",  XRC(31,729,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8975
{"sreq.", XRC(31,729,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8976
8977
{"mftgpr",  XRC(31,735,0),  XRA_MASK,    POWER6,  POWER7,   {RT, FRB}},
8978
{"stfdepx", X(31,735),  X_MASK,   E500MC|PPCA2, 0,    {FRS, RA0, RB}},
8979
8980
{"stddx", X(31,739),  X_MASK,      E500MC,  0,    {RS, RA, RB}},
8981
8982
{"stvswx",  X(31,741),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8983
8984
{"stdat", X(31,742),  X_MASK,      POWER9,  0,    {RS, RA0, FC}},
8985
8986
{"stqfcmux",  APU(31,743,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8987
8988
{"subfmeo", XO(31,232,1,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8989
{"sfmeo", XO(31,232,1,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8990
{"subfmeo.",  XO(31,232,1,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8991
{"sfmeo.",  XO(31,232,1,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8992
8993
{"mulldo",  XO(31,233,1,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8994
{"mulldo.", XO(31,233,1,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8995
8996
{"addmeo",  XO(31,234,1,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8997
{"ameo",  XO(31,234,1,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8998
{"addmeo.", XO(31,234,1,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8999
{"ameo.", XO(31,234,1,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
9000
9001
{"mullwo",  XO(31,235,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
9002
{"mulso", XO(31,235,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
9003
{"mullwo.", XO(31,235,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
9004
{"mulso.",  XO(31,235,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
9005
9006
{"stxvprll",  X(31,749),  XX1_MASK,    PPCVSXF, 0,    {XSP, RA0, RB}},
9007
9008
{"tsuspend.", XRCL(31,750,0,1), XRTRARB_MASK,PPCHTM,  EXT,    {0}},
9009
{"tresume.",  XRCL(31,750,1,1), XRTRARB_MASK,PPCHTM,  EXT,    {0}},
9010
{"tsr.",  XRC(31,750,1),    XRTLRARB_MASK,PPCHTM, 0,    {L}},
9011
9012
{"hashchk", X(31,754),  XRC_MASK,    POWER8,  0,    {RB, DW, RAS}},
9013
9014
{"darn",  X(31,755),  XLRAND_MASK, POWER9,  0,    {RT, LRAND}},
9015
9016
{"dcba",  X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
9017
{"dcbal", XOPL(31,758,1), XRT_MASK,    E500MC,  0,    {RA0, RB}},
9018
9019
{"stfdux",  X(31,759),  X_MASK,      COM, PPCEFS,   {FRS, RAS, RB}},
9020
9021
{"srliq", XRC(31,760,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
9022
{"srliq.",  XRC(31,760,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
9023
9024
{"lvsm",  X(31,773),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
9025
9026
{"copy",  XOPL(31,774,1), XRT_MASK,    POWER9,  0,    {RA0, RB}},
9027
9028
{"stvepxl", X(31,775),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
9029
{"lvlxl", X(31,775),  X_MASK,      CELL,  0,    {VD, RA0, RB}},
9030
{"ldfcmux", APU(31,775,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
9031
9032
{"dozo",  XO(31,264,1,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
9033
{"dozo.", XO(31,264,1,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
9034
9035
{"addo",  XO(31,266,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
9036
{"caxo",  XO(31,266,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
9037
{"addo.", XO(31,266,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
9038
{"caxo.", XO(31,266,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
9039
9040
{"modsd", X(31,777),  X_MASK,      POWER9,  0,    {RT, RA, RB}},
9041
{"modsw", X(31,779),  X_MASK,      POWER9,  0,    {RT, RA, RB}},
9042
9043
{"lxvw4x",  X(31,780),  XX1_MASK,    PPCVSX,  0,    {XT6, RA0, RB}},
9044
{"lxsibzx", X(31,781),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
9045
9046
{"tabortwc.", XRC(31,782,1),  X_MASK,      PPCHTM,  0,    {TO, RA, RB}},
9047
9048
{"tlbivax", X(31,786),  XRT_MASK, BOOKE|PPCA2|PPC476, 0,  {RA0, RB}},
9049
9050
{"lwzcix",  X(31,789),  X_MASK,      POWER6,  0,    {RT, RA0, RB}},
9051
9052
{"lhbrx", X(31,790),  X_MASK,      COM, 0,    {RT, RA0, RB}},
9053
9054
{"lfdpx", X(31,791),    X_MASK|Q_MASK, POWER6,  POWER7,   {FRTp, RA0, RB}},
9055
{"lfqx",  X(31,791),  X_MASK,      POWER2,  0,    {FRT, RA, RB}},
9056
9057
{"sraw",  XRC(31,792,0),  X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
9058
{"sra",   XRC(31,792,0),  X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
9059
{"sraw.", XRC(31,792,1),  X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
9060
{"sra.",  XRC(31,792,1),  X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
9061
9062
{"srad",  XRC(31,794,0),  X_MASK,      PPC64, 0,    {RA, RS, RB}},
9063
{"srad.", XRC(31,794,1),  X_MASK,      PPC64, 0,    {RA, RS, RB}},
9064
9065
{"evlddepx",    VX (31, 1598),  VX_MASK,     PPCSPE,  0,    {RT, RA, RB}},
9066
{"lfddx", X(31,803),  X_MASK,      E500MC,  0,    {FRT, RA, RB}},
9067
9068
{"lvtrxl",  X(31,805),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
9069
{"ccmclean",  X(31,806),  XRTRARB_MASK,FUTURE,  0,    {0}},
9070
{"stvepx",  X(31,807),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
9071
{"lvrxl", X(31,807),  X_MASK,      CELL,  0,    {VD, RA0, RB}},
9072
9073
{"lxvh8x",  X(31,812),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
9074
{"lxsihzx", X(31,813),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
9075
9076
{"tabortdc.", XRC(31,814,1),  X_MASK,      PPCHTM,  0,    {TO, RA, RB}},
9077
9078
{"rac",   X(31,818),  X_MASK,      M601,  0,    {RT, RA, RB}},
9079
9080
{"erativax",  X(31,819),  X_MASK,      PPCA2, 0,    {RS, RA0, RB}},
9081
9082
{"lhzcix",  X(31,821),  X_MASK,      POWER6,  0,    {RT, RA0, RB}},
9083
9084
{"dss",   XDSS(31,822,0), XDSS_MASK,   PPCVEC,  0,    {STRM}},
9085
{"dssall",  XDSS(31,822,1), XDSS_MASK,   PPCVEC,  0,    {0}},
9086
9087
{"lfqux", X(31,823),  X_MASK,      POWER2,  0,    {FRT, RA, RB}},
9088
9089
{"srawi", XRC(31,824,0),  X_MASK,      PPCCOM,  0,    {RA, RS, SH}},
9090
{"srai",  XRC(31,824,0),  X_MASK,      PWRCOM,  0,    {RA, RS, SH}},
9091
{"srawi.",  XRC(31,824,1),  X_MASK,      PPCCOM,  0,    {RA, RS, SH}},
9092
{"srai.", XRC(31,824,1),  X_MASK,      PWRCOM,  0,    {RA, RS, SH}},
9093
9094
{"sradi", XS(31,413,0), XS_MASK,     PPC64, 0,    {RA, RS, SH6}},
9095
{"sradi.",  XS(31,413,1), XS_MASK,     PPC64, 0,    {RA, RS, SH6}},
9096
9097
{"lvtlxl",  X(31,837),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
9098
9099
{"cpabort", X(31,838),  XRTRARB_MASK,POWER9,  0,    {0}},
9100
9101
{"divo",  XO(31,331,1,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
9102
{"divo.", XO(31,331,1,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
9103
9104
{"lxvd2x",  X(31,844),  XX1_MASK,    PPCVSX,  0,    {XT6, RA0, RB}},
9105
{"lxvx",  X(31,844),  XX1_MASK,    POWER8,  POWER9|PPCVSX3, {XT6, RA0, RB}},
9106
9107
{"tabortwci.",  XRC(31,846,1),  X_MASK,      PPCHTM,  0,    {TO, RA, HTM_SI}},
9108
9109
{"tlbsrx.", XRC(31,850,1),  XRT_MASK,    PPCA2, 0,    {RA0, RB}},
9110
9111
{"slbiag",  X(31,850),  XRLARB_MASK, POWER10, 0,    {RS, A_L}},
9112
{"slbiag",  X(31,850),  XRARB_MASK,  POWER9,  POWER10,  {RS}},
9113
9114
{"slbmfev", X(31,851),  XRLA_MASK,   POWER9,  0,    {RT, RB, A_L}},
9115
{"slbmfev", X(31,851),  XRA_MASK,    PPC64, POWER9,   {RT, RB}},
9116
9117
{"lbzcix",  X(31,853),  X_MASK,      POWER6,  0,    {RT, RA0, RB}},
9118
9119
{"eieio", X(31,854),  0xffffffff,  PPC,   BOOKE|PPCA2|PPC476, {0}},
9120
{"mbar",  X(31,854),  X_MASK,    BOOKE|PPCA2|PPC476, 0, {MO}},
9121
{"eieio", XMBAR(31,854,1),0xffffffff,  E500,  0,    {0}},
9122
{"eieio", X(31,854),  0xffffffff, PPCA2|PPC476, 0,    {0}},
9123
9124
{"lfiwax",  X(31,855),  X_MASK, POWER6|PPCA2|PPC476, 0,   {FRT, RA0, RB}},
9125
9126
{"lvswxl",  X(31,869),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
9127
9128
{"abso",  XO(31,360,1,0), XORB_MASK,   M601,  0,    {RT, RA}},
9129
{"abso.", XO(31,360,1,1), XORB_MASK,   M601,  0,    {RT, RA}},
9130
9131
{"divso", XO(31,363,1,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
9132
{"divso.",  XO(31,363,1,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
9133
9134
{"ccmrl", X(31,870),  XRTRARB_MASK,FUTURE,  0,    {0}},
9135
9136
{"lxvb16x", X(31,876),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
9137
9138
{"lxvpb32x",  X(31,877),  X_MASK,      FUTURE,  0,    {XTP, RA0, RB}},
9139
9140
{"tabortdci.",  XRC(31,878,1),  X_MASK,      PPCHTM,  0,    {TO, RA, HTM_SI}},
9141
9142
{"rmieg", X(31,882),  XRTRA_MASK,  POWER9,  0,    {RB}},
9143
9144
{"ldcix", X(31,885),  X_MASK,      POWER6,  0,    {RT, RA0, RB}},
9145
9146
{"msgsync", X(31,886),  0xffffffff,  POWER9,  0,    {0}},
9147
9148
{"lfiwzx",  X(31,887),  X_MASK,   POWER7|PPCA2, 0,    {FRT, RA0, RB}},
9149
9150
{"extswsli",  XS(31,445,0), XS_MASK,     POWER9,  0,    {RA, RS, SH6}},
9151
{"extswsli.", XS(31,445,1), XS_MASK,     POWER9,  0,    {RA, RS, SH6}},
9152
9153
{"paste.",  XRC(31,902,1),  XLRT_MASK,   POWER10, 0,    {RA0, RB, L1OPT}},
9154
{"paste.",  XRCL(31,902,1,1),XRT_MASK,   POWER9,  POWER10,  {RA0, RB}},
9155
9156
{"stvlxl",  X(31,903),  X_MASK,      CELL,  0,    {VS, RA0, RB}},
9157
{"stdfcmux",  APU(31,903,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
9158
9159
{"divdeuo", XO(31,393,1,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
9160
{"divdeuo.",  XO(31,393,1,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
9161
{"divweuo", XO(31,395,1,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
9162
{"divweuo.",  XO(31,395,1,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
9163
9164
{"stxvw4x", X(31,908),  XX1_MASK,    PPCVSX,  0,    {XS6, RA0, RB}},
9165
{"stxsibx", X(31,909),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
9166
9167
{"tabort.", XRC(31,910,1),  XRTRB_MASK,  PPCHTM,  0,    {RA}},
9168
9169
{"tlbsx", XRC(31,914,0),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
9170
{"tlbsx.",  XRC(31,914,1),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
9171
9172
{"slbmfee", X(31,915),  XRLA_MASK,   POWER9,  0,    {RT, RB, A_L}},
9173
{"slbmfee", X(31,915),  XRA_MASK,    PPC64, POWER9,   {RT, RB}},
9174
9175
{"stwcix",  X(31,917),  X_MASK,      POWER6,  0,    {RS, RA0, RB}},
9176
9177
{"sthbrx",  X(31,918),  X_MASK,      COM, 0,    {RS, RA0, RB}},
9178
9179
{"stfdpx",  X(31,919),    X_MASK|Q_MASK, POWER6,  POWER7,   {FRSp, RA0, RB}},
9180
{"stfqx", X(31,919),  X_MASK,      POWER2,  0,    {FRS, RA0, RB}},
9181
9182
{"sraq",  XRC(31,920,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
9183
{"sraq.", XRC(31,920,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
9184
9185
{"srea",  XRC(31,921,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
9186
{"srea.", XRC(31,921,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
9187
9188
{"extsh", XRC(31,922,0),  XRB_MASK,    PPCCOM,  0,    {RA, RS}},
9189
{"exts",  XRC(31,922,0),  XRB_MASK,    PWRCOM,  0,    {RA, RS}},
9190
{"extsh.",  XRC(31,922,1),  XRB_MASK,    PPCCOM,  0,    {RA, RS}},
9191
{"exts.", XRC(31,922,1),  XRB_MASK,    PWRCOM,  0,    {RA, RS}},
9192
9193
{"evstddepx", VX (31, 1854),  VX_MASK,     PPCSPE,  0,    {RT, RA, RB}},
9194
{"stfddx",  X(31,931),  X_MASK,      E500MC,  0,    {FRS, RA, RB}},
9195
9196
{"stvfrxl", X(31,933),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
9197
9198
{"wclrone", XOPL2(31,934,2),XRT_MASK,    PPCA2, EXT,    {RA0, RB}},
9199
{"wclrall", X(31,934),  XRARB_MASK,  PPCA2, EXT,    {L2}},
9200
{"wclr",  X(31,934),  X_MASK,      PPCA2, 0,    {L2, RA0, RB}},
9201
9202
{"stvrxl",  X(31,935),  X_MASK,      CELL,  0,    {VS, RA0, RB}},
9203
9204
{"divdeo",  XO(31,425,1,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
9205
{"divdeo.", XO(31,425,1,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
9206
{"divweo",  XO(31,427,1,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
9207
{"divweo.", XO(31,427,1,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
9208
9209
{"stxvh8x", X(31,940),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
9210
{"stxsihx", X(31,941),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
9211
9212
{"treclaim.", XRC(31,942,1),  XRTRB_MASK,  PPCHTM,  0,    {RA}},
9213
9214
{"tlbrehi", XTLB(31,946,0), XTLB_MASK,   PPC403,  PPCA2|EXT,  {RT, RA}},
9215
{"tlbrelo", XTLB(31,946,1), XTLB_MASK,   PPC403,  PPCA2|EXT,  {RT, RA}},
9216
{"tlbre", X(31,946),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
9217
9218
{"sthcix",  X(31,949),  X_MASK,      POWER6,  0,    {RS, RA0, RB}},
9219
9220
{"icswepx", XRC(31,950,0),  X_MASK,      PPCA2, 0,    {RS, RA, RB}},
9221
{"icswepx.",  XRC(31,950,1),  X_MASK,      PPCA2, 0,    {RS, RA, RB}},
9222
9223
{"stfqux",  X(31,951),  X_MASK,      POWER2,  0,    {FRS, RA, RB}},
9224
9225
{"sraiq", XRC(31,952,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
9226
{"sraiq.",  XRC(31,952,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
9227
9228
{"extsb", XRC(31,954,0),  XRB_MASK,    PPC, 0,    {RA, RS}},
9229
{"extsb.",  XRC(31,954,1),  XRB_MASK,    PPC, 0,    {RA, RS}},
9230
9231
{"stvflxl", X(31,965),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
9232
9233
{"iccci", X(31,966), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
9234
{"ici",   X(31,966),  XRARB_MASK,  PPCA2|PPC476, 0,   {CT}},
9235
9236
{"divduo",  XO(31,457,1,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
9237
{"divduo.", XO(31,457,1,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
9238
9239
{"divwuo",  XO(31,459,1,0), XO_MASK,     PPC, 0,    {RT, RA, RB}},
9240
{"divwuo.", XO(31,459,1,1), XO_MASK,     PPC, 0,    {RT, RA, RB}},
9241
9242
{"stxvd2x", X(31,972),  XX1_MASK,    PPCVSX,  0,    {XS6, RA0, RB}},
9243
{"stxvx", X(31,972),  XX1_MASK,    POWER8,  POWER9|PPCVSX3, {XS6, RA0, RB}},
9244
9245
{"tlbld", X(31,978),  XRTRA_MASK,  PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}},
9246
{"tlbwehi", XTLB(31,978,0), XTLB_MASK,   PPC403,  EXT,    {RT, RA}},
9247
{"tlbwelo", XTLB(31,978,1), XTLB_MASK,   PPC403,  EXT,    {RT, RA}},
9248
{"tlbwe", X(31,978),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
9249
9250
{"slbfee.", XRC(31,979,1),  XRA_MASK,    POWER6,  0,    {RT, RB}},
9251
9252
{"stbcix",  X(31,981),  X_MASK,      POWER6,  0,    {RS, RA0, RB}},
9253
9254
{"icbi",  X(31,982),  XRT_MASK,    PPC, 0,    {RA0, RB}},
9255
9256
{"stfiwx",  X(31,983),  X_MASK,      PPC, PPCEFS,   {FRS, RA0, RB}},
9257
9258
{"extsw", XRC(31,986,0),  XRB_MASK,    PPC64, 0,    {RA, RS}},
9259
{"extsw.",  XRC(31,986,1),  XRB_MASK,    PPC64, 0,    {RA, RS}},
9260
9261
{"icbiep",  XRT(31,991,0),  XRT_MASK,    E500MC|PPCA2, 0,   {RA0, RB}},
9262
9263
{"stvswxl", X(31,997),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
9264
9265
{"icread",  X(31,998),     XRT_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA0, RB}},
9266
9267
{"nabso", XO(31,488,1,0), XORB_MASK,   M601,  0,    {RT, RA}},
9268
{"nabso.",  XO(31,488,1,1), XORB_MASK,   M601,  0,    {RT, RA}},
9269
9270
{"divdo", XO(31,489,1,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
9271
{"divdo.",  XO(31,489,1,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
9272
9273
{"divwo", XO(31,491,1,0), XO_MASK,     PPC, 0,    {RT, RA, RB}},
9274
{"divwo.",  XO(31,491,1,1), XO_MASK,     PPC, 0,    {RT, RA, RB}},
9275
9276
{"stxvb16x",  X(31,1004), XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
9277
9278
{"stxvpb32x", X(31,1005), X_MASK,      FUTURE,  0,    {XSP, RA0, RB}},
9279
9280
{"trechkpt.", XRC(31,1006,1), XRTRARB_MASK,PPCHTM,  0,    {0}},
9281
9282
{"tlbli", X(31,1010), XRTRA_MASK,  PPC, TITAN,    {RB}},
9283
9284
{"stdcix",  X(31,1013), X_MASK,      POWER6,  0,    {RS, RA0, RB}},
9285
9286
{"dcbz",  X(31,1014), XRT_MASK,    PPC, 0,    {RA0, RB}},
9287
{"dclz",  X(31,1014), XRT_MASK,    PPC, 0,    {RA0, RB}},
9288
{"dcbzl", XOPL(31,1014,1), XRT_MASK,   POWER4|E500MC, PPC476, {RA0, RB}},
9289
9290
{"dcbzep",  XRT(31,1023,0), XRT_MASK,    E500MC|PPCA2, 0,   {RA0, RB}},
9291
9292
{"lwz",   OP(32),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, D, RA0}},
9293
{"l",   OP(32),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, D, RA0}},
9294
9295
{"lwzu",  OP(33),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, D, RAL}},
9296
{"lu",    OP(33),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, D, RA0}},
9297
9298
{"lbz",   OP(34),   OP_MASK,     COM, PPCVLE,   {RT, D, RA0}},
9299
9300
{"lbzu",  OP(35),   OP_MASK,     COM, PPCVLE,   {RT, D, RAL}},
9301
9302
{"stw",   OP(36),   OP_MASK,     PPCCOM,  PPCVLE,   {RS, D, RA0}},
9303
{"st",    OP(36),   OP_MASK,     PWRCOM,  PPCVLE,   {RS, D, RA0}},
9304
9305
{"stwu",  OP(37),   OP_MASK,     PPCCOM,  PPCVLE,   {RS, D, RAS}},
9306
{"stu",   OP(37),   OP_MASK,     PWRCOM,  PPCVLE,   {RS, D, RA0}},
9307
9308
{"stb",   OP(38),   OP_MASK,     COM, PPCVLE,   {RS, D, RA0}},
9309
9310
{"stbu",  OP(39),   OP_MASK,     COM, PPCVLE,   {RS, D, RAS}},
9311
9312
{"lhz",   OP(40),   OP_MASK,     COM, PPCVLE,   {RT, D, RA0}},
9313
9314
{"lhzu",  OP(41),   OP_MASK,     COM, PPCVLE,   {RT, D, RAL}},
9315
9316
{"lha",   OP(42),   OP_MASK,     COM, PPCVLE,   {RT, D, RA0}},
9317
9318
{"lhau",  OP(43),   OP_MASK,     COM, PPCVLE,   {RT, D, RAL}},
9319
9320
{"sth",   OP(44),   OP_MASK,     COM, PPCVLE,   {RS, D, RA0}},
9321
9322
{"sthu",  OP(45),   OP_MASK,     COM, PPCVLE,   {RS, D, RAS}},
9323
9324
{"lmw",   OP(46),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, D, RAM}},
9325
{"lm",    OP(46),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, D, RA0}},
9326
9327
{"stmw",  OP(47),   OP_MASK,     PPCCOM,  PPCVLE,   {RS, D, RA0}},
9328
{"stm",   OP(47),   OP_MASK,     PWRCOM,  PPCVLE,   {RS, D, RA0}},
9329
9330
{"lfs",   OP(48),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRT, D, RA0}},
9331
9332
{"lfsu",  OP(49),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRT, D, RAS}},
9333
9334
{"lfd",   OP(50),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRT, D, RA0}},
9335
9336
{"lfdu",  OP(51),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRT, D, RAS}},
9337
9338
{"stfs",  OP(52),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRS, D, RA0}},
9339
9340
{"stfsu", OP(53),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRS, D, RAS}},
9341
9342
{"stfd",  OP(54),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRS, D, RA0}},
9343
9344
{"stfdu", OP(55),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRS, D, RAS}},
9345
9346
{"lq",    OP(56),      OP_MASK|Q_MASK, POWER4,  PPC476|PPCVLE,  {RTQ, DQ, RAQ}},
9347
{"psq_l", OP(56),   OP_MASK,     PPCPS, PPCVLE,   {FRT,PSD,RA,PSW,PSQ}},
9348
{"lfq",   OP(56),   OP_MASK,     POWER2,  PPCVLE,   {FRT, D, RA0}},
9349
9350
{"lxsd",  DSO(57,2),  DS_MASK,     PPCVSX3, PPCVLE,   {VD, DS, RA0}},
9351
{"lxssp", DSO(57,3),  DS_MASK,     PPCVSX3, PPCVLE,   {VD, DS, RA0}},
9352
{"lfdp",  OP(57),      OP_MASK|Q_MASK, POWER6,  POWER7|PPCVLE,  {FRTp, DS, RA0}},
9353
{"psq_lu",  OP(57),   OP_MASK,     PPCPS, PPCVLE,   {FRT,PSD,RA,PSW,PSQ}},
9354
{"lfqu",  OP(57),   OP_MASK,     POWER2,  PPCVLE,   {FRT, D, RA0}},
9355
9356
{"ld",    DSO(58,0),  DS_MASK,     PPC64, PPCVLE,   {RT, DS, RA0}},
9357
{"ldu",   DSO(58,1),  DS_MASK,     PPC64, PPCVLE,   {RT, DS, RAL}},
9358
{"lwa",   DSO(58,2),  DS_MASK,     PPC64, PPCVLE,   {RT, DS, RA0}},
9359
9360
{"dadd",  XRC(59,2,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9361
{"dadd.", XRC(59,2,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9362
9363
{"dqua",  ZRC(59,3,0),  Z2_MASK,     POWER6,  PPCVLE,   {FRT,FRA,FRB,RMC}},
9364
{"dqua.", ZRC(59,3,1),  Z2_MASK,     POWER6,  PPCVLE,   {FRT,FRA,FRB,RMC}},
9365
9366
{"xxmulmul",  XX3(59,1),  XX3MUL_MASK, FUTURE,  PPCVLE,   {XT6, XA6, XB6, SFUNC}},
9367
{"dmxvi8ger4pp",XX3(59,2),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9368
{"xvi8ger4pp",  XX3(59,2),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9369
{"dmxvi8ger4",  XX3(59,3),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9370
{"xvi8ger4",  XX3(59,3),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9371
9372
{"fdivs", A(59,18,0), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9373
{"fdivs.",  A(59,18,1), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9374
9375
{"fsubs", A(59,20,0), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9376
{"fsubs.",  A(59,20,1), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9377
9378
{"fadds", A(59,21,0), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9379
{"fadds.",  A(59,21,1), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9380
9381
{"fsqrts",  A(59,22,0),    AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
9382
{"fsqrts.", A(59,22,1),    AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
9383
9384
{"fres",  A(59,24,0),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9385
{"fres",  A(59,24,0),   AFRALFRC_MASK, PPC, POWER7|PPCVLE,  {FRT, FRB, A_L}},
9386
{"fres.", A(59,24,1),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9387
{"fres.", A(59,24,1),   AFRALFRC_MASK, PPC, POWER7|PPCVLE,  {FRT, FRB, A_L}},
9388
9389
{"fmuls", A(59,25,0), AFRB_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
9390
{"fmuls.",  A(59,25,1), AFRB_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
9391
9392
{"frsqrtes",  A(59,26,0),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9393
{"frsqrtes",  A(59,26,0),   AFRALFRC_MASK, POWER5,  POWER7|PPCVLE,  {FRT, FRB, A_L}},
9394
{"frsqrtes.", A(59,26,1),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9395
{"frsqrtes.", A(59,26,1),   AFRALFRC_MASK, POWER5,  POWER7|PPCVLE,  {FRT, FRB, A_L}},
9396
9397
{"fmsubs",  A(59,28,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9398
{"fmsubs.", A(59,28,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9399
9400
{"fmadds",  A(59,29,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9401
{"fmadds.", A(59,29,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9402
9403
{"fnmsubs", A(59,30,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9404
{"fnmsubs.",  A(59,30,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9405
9406
{"fnmadds", A(59,31,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9407
{"fnmadds.",  A(59,31,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9408
9409
{"dmul",  XRC(59,34,0), X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9410
{"dmul.", XRC(59,34,1), X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9411
9412
{"drrnd", ZRC(59,35,0), Z2_MASK,     POWER6,  PPCVLE,   {FRT, FRA, FRB, RMC}},
9413
{"drrnd.",  ZRC(59,35,1), Z2_MASK,     POWER6,  PPCVLE,   {FRT, FRA, FRB, RMC}},
9414
9415
{"xxmulmulhiadd", XX3(59,9),  XX3MUL_MASK, FUTURE,  PPCVLE,   {XT6, XA6, XB6, S0EXP, S1EXP, S2EXP}},
9416
{"dmxvi8gerx4pp", XX3(59,10), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9417
{"dmxvi8gerx4",   XX3(59,11), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9418
9419
{"dscli", ZRC(59,66,0), Z_MASK,      POWER6,  PPCVLE,   {FRT, FRA, SH16}},
9420
{"dscli.",  ZRC(59,66,1), Z_MASK,      POWER6,  PPCVLE,   {FRT, FRA, SH16}},
9421
9422
{"dquai", ZRC(59,67,0), Z2_MASK,     POWER6,  PPCVLE,   {TE, FRT,FRB,RMC}},
9423
{"dquai.",  ZRC(59,67,1), Z2_MASK,     POWER6,  PPCVLE,   {TE, FRT,FRB,RMC}},
9424
9425
{"xxmulmulloadd",XX3(59,17),  XX3MADD_MASK, FUTURE, PPCVLE,   {XT6, XA6, XB6, S1EXP, S2EXP}},
9426
{"dmxvf16ger2pp",XX3(59,18),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9427
{"xvf16ger2pp",  XX3(59,18),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9428
{"dmxvf16ger2",  XX3(59,19),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9429
{"xvf16ger2",  XX3(59,19),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9430
9431
{"dscri", ZRC(59,98,0), Z_MASK,      POWER6,  PPCVLE,   {FRT, FRA, SH16}},
9432
{"dscri.",  ZRC(59,98,1), Z_MASK,      POWER6,  PPCVLE,   {FRT, FRA, SH16}},
9433
9434
{"drintx",  ZRC(59,99,0), Z2_MASK,     POWER6,  PPCVLE,   {R, FRT, FRB, RMC}},
9435
{"drintx.", ZRC(59,99,1), Z2_MASK,     POWER6,  PPCVLE,   {R, FRT, FRB, RMC}},
9436
9437
{"xxssumudm", XX3(59,25), XX3SUM_MASK, FUTURE,  PPCVLE,   {XT6, XA6, XB6, PSSUM}},
9438
{"dmxvf32gerpp",XX3(59,26), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9439
{"xvf32gerpp",  XX3(59,26), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9440
{"dmxvf32ger",  XX3(59,27), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9441
{"xvf32ger",  XX3(59,27), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9442
9443
{"dcmpo", X(59,130),  X_MASK,      POWER6,  PPCVLE,   {BF,  FRA, FRB}},
9444
9445
{"dmxvi4ger8pp",XX3(59,34), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9446
{"xvi4ger8pp",  XX3(59,34), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9447
{"dmxvi4ger8",  XX3(59,35), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9448
{"xvi4ger8",  XX3(59,35), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9449
9450
{"dtstex",  X(59,162),  X_MASK,      POWER6,  PPCVLE,   {BF,  FRA, FRB}},
9451
9452
{"dmxvi16ger2spp",XX3(59,42), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9453
{"xvi16ger2spp",  XX3(59,42), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9454
{"dmxvi16ger2s",  XX3(59,43), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9455
{"xvi16ger2s",    XX3(59,43), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9456
9457
{"dtstdc",  Z(59,194),  Z_MASK,      POWER6,  PPCVLE,   {BF,  FRA, DCM}},
9458
9459
{"dmxvbf16ger2pp",XX3(59,50), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9460
{"xvbf16ger2pp",  XX3(59,50), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9461
{"dmxvbf16ger2",  XX3(59,51), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9462
{"xvbf16ger2",    XX3(59,51), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9463
9464
{"dtstdg",  Z(59,226),  Z_MASK,      POWER6,  PPCVLE,   {BF,  FRA, DGM}},
9465
9466
{"drintn",  ZRC(59,227,0),  Z2_MASK,     POWER6,  PPCVLE,   {R, FRT, FRB, RMC}},
9467
{"drintn.", ZRC(59,227,1),  Z2_MASK,     POWER6,  PPCVLE,   {R, FRT, FRB, RMC}},
9468
9469
{"xxssumudmc",  XX3(59,57), XX3SUM_MASK, FUTURE,  PPCVLE,   {XT6, XA6, XB6, PSSUM}},
9470
{"dmxvf64gerpp",XX3(59,58), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9471
{"xvf64gerpp",  XX3(59,58), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9472
{"dmxvf64ger",  XX3(59,59), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9473
{"xvf64ger",  XX3(59,59), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9474
9475
{"dctdp", XRC(59,258,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9476
{"dctdp.",  XRC(59,258,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9477
9478
{"dmxvf16gerx2pp", XX3(59,66),  XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9479
{"dmxvf16gerx2",   XX3(59,67),  XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9480
9481
{"dctfix",  XRC(59,290,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9482
{"dctfix.", XRC(59,290,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9483
9484
{"ddedpd",  XRC(59,322,0),  X_MASK,      POWER6,  PPCVLE,   {SP, FRT, FRB}},
9485
{"ddedpd.", XRC(59,322,1),  X_MASK,      POWER6,  PPCVLE,   {SP, FRT, FRB}},
9486
9487
{"dmxvbf16gerx2pp", XX3(59,74), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9488
{"dmxvi16ger2", XX3(59,75), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9489
{"xvi16ger2", XX3(59,75), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9490
9491
{"dmxvf16ger2np", XX3(59,82), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9492
{"xvf16ger2np",   XX3(59,82), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9493
{"dmxvf16gerx2np",XX3(59,83), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9494
9495
{"dxex",  XRC(59,354,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9496
{"dxex.", XRC(59,354,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9497
9498
{"xsmerge2t3uqm", XX3(59,89), XX3_MASK,    FUTURE,  PPCVLE,   {XT6, XA6, XB6}},
9499
{"dmxvf32gernp",  XX3(59,90), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9500
{"xvf32gernp",    XX3(59,90), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9501
{"dmxvbf16gerx2", XX3(59,91), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9502
9503
{"xsaddadduqm",   XX3(59,96), XX3_MASK,    FUTURE,  PPCVLE,   {XT6, XA6, XB6}},
9504
{"dmxvi8gerx4spp",XX3(59,98), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9505
{"dmxvi8ger4spp", XX3(59,99), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9506
{"xvi8ger4spp",   XX3(59,99), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9507
9508
{"xsaddaddsuqm",  XX3(59,104),  XX3_MASK,    FUTURE,  PPCVLE,   {XT6, XA6, XB6}},
9509
{"dmxvi16ger2pp", XX3(59,107),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9510
{"xvi16ger2pp",   XX3(59,107),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9511
9512
{"xsaddsubuqm",   XX3(59,112),  XX3_MASK,    FUTURE,  PPCVLE,   {XT6, XA6, XB6}},
9513
{"dmxvbf16ger2np",XX3(59,114),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9514
{"xvbf16ger2np",  XX3(59,114),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9515
{"dmxvbf16gerx2np",XX3(59,115), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9516
9517
{"xsmerge3t1uqm", XX3(59,121),  XX3_MASK,    FUTURE,  PPCVLE,   {XT6, XA6, XB6}},
9518
{"dmxvf64gernp",  XX3(59,122),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9519
{"xvf64gernp",    XX3(59,122),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9520
9521
{"dsub",  XRC(59,514,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9522
{"dsub.", XRC(59,514,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9523
9524
{"ddiv",  XRC(59,546,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9525
{"ddiv.", XRC(59,546,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9526
9527
{"xsrebase2t1uqm",XX3(59,145),  XX3_MASK,    FUTURE,  PPCVLE,   {XT6, XA6, XB6}},
9528
{"dmxvf16ger2pn", XX3(59,146),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9529
{"xvf16ger2pn",   XX3(59,146),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9530
{"dmxvf16gerx2pn",XX3(59,147),  XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9531
9532
{"dmxvf32gerpn",XX3(59,154),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9533
{"xvf32gerpn",  XX3(59,154),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9534
9535
{"dcmpu", X(59,642),  X_MASK,      POWER6,  PPCVLE,   {BF,  FRA, FRB}},
9536
9537
{"dtstsf",  X(59,674),  X_MASK,      POWER6,  PPCVLE,   {BF,  FRA, FRB}},
9538
{"dtstsfi", X(59,675),  X_MASK|1<<22,POWER9,  PPCVLE,   {BF, UIM6, FRB}},
9539
9540
{"xsrebase2t2uqm",XX3(59,177),  XX3_MASK,    FUTURE,  PPCVLE,   {XT6, XA6, XB6}},
9541
{"dmxvbf16ger2pn",XX3(59,178),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9542
{"xvbf16ger2pn",  XX3(59,178),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9543
{"dmxvbf16gerx2pn", XX3(59,179),XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9544
9545
{"dmxvf64gerpn",XX3(59,186),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9546
{"xvf64gerpn",  XX3(59,186),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9547
9548
{"drsp",  XRC(59,770,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9549
{"drsp.", XRC(59,770,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9550
9551
{"xsrebase3t3uqm",XX3(59,195),  XX3_MASK,    FUTURE,  PPCVLE,   {XT6, XA6, XB6}},
9552
9553
{"dcffix",  XRC(59,802,0), X_MASK|FRA_MASK, POWER7, PPCVLE,   {FRT, FRB}},
9554
{"dcffix.", XRC(59,802,1), X_MASK|FRA_MASK, POWER7, PPCVLE,   {FRT, FRB}},
9555
9556
{"dmxvf16gerx2nn", XX3(59,202), XX3GERX_MASK,  FUTURE,  PPCVLE,   {DMR, XA5p, XB6}},
9557
9558
{"denbcd",  XRC(59,834,0),  X_MASK,      POWER6,  PPCVLE,   {S, FRT, FRB}},
9559
{"denbcd.", XRC(59,834,1),  X_MASK,      POWER6,  PPCVLE,   {S, FRT, FRB}},
9560
9561
{"xsrebase2t3uqm",XX3(59,209),  XX3_MASK,    FUTURE,  PPCVLE,   {XT6, XA6, XB6}},
9562
{"dmxvf16ger2nn", XX3(59,210),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9563
{"xvf16ger2nn",   XX3(59,210),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9564
9565
{"fcfids",  XRC(59,846,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9566
{"fcfids.", XRC(59,846,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9567
9568
{"diex",  XRC(59,866,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9569
{"diex.", XRC(59,866,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9570
9571
{"xsrebase2t4uqm",XX3(59,217),  XX3_MASK,    FUTURE,  PPCVLE,   {XT6, XA6, XB6}},
9572
{"dmxvf32gernn",XX3(59,218),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9573
{"xvf32gernn",  XX3(59,218),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9574
9575
{"xsaddsubsuqm",   XX3(59,224), XX3_MASK,     FUTURE, PPCVLE,   {XT6, XA6, XB6}},
9576
{"xsmerge2t1uqm",  XX3(59,232), XX3_MASK,     FUTURE, PPCVLE,   {XT6, XA6, XB6}},
9577
{"dmxvbf16gerx2nn",XX3(59,234), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9578
{"xsmerge2t2uqm",  XX3(59,240), XX3_MASK,     FUTURE, PPCVLE,   {XT6, XA6, XB6}},
9579
{"xsrebase3t1uqm", XX3(59,241), XX3_MASK,     FUTURE, PPCVLE,   {XT6, XA6, XB6}},
9580
{"dmxvbf16ger2nn", XX3(59,242), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9581
{"xvbf16ger2nn",   XX3(59,242), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9582
9583
{"fcfidus", XRC(59,974,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9584
{"fcfidus.",  XRC(59,974,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9585
9586
{"xsrebase3t2uqm",XX3(59,249),  XX3_MASK,    FUTURE,  PPCVLE,   {XT6, XA6, XB6}},
9587
{"dmxvf64gernn",XX3(59,250),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9588
{"xvf64gernn",  XX3(59,250),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9589
9590
{"xsaddsp", XX3(60,0),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9591
{"xsmaddasp", XX3(60,1),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9592
{"xxsldwi", XX3(60,2),  XX3SHW_MASK, PPCVSX,  PPCVLE,   {XT6, XA6, XB6, SHW}},
9593
{"xscmpeqdp", XX3(60,3),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9594
{"xsrsqrtesp",  XX2(60,10), XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9595
{"xssqrtsp",  XX2(60,11), XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9596
{"xxsel", XX4(60,3),  XX4_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6, XC6}},
9597
{"xssubsp", XX3(60,8),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9598
{"xsmaddmsp", XX3(60,9),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9599
{"xxspltd", XX3(60,10), XX3DM_MASK,  PPCVSX,  PPCVLE|EXT, {XT6, XAB6, DMEX}},
9600
{"xxmrghd", XX3(60,10), XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XA6, XB6}},
9601
{"xxswapd", XX3(60,10)|(2<<8), XX3_MASK, PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9602
{"xxmrgld", XX3(60,10)|(3<<8), XX3_MASK, PPCVSX,  PPCVLE|EXT, {XT6, XA6, XB6}},
9603
{"xxpermdi",  XX3(60,10), XX3DM_MASK,  PPCVSX,  PPCVLE,   {XT6, XA6, XB6, DM}},
9604
{"xscmpgtdp", XX3(60,11), XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9605
{"xsresp",  XX2(60,26), XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9606
{"xsmulsp", XX3(60,16), XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9607
{"xsmsubasp", XX3(60,17), XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9608
{"xxmrghw", XX3(60,18), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9609
{"xscmpgedp", XX3(60,19), XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9610
{"xsdivsp", XX3(60,24), XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9611
{"xsmsubmsp", XX3(60,25), XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9612
{"xxperm",  XX3(60,26), XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9613
{"xsadddp", XX3(60,32), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9614
{"xsmaddadp", XX3(60,33), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9615
{"xscmpudp",  XX3(60,35), XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9616
{"xscvdpuxws",  XX2(60,72), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9617
{"xsrdpi",  XX2(60,73), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9618
{"xsrsqrtedp",  XX2(60,74), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9619
{"xssqrtdp",  XX2(60,75), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9620
{"xssubdp", XX3(60,40), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9621
{"xsmaddmdp", XX3(60,41), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9622
{"xscmpodp",  XX3(60,43), XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9623
{"xscvdpsxws",  XX2(60,88), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9624
{"xsrdpiz", XX2(60,89), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9625
{"xsredp",  XX2(60,90), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9626
{"xsmuldp", XX3(60,48), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9627
{"xsmsubadp", XX3(60,49), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9628
{"xxmrglw", XX3(60,50), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9629
{"xsrdpip", XX2(60,105),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9630
{"xstsqrtdp", XX2(60,106),  XX2BF_MASK,  PPCVSX,  PPCVLE,   {BF, XB6}},
9631
{"xsrdpic", XX2(60,107),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9632
{"xsdivdp", XX3(60,56), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9633
{"xsmsubmdp", XX3(60,57), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9634
{"xxpermr", XX3(60,58), XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9635
{"xscmpexpdp",  XX3(60,59), XX3BF_MASK,  PPCVSX3, PPCVLE,   {BF, XA6, XB6}},
9636
{"xsrdpim", XX2(60,121),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9637
{"xstdivdp",  XX3(60,61), XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9638
{"xvaddsp", XX3(60,64), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9639
{"xvmaddasp", XX3(60,65), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9640
{"xvcmpeqsp", XX3RC(60,67,0), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9641
{"xvcmpeqsp.",  XX3RC(60,67,1), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9642
{"xvcvspuxws",  XX2(60,136),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9643
{"xvrspi",  XX2(60,137),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9644
{"xvrsqrtesp",  XX2(60,138),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9645
{"xvsqrtsp",  XX2(60,139),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9646
{"xvsubsp", XX3(60,72), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9647
{"xvmaddmsp", XX3(60,73), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9648
{"xvcmpgtsp", XX3RC(60,75,0), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9649
{"xvcmpgtsp.",  XX3RC(60,75,1), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9650
{"xvcvspsxws",  XX2(60,152),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9651
{"xvrspiz", XX2(60,153),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9652
{"xvresp",  XX2(60,154),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9653
{"xvmulsp", XX3(60,80), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9654
{"xvmsubasp", XX3(60,81), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9655
{"xxspltw", XX2(60,164),  XX2UIM_MASK, PPCVSX,  PPCVLE,   {XT6, XB6, UIM}},
9656
{"xxextractuw", XX2(60,165),   XX2UIM4_MASK, PPCVSX3, PPCVLE,   {XT6, XB6, UIMM4}},
9657
{"xvcmpgesp", XX3RC(60,83,0), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9658
{"xvcmpgesp.",  XX3RC(60,83,1), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9659
{"xvcvuxwsp", XX2(60,168),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9660
{"xvrspip", XX2(60,169),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9661
{"xvtsqrtsp", XX2(60,170),  XX2BF_MASK,  PPCVSX,  PPCVLE,   {BF, XB6}},
9662
{"xvrspic", XX2(60,171),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9663
{"xvdivsp", XX3(60,88), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9664
{"xvmsubmsp", XX3(60,89), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9665
{"xxspltib",  X(60,360),   XX1_MASK|3<<19, PPCVSX3, PPCVLE,   {XT6, IMM8}},
9666
{"lxvkq", XVA(60,360,31), XVA_MASK&~1, POWER10, PPCVLE,   {XT6, UIM5}},
9667
{"xxinsertw", XX2(60,181),   XX2UIM4_MASK, PPCVSX3, PPCVLE,   {XT6, XB6, UIMM4}},
9668
{"xvcvsxwsp", XX2(60,184),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9669
{"xvrspim", XX2(60,185),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9670
{"xvtdivsp",  XX3(60,93), XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9671
{"xvadddp", XX3(60,96), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9672
{"xvmaddadp", XX3(60,97), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9673
{"xvcmpeqdp", XX3RC(60,99,0), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9674
{"xvcmpeqdp.",  XX3RC(60,99,1), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9675
{"xvcvdpuxws",  XX2(60,200),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9676
{"xvrdpi",  XX2(60,201),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9677
{"xvrsqrtedp",  XX2(60,202),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9678
{"xvsqrtdp",  XX2(60,203),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9679
{"xvsubdp", XX3(60,104),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9680
{"xvmaddmdp", XX3(60,105),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9681
{"xvcmpgtdp", XX3RC(60,107,0), XX3_MASK,   PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9682
{"xvcmpgtdp.",  XX3RC(60,107,1), XX3_MASK,   PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9683
{"xvcvdpsxws",  XX2(60,216),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9684
{"xvrdpiz", XX2(60,217),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9685
{"xvredp",  XX2(60,218),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9686
{"xvmuldp", XX3(60,112),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9687
{"xvmsubadp", XX3(60,113),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9688
{"xvmulhuw",  XX3(60,114),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9689
{"xvcmpgedp", XX3RC(60,115,0), XX3_MASK,   PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9690
{"xvcmpgedp.",  XX3RC(60,115,1), XX3_MASK,   PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9691
{"xvcvuxwdp", XX2(60,232),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9692
{"xvrdpip", XX2(60,233),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9693
{"xvtsqrtdp", XX2(60,234),  XX2BF_MASK,  PPCVSX,  PPCVLE,   {BF, XB6}},
9694
{"xvrdpic", XX2(60,235),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9695
{"xvdivdp", XX3(60,120),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9696
{"xvmsubmdp", XX3(60,121),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9697
{"xvmulhuh",  XX3(60,122),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9698
{"xvcvsxwdp", XX2(60,248),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9699
{"xvrdpim", XX2(60,249),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9700
{"xvtdivdp",  XX3(60,125),  XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9701
{"xsmaxcdp",  XX3(60,128),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9702
{"xsnmaddasp",  XX3(60,129),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9703
{"xxland",  XX3(60,130),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9704
{"xvadduwm",  XX3(60,131),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9705
{"xscvdpsp",  XX2(60,265),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9706
{"xscvdpspn", XX2(60,267),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9707
{"xsmincdp",  XX3(60,136),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9708
{"xsnmaddmsp",  XX3(60,137),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9709
{"xxlandc", XX3(60,138),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9710
{"xvadduhm",  XX3(60,139),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9711
{"xsrsp", XX2(60,281),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9712
{"xsmaxjdp",  XX3(60,144),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9713
{"xsnmsubasp",  XX3(60,145),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9714
{"xxmr",  XX3(60,146),  XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9715
{"xxlor", XX3(60,146),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9716
{"xvsubuwm",  XX3(60,147),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9717
{"xscvuxdsp", XX2(60,296),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9718
{"xststdcsp", XX2(60,298),  XX2BFD_MASK, PPCVSX3, PPCVLE,   {BF, XB6, DCMX}},
9719
{"xsminjdp",  XX3(60,152),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9720
{"xsnmsubmsp",  XX3(60,153),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9721
{"xxlxor",  XX3(60,154),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9722
{"xvsubuhm",  XX3(60,155),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9723
{"xscvsxdsp", XX2(60,312),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9724
{"xsmaxdp", XX3(60,160),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9725
{"xsnmaddadp",  XX3(60,161),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9726
{"xxlnot",  XX3(60,162),  XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9727
{"xxlnor",  XX3(60,162),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9728
{"xvmuluwm",  XX3(60,163),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9729
{"xscvdpuxds",  XX2(60,328),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9730
{"xscvspdp",  XX2(60,329),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9731
{"xscvspdpn", XX2(60,331),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9732
{"xsmindp", XX3(60,168),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9733
{"xsnmaddmdp",  XX3(60,169),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9734
{"xxlorc",  XX3(60,170),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9735
{"xvmuluhm",  XX3(60,171),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9736
{"xscvdpsxds",  XX2(60,344),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9737
{"xsabsdp", XX2(60,345),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9738
{"xsxexpdp",  XX2VA(60,347,0),XX2_MASK|1,  PPCVSX3, PPCVLE,   {RT, XB6}},
9739
{"xsxsigdp",  XX2VA(60,347,1),XX2_MASK|1,  PPCVSX3, PPCVLE,   {RT, XB6}},
9740
{"xscvhpdp",  XX2VA(60,347,16),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9741
{"xscvdphp",  XX2VA(60,347,17),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9742
{"xscpsgndp", XX3(60,176),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9743
{"xsnmsubadp",  XX3(60,177),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9744
{"xxlnand", XX3(60,178),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9745
{"xvmulhsw",  XX3(60,179),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9746
{"xscvuxddp", XX2(60,360),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9747
{"xsnabsdp",  XX2(60,361),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9748
{"xststdcdp", XX2(60,362),  XX2BFD_MASK, PPCVSX3, PPCVLE,   {BF, XB6, DCMX}},
9749
{"xvrlw", XX3(60,184),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9750
{"xsnmsubmdp",  XX3(60,185),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9751
{"xxleqv",  XX3(60,186),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9752
{"xvmulhsh",  XX3(60,187),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9753
{"xscvsxddp", XX2(60,376),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9754
{"xsnegdp", XX2(60,377),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9755
{"xvmaxsp", XX3(60,192),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9756
{"xvnmaddasp",  XX3(60,193),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9757
9758
{"xxaes128encp",XX3M(60,194,0),XX3AESM_MASK,  PPCVSXF, PPCVLE|EXT,  {XTP, XA5p, XB5p}},
9759
{"xxaes192encp",XX3M(60,194,1),XX3AESM_MASK,  PPCVSXF, PPCVLE|EXT,  {XTP, XA5p, XB5p}},
9760
{"xxaes256encp",XX3M(60,194,2),XX3AESM_MASK,  PPCVSXF, PPCVLE|EXT,  {XTP, XA5p, XB5p}},
9761
{"xxaesencp", XX3M(60,194,0),XX3AES_MASK,   PPCVSXF, PPCVLE,    {XTP, XA5p, XB5p, AESM}},
9762
{"xxaes128decp",XX3M(60,202,0),XX3AESM_MASK,  PPCVSXF, PPCVLE|EXT,  {XTP, XA5p, XB5p}},
9763
{"xxaes192decp",XX3M(60,202,1),XX3AESM_MASK,  PPCVSXF, PPCVLE|EXT,  {XTP, XA5p, XB5p}},
9764
{"xxaes256decp",XX3M(60,202,2),XX3AESM_MASK,  PPCVSXF, PPCVLE|EXT,  {XTP, XA5p, XB5p}},
9765
{"xxaesdecp", XX3M(60,202,0),XX3AES_MASK,   PPCVSXF, PPCVLE,    {XTP, XA5p, XB5p, AESM}},
9766
9767
{"xvcvspuxds",  XX2(60,392),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9768
{"xvcvdpsp",  XX2(60,393),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9769
{"xvminsp", XX3(60,200),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9770
{"xvnmaddmsp",  XX3(60,201),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9771
{"xvcvspsxds",  XX2(60,408),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9772
{"xvabssp", XX2(60,409),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9773
{"xvmovsp", XX3(60,208),  XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9774
{"xvcpsgnsp", XX3(60,208),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9775
{"xvnmsubasp",  XX3(60,209),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9776
9777
{"xxaes128genlkp",XX2M(60,420,0),XX2AESM_MASK, PPCVSXF, PPCVLE|EXT, {XTP, XB5p}},
9778
{"xxaes192genlkp",XX2M(60,420,1),XX2AESM_MASK, PPCVSXF, PPCVLE|EXT, {XTP, XB5p}},
9779
{"xxaes256genlkp",XX2M(60,420,2),XX2AESM_MASK, PPCVSXF, PPCVLE|EXT, {XTP, XB5p}},
9780
{"xxaesgenlkp",   XX2M(60,420,0),XX2AES_MASK,  PPCVSXF, PPCVLE,   {XTP, XB5p, AESM}},
9781
9782
{"dmxxsha3512pad",   XX2PAD(60,421,0,0),  XX2PAD_MASK,  FUTURE, PPCVLE|EXT, {DMR, XB6, PADE}},
9783
{"dmxxsha3384pad",   XX2PAD(60,421,0,1),  XX2PAD_MASK,  FUTURE, PPCVLE|EXT, {DMR, XB6, PADE}},
9784
{"dmxxsha3256pad",   XX2PAD(60,421,0,2),  XX2PAD_MASK,  FUTURE, PPCVLE|EXT, {DMR, XB6, PADE}},
9785
{"dmxxsha3224pad",   XX2PAD(60,421,0,3),  XX2PAD_MASK,  FUTURE, PPCVLE|EXT, {DMR, XB6, PADE}},
9786
{"dmxxshake256pad",  XX2PAD(60,421,1,2),  XX2PAD_MASK,  FUTURE, PPCVLE|EXT, {DMR, XB6, PADE}},
9787
{"dmxxshake128pad",  XX2PAD(60,421,1,3),  XX2PAD_MASK,  FUTURE, PPCVLE|EXT, {DMR, XB6, PADE}},
9788
{"dmxxsha384512pad", XX2PADE(60,421,2,0), XX2PADE_MASK, FUTURE, PPCVLE|EXT, {DMR, XB6}},
9789
{"dmxxsha224256pad", XX2PADE(60,421,3,0), XX2PADE_MASK, FUTURE, PPCVLE|EXT, {DMR, XB6}},
9790
{"dmxxshapad",  XX2(60,421),    XX2ACC_MASK, FUTURE,  PPCVLE,   {DMR, XB6, PADID, PADE, PADBL}},
9791
{"xvcvuxdsp", XX2(60,424),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9792
{"xvnabssp",  XX2(60,425),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9793
{"xvtstdcsp", XX2(60,426),  XX2DCMXS_MASK, PPCVSX3, PPCVLE,   {XT6, XB6, DCMXS}},
9794
{"xviexpsp",  XX3(60,216),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9795
{"xvnmsubmsp",  XX3(60,217),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9796
9797
{"xxgfmul128gcm",XX3GF(60,26,3,0),  XX3_MASK, PPCVSXF, PPCVLE|EXT,  {XT6, XA6, XB6}},
9798
{"xxgfmul128xts",XX3GF(60,26,3,1),  XX3_MASK, PPCVSXF, PPCVLE|EXT,  {XT6, XA6, XB6}},
9799
{"xxgfmul128",   XX3GF(60,26,3,0),  XX3GF_MASK, PPCVSXF, PPCVLE,  {XT6, XA6, XB6, PGF1}},
9800
9801
{"xvcvsxdsp", XX2(60,440),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9802
{"xvnegsp", XX2(60,441),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9803
{"xvmaxdp", XX3(60,224),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9804
{"xvnmaddadp",  XX3(60,225),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9805
{"dmxxextfdmr512",XX3(60,226),  XX3DMR_MASK, FUTURE,  PPCVLE,   {XA5p, XB5p, DMR, P1}},
9806
{"xvcvdpuxds",  XX2(60,456),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9807
{"xvcvspdp",  XX2(60,457),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9808
{"xxgenpcvbm",  X(60,916),  XX1_MASK,    POWER10, PPCVLE,   {XT6, VB, UIMM}},
9809
{"xxgenpcvhm",  X(60,917),  XX1_MASK,    POWER10, PPCVLE,   {XT6, VB, UIMM}},
9810
{"xsiexpdp",  X(60,918),  XX1_MASK,    PPCVSX3, PPCVLE,   {XT6, RA, RB}},
9811
{"xvmindp", XX3(60,232),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9812
{"xvnmaddmdp",  XX3(60,233),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9813
{"dmxxinstdmr512",XX3(60,234),  XX3DMR_MASK, FUTURE,  PPCVLE,   {DMR, XA5p, XB5p,P1}},
9814
{"xvcvdpsxds",  XX2(60,472),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9815
{"xvabsdp", XX2(60,473),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9816
{"xxgenpcvwm",  X(60,948),  XX1_MASK,    POWER10, PPCVLE,   {XT6, VB, UIMM}},
9817
{"xxgenpcvdm",  X(60,949),  XX1_MASK,    POWER10, PPCVLE,   {XT6, VB, UIMM}},
9818
{"xvxexpdp",  XX2VA(60,475,0),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9819
{"xvxsigdp",  XX2VA(60,475,1),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9820
{"xvtlsbb", XX2VA(60,475,2),XX2BF_MASK,  POWER10, PPCVLE,   {BF, XB6}},
9821
{"xxbrh", XX2VA(60,475,7),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9822
{"xvxexpsp",  XX2VA(60,475,8),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9823
{"xvxsigsp",  XX2VA(60,475,9),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9824
{"xxbrw", XX2VA(60,475,15),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9825
{"xvcvbf16spn", XX2VA(60,475,16),XX2_MASK,   PPCVSX4, PPCVLE,   {XT6, XB6}},
9826
{"xvcvspbf16",  XX2VA(60,475,17),XX2_MASK,   PPCVSX4, PPCVLE,   {XT6, XB6}},
9827
{"xxbrd", XX2VA(60,475,23),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9828
{"xvcvhpsp",  XX2VA(60,475,24),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9829
{"xvcvsphp",  XX2VA(60,475,25),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9830
{"xxbrq", XX2VA(60,475,31),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9831
{"xvmovdp", XX3(60,240),  XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9832
{"xvcpsgndp", XX3(60,240),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9833
{"xvnmsubadp",  XX3(60,241),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9834
{"dmxxextfdmr256",XX2(60,484),  XX2DMR_MASK, FUTURE,  PPCVLE,   {XB5p, DMR, P2}},
9835
{"dmxxinstdmr256",XX2(60,485),  XX2DMR_MASK, FUTURE,  PPCVLE,   {DMR, XB5p, P2}},
9836
{"xvcvuxddp", XX2(60,488),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9837
{"xvnabsdp",  XX2(60,489),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9838
{"xvtstdcdp", XX2(60,490),  XX2DCMXS_MASK, PPCVSX3, PPCVLE,   {XT6, XB6, DCMXS}},
9839
{"xviexpdp",  XX3(60,248),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9840
{"xvnmsubmdp",  XX3(60,249),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9841
{"xvcvsxddp", XX2(60,504),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9842
{"xvnegdp", XX2(60,505),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9843
9844
{"psq_st",  OP(60),   OP_MASK,     PPCPS, PPCVLE,   {FRS,PSD,RA,PSW,PSQ}},
9845
{"stfq",  OP(60),   OP_MASK,     POWER2,  PPCVLE,   {FRS, D, RA}},
9846
9847
{"lxv",   DQX(61,1),  DQX_MASK,    PPCVSX3, PPCVLE,   {XTQ6, DQ, RA0}},
9848
{"stxv",  DQX(61,5),  DQX_MASK,    PPCVSX3, PPCVLE,   {XSQ6, DQ, RA0}},
9849
{"stxsd", DSO(61,2),  DS_MASK,     PPCVSX3, PPCVLE,   {VS, DS, RA0}},
9850
{"stxssp",  DSO(61,3),  DS_MASK,     PPCVSX3, PPCVLE,   {VS, DS, RA0}},
9851
{"stfdp", OP(61),      OP_MASK|Q_MASK, POWER6,  POWER7|PPCVLE,  {FRSp, DS, RA0}},
9852
{"psq_stu", OP(61),   OP_MASK,     PPCPS, PPCVLE,   {FRS,PSD,RA,PSW,PSQ}},
9853
{"stfqu", OP(61),   OP_MASK,     POWER2,  PPCVLE,   {FRS, D, RA}},
9854
9855
{"std",   DSO(62,0),  DS_MASK,     PPC64, PPCVLE,   {RS, DS, RA0}},
9856
{"stdu",  DSO(62,1),  DS_MASK,     PPC64, PPCVLE,   {RS, DS, RAS}},
9857
{"stq",   DSO(62,2),   DS_MASK|Q_MASK, POWER4,  PPC476|PPCVLE,  {RSQ, DS, RA0}},
9858
9859
{"fcmpu", X(63,0),  XBF_MASK,    COM, PPCEFS|PPCVLE,  {BF, FRA, FRB}},
9860
9861
{"daddq", XRC(63,2,0),  X_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp}},
9862
{"daddq.",  XRC(63,2,1),  X_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp}},
9863
9864
{"dquaq", ZRC(63,3,0), Z2_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp, RMC}},
9865
{"dquaq.",  ZRC(63,3,1), Z2_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp, RMC}},
9866
9867
{"xsaddqp", XRC(63,4,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9868
{"xsaddqpo",  XRC(63,4,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9869
9870
{"xsrqpi",  ZRC(63,5,0),  Z2_MASK,     PPCVSX3, PPCVLE,   {R, VD, VB, RMC}},
9871
{"xsrqpix", ZRC(63,5,1),  Z2_MASK,     PPCVSX3, PPCVLE,   {R, VD, VB, RMC}},
9872
9873
{"fcpsgn",  XRC(63,8,0),  X_MASK, POWER6|PPCA2|PPC476, PPCVLE,  {FRT, FRA, FRB}},
9874
{"fcpsgn.", XRC(63,8,1),  X_MASK, POWER6|PPCA2|PPC476, PPCVLE,  {FRT, FRA, FRB}},
9875
9876
{"frsp",  XRC(63,12,0), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9877
{"frsp.", XRC(63,12,1), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9878
9879
{"fctiw", XRC(63,14,0), XRA_MASK,    PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRB}},
9880
{"fcir",  XRC(63,14,0), XRA_MASK,    PWR2COM, PPCVLE,   {FRT, FRB}},
9881
{"fctiw.",  XRC(63,14,1), XRA_MASK,    PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRB}},
9882
{"fcir.", XRC(63,14,1), XRA_MASK,    PWR2COM, PPCVLE,   {FRT, FRB}},
9883
9884
{"fctiwz",  XRC(63,15,0), XRA_MASK,    PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRB}},
9885
{"fcirz", XRC(63,15,0), XRA_MASK,    PWR2COM, PPCVLE,   {FRT, FRB}},
9886
{"fctiwz.", XRC(63,15,1), XRA_MASK,    PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRB}},
9887
{"fcirz.",  XRC(63,15,1), XRA_MASK,    PWR2COM, PPCVLE,   {FRT, FRB}},
9888
9889
{"fdiv",  A(63,18,0), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9890
{"fd",    A(63,18,0), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9891
{"fdiv.", A(63,18,1), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9892
{"fd.",   A(63,18,1), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9893
9894
{"fsub",  A(63,20,0), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9895
{"fs",    A(63,20,0), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9896
{"fsub.", A(63,20,1), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9897
{"fs.",   A(63,20,1), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9898
9899
{"fadd",  A(63,21,0), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9900
{"fa",    A(63,21,0), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9901
{"fadd.", A(63,21,1), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9902
{"fa.",   A(63,21,1), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9903
9904
{"fsqrt", A(63,22,0),    AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
9905
{"fsqrt.",  A(63,22,1),    AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
9906
9907
{"fsel",  A(63,23,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9908
{"fsel.", A(63,23,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9909
9910
{"fre",   A(63,24,0),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9911
{"fre",   A(63,24,0),   AFRALFRC_MASK, POWER5,  POWER7|PPCVLE,  {FRT, FRB, A_L}},
9912
{"fre.",  A(63,24,1),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9913
{"fre.",  A(63,24,1),   AFRALFRC_MASK, POWER5,  POWER7|PPCVLE,  {FRT, FRB, A_L}},
9914
9915
{"fmul",  A(63,25,0), AFRB_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
9916
{"fm",    A(63,25,0), AFRB_MASK,   PWRCOM,  PPCVLE|PPCVLE,  {FRT, FRA, FRC}},
9917
{"fmul.", A(63,25,1), AFRB_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
9918
{"fm.",   A(63,25,1), AFRB_MASK,   PWRCOM,  PPCVLE|PPCVLE,  {FRT, FRA, FRC}},
9919
9920
{"frsqrte", A(63,26,0),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9921
{"frsqrte", A(63,26,0),   AFRALFRC_MASK, PPC, POWER7|PPCVLE,  {FRT, FRB, A_L}},
9922
{"frsqrte.",  A(63,26,1),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9923
{"frsqrte.",  A(63,26,1),   AFRALFRC_MASK, PPC, POWER7|PPCVLE,  {FRT, FRB, A_L}},
9924
9925
{"fmsub", A(63,28,0), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9926
{"fms",   A(63,28,0), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9927
{"fmsub.",  A(63,28,1), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9928
{"fms.",  A(63,28,1), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9929
9930
{"fmadd", A(63,29,0), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9931
{"fma",   A(63,29,0), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9932
{"fmadd.",  A(63,29,1), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9933
{"fma.",  A(63,29,1), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9934
9935
{"fnmsub",  A(63,30,0), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9936
{"fnms",  A(63,30,0), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9937
{"fnmsub.", A(63,30,1), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9938
{"fnms.", A(63,30,1), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9939
9940
{"fnmadd",  A(63,31,0), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9941
{"fnma",  A(63,31,0), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9942
{"fnmadd.", A(63,31,1), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9943
{"fnma.", A(63,31,1), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9944
9945
{"fcmpo", X(63,32), XBF_MASK,    COM, PPCEFS|PPCVLE,  {BF, FRA, FRB}},
9946
9947
{"dmulq", XRC(63,34,0), X_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp}},
9948
{"dmulq.",  XRC(63,34,1), X_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp}},
9949
9950
{"drrndq",  ZRC(63,35,0), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRA, FRBp, RMC}},
9951
{"drrndq.", ZRC(63,35,1), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRA, FRBp, RMC}},
9952
9953
{"xsmulqp", XRC(63,36,0), X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9954
{"xsmulqpo",  XRC(63,36,1), X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9955
9956
{"xsrqpxp", Z(63,37), Z2_MASK,     PPCVSX3, PPCVLE,   {R, VD, VB, RMC}},
9957
9958
{"mtfsb1",  XRC(63,38,0), XRARB_MASK,  COM, PPCVLE,   {BTF}},
9959
{"mtfsb1.", XRC(63,38,1), XRARB_MASK,  COM, PPCVLE,   {BTF}},
9960
9961
{"fneg",  XRC(63,40,0), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9962
{"fneg.", XRC(63,40,1), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9963
9964
{"mcrfs",      X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, PPCVLE,   {BF, BFA}},
9965
9966
{"dscliq",  ZRC(63,66,0), Z_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, SH16}},
9967
{"dscliq.", ZRC(63,66,1), Z_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, SH16}},
9968
9969
{"dquaiq",  ZRC(63,67,0), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {TE, FRTp, FRBp, RMC}},
9970
{"dquaiq.", ZRC(63,67,1), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {TE, FRTp, FRBp, RMC}},
9971
9972
{"xscmpeqqp", X(63,68), X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
9973
9974
{"mtfsb0",  XRC(63,70,0), XRARB_MASK,  COM, PPCVLE,   {BTF}},
9975
{"mtfsb0.", XRC(63,70,1), XRARB_MASK,  COM, PPCVLE,   {BTF}},
9976
9977
{"fmr",   XRC(63,72,0), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9978
{"fmr.",  XRC(63,72,1), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9979
9980
{"dscriq",  ZRC(63,98,0), Z_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, SH16}},
9981
{"dscriq.", ZRC(63,98,1), Z_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, SH16}},
9982
9983
{"drintxq", ZRC(63,99,0), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {R, FRTp, FRBp, RMC}},
9984
{"drintxq.",  ZRC(63,99,1), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {R, FRTp, FRBp, RMC}},
9985
9986
{"xscpsgnqp", X(63,100),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9987
9988
{"ftdiv", X(63,128),  XBF_MASK,    POWER7,  PPCVLE,   {BF, FRA, FRB}},
9989
9990
{"dcmpoq",  X(63,130),  X_MASK,      POWER6,  PPCVLE,   {BF, FRAp, FRBp}},
9991
9992
{"xscmpoqp",  X(63,132),  XBF_MASK,    PPCVSX3, PPCVLE,   {BF, VA, VB}},
9993
9994
{"mtfsfi",  XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
9995
{"mtfsfi",  XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
9996
{"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
9997
{"mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
9998
9999
{"fnabs", XRC(63,136,0),  XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
10000
{"fnabs.",  XRC(63,136,1),  XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
10001
10002
{"fctiwu",  XRC(63,142,0),  XRA_MASK,    POWER7,  PPCVLE,   {FRT, FRB}},
10003
{"fctiwu.", XRC(63,142,1),  XRA_MASK,    POWER7,  PPCVLE,   {FRT, FRB}},
10004
{"fctiwuz", XRC(63,143,0),  XRA_MASK,    POWER7,  PPCVLE,   {FRT, FRB}},
10005
{"fctiwuz.",  XRC(63,143,1),  XRA_MASK,    POWER7,  PPCVLE,   {FRT, FRB}},
10006
10007
{"ftsqrt",  X(63,160),  XBF_MASK|FRA_MASK, POWER7, PPCVLE,  {BF, FRB}},
10008
10009
{"dtstexq", X(63,162),  X_MASK,      POWER6,  PPCVLE,   {BF, FRAp, FRBp}},
10010
10011
{"xscmpexpqp",  X(63,164),  XBF_MASK,    PPCVSX3, PPCVLE,   {BF, VA, VB}},
10012
10013
{"dtstdcq", Z(63,194),  Z_MASK,      POWER6,  PPCVLE,   {BF, FRAp, DCM}},
10014
10015
{"xscmpgeqp", X(63,196),  X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
10016
10017
{"dtstdgq", Z(63,226),  Z_MASK,      POWER6,  PPCVLE,   {BF, FRAp, DGM}},
10018
10019
{"drintnq", ZRC(63,227,0), Z2_MASK|Q_MASK, POWER6,  PPCVLE,   {R, FRTp, FRBp, RMC}},
10020
{"drintnq.",  ZRC(63,227,1), Z2_MASK|Q_MASK, POWER6,  PPCVLE,   {R, FRTp, FRBp, RMC}},
10021
10022
{"xscmpgtqp", X(63,228),  X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
10023
10024
{"dctqpq",  XRC(63,258,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRB}},
10025
{"dctqpq.", XRC(63,258,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRB}},
10026
10027
{"fabs",  XRC(63,264,0),  XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
10028
{"fabs.", XRC(63,264,1),  XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
10029
10030
{"dctfixq", XRC(63,290,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRBp}},
10031
{"dctfixq.",  XRC(63,290,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRBp}},
10032
10033
{"ddedpdq", XRC(63,322,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {SP, FRTp, FRBp}},
10034
{"ddedpdq.",  XRC(63,322,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {SP, FRTp, FRBp}},
10035
10036
{"dxexq", XRC(63,354,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRBp}},
10037
{"dxexq.",  XRC(63,354,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRBp}},
10038
10039
{"xsmaddqp",  XRC(63,388,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
10040
{"xsmaddqpo", XRC(63,388,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
10041
10042
{"frin",  XRC(63,392,0),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
10043
{"frin.", XRC(63,392,1),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
10044
10045
{"xsmsubqp",  XRC(63,420,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
10046
{"xsmsubqpo", XRC(63,420,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
10047
10048
{"friz",  XRC(63,424,0),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
10049
{"friz.", XRC(63,424,1),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
10050
10051
{"xsnmaddqp", XRC(63,452,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
10052
{"xsnmaddqpo",  XRC(63,452,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
10053
10054
{"frip",  XRC(63,456,0),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
10055
{"frip.", XRC(63,456,1),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
10056
10057
{"xsnmsubqp", XRC(63,484,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
10058
{"xsnmsubqpo",  XRC(63,484,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
10059
10060
{"frim",  XRC(63,488,0),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
10061
{"frim.", XRC(63,488,1),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
10062
10063
{"dsubq", XRC(63,514,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRAp, FRBp}},
10064
{"dsubq.",  XRC(63,514,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRAp, FRBp}},
10065
10066
{"xssubqp", XRC(63,516,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
10067
{"xssubqpo",  XRC(63,516,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
10068
10069
{"ddivq", XRC(63,546,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRAp, FRBp}},
10070
{"ddivq.",  XRC(63,546,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRAp, FRBp}},
10071
10072
{"xsdivqp", XRC(63,548,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
10073
{"xsdivqpo",  XRC(63,548,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
10074
10075
{"mffs",  XRC(63,583,0),  XRARB_MASK,  COM, PPCEFS|PPCVLE,  {FRT}},
10076
{"mffs.", XRC(63,583,1),  XRARB_MASK,  COM, PPCEFS|PPCVLE,  {FRT}},
10077
10078
{"mffsce",  XMMF(63,583,0,1), XMMF_MASK|RB_MASK, POWER9, PPCVLE,  {FRT}},
10079
{"mffscdrn",  XMMF(63,583,2,4), XMMF_MASK,         POWER9, PPCVLE,  {FRT, FRB}},
10080
{"mffscdrni", XMMF(63,583,2,5), XMMF_MASK|(3<<14), POWER9, PPCVLE,  {FRT, DRM}},
10081
{"mffscrn", XMMF(63,583,2,6), XMMF_MASK,         POWER9, PPCVLE,  {FRT, FRB}},
10082
{"mffscrni",  XMMF(63,583,2,7), XMMF_MASK|(7<<13), POWER9, PPCVLE,  {FRT, RM}},
10083
{"mffsl", XMMF(63,583,3,0), XMMF_MASK|RB_MASK, POWER9, PPCVLE,  {FRT}},
10084
10085
{"dcmpuq",  X(63,642),  X_MASK,      POWER6,  PPCVLE,   {BF, FRAp, FRBp}},
10086
10087
{"xscmpuqp",  X(63,644),  XBF_MASK,    PPCVSX3, PPCVLE,   {BF, VA, VB}},
10088
10089
{"dtstsfq", X(63,674),  X_MASK,      POWER6,  PPCVLE,   {BF, FRA, FRBp}},
10090
{"dtstsfiq",  X(63,675),  X_MASK|1<<22,POWER9,  PPCVLE,   {BF, UIM6, FRBp}},
10091
10092
{"xsmaxcqp",  X(63,676),  X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
10093
10094
{"xststdcqp", X(63,708),  X_MASK,      PPCVSX3, PPCVLE,   {BF, VB, DCMX}},
10095
10096
{"mtfsf", XFL(63,711,0),  XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE,  {FLM, FRB, XFL_L, W}},
10097
{"mtfsf", XFL(63,711,0),  XFL_MASK,    COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
10098
{"mtfsf.",  XFL(63,711,1),  XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE,  {FLM, FRB, XFL_L, W}},
10099
{"mtfsf.",  XFL(63,711,1),  XFL_MASK,    COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
10100
10101
{"xsmincqp",  X(63,740),  X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
10102
10103
{"drdpq", XRC(63,770,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRBp}},
10104
{"drdpq.",  XRC(63,770,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRBp}},
10105
10106
{"dcffixq", XRC(63,802,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRB}},
10107
{"dcffixq.",  XRC(63,802,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRB}},
10108
10109
{"xsabsqp", XVA(63,804,0),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
10110
{"xsxexpqp",  XVA(63,804,2),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
10111
{"xsnabsqp",  XVA(63,804,8),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
10112
{"xsnegqp", XVA(63,804,16), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
10113
{"xsxsigqp",  XVA(63,804,18), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
10114
{"xssqrtqp",  XVARC(63,804,27,0), XVA_MASK, PPCVSX3,  PPCVLE,   {VD, VB}},
10115
{"xssqrtqpo", XVARC(63,804,27,1), XVA_MASK, PPCVSX3,  PPCVLE,   {VD, VB}},
10116
10117
{"fctid", XRC(63,814,0),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
10118
{"fctid", XRC(63,814,0),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
10119
{"fctid.",  XRC(63,814,1),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
10120
{"fctid.",  XRC(63,814,1),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
10121
10122
{"fctidz",  XRC(63,815,0),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
10123
{"fctidz",  XRC(63,815,0),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
10124
{"fctidz.", XRC(63,815,1),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
10125
{"fctidz.", XRC(63,815,1),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
10126
10127
{"denbcdq", XRC(63,834,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {S, FRTp, FRBp}},
10128
{"denbcdq.",  XRC(63,834,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {S, FRTp, FRBp}},
10129
10130
{"xscvqpuqz", XVA(63,836,0),  XVA_MASK,    POWER10, PPCVLE,   {VD, VB}},
10131
{"xscvqpuwz", XVA(63,836,1),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
10132
{"xscvudqp",  XVA(63,836,2),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
10133
{"xscvuqqp",  XVA(63,836,3),  XVA_MASK,    POWER10, PPCVLE,   {VD, VB}},
10134
{"xscvqpsqz", XVA(63,836,8),  XVA_MASK,    POWER10, PPCVLE,   {VD, VB}},
10135
{"xscvqpswz", XVA(63,836,9),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
10136
{"xscvsdqp",  XVA(63,836,10), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
10137
{"xscvsqqp",  XVA(63,836,11), XVA_MASK,    POWER10, PPCVLE,   {VD, VB}},
10138
{"xscvqpudz", XVA(63,836,17), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
10139
{"xscvqpdp",  XVARC(63,836,20,0), XVA_MASK, PPCVSX3,  PPCVLE,   {VD, VB}},
10140
{"xscvqpdpo", XVARC(63,836,20,1), XVA_MASK, PPCVSX3,  PPCVLE,   {VD, VB}},
10141
{"xscvdpqp",  XVA(63,836,22), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
10142
{"xscvqpsdz", XVA(63,836,25), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
10143
10144
{"fmrgow",  X(63,838),  X_MASK,      PPCVSX2, PPCVLE,   {FRT, FRA, FRB}},
10145
10146
{"fcfid", XRC(63,846,0),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
10147
{"fcfid", XRC(63,846,0),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
10148
{"fcfid.",  XRC(63,846,1),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
10149
{"fcfid.",  XRC(63,846,1),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
10150
10151
{"diexq", XRC(63,866,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRA, FRBp}},
10152
{"diexq.",  XRC(63,866,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRA, FRBp}},
10153
10154
{"xsiexpqp",  X(63,868),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
10155
10156
{"fctidu",  XRC(63,942,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
10157
{"fctidu.", XRC(63,942,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
10158
10159
{"fctiduz", XRC(63,943,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
10160
{"fctiduz.",  XRC(63,943,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
10161
10162
{"fmrgew",  X(63,966),  X_MASK,      PPCVSX2, PPCVLE,   {FRT, FRA, FRB}},
10163
10164
{"fcfidu",  XRC(63,974,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
10165
{"fcfidu.", XRC(63,974,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
10166
10167
{"dcffixqq",  XVA(63,994,0),  XVA_MASK,    POWER10, PPCVLE,   {FRTp, VB}},
10168
{"dctfixqq",  XVA(63,994,1),  XVA_MASK,    POWER10, PPCVLE,   {VD, FRBp}},
10169
};
10170
10171
const unsigned int powerpc_num_opcodes = ARRAY_SIZE (powerpc_opcodes);
10172

10173
/* The opcode table for 8-byte prefix instructions.
10174
10175
   The format of this opcode table is the same as the main opcode table.  */
10176
10177
const struct powerpc_opcode prefix_opcodes[] = {
10178
{"pnop",    PMRR,          PREFIX_MASK, POWER10, 0, {0}},
10179
{"pli",     PMLS|OP(14),         P_DRAPCREL_MASK, POWER10, EXT, {RT, SI34}},
10180
{"pla",     PMLS|OP(14),         P_D_MASK,  POWER10, EXT, {RT, D34, PRA0, PCREL1}},
10181
{"paddi",   PMLS|OP(14),         P_D_MASK,  POWER10, 0, {RT, RA0, SI34, PCREL}},
10182
{"psubi",   PMLS|OP(14),         P_D_MASK,  POWER10, EXT, {RT, RA0, NSI34, PCREL}},
10183
{"plis",    PMLS|OP(15),         P_DRAPCREL_SI32_MASK,  FUTURE,  EXT, {RT, SI32}},
10184
{"paddis",    PMLS|OP(15),         P_D_SI32_MASK,   FUTURE,  0, {RT, RA0, SI32, PCREL}},
10185
{"psubis",    PMLS|OP(15),         P_D_SI32_MASK,   FUTURE,  EXT, {RT, RA0, NSI32, PCREL}},
10186
{"xxsplti32dx",   P8RR|VSOP(32,0),     P_VSI_MASK,  POWER10, 0, {XTS, IX, IMM32}},
10187
{"xxspltidp",   P8RR|VSOP(32,2),     P_VS_MASK, POWER10, 0, {XTS, IMM32}},
10188
{"xxspltiw",    P8RR|VSOP(32,3),     P_VS_MASK, POWER10, 0, {XTS, IMM32}},
10189
{"plwz",    PMLS|OP(32),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
10190
{"xxblendvb",   P8RR|XX4(33,0),      P_XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6}},
10191
{"xxblendvh",   P8RR|XX4(33,1),      P_XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6}},
10192
{"xxblendvw",   P8RR|XX4(33,2),      P_XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6}},
10193
{"xxblendvd",   P8RR|XX4(33,3),      P_XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6}},
10194
{"xxpermx",   P8RR|XX4(34,0),      P_UXX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6, UIM3}},
10195
{"xxeval",    P8RR|XX4(34,1),      P_U8XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6, UIM8}},
10196
{"xxssumudmcext", P8RR|VMSOP(34,1),    P_VMS_MASK,  FUTURE,  0, {XT6, XA6, XB6, XC6, PSSUMEXT}},
10197
{"plbz",    PMLS|OP(34),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
10198
{"pstw",    PMLS|OP(36),         P_D_MASK,  POWER10, 0, {RS, D34, PRA0, PCREL}},
10199
{"pstb",    PMLS|OP(38),         P_D_MASK,  POWER10, 0, {RS, D34, PRA0, PCREL}},
10200
{"plhz",    PMLS|OP(40),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
10201
{"plwa",    P8LS|OP(41),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
10202
{"plxsd",   P8LS|OP(42),         P_D_MASK,  POWER10, 0, {VD, D34, PRA0, PCREL}},
10203
{"plha",    PMLS|OP(42),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
10204
{"plxssp",    P8LS|OP(43),         P_D_MASK,  POWER10, 0, {VD, D34, PRA0, PCREL}},
10205
{"psth",    PMLS|OP(44),         P_D_MASK,  POWER10, 0, {RS, D34, PRA0, PCREL}},
10206
{"pstxsd",    P8LS|OP(46),         P_D_MASK,  POWER10, 0, {VS, D34, PRA0, PCREL}},
10207
{"pstxssp",   P8LS|OP(47),         P_D_MASK,  POWER10, 0, {VS, D34, PRA0, PCREL}},
10208
{"plfs",    PMLS|OP(48),         P_D_MASK,  POWER10, 0, {FRT, D34, PRA0, PCREL}},
10209
{"plxv",    P8LS|OP(50),         P_D_MASK&~OP(1), POWER10, 0, {XTOP, D34, PRA0, PCREL}},
10210
{"plfd",    PMLS|OP(50),         P_D_MASK,  POWER10, 0, {FRT, D34, PRA0, PCREL}},
10211
{"pstfs",   PMLS|OP(52),         P_D_MASK,  POWER10, 0, {FRS, D34, PRA0, PCREL}},
10212
{"pstxv",   P8LS|OP(54),         P_D_MASK&~OP(1), POWER10, 0, {XTOP, D34, PRA0, PCREL}},
10213
{"pstfd",   PMLS|OP(54),         P_D_MASK,  POWER10, 0, {FRS, D34, PRA0, PCREL}},
10214
{"plq",     P8LS|OP(56),         P_D_MASK,  POWER10, 0, {RTQ, D34, PRAQ, PCREL}},
10215
{"pld",     P8LS|OP(57),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
10216
{"plxvp",   P8LS|OP(58),         P_D_MASK,  POWER10, 0, {XTP, D34, PRA0, PCREL}},
10217
{"pmdmxvi8ger4pp",PMMIRR|XX3(59,2),    P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
10218
{"pmxvi8ger4pp",  PMMIRR|XX3(59,2),    P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
10219
{"pmdmxvi8ger4",  PMMIRR|XX3(59,3),    P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
10220
{"pmxvi8ger4",    PMMIRR|XX3(59,3),    P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
10221
{"pmdmxvi8gerx4pp",PMMIRR|XX3(59,10),  P_GERX4_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK4}},
10222
{"pmdmxvi8gerx4", PMMIRR|XX3(59,11),   P_GERX4_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK4}},
10223
{"pmdmxvf16ger2pp",PMMIRR|XX3(59,18),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10224
{"pmxvf16ger2pp", PMMIRR|XX3(59,18),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10225
{"pmdmxvf16ger2", PMMIRR|XX3(59,19),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10226
{"pmxvf16ger2",   PMMIRR|XX3(59,19),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10227
{"pmdmxvf32gerpp",PMMIRR|XX3(59,26),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10228
{"pmxvf32gerpp",  PMMIRR|XX3(59,26),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10229
{"pmdmxvf32ger",  PMMIRR|XX3(59,27),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10230
{"pmxvf32ger",    PMMIRR|XX3(59,27),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10231
{"pmdmxvi4ger8pp",PMMIRR|XX3(59,34),   P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
10232
{"pmxvi4ger8pp",  PMMIRR|XX3(59,34),   P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
10233
{"pmdmxvi4ger8",  PMMIRR|XX3(59,35),   P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
10234
{"pmxvi4ger8",    PMMIRR|XX3(59,35),   P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
10235
{"pmdmxvi16ger2spp",PMMIRR|XX3(59,42), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10236
{"pmxvi16ger2spp",PMMIRR|XX3(59,42),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10237
{"pmdmxvi16ger2s",PMMIRR|XX3(59,43),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10238
{"pmxvi16ger2s",  PMMIRR|XX3(59,43),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10239
{"pmdmxvbf16ger2pp",PMMIRR|XX3(59,50), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10240
{"pmxvbf16ger2pp",PMMIRR|XX3(59,50),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10241
{"pmdmxvbf16ger2",PMMIRR|XX3(59,51),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10242
{"pmxvbf16ger2",  PMMIRR|XX3(59,51),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10243
{"pmdmxvf64gerpp",PMMIRR|XX3(59,58),   P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10244
{"pmxvf64gerpp",  PMMIRR|XX3(59,58),   P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10245
{"pmdmxvf64ger",  PMMIRR|XX3(59,59),   P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10246
{"pmxvf64ger",    PMMIRR|XX3(59,59),   P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10247
{"pmdmxvf16gerx2pp",PMMIRR|XX3(59,66), P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10248
{"pmdmxvf16gerx2",PMMIRR|XX3(59,67),   P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10249
{"pmdmxvbf16gerx2pp",PMMIRR|XX3(59,74),P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10250
{"pmdmxvi16ger2", PMMIRR|XX3(59,75),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10251
{"pmxvi16ger2",   PMMIRR|XX3(59,75),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10252
{"pmdmxvf16ger2np",PMMIRR|XX3(59,82),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10253
{"pmxvf16ger2np", PMMIRR|XX3(59,82),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10254
{"pmdmxvf16gerx2np",PMMIRR|XX3(59,83), P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10255
{"pmdmxvf32gernp",PMMIRR|XX3(59,90),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10256
{"pmxvf32gernp",  PMMIRR|XX3(59,90),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10257
{"pmdmxvbf16gerx2",PMMIRR|XX3(59,91),  P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10258
{"pmdmxvi8gerx4spp",PMMIRR|XX3(59,98), P_GERX4_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK4}},
10259
{"pmdmxvi8ger4spp",PMMIRR|XX3(59,99),  P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
10260
{"pmxvi8ger4spp", PMMIRR|XX3(59,99),   P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
10261
{"pmdmxvi16ger2pp",PMMIRR|XX3(59,107), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10262
{"pmxvi16ger2pp", PMMIRR|XX3(59,107),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10263
{"pmdmxvbf16ger2np",PMMIRR|XX3(59,114),P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10264
{"pmxvbf16ger2np",PMMIRR|XX3(59,114),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10265
{"pmdmxvbf16gerx2np",PMMIRR|XX3(59,115),P_GERX2_MASK, FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10266
{"pmdmxvf64gernp",PMMIRR|XX3(59,122),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10267
{"pmxvf64gernp",  PMMIRR|XX3(59,122),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10268
{"pmdmxvf16ger2pn",PMMIRR|XX3(59,146), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10269
{"pmxvf16ger2pn", PMMIRR|XX3(59,146),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10270
{"pmdmxvf16gerx2pn",PMMIRR|XX3(59,147),P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10271
{"pmdmxvf32gerpn",PMMIRR|XX3(59,154),  P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10272
{"pmxvf32gerpn",  PMMIRR|XX3(59,154),  P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10273
{"pmdmxvbf16ger2pn",PMMIRR|XX3(59,178),P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10274
{"pmxvbf16ger2pn",PMMIRR|XX3(59,178),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10275
{"pmdmxvbf16gerx2pn",PMMIRR|XX3(59,179),P_GERX2_MASK, FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10276
{"pmdmxvf64gerpn",PMMIRR|XX3(59,186),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10277
{"pmxvf64gerpn",  PMMIRR|XX3(59,186),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10278
{"pmdmxvf16gerx2nn",PMMIRR|XX3(59,202),P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10279
{"pmdmxvf16ger2nn",PMMIRR|XX3(59,210), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10280
{"pmxvf16ger2nn", PMMIRR|XX3(59,210),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10281
{"pmdmxvf32gernn",PMMIRR|XX3(59,218),  P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10282
{"pmxvf32gernn",  PMMIRR|XX3(59,218),  P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10283
{"pmdmxvbf16gerx2nn",PMMIRR|XX3(59,234),P_GERX2_MASK, FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10284
{"pmdmxvbf16ger2nn",PMMIRR|XX3(59,242),P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10285
{"pmxvbf16ger2nn",PMMIRR|XX3(59,242),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10286
{"pmdmxvf64gernn",PMMIRR|XX3(59,250),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10287
{"pmxvf64gernn",  PMMIRR|XX3(59,250),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10288
{"pstq",    P8LS|OP(60),         P_D_MASK,  POWER10, 0, {RSQ, D34, PRA0, PCREL}},
10289
{"pstd",    P8LS|OP(61),         P_D_MASK,  POWER10, 0, {RS, D34, PRA0, PCREL}},
10290
{"pstxvp",    P8LS|OP(62),         P_D_MASK,  POWER10, 0, {XSP, D34, PRA0, PCREL}},
10291
};
10292
10293
const unsigned int prefix_num_opcodes = ARRAY_SIZE (prefix_opcodes);
10294

10295
/* The VLE opcode table.
10296
10297
   The format of this opcode table is the same as the main opcode table.  */
10298
10299
const struct powerpc_opcode vle_opcodes[] = {
10300
{"se_illegal",  C(0),   C_MASK,   PPCVLE, 0,    {}},
10301
{"se_isync",  C(1),   C_MASK,   PPCVLE, 0,    {}},
10302
{"se_sc", C(2),   C_MASK,   PPCVLE, 0,    {}},
10303
{"se_blr",  C_LK(2,0),  C_LK_MASK,  PPCVLE, 0,    {}},
10304
{"se_blrl", C_LK(2,1),  C_LK_MASK,  PPCVLE, 0,    {}},
10305
{"se_bctr", C_LK(3,0),  C_LK_MASK,  PPCVLE, 0,    {}},
10306
{"se_bctrl",  C_LK(3,1),  C_LK_MASK,  PPCVLE, 0,    {}},
10307
{"se_rfi",  C(8),   C_MASK,   PPCVLE, 0,    {}},
10308
{"se_rfci", C(9),   C_MASK,   PPCVLE, 0,    {}},
10309
{"se_rfdi", C(10),    C_MASK,   PPCVLE, 0,    {}},
10310
/* PPCRFMCI in the following does not enable the instruction for any
10311
   PPC_OPCODE_RFMCI supporting cpu as vle_opcodes are all added to the
10312
   assembler hash table or searched by the disassembler under control
10313
   of PPC_OPCODE_VLE.  It's there to set apuinfo.  */
10314
{"se_rfmci",  C(11),    C_MASK, PPCRFMCI|PPCVLE, 0,   {}},
10315
{"se_rfgi", C(12),    C_MASK,   PPCVLE, 0,    {}},
10316
{"se_not",  SE_R(0,2),  SE_R_MASK,  PPCVLE, 0,    {RX}},
10317
{"se_neg",  SE_R(0,3),  SE_R_MASK,  PPCVLE, 0,    {RX}},
10318
{"se_mflr", SE_R(0,8),  SE_R_MASK,  PPCVLE, 0,    {RX}},
10319
{"se_mtlr", SE_R(0,9),  SE_R_MASK,  PPCVLE, 0,    {RX}},
10320
{"se_mfctr",  SE_R(0,10), SE_R_MASK,  PPCVLE, 0,    {RX}},
10321
{"se_mtctr",  SE_R(0,11), SE_R_MASK,  PPCVLE, 0,    {RX}},
10322
{"se_extzb",  SE_R(0,12), SE_R_MASK,  PPCVLE, 0,    {RX}},
10323
{"se_extsb",  SE_R(0,13), SE_R_MASK,  PPCVLE, 0,    {RX}},
10324
{"se_extzh",  SE_R(0,14), SE_R_MASK,  PPCVLE, 0,    {RX}},
10325
{"se_extsh",  SE_R(0,15), SE_R_MASK,  PPCVLE, 0,    {RX}},
10326
{"se_mr", SE_RR(0,1), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10327
{"se_mtar", SE_RR(0,2), SE_RR_MASK, PPCVLE, 0,    {ARX, RY}},
10328
{"se_mfar", SE_RR(0,3), SE_RR_MASK, PPCVLE, 0,    {RX, ARY}},
10329
{"se_add",  SE_RR(1,0), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10330
{"se_mullw",  SE_RR(1,1), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10331
{"se_sub",  SE_RR(1,2), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10332
{"se_subf", SE_RR(1,3), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10333
{"se_cmp",  SE_RR(3,0), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10334
{"se_cmpl", SE_RR(3,1), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10335
{"se_cmph", SE_RR(3,2), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10336
{"se_cmphl",  SE_RR(3,3), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10337
10338
/* by major opcode */
10339
{"e_cmpi",  SCI8BF(6,0,21), SCI8BF_MASK,  PPCVLE, 0,    {CRD32, RA, SCLSCI8}},
10340
{"e_cmpwi", SCI8BF(6,0,21), SCI8BF_MASK,  PPCVLE, 0,    {CRD32, RA, SCLSCI8}},
10341
{"e_cmpli", SCI8BF(6,1,21), SCI8BF_MASK,  PPCVLE, 0,    {CRD32, RA, SCLSCI8}},
10342
{"e_cmplwi",  SCI8BF(6,1,21), SCI8BF_MASK,  PPCVLE, 0,    {CRD32, RA, SCLSCI8}},
10343
{"e_addi",  SCI8(6,16), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
10344
{"e_subi",  SCI8(6,16), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8N}},
10345
{"e_addi.", SCI8(6,17), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
10346
{"e_addic", SCI8(6,18), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
10347
{"e_subic", SCI8(6,18), SCI8_MASK,  PPCVLE, EXT,    {RT, RA, SCLSCI8N}},
10348
{"e_addic.",  SCI8(6,19), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
10349
{"e_subic.",  SCI8(6,19), SCI8_MASK,  PPCVLE, EXT,    {RT, RA, SCLSCI8N}},
10350
{"e_mulli", SCI8(6,20), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
10351
{"e_subfic",  SCI8(6,22), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
10352
{"e_subfic.", SCI8(6,23), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
10353
{"e_andi",  SCI8(6,24), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
10354
{"e_andi.", SCI8(6,25), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
10355
{"e_nop", SCI8(6,26), 0xffffffff, PPCVLE, EXT,    {0}},
10356
{"e_ori", SCI8(6,26), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
10357
{"e_ori.",  SCI8(6,27), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
10358
{"e_xori",  SCI8(6,28), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
10359
{"e_xori.", SCI8(6,29), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
10360
{"e_lbzu",  OPVUP(6,0), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10361
{"e_lhau",  OPVUP(6,3), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10362
{"e_lhzu",  OPVUP(6,1), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10363
{"e_lmw", OPVUP(6,8), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10364
{"e_lwzu",  OPVUP(6,2), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10365
{"e_stbu",  OPVUP(6,4), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10366
{"e_sthu",  OPVUP(6,5), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10367
{"e_stwu",  OPVUP(6,6), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10368
{"e_stmw",  OPVUP(6,9), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10369
{"e_lmvgprw", OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10370
{"e_ldmvgprw",  OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10371
{"e_stmvgprw",  OPVUPRT(6,17,0),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10372
{"e_lmvsprw", OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10373
{"e_ldmvsprw",  OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10374
{"e_stmvsprw",  OPVUPRT(6,17,1),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10375
{"e_lmvsrrw", OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10376
{"e_ldmvsrrw",  OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10377
{"e_stmvsrrw",  OPVUPRT(6,17,4),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10378
{"e_lmvcsrrw",  OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10379
{"e_ldmvcsrrw", OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10380
{"e_stmvcsrrw", OPVUPRT(6,17,5),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10381
{"e_lmvdsrrw",  OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10382
{"e_ldmvdsrrw", OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10383
{"e_stmvdsrrw", OPVUPRT(6,17,6),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10384
{"e_lmvmcsrrw", OPVUPRT(6,16,7),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10385
{"e_stmvmcsrrw",OPVUPRT(6,17,7),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10386
{"e_add16i",  OP(7),    OP_MASK,  PPCVLE, 0,    {RT, RA, SI}},
10387
{"e_la",  OP(7),    OP_MASK,  PPCVLE, EXT,    {RT, D, RA0}},
10388
{"e_sub16i",  OP(7),    OP_MASK,  PPCVLE, EXT,    {RT, RA, NSI}},
10389
10390
{"se_addi", SE_IM5(8,0),  SE_IM5_MASK,  PPCVLE, 0,    {RX, OIMM5}},
10391
{"se_cmpli",  SE_IM5(8,1),  SE_IM5_MASK,  PPCVLE, 0,    {RX, OIMM5}},
10392
{"se_subi", SE_IM5(9,0),  SE_IM5_MASK,  PPCVLE, 0,    {RX, OIMM5}},
10393
{"se_subi.",  SE_IM5(9,1),  SE_IM5_MASK,  PPCVLE, 0,    {RX, OIMM5}},
10394
{"se_cmpi", SE_IM5(10,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10395
{"se_bmaski", SE_IM5(11,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10396
{"se_andi", SE_IM5(11,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10397
10398
{"e_lbz", OP(12),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10399
{"e_stb", OP(13),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10400
{"e_lha", OP(14),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10401
10402
{"se_srw",  SE_RR(16,0),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10403
{"se_sraw", SE_RR(16,1),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10404
{"se_slw",  SE_RR(16,2),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10405
{"se_nop",  SE_RR(17,0),  0xffff,   PPCVLE, EXT,    {0}},
10406
{"se_or", SE_RR(17,0),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10407
{"se_andc", SE_RR(17,1),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10408
{"se_and",  SE_RR(17,2),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10409
{"se_and.", SE_RR(17,3),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10410
{"se_li", IM7(9),   IM7_MASK, PPCVLE, 0,    {RX, UI7}},
10411
10412
{"e_lwz", OP(20),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10413
{"e_stw", OP(21),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10414
{"e_lhz", OP(22),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10415
{"e_sth", OP(23),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10416
10417
{"se_bclri",  SE_IM5(24,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10418
{"se_bgeni",  SE_IM5(24,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10419
{"se_bseti",  SE_IM5(25,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10420
{"se_btsti",  SE_IM5(25,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10421
{"se_srwi", SE_IM5(26,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10422
{"se_srawi",  SE_IM5(26,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10423
{"se_slwi", SE_IM5(27,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10424
10425
{"e_lis", I16L(28,28),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10426
{"e_and2is.", I16L(28,29),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10427
{"e_or2is", I16L(28,26),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10428
{"e_and2i.",  I16L(28,25),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10429
{"e_or2i",  I16L(28,24),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10430
{"e_cmphl16i",  IA16(28,23),  IA16_MASK,  PPCVLE, 0,    {RA, VLEUIMM}},
10431
{"e_cmph16i", IA16(28,22),  IA16_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10432
{"e_cmpl16i", I16A(28,21),  I16A_MASK,  PPCVLE, 0,    {RA, VLEUIMM}},
10433
{"e_mull2i",  I16A(28,20),  I16A_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10434
{"e_cmp16i",  IA16(28,19),  IA16_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10435
{"e_sub2is",  I16A(28,18),  I16A_MASK,  PPCVLE, EXT,    {RA, VLENSIMM}},
10436
{"e_add2is",  I16A(28,18),  I16A_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10437
{"e_sub2i.",  I16A(28,17),  I16A_MASK,  PPCVLE, EXT,    {RA, VLENSIMM}},
10438
{"e_add2i.",  I16A(28,17),  I16A_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10439
{"e_li",  LI20(28,0), LI20_MASK,  PPCVLE, 0,    {RT, IMM20}},
10440
{"e_rlwimi",  M(29,0),  M_MASK,   PPCVLE, 0,    {RA, RS, SH, MB, ME}},
10441
{"e_inslwi",  M(29,0),  M_MASK,   PPCVLE, EXT,    {RA, RS, ILWn, ILWb}},
10442
{"e_insrwi",  M(29,0),  M_MASK,   PPCVLE, EXT,    {RA, RS, IRWn, IRWb}},
10443
{"e_rotlwi",  MME(29,31,1), MMBME_MASK, PPCVLE, EXT,    {RA, RS, SH}},
10444
{"e_rotrwi",  MME(29,31,1), MMBME_MASK, PPCVLE, EXT,    {RA, RS, RRWn}},
10445
{"e_clrlwi",  MME(29,31,1), MSHME_MASK, PPCVLE, EXT,    {RA, RS, MB}},
10446
{"e_clrrwi",  M(29,1),  MSHMB_MASK, PPCVLE, EXT,    {RA, RS, CRWn}},
10447
{"e_rlwinm",  M(29,1),  M_MASK,   PPCVLE, 0,    {RA, RS, SH, MBE, ME}},
10448
{"e_extlwi",  M(29,1),  MMB_MASK, PPCVLE, EXT,    {RA, RS, ELWn, SH}},
10449
{"e_extrwi",  MME(29,31,1), MME_MASK, PPCVLE, EXT,    {RA, RS, ERWn, ERWb}},
10450
{"e_clrlslwi",  M(29,1),  M_MASK,   PPCVLE, EXT,    {RA, RS, CSLWb, CSLWn}},
10451
{"e_b",   BD24(30,0,0), BD24_MASK,  PPCVLE, 0,    {B24}},
10452
{"e_bl",  BD24(30,0,1), BD24_MASK,  PPCVLE, 0,    {B24}},
10453
{"e_bdnz",  EBD15(30,8,BO32DNZ,0),  EBD15_MASK, PPCVLE, EXT,  {B15}},
10454
{"e_bdnzl", EBD15(30,8,BO32DNZ,1),  EBD15_MASK, PPCVLE, EXT,  {B15}},
10455
{"e_bdz", EBD15(30,8,BO32DZ,0), EBD15_MASK, PPCVLE, EXT,  {B15}},
10456
{"e_bdzl",  EBD15(30,8,BO32DZ,1), EBD15_MASK, PPCVLE, EXT,  {B15}},
10457
{"e_bge", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10458
{"e_bgel",  EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10459
{"e_bnl", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10460
{"e_bnll",  EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10461
{"e_blt", EBD15BI(30,8,BO32T,CBLT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10462
{"e_bltl",  EBD15BI(30,8,BO32T,CBLT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10463
{"e_bgt", EBD15BI(30,8,BO32T,CBGT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10464
{"e_bgtl",  EBD15BI(30,8,BO32T,CBGT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10465
{"e_ble", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10466
{"e_blel",  EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10467
{"e_bng", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10468
{"e_bngl",  EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10469
{"e_bne", EBD15BI(30,8,BO32F,CBEQ,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10470
{"e_bnel",  EBD15BI(30,8,BO32F,CBEQ,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10471
{"e_beq", EBD15BI(30,8,BO32T,CBEQ,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10472
{"e_beql",  EBD15BI(30,8,BO32T,CBEQ,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10473
{"e_bso", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10474
{"e_bsol",  EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10475
{"e_bun", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10476
{"e_bunl",  EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10477
{"e_bns", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10478
{"e_bnsl",  EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10479
{"e_bnu", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10480
{"e_bnul",  EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10481
{"e_bc",  BD15(30,8,0), BD15_MASK,  PPCVLE, 0,    {BO32, BI32, B15}},
10482
{"e_bcl", BD15(30,8,1), BD15_MASK,  PPCVLE, 0,    {BO32, BI32, B15}},
10483
10484
{"e_bf",  EBD15(30,8,BO32F,0), EBD15_MASK, PPCVLE, EXT,   {BI32,B15}},
10485
{"e_bfl", EBD15(30,8,BO32F,1), EBD15_MASK, PPCVLE, EXT,   {BI32,B15}},
10486
{"e_bt",  EBD15(30,8,BO32T,0), EBD15_MASK, PPCVLE, EXT,   {BI32,B15}},
10487
{"e_btl", EBD15(30,8,BO32T,1), EBD15_MASK, PPCVLE, EXT,   {BI32,B15}},
10488
10489
{"e_cmph",  X(31,14), X_MASK,   PPCVLE, 0,    {CRD, RA, RB}},
10490
{"e_sc",  X(31,36), XRTRA_MASK, PPCVLE, 0,    {ELEV}},
10491
{"e_cmphl", X(31,46), X_MASK,   PPCVLE, 0,    {CRD, RA, RB}},
10492
{"e_crandc",  XL(31,129), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10493
{"e_crnand",  XL(31,225), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10494
{"e_crnot", XL(31,33),  XL_MASK,  PPCVLE, EXT,    {BT, BAB}},
10495
{"e_crnor", XL(31,33),  XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10496
{"e_crclr", XL(31,193), XL_MASK,  PPCVLE, EXT,    {BTAB}},
10497
{"e_crxor", XL(31,193), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10498
{"e_mcrf",  XL(31,16),  XL_MASK,  PPCVLE, 0,    {CRD, CR}},
10499
{"e_slwi",  EX(31,112), EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10500
{"e_slwi.", EX(31,113), EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10501
10502
{"e_crand", XL(31,257), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10503
10504
{"e_rlw", EX(31,560), EX_MASK,  PPCVLE, 0,    {RA, RS, RB}},
10505
{"e_rlw.",  EX(31,561), EX_MASK,  PPCVLE, 0,    {RA, RS, RB}},
10506
10507
{"e_crset", XL(31,289), XL_MASK,  PPCVLE, EXT,    {BTAB}},
10508
{"e_creqv", XL(31,289), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10509
10510
{"e_rlwi",  EX(31,624), EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10511
{"e_rlwi.", EX(31,625), EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10512
10513
{"e_crorc", XL(31,417), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10514
10515
{"e_crmove",  XL(31,449), XL_MASK,  PPCVLE, EXT,    {BT, BAB}},
10516
{"e_cror",  XL(31,449), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10517
10518
{"mtmas1",  XSPR(31,467,625), XSPR_MASK,  PPCVLE, EXT,    {RS}},
10519
10520
{"e_srwi",  EX(31,1136),  EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10521
{"e_srwi.", EX(31,1137),  EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10522
10523
{"se_lbz",  SD4(8),   SD4_MASK, PPCVLE, 0,    {RZ, SE_SD, RX}},
10524
10525
{"se_stb",  SD4(9),   SD4_MASK, PPCVLE, 0,    {RZ, SE_SD, RX}},
10526
10527
{"se_lhz",  SD4(10),  SD4_MASK, PPCVLE, 0,    {RZ, SE_SDH, RX}},
10528
10529
{"se_sth",  SD4(11),  SD4_MASK, PPCVLE, 0,    {RZ, SE_SDH, RX}},
10530
10531
{"se_lwz",  SD4(12),  SD4_MASK, PPCVLE, 0,    {RZ, SE_SDW, RX}},
10532
10533
{"se_stw",  SD4(13),  SD4_MASK, PPCVLE, 0,    {RZ, SE_SDW, RX}},
10534
10535
{"se_bge",  EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10536
{"se_bnl",  EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10537
{"se_ble",  EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10538
{"se_bng",  EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10539
{"se_bne",  EBD8IO(28,0,2), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10540
{"se_bns",  EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10541
{"se_bnu",  EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10542
{"se_bf", EBD8IO(28,0,0), EBD8IO2_MASK, PPCVLE, EXT,    {BI16, B8}},
10543
{"se_blt",  EBD8IO(28,1,0), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10544
{"se_bgt",  EBD8IO(28,1,1), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10545
{"se_beq",  EBD8IO(28,1,2), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10546
{"se_bso",  EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10547
{"se_bun",  EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10548
{"se_bt", EBD8IO(28,1,0), EBD8IO2_MASK, PPCVLE, EXT,    {BI16, B8}},
10549
{"se_bc", BD8IO(28),  BD8IO_MASK, PPCVLE, 0,    {BO16, BI16, B8}},
10550
{"se_b",  BD8(58,0,0),  BD8_MASK, PPCVLE, 0,    {B8}},
10551
{"se_bl", BD8(58,0,1),  BD8_MASK, PPCVLE, 0,    {B8}},
10552
};
10553
10554
const unsigned int vle_num_opcodes = ARRAY_SIZE (vle_opcodes);
10555
10556
const struct powerpc_opcode lsp_opcodes[] = {
10557
{"zvaddih",       VX(4, 0x200), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM}},
10558
{"zvsubifh",        VX(4, 0x201), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM}},
10559
{"zvaddh",        VX(4, 0x204), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10560
{"zvsubfh",       VX(4, 0x205), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10561
{"zvaddsubfh",        VX(4, 0x206), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10562
{"zvsubfaddh",        VX(4, 0x207), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10563
{"zvaddhx",       VX(4, 0x20C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10564
{"zvsubfhx",        VX(4, 0x20D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10565
{"zvaddsubfhx",       VX(4, 0x20E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10566
{"zvsubfaddhx",       VX(4, 0x20F), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10567
{"zaddwus",       VX(4, 0x210), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10568
{"zsubfwus",        VX(4, 0x211), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10569
{"zaddwss",       VX(4, 0x212), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10570
{"zsubfwss",        VX(4, 0x213), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10571
{"zvaddhus",        VX(4, 0x214), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10572
{"zvsubfhus",       VX(4, 0x215), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10573
{"zvaddhss",        VX(4, 0x216), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10574
{"zvsubfhss",       VX(4, 0x217), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10575
{"zvaddsubfhss",      VX(4, 0x21A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10576
{"zvsubfaddhss",      VX(4, 0x21B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10577
{"zvaddhxss",       VX(4, 0x21C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10578
{"zvsubfhxss",        VX(4, 0x21D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10579
{"zvaddsubfhxss",     VX(4, 0x21E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10580
{"zvsubfaddhxss",     VX(4, 0x21F), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10581
{"zaddheuw",        VX(4, 0x220), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10582
{"zsubfheuw",       VX(4, 0x221), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10583
{"zaddhesw",        VX(4, 0x222), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10584
{"zsubfhesw",       VX(4, 0x223), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10585
{"zaddhouw",        VX(4, 0x224), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10586
{"zsubfhouw",       VX(4, 0x225), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10587
{"zaddhosw",        VX(4, 0x226), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10588
{"zsubfhosw",       VX(4, 0x227), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10589
{"zvmergehih",        VX(4, 0x22C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10590
{"zvmergeloh",        VX(4, 0x22D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10591
{"zvmergehiloh",      VX(4, 0x22E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10592
{"zvmergelohih",      VX(4, 0x22F), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10593
{"zvcmpgthu",       VX(4, 0x230), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10594
{"zvcmpgths",       VX(4, 0x230), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10595
{"zvcmplthu",       VX(4, 0x231), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10596
{"zvcmplths",       VX(4, 0x231), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10597
{"zvcmpeqh",        VX(4, 0x232), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10598
{"zpkswgshfrs",       VX(4, 0x238), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10599
{"zpkswgswfrs",       VX(4, 0x239), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10600
{"zvpkshgwshfrs",     VX(4, 0x23A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10601
{"zvpkswshfrs",       VX(4, 0x23B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10602
{"zvpkswuhs",       VX(4, 0x23C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10603
{"zvpkswshs",       VX(4, 0x23D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10604
{"zvpkuwuhs",       VX(4, 0x23E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10605
{"zvsplatih",       VX_LSP(4, 0x23F), VX_LSP_MASK, PPCLSP, 0,   {RD, SIMM}},
10606
{"zvsplatfih",        VX_LSP(4, 0xA3F), VX_LSP_MASK, PPCLSP, 0,   {RD, SIMM}},
10607
{"zcntlsw",       VX_LSP(4, 0x2A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10608
{"zvcntlzh",        VX_LSP(4, 0x323F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10609
{"zvcntlsh",        VX_LSP(4, 0x3A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10610
{"znegws",        VX_LSP(4, 0x4A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10611
{"zvnegh",        VX_LSP(4, 0x523F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10612
{"zvneghs",       VX_LSP(4, 0x5A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10613
{"zvnegho",       VX_LSP(4, 0x623F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10614
{"zvneghos",        VX_LSP(4, 0x6A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10615
{"zrndwh",        VX_LSP(4, 0x823F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10616
{"zrndwhss",        VX_LSP(4, 0x8A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10617
{"zvabsh",        VX_LSP(4, 0xA23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10618
{"zvabshs",       VX_LSP(4, 0xAA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10619
{"zabsw",       VX_LSP(4, 0xB23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10620
{"zabsws",        VX_LSP(4, 0xBA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10621
{"zsatswuw",        VX_LSP(4, 0xC23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10622
{"zsatuwsw",        VX_LSP(4, 0xCA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10623
{"zsatswuh",        VX_LSP(4, 0xD23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10624
{"zsatswsh",        VX_LSP(4, 0xDA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10625
{"zvsatshuh",       VX_LSP(4, 0xE23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10626
{"zvsatuhsh",       VX_LSP(4, 0xEA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10627
{"zsatuwuh",        VX_LSP(4, 0xF23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10628
{"zsatuwsh",        VX_LSP(4, 0xFA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10629
{"zsatsduw",        VX(4, 0x260), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10630
{"zsatsdsw",        VX(4, 0x261), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10631
{"zsatuduw",        VX(4, 0x262), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10632
{"zvselh",        VX(4, 0x264), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10633
{"zxtrw",       VX(4, 0x264), VX_LSP_OFF_MASK, PPCLSP, 0,   {RD, RA, RB, VX_OFF}},
10634
{"zbrminc",       VX(4, 0x268), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10635
{"zcircinc",        VX(4, 0x269), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10636
{"zdivwsf",       VX(4, 0x26B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10637
{"zvsrhu",        VX(4, 0x270), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10638
{"zvsrhs",        VX(4, 0x271), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10639
{"zvsrhiu",       VX(4, 0x272), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10640
{"zvsrhis",       VX(4, 0x273), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10641
{"zvslh",       VX(4, 0x274), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10642
{"zvrlh",       VX(4, 0x275), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10643
{"zvslhi",        VX(4, 0x276), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10644
{"zvrlhi",        VX(4, 0x277), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10645
{"zvslhus",       VX(4, 0x278), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10646
{"zvslhss",       VX(4, 0x279), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10647
{"zvslhius",        VX(4, 0x27A), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10648
{"zvslhiss",        VX(4, 0x27B), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10649
{"zslwus",        VX(4, 0x27C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10650
{"zslwss",        VX(4, 0x27D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10651
{"zslwius",       VX(4, 0x27E), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM}},
10652
{"zslwiss",       VX(4, 0x27F), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM}},
10653
{"zlddx",       VX(4, 0x300), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10654
{"zldd",        VX(4, 0x301), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8, RA}},
10655
{"zldwx",       VX(4, 0x302), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10656
{"zldw",        VX(4, 0x303), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8, RA}},
10657
{"zldhx",       VX(4, 0x304), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10658
{"zldh",        VX(4, 0x305), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8, RA}},
10659
{"zlwgsfdx",        VX(4, 0x308), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10660
{"zlwgsfd",       VX(4, 0x309), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10661
{"zlwwosdx",        VX(4, 0x30A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10662
{"zlwwosd",       VX(4, 0x30B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10663
{"zlwhsplatwdx",      VX(4, 0x30C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10664
{"zlwhsplatwd",       VX(4, 0x30D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10665
{"zlwhsplatdx",       VX(4, 0x30E), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10666
{"zlwhsplatd",        VX(4, 0x30F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10667
{"zlwhgwsfdx",        VX(4, 0x310), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10668
{"zlwhgwsfd",       VX(4, 0x311), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10669
{"zlwhedx",       VX(4, 0x312), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10670
{"zlwhed",        VX(4, 0x313), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10671
{"zlwhosdx",        VX(4, 0x314), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10672
{"zlwhosd",       VX(4, 0x315), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10673
{"zlwhoudx",        VX(4, 0x316), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10674
{"zlwhoud",       VX(4, 0x317), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10675
{"zlwhx",       VX(4, 0x318), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10676
{"zlwh",        VX(4, 0x319), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_4, RA}},
10677
{"zlwwx",       VX(4, 0x31A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10678
{"zlww",        VX(4, 0x31B), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_4, RA}},
10679
{"zlhgwsfx",        VX(4, 0x31C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10680
{"zlhgwsf",       VX(4, 0x31D), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10681
{"zlhhsplatx",        VX(4, 0x31E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10682
{"zlhhsplat",       VX(4, 0x31F), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10683
{"zstddx",        VX(4, 0x320), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10684
{"zstdd",       VX(4, 0x321), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8, RA}},
10685
{"zstdwx",        VX(4, 0x322), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10686
{"zstdw",       VX(4, 0x323), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8, RA}},
10687
{"zstdhx",        VX(4, 0x324), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10688
{"zstdh",       VX(4, 0x325), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8, RA}},
10689
{"zstwhedx",        VX(4, 0x328), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10690
{"zstwhed",       VX(4, 0x329), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_4, RA}},
10691
{"zstwhodx",        VX(4, 0x32A), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10692
{"zstwhod",       VX(4, 0x32B), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_4, RA}},
10693
{"zlhhex",        VX(4, 0x330), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10694
{"zlhhe",       VX(4, 0x331), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10695
{"zlhhosx",       VX(4, 0x332), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10696
{"zlhhos",        VX(4, 0x333), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10697
{"zlhhoux",       VX(4, 0x334), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10698
{"zlhhou",        VX(4, 0x335), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10699
{"zsthex",        VX(4, 0x338), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10700
{"zsthe",       VX(4, 0x339), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_2, RA}},
10701
{"zsthox",        VX(4, 0x33A), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10702
{"zstho",       VX(4, 0x33B), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_2, RA}},
10703
{"zstwhx",        VX(4, 0x33C), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10704
{"zstwh",       VX(4, 0x33D), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_4, RA}},
10705
{"zstwwx",        VX(4, 0x33E), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10706
{"zstww",       VX(4, 0x33F), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_4, RA}},
10707
{"zlddmx",        VX(4, 0x340), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10708
{"zlddu",       VX(4, 0x341), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8_EX0, RA}},
10709
{"zldwmx",        VX(4, 0x342), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10710
{"zldwu",       VX(4, 0x343), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8_EX0, RA}},
10711
{"zldhmx",        VX(4, 0x344), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10712
{"zldhu",       VX(4, 0x345), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8_EX0, RA}},
10713
{"zlwgsfdmx",       VX(4, 0x348), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10714
{"zlwgsfdu",        VX(4, 0x349), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10715
{"zlwwosdmx",       VX(4, 0x34A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10716
{"zlwwosdu",        VX(4, 0x34B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10717
{"zlwhsplatwdmx",     VX(4, 0x34C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10718
{"zlwhsplatwdu",      VX(4, 0x34D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10719
{"zlwhsplatdmx",      VX(4, 0x34E), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10720
{"zlwhsplatdu",       VX(4, 0x34F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10721
{"zlwhgwsfdmx",       VX(4, 0x350), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10722
{"zlwhgwsfdu",        VX(4, 0x351), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10723
{"zlwhedmx",        VX(4, 0x352), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10724
{"zlwhedu",       VX(4, 0x353), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10725
{"zlwhosdmx",       VX(4, 0x354), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10726
{"zlwhosdu",        VX(4, 0x355), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10727
{"zlwhoudmx",       VX(4, 0x356), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10728
{"zlwhoudu",        VX(4, 0x357), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10729
{"zlwhmx",        VX(4, 0x358), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10730
{"zlwhu",       VX(4, 0x359), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_4_EX0, RA}},
10731
{"zlwwmx",        VX(4, 0x35A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10732
{"zlwwu",       VX(4, 0x35B), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_4_EX0, RA}},
10733
{"zlhgwsfmx",       VX(4, 0x35C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10734
{"zlhgwsfu",        VX(4, 0x35D), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10735
{"zlhhsplatmx",       VX(4, 0x35E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10736
{"zlhhsplatu",        VX(4, 0x35F), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10737
{"zstddmx",       VX(4, 0x360), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10738
{"zstddu",        VX(4, 0x361), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_8_EX0, RA}},
10739
{"zstdwmx",       VX(4, 0x362), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10740
{"zstdwu",        VX(4, 0x363), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8_EX0, RA}},
10741
{"zstdhmx",       VX(4, 0x364), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10742
{"zstdhu",        VX(4, 0x365), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8_EX0, RA}},
10743
{"zstwhedmx",       VX(4, 0x368), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10744
{"zstwhedu",        VX(4, 0x369), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_4_EX0, RA}},
10745
{"zstwhodmx",       VX(4, 0x36A), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10746
{"zstwhodu",        VX(4, 0x36B), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_4_EX0, RA}},
10747
{"zlhhemx",       VX(4, 0x370), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10748
{"zlhheu",        VX(4, 0x371), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10749
{"zlhhosmx",        VX(4, 0x372), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10750
{"zlhhosu",       VX(4, 0x373), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10751
{"zlhhoumx",        VX(4, 0x374), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10752
{"zlhhouu",       VX(4, 0x375), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10753
{"zsthemx",       VX(4, 0x378), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10754
{"zstheu",        VX(4, 0x379), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_2_EX0, RA}},
10755
{"zsthomx",       VX(4, 0x37A), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10756
{"zsthou",        VX(4, 0x37B), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_2_EX0, RA}},
10757
{"zstwhmx",       VX(4, 0x37C), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10758
{"zstwhu",        VX(4, 0x37D), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_4_EX0, RA}},
10759
{"zstwwmx",       VX(4, 0x37E), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10760
{"zstwwu",        VX(4, 0x37F), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_4_EX0, RA}},
10761
{"zaddwgui",        VX(4, 0x460), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10762
{"zsubfwgui",       VX(4, 0x461), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10763
{"zaddd",       VX(4, 0x462), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10764
{"zsubfd",        VX(4, 0x463), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10765
{"zvaddsubfw",        VX(4, 0x464), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10766
{"zvsubfaddw",        VX(4, 0x465), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10767
{"zvaddw",        VX(4, 0x466), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10768
{"zvsubfw",       VX(4, 0x467), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10769
{"zaddwgsi",        VX(4, 0x468), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10770
{"zsubfwgsi",       VX(4, 0x469), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10771
{"zadddss",       VX(4, 0x46A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10772
{"zsubfdss",        VX(4, 0x46B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10773
{"zvaddsubfwss",      VX(4, 0x46C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10774
{"zvsubfaddwss",      VX(4, 0x46D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10775
{"zvaddwss",        VX(4, 0x46E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10776
{"zvsubfwss",       VX(4, 0x46F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10777
{"zaddwgsf",        VX(4, 0x470), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10778
{"zsubfwgsf",       VX(4, 0x471), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10779
{"zadddus",       VX(4, 0x472), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10780
{"zsubfdus",        VX(4, 0x473), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10781
{"zvaddwus",        VX(4, 0x476), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10782
{"zvsubfwus",       VX(4, 0x477), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10783
{"zvunpkhgwsf",       VX_LSP(4, 0x478), VX_LSP_MASK, PPCLSP, 0,   {RD_EVEN, RA}},
10784
{"zvunpkhsf",       VX_LSP(4, 0xC78), VX_LSP_MASK, PPCLSP, 0,   {RD_EVEN, RA}},
10785
{"zvunpkhui",       VX_LSP(4, 0x1478), VX_LSP_MASK, PPCLSP, 0,  {RD_EVEN, RA}},
10786
{"zvunpkhsi",       VX_LSP(4, 0x1C78), VX_LSP_MASK, PPCLSP, 0,  {RD_EVEN, RA}},
10787
{"zunpkwgsf",       VX_LSP(4, 0x2478), VX_LSP_MASK, PPCLSP, 0,  {RD_EVEN, RA}},
10788
{"zvdotphgwasmf",     VX(4, 0x488), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10789
{"zvdotphgwasmfr",    VX(4, 0x489), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10790
{"zvdotphgwasmfaa",   VX(4, 0x48A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10791
{"zvdotphgwasmfraa",  VX(4, 0x48B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10792
{"zvdotphgwasmfan",   VX(4, 0x48C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10793
{"zvdotphgwasmfran",  VX(4, 0x48D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10794
{"zvmhulgwsmf",       VX(4, 0x490), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10795
{"zvmhulgwsmfr",      VX(4, 0x491), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10796
{"zvmhulgwsmfaa",     VX(4, 0x492), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10797
{"zvmhulgwsmfraa",    VX(4, 0x493), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10798
{"zvmhulgwsmfan",     VX(4, 0x494), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10799
{"zvmhulgwsmfran",    VX(4, 0x495), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10800
{"zvmhulgwsmfanp",    VX(4, 0x496), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10801
{"zvmhulgwsmfranp",   VX(4, 0x497), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10802
{"zmhegwsmf",       VX(4, 0x498), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10803
{"zmhegwsmfr",        VX(4, 0x499), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10804
{"zmhegwsmfaa",       VX(4, 0x49A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10805
{"zmhegwsmfraa",      VX(4, 0x49B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10806
{"zmhegwsmfan",       VX(4, 0x49C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10807
{"zmhegwsmfran",      VX(4, 0x49D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10808
{"zvdotphxgwasmf",    VX(4, 0x4A8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10809
{"zvdotphxgwasmfr",   VX(4, 0x4A9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10810
{"zvdotphxgwasmfaa",  VX(4, 0x4AA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10811
{"zvdotphxgwasmfraa", VX(4, 0x4AB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10812
{"zvdotphxgwasmfan",  VX(4, 0x4AC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10813
{"zvdotphxgwasmfran", VX(4, 0x4AD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10814
{"zvmhllgwsmf",       VX(4, 0x4B0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10815
{"zvmhllgwsmfr",      VX(4, 0x4B1), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10816
{"zvmhllgwsmfaa",     VX(4, 0x4B2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10817
{"zvmhllgwsmfraa",    VX(4, 0x4B3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10818
{"zvmhllgwsmfan",     VX(4, 0x4B4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10819
{"zvmhllgwsmfran",    VX(4, 0x4B5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10820
{"zvmhllgwsmfanp",    VX(4, 0x4B6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10821
{"zvmhllgwsmfranp",   VX(4, 0x4B7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10822
{"zmheogwsmf",        VX(4, 0x4B8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10823
{"zmheogwsmfr",       VX(4, 0x4B9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10824
{"zmheogwsmfaa",      VX(4, 0x4BA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10825
{"zmheogwsmfraa",     VX(4, 0x4BB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10826
{"zmheogwsmfan",      VX(4, 0x4BC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10827
{"zmheogwsmfran",     VX(4, 0x4BD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10828
{"zvdotphgwssmf",     VX(4, 0x4C8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10829
{"zvdotphgwssmfr",    VX(4, 0x4C9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10830
{"zvdotphgwssmfaa",   VX(4, 0x4CA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10831
{"zvdotphgwssmfraa",  VX(4, 0x4CB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10832
{"zvdotphgwssmfan",   VX(4, 0x4CC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10833
{"zvdotphgwssmfran",  VX(4, 0x4CD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10834
{"zvmhuugwsmf",       VX(4, 0x4D0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10835
{"zvmhuugwsmfr",      VX(4, 0x4D1), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10836
{"zvmhuugwsmfaa",     VX(4, 0x4D2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10837
{"zvmhuugwsmfraa",    VX(4, 0x4D3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10838
{"zvmhuugwsmfan",     VX(4, 0x4D4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10839
{"zvmhuugwsmfran",    VX(4, 0x4D5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10840
{"zvmhuugwsmfanp",    VX(4, 0x4D6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10841
{"zvmhuugwsmfranp",   VX(4, 0x4D7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10842
{"zmhogwsmf",       VX(4, 0x4D8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10843
{"zmhogwsmfr",        VX(4, 0x4D9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10844
{"zmhogwsmfaa",       VX(4, 0x4DA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10845
{"zmhogwsmfraa",      VX(4, 0x4DB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10846
{"zmhogwsmfan",       VX(4, 0x4DC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10847
{"zmhogwsmfran",      VX(4, 0x4DD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10848
{"zvmhxlgwsmf",       VX(4, 0x4F0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10849
{"zvmhxlgwsmfr",      VX(4, 0x4F1), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10850
{"zvmhxlgwsmfaa",     VX(4, 0x4F2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10851
{"zvmhxlgwsmfraa",    VX(4, 0x4F3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10852
{"zvmhxlgwsmfan",     VX(4, 0x4F4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10853
{"zvmhxlgwsmfran",    VX(4, 0x4F5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10854
{"zvmhxlgwsmfanp",    VX(4, 0x4F6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10855
{"zvmhxlgwsmfranp",   VX(4, 0x4F7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10856
{"zmhegui",       VX(4, 0x500), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10857
{"zvdotphgaui",       VX(4, 0x501), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10858
{"zmheguiaa",       VX(4, 0x502), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10859
{"zvdotphgauiaa",     VX(4, 0x503), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10860
{"zmheguian",       VX(4, 0x504), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10861
{"zvdotphgauian",     VX(4, 0x505), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10862
{"zmhegsi",       VX(4, 0x508), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10863
{"zvdotphgasi",       VX(4, 0x509), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10864
{"zmhegsiaa",       VX(4, 0x50A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10865
{"zvdotphgasiaa",     VX(4, 0x50B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10866
{"zmhegsian",       VX(4, 0x50C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10867
{"zvdotphgasian",     VX(4, 0x50D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10868
{"zmhegsui",        VX(4, 0x510), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10869
{"zvdotphgasui",      VX(4, 0x511), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10870
{"zmhegsuiaa",        VX(4, 0x512), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10871
{"zvdotphgasuiaa",    VX(4, 0x513), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10872
{"zmhegsuian",        VX(4, 0x514), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10873
{"zvdotphgasuian",    VX(4, 0x515), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10874
{"zmhegsmf",        VX(4, 0x518), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10875
{"zvdotphgasmf",      VX(4, 0x519), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10876
{"zmhegsmfaa",        VX(4, 0x51A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10877
{"zvdotphgasmfaa",    VX(4, 0x51B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10878
{"zmhegsmfan",        VX(4, 0x51C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10879
{"zvdotphgasmfan",    VX(4, 0x51D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10880
{"zmheogui",        VX(4, 0x520), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10881
{"zvdotphxgaui",      VX(4, 0x521), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10882
{"zmheoguiaa",        VX(4, 0x522), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10883
{"zvdotphxgauiaa",    VX(4, 0x523), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10884
{"zmheoguian",        VX(4, 0x524), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10885
{"zvdotphxgauian",    VX(4, 0x525), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10886
{"zmheogsi",        VX(4, 0x528), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10887
{"zvdotphxgasi",      VX(4, 0x529), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10888
{"zmheogsiaa",        VX(4, 0x52A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10889
{"zvdotphxgasiaa",    VX(4, 0x52B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10890
{"zmheogsian",        VX(4, 0x52C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10891
{"zvdotphxgasian",    VX(4, 0x52D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10892
{"zmheogsui",       VX(4, 0x530), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10893
{"zvdotphxgasui",     VX(4, 0x531), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10894
{"zmheogsuiaa",       VX(4, 0x532), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10895
{"zvdotphxgasuiaa",   VX(4, 0x533), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10896
{"zmheogsuian",       VX(4, 0x534), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10897
{"zvdotphxgasuian",   VX(4, 0x535), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10898
{"zmheogsmf",       VX(4, 0x538), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10899
{"zvdotphxgasmf",     VX(4, 0x539), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10900
{"zmheogsmfaa",       VX(4, 0x53A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10901
{"zvdotphxgasmfaa",   VX(4, 0x53B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10902
{"zmheogsmfan",       VX(4, 0x53C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10903
{"zvdotphxgasmfan",   VX(4, 0x53D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10904
{"zmhogui",       VX(4, 0x540), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10905
{"zvdotphgsui",       VX(4, 0x541), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10906
{"zmhoguiaa",       VX(4, 0x542), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10907
{"zvdotphgsuiaa",     VX(4, 0x543), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10908
{"zmhoguian",       VX(4, 0x544), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10909
{"zvdotphgsuian",     VX(4, 0x545), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10910
{"zmhogsi",       VX(4, 0x548), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10911
{"zvdotphgssi",       VX(4, 0x549), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10912
{"zmhogsiaa",       VX(4, 0x54A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10913
{"zvdotphgssiaa",     VX(4, 0x54B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10914
{"zmhogsian",       VX(4, 0x54C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10915
{"zvdotphgssian",     VX(4, 0x54D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10916
{"zmhogsui",        VX(4, 0x550), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10917
{"zvdotphgssui",      VX(4, 0x551), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10918
{"zmhogsuiaa",        VX(4, 0x552), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10919
{"zvdotphgssuiaa",    VX(4, 0x553), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10920
{"zmhogsuian",        VX(4, 0x554), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10921
{"zvdotphgssuian",    VX(4, 0x555), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10922
{"zmhogsmf",        VX(4, 0x558), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10923
{"zvdotphgssmf",      VX(4, 0x559), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10924
{"zmhogsmfaa",        VX(4, 0x55A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10925
{"zvdotphgssmfaa",    VX(4, 0x55B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10926
{"zmhogsmfan",        VX(4, 0x55C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10927
{"zvdotphgssmfan",    VX(4, 0x55D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10928
{"zmwgui",        VX(4, 0x560), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10929
{"zmwguiaa",        VX(4, 0x562), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10930
{"zmwguiaas",       VX(4, 0x563), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10931
{"zmwguian",        VX(4, 0x564), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10932
{"zmwguians",       VX(4, 0x565), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10933
{"zmwgsi",        VX(4, 0x568), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10934
{"zmwgsiaa",        VX(4, 0x56A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10935
{"zmwgsiaas",       VX(4, 0x56B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10936
{"zmwgsian",        VX(4, 0x56C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10937
{"zmwgsians",       VX(4, 0x56D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10938
{"zmwgsui",       VX(4, 0x570), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10939
{"zmwgsuiaa",       VX(4, 0x572), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10940
{"zmwgsuiaas",        VX(4, 0x573), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10941
{"zmwgsuian",       VX(4, 0x574), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10942
{"zmwgsuians",        VX(4, 0x575), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10943
{"zmwgsmf",       VX(4, 0x578), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10944
{"zmwgsmfr",        VX(4, 0x579), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10945
{"zmwgsmfaa",       VX(4, 0x57A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10946
{"zmwgsmfraa",        VX(4, 0x57B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10947
{"zmwgsmfan",       VX(4, 0x57C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10948
{"zmwgsmfran",        VX(4, 0x57D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10949
{"zvmhului",        VX(4, 0x580), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10950
{"zvmhuluiaa",        VX(4, 0x582), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10951
{"zvmhuluiaas",       VX(4, 0x583), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10952
{"zvmhuluian",        VX(4, 0x584), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10953
{"zvmhuluians",       VX(4, 0x585), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10954
{"zvmhuluianp",       VX(4, 0x586), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10955
{"zvmhuluianps",      VX(4, 0x587), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10956
{"zvmhulsi",        VX(4, 0x588), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10957
{"zvmhulsiaa",        VX(4, 0x58A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10958
{"zvmhulsiaas",       VX(4, 0x58B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10959
{"zvmhulsian",        VX(4, 0x58C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10960
{"zvmhulsians",       VX(4, 0x58D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10961
{"zvmhulsianp",       VX(4, 0x58E), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10962
{"zvmhulsianps",      VX(4, 0x58F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10963
{"zvmhulsui",       VX(4, 0x590), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10964
{"zvmhulsuiaa",       VX(4, 0x592), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10965
{"zvmhulsuiaas",      VX(4, 0x593), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10966
{"zvmhulsuian",       VX(4, 0x594), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10967
{"zvmhulsuians",      VX(4, 0x595), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10968
{"zvmhulsuianp",      VX(4, 0x596), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10969
{"zvmhulsuianps",     VX(4, 0x597), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10970
{"zvmhulsf",        VX(4, 0x598), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10971
{"zvmhulsfr",       VX(4, 0x599), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10972
{"zvmhulsfaas",       VX(4, 0x59A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10973
{"zvmhulsfraas",      VX(4, 0x59B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10974
{"zvmhulsfans",       VX(4, 0x59C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10975
{"zvmhulsfrans",      VX(4, 0x59D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10976
{"zvmhulsfanps",      VX(4, 0x59E), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10977
{"zvmhulsfranps",     VX(4, 0x59F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10978
{"zvmhllui",        VX(4, 0x5A0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10979
{"zvmhlluiaa",        VX(4, 0x5A2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10980
{"zvmhlluiaas",       VX(4, 0x5A3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10981
{"zvmhlluian",        VX(4, 0x5A4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10982
{"zvmhlluians",       VX(4, 0x5A5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10983
{"zvmhlluianp",       VX(4, 0x5A6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10984
{"zvmhlluianps",      VX(4, 0x5A7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10985
{"zvmhllsi",        VX(4, 0x5A8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10986
{"zvmhllsiaa",        VX(4, 0x5AA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10987
{"zvmhllsiaas",       VX(4, 0x5AB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10988
{"zvmhllsian",        VX(4, 0x5AC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10989
{"zvmhllsians",       VX(4, 0x5AD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10990
{"zvmhllsianp",       VX(4, 0x5AE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10991
{"zvmhllsianps",      VX(4, 0x5AF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10992
{"zvmhllsui",       VX(4, 0x5B0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10993
{"zvmhllsuiaa",       VX(4, 0x5B2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10994
{"zvmhllsuiaas",      VX(4, 0x5B3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10995
{"zvmhllsuian",       VX(4, 0x5B4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10996
{"zvmhllsuians",      VX(4, 0x5B5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10997
{"zvmhllsuianp",      VX(4, 0x5B6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10998
{"zvmhllsuianps",     VX(4, 0x5B7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10999
{"zvmhllsf",        VX(4, 0x5B8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11000
{"zvmhllsfr",       VX(4, 0x5B9), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11001
{"zvmhllsfaas",       VX(4, 0x5BA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11002
{"zvmhllsfraas",      VX(4, 0x5BB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11003
{"zvmhllsfans",       VX(4, 0x5BC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11004
{"zvmhllsfrans",      VX(4, 0x5BD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11005
{"zvmhllsfanps",      VX(4, 0x5BE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11006
{"zvmhllsfranps",     VX(4, 0x5BF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11007
{"zvmhuuui",        VX(4, 0x5C0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11008
{"zvmhuuuiaa",        VX(4, 0x5C2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11009
{"zvmhuuuiaas",       VX(4, 0x5C3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11010
{"zvmhuuuian",        VX(4, 0x5C4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11011
{"zvmhuuuians",       VX(4, 0x5C5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11012
{"zvmhuuuianp",       VX(4, 0x5C6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11013
{"zvmhuuuianps",      VX(4, 0x5C7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11014
{"zvmhuusi",        VX(4, 0x5C8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11015
{"zvmhuusiaa",        VX(4, 0x5CA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11016
{"zvmhuusiaas",       VX(4, 0x5CB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11017
{"zvmhuusian",        VX(4, 0x5CC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11018
{"zvmhuusians",       VX(4, 0x5CD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11019
{"zvmhuusianp",       VX(4, 0x5CE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11020
{"zvmhuusianps",      VX(4, 0x5CF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11021
{"zvmhuusui",       VX(4, 0x5D0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11022
{"zvmhuusuiaa",       VX(4, 0x5D2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11023
{"zvmhuusuiaas",      VX(4, 0x5D3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11024
{"zvmhuusuian",       VX(4, 0x5D4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11025
{"zvmhuusuians",      VX(4, 0x5D5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11026
{"zvmhuusuianp",      VX(4, 0x5D6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11027
{"zvmhuusuianps",     VX(4, 0x5D7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11028
{"zvmhuusf",        VX(4, 0x5D8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11029
{"zvmhuusfr",       VX(4, 0x5D9), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11030
{"zvmhuusfaas",       VX(4, 0x5DA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11031
{"zvmhuusfraas",      VX(4, 0x5DB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11032
{"zvmhuusfans",       VX(4, 0x5DC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11033
{"zvmhuusfrans",      VX(4, 0x5DD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11034
{"zvmhuusfanps",      VX(4, 0x5DE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11035
{"zvmhuusfranps",     VX(4, 0x5DF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11036
{"zvmhxlui",        VX(4, 0x5E0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11037
{"zvmhxluiaa",        VX(4, 0x5E2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11038
{"zvmhxluiaas",       VX(4, 0x5E3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11039
{"zvmhxluian",        VX(4, 0x5E4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11040
{"zvmhxluians",       VX(4, 0x5E5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11041
{"zvmhxluianp",       VX(4, 0x5E6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11042
{"zvmhxluianps",      VX(4, 0x5E7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11043
{"zvmhxlsi",        VX(4, 0x5E8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11044
{"zvmhxlsiaa",        VX(4, 0x5EA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11045
{"zvmhxlsiaas",       VX(4, 0x5EB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11046
{"zvmhxlsian",        VX(4, 0x5EC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11047
{"zvmhxlsians",       VX(4, 0x5ED), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11048
{"zvmhxlsianp",       VX(4, 0x5EE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11049
{"zvmhxlsianps",      VX(4, 0x5EF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11050
{"zvmhxlsui",       VX(4, 0x5F0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11051
{"zvmhxlsuiaa",       VX(4, 0x5F2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11052
{"zvmhxlsuiaas",      VX(4, 0x5F3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11053
{"zvmhxlsuian",       VX(4, 0x5F4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11054
{"zvmhxlsuians",      VX(4, 0x5F5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11055
{"zvmhxlsuianp",      VX(4, 0x5F6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11056
{"zvmhxlsuianps",     VX(4, 0x5F7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11057
{"zvmhxlsf",        VX(4, 0x5F8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11058
{"zvmhxlsfr",       VX(4, 0x5F9), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11059
{"zvmhxlsfaas",       VX(4, 0x5FA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11060
{"zvmhxlsfraas",      VX(4, 0x5FB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11061
{"zvmhxlsfans",       VX(4, 0x5FC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11062
{"zvmhxlsfrans",      VX(4, 0x5FD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11063
{"zvmhxlsfanps",      VX(4, 0x5FE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11064
{"zvmhxlsfranps",     VX(4, 0x5FF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
11065
{"zmheui",        VX(4, 0x600), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11066
{"zmheuiaa",        VX(4, 0x602), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11067
{"zmheuiaas",       VX(4, 0x603), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11068
{"zmheuian",        VX(4, 0x604), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11069
{"zmheuians",       VX(4, 0x605), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11070
{"zmhesi",        VX(4, 0x608), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11071
{"zmhesiaa",        VX(4, 0x60A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11072
{"zmhesiaas",       VX(4, 0x60B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11073
{"zmhesian",        VX(4, 0x60C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11074
{"zmhesians",       VX(4, 0x60D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11075
{"zmhesui",       VX(4, 0x610), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11076
{"zmhesuiaa",       VX(4, 0x612), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11077
{"zmhesuiaas",        VX(4, 0x613), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11078
{"zmhesuian",       VX(4, 0x614), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11079
{"zmhesuians",        VX(4, 0x615), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11080
{"zmhesf",        VX(4, 0x618), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11081
{"zmhesfr",       VX(4, 0x619), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11082
{"zmhesfaas",       VX(4, 0x61A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11083
{"zmhesfraas",        VX(4, 0x61B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11084
{"zmhesfans",       VX(4, 0x61C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11085
{"zmhesfrans",        VX(4, 0x61D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11086
{"zmheoui",       VX(4, 0x620), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11087
{"zmheouiaa",       VX(4, 0x622), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11088
{"zmheouiaas",        VX(4, 0x623), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11089
{"zmheouian",       VX(4, 0x624), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11090
{"zmheouians",        VX(4, 0x625), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11091
{"zmheosi",       VX(4, 0x628), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11092
{"zmheosiaa",       VX(4, 0x62A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11093
{"zmheosiaas",        VX(4, 0x62B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11094
{"zmheosian",       VX(4, 0x62C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11095
{"zmheosians",        VX(4, 0x62D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11096
{"zmheosui",        VX(4, 0x630), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11097
{"zmheosuiaa",        VX(4, 0x632), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11098
{"zmheosuiaas",       VX(4, 0x633), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11099
{"zmheosuian",        VX(4, 0x634), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11100
{"zmheosuians",       VX(4, 0x635), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11101
{"zmheosf",       VX(4, 0x638), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11102
{"zmheosfr",        VX(4, 0x639), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11103
{"zmheosfaas",        VX(4, 0x63A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11104
{"zmheosfraas",       VX(4, 0x63B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11105
{"zmheosfans",        VX(4, 0x63C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11106
{"zmheosfrans",       VX(4, 0x63D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11107
{"zmhoui",        VX(4, 0x640), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11108
{"zmhouiaa",        VX(4, 0x642), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11109
{"zmhouiaas",       VX(4, 0x643), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11110
{"zmhouian",        VX(4, 0x644), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11111
{"zmhouians",       VX(4, 0x645), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11112
{"zmhosi",        VX(4, 0x648), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11113
{"zmhosiaa",        VX(4, 0x64A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11114
{"zmhosiaas",       VX(4, 0x64B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11115
{"zmhosian",        VX(4, 0x64C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11116
{"zmhosians",       VX(4, 0x64D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11117
{"zmhosui",       VX(4, 0x650), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11118
{"zmhosuiaa",       VX(4, 0x652), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11119
{"zmhosuiaas",        VX(4, 0x653), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11120
{"zmhosuian",       VX(4, 0x654), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11121
{"zmhosuians",        VX(4, 0x655), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11122
{"zmhosf",        VX(4, 0x658), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11123
{"zmhosfr",       VX(4, 0x659), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11124
{"zmhosfaas",       VX(4, 0x65A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11125
{"zmhosfraas",        VX(4, 0x65B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11126
{"zmhosfans",       VX(4, 0x65C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11127
{"zmhosfrans",        VX(4, 0x65D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11128
{"zvmhuih",       VX(4, 0x660), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11129
{"zvmhuihs",        VX(4, 0x661), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11130
{"zvmhuiaah",       VX(4, 0x662), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11131
{"zvmhuiaahs",        VX(4, 0x663), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11132
{"zvmhuianh",       VX(4, 0x664), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11133
{"zvmhuianhs",        VX(4, 0x665), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11134
{"zvmhsihs",        VX(4, 0x669), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11135
{"zvmhsiaahs",        VX(4, 0x66B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11136
{"zvmhsianhs",        VX(4, 0x66D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11137
{"zvmhsuihs",       VX(4, 0x671), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11138
{"zvmhsuiaahs",       VX(4, 0x673), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11139
{"zvmhsuianhs",       VX(4, 0x675), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11140
{"zvmhsfh",       VX(4, 0x678), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11141
{"zvmhsfrh",        VX(4, 0x679), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11142
{"zvmhsfaahs",        VX(4, 0x67A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11143
{"zvmhsfraahs",       VX(4, 0x67B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11144
{"zvmhsfanhs",        VX(4, 0x67C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11145
{"zvmhsfranhs",       VX(4, 0x67D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11146
{"zvdotphaui",        VX(4, 0x680), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11147
{"zvdotphauis",       VX(4, 0x681), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11148
{"zvdotphauiaa",      VX(4, 0x682), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11149
{"zvdotphauiaas",     VX(4, 0x683), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11150
{"zvdotphauian",      VX(4, 0x684), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11151
{"zvdotphauians",     VX(4, 0x685), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11152
{"zvdotphasi",        VX(4, 0x688), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11153
{"zvdotphasis",       VX(4, 0x689), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11154
{"zvdotphasiaa",      VX(4, 0x68A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11155
{"zvdotphasiaas",     VX(4, 0x68B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11156
{"zvdotphasian",      VX(4, 0x68C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11157
{"zvdotphasians",     VX(4, 0x68D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11158
{"zvdotphasui",       VX(4, 0x690), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11159
{"zvdotphasuis",      VX(4, 0x691), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11160
{"zvdotphasuiaa",     VX(4, 0x692), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11161
{"zvdotphasuiaas",    VX(4, 0x693), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11162
{"zvdotphasuian",     VX(4, 0x694), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11163
{"zvdotphasuians",    VX(4, 0x695), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11164
{"zvdotphasfs",       VX(4, 0x698), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11165
{"zvdotphasfrs",      VX(4, 0x699), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11166
{"zvdotphasfaas",     VX(4, 0x69A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11167
{"zvdotphasfraas",    VX(4, 0x69B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11168
{"zvdotphasfans",     VX(4, 0x69C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11169
{"zvdotphasfrans",    VX(4, 0x69D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11170
{"zvdotphxaui",       VX(4, 0x6A0), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11171
{"zvdotphxauis",      VX(4, 0x6A1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11172
{"zvdotphxauiaa",     VX(4, 0x6A2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11173
{"zvdotphxauiaas",    VX(4, 0x6A3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11174
{"zvdotphxauian",     VX(4, 0x6A4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11175
{"zvdotphxauians",    VX(4, 0x6A5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11176
{"zvdotphxasi",       VX(4, 0x6A8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11177
{"zvdotphxasis",      VX(4, 0x6A9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11178
{"zvdotphxasiaa",     VX(4, 0x6AA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11179
{"zvdotphxasiaas",    VX(4, 0x6AB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11180
{"zvdotphxasian",     VX(4, 0x6AC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11181
{"zvdotphxasians",    VX(4, 0x6AD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11182
{"zvdotphxasui",      VX(4, 0x6B0), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11183
{"zvdotphxasuis",     VX(4, 0x6B1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11184
{"zvdotphxasuiaa",    VX(4, 0x6B2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11185
{"zvdotphxasuiaas",   VX(4, 0x6B3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11186
{"zvdotphxasuian",    VX(4, 0x6B4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11187
{"zvdotphxasuians",   VX(4, 0x6B5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11188
{"zvdotphxasfs",      VX(4, 0x6B8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11189
{"zvdotphxasfrs",     VX(4, 0x6B9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11190
{"zvdotphxasfaas",    VX(4, 0x6BA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11191
{"zvdotphxasfraas",   VX(4, 0x6BB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11192
{"zvdotphxasfans",    VX(4, 0x6BC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11193
{"zvdotphxasfrans",   VX(4, 0x6BD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11194
{"zvdotphsui",        VX(4, 0x6C0), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11195
{"zvdotphsuis",       VX(4, 0x6C1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11196
{"zvdotphsuiaa",      VX(4, 0x6C2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11197
{"zvdotphsuiaas",     VX(4, 0x6C3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11198
{"zvdotphsuian",      VX(4, 0x6C4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11199
{"zvdotphsuians",     VX(4, 0x6C5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11200
{"zvdotphssi",        VX(4, 0x6C8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11201
{"zvdotphssis",       VX(4, 0x6C9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11202
{"zvdotphssiaa",      VX(4, 0x6CA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11203
{"zvdotphssiaas",     VX(4, 0x6CB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11204
{"zvdotphssian",      VX(4, 0x6CC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11205
{"zvdotphssians",     VX(4, 0x6CD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11206
{"zvdotphssui",       VX(4, 0x6D0), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11207
{"zvdotphssuis",      VX(4, 0x6D1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11208
{"zvdotphssuiaa",     VX(4, 0x6D2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11209
{"zvdotphssuiaas",    VX(4, 0x6D3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11210
{"zvdotphssuian",     VX(4, 0x6D4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11211
{"zvdotphssuians",    VX(4, 0x6D5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11212
{"zvdotphssfs",       VX(4, 0x6D8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11213
{"zvdotphssfrs",      VX(4, 0x6D9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11214
{"zvdotphssfaas",     VX(4, 0x6DA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11215
{"zvdotphssfraas",    VX(4, 0x6DB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11216
{"zvdotphssfans",     VX(4, 0x6DC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11217
{"zvdotphssfrans",    VX(4, 0x6DD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11218
{"zmwluis",       VX(4, 0x6E1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11219
{"zmwluiaa",        VX(4, 0x6E2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11220
{"zmwluiaas",       VX(4, 0x6E3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11221
{"zmwluian",        VX(4, 0x6E4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11222
{"zmwluians",       VX(4, 0x6E5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11223
{"zmwlsis",       VX(4, 0x6E9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11224
{"zmwlsiaas",       VX(4, 0x6EB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11225
{"zmwlsians",       VX(4, 0x6ED), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11226
{"zmwlsuis",        VX(4, 0x6F1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11227
{"zmwlsuiaas",        VX(4, 0x6F3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11228
{"zmwlsuians",        VX(4, 0x6F5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11229
{"zmwsf",       VX(4, 0x6F8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11230
{"zmwsfr",        VX(4, 0x6F9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11231
{"zmwsfaas",        VX(4, 0x6FA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11232
{"zmwsfraas",       VX(4, 0x6FB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11233
{"zmwsfans",        VX(4, 0x6FC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11234
{"zmwsfrans",       VX(4, 0x6FD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
11235
};
11236
11237
const unsigned int lsp_num_opcodes = ARRAY_SIZE (lsp_opcodes);
11238
11239
/* SPE v2 instruction set from SPE2PIM Rev. 2 08/2011 */
11240
const struct powerpc_opcode spe2_opcodes[] = {
11241
{"evdotpwcssi",     VX (4, 128),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11242
{"evdotpwcsmi",     VX (4, 129),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11243
{"evdotpwcssfr",    VX (4, 130),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11244
{"evdotpwcssf",     VX (4, 131),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11245
{"evdotpwgasmf",    VX (4, 136),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11246
{"evdotpwxgasmf",   VX (4, 137),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11247
{"evdotpwgasmfr",   VX (4, 138),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11248
{"evdotpwxgasmfr",    VX (4, 139),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11249
{"evdotpwgssmf",    VX (4, 140),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11250
{"evdotpwxgssmf",   VX (4, 141),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11251
{"evdotpwgssmfr",   VX (4, 142),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11252
{"evdotpwxgssmfr",    VX (4, 143),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11253
{"evdotpwcssiaaw3",   VX (4, 144),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11254
{"evdotpwcsmiaaw3",   VX (4, 145),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11255
{"evdotpwcssfraaw3",    VX (4, 146),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11256
{"evdotpwcssfaaw3",   VX (4, 147),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11257
{"evdotpwgasmfaa3",   VX (4, 152),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11258
{"evdotpwxgasmfaa3",    VX (4, 153),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11259
{"evdotpwgasmfraa3",    VX (4, 154),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11260
{"evdotpwxgasmfraa3",   VX (4, 155),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11261
{"evdotpwgssmfaa3",   VX (4, 156),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11262
{"evdotpwxgssmfaa3",    VX (4, 157),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11263
{"evdotpwgssmfraa3",    VX (4, 158),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11264
{"evdotpwxgssmfraa3",   VX (4, 159),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11265
{"evdotpwcssia",    VX (4, 160),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11266
{"evdotpwcsmia",    VX (4, 161),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11267
{"evdotpwcssfra",   VX (4, 162),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11268
{"evdotpwcssfa",    VX (4, 163),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11269
{"evdotpwgasmfa",   VX (4, 168),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11270
{"evdotpwxgasmfa",    VX (4, 169),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11271
{"evdotpwgasmfra",    VX (4, 170),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11272
{"evdotpwxgasmfra",   VX (4, 171),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11273
{"evdotpwgssmfa",   VX (4, 172),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11274
{"evdotpwxgssmfa",    VX (4, 173),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11275
{"evdotpwgssmfra",    VX (4, 174),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11276
{"evdotpwxgssmfra",   VX (4, 175),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11277
{"evdotpwcssiaaw",    VX (4, 176),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11278
{"evdotpwcsmiaaw",    VX (4, 177),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11279
{"evdotpwcssfraaw",   VX (4, 178),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11280
{"evdotpwcssfaaw",    VX (4, 179),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11281
{"evdotpwgasmfaa",    VX (4, 184),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11282
{"evdotpwxgasmfaa",   VX (4, 185),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11283
{"evdotpwgasmfraa",   VX (4, 186),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11284
{"evdotpwxgasmfraa",    VX (4, 187),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11285
{"evdotpwgssmfaa",    VX (4, 188),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11286
{"evdotpwxgssmfaa",   VX (4, 189),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11287
{"evdotpwgssmfraa",   VX (4, 190),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11288
{"evdotpwxgssmfraa",    VX (4, 191),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11289
{"evdotphihcssi",   VX (4, 256),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11290
{"evdotplohcssi",   VX (4, 257),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11291
{"evdotphihcssf",   VX (4, 258),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11292
{"evdotplohcssf",   VX (4, 259),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11293
{"evdotphihcsmi",   VX (4, 264),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11294
{"evdotplohcsmi",   VX (4, 265),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11295
{"evdotphihcssfr",    VX (4, 266),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11296
{"evdotplohcssfr",    VX (4, 267),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11297
{"evdotphihcssiaaw3",   VX (4, 272),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11298
{"evdotplohcssiaaw3",   VX (4, 273),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11299
{"evdotphihcssfaaw3",   VX (4, 274),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11300
{"evdotplohcssfaaw3",   VX (4, 275),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11301
{"evdotphihcsmiaaw3",   VX (4, 280),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11302
{"evdotplohcsmiaaw3",   VX (4, 281),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11303
{"evdotphihcssfraaw3",    VX (4, 282),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11304
{"evdotplohcssfraaw3",    VX (4, 283),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11305
{"evdotphihcssia",    VX (4, 288),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11306
{"evdotplohcssia",    VX (4, 289),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11307
{"evdotphihcssfa",    VX (4, 290),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11308
{"evdotplohcssfa",    VX (4, 291),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11309
{"evdotphihcsmia",    VX (4, 296),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11310
{"evdotplohcsmia",    VX (4, 297),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11311
{"evdotphihcssfra",   VX (4, 298),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11312
{"evdotplohcssfra",   VX (4, 299),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11313
{"evdotphihcssiaaw",    VX (4, 304),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11314
{"evdotplohcssiaaw",    VX (4, 305),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11315
{"evdotphihcssfaaw",    VX (4, 306),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11316
{"evdotplohcssfaaw",    VX (4, 307),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11317
{"evdotphihcsmiaaw",    VX (4, 312),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11318
{"evdotplohcsmiaaw",    VX (4, 313),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11319
{"evdotphihcssfraaw",   VX (4, 314),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11320
{"evdotplohcssfraaw",   VX (4, 315),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11321
{"evdotphausi",     VX (4, 320),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11322
{"evdotphassi",     VX (4, 321),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11323
{"evdotphasusi",    VX (4, 322),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11324
{"evdotphassf",     VX (4, 323),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11325
{"evdotphsssf",     VX (4, 327),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11326
{"evdotphaumi",     VX (4, 328),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11327
{"evdotphasmi",     VX (4, 329),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11328
{"evdotphasumi",    VX (4, 330),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11329
{"evdotphassfr",    VX (4, 331),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11330
{"evdotphssmi",     VX (4, 333),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11331
{"evdotphsssi",     VX (4, 333),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11332
{"evdotphsssfr",    VX (4, 335),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11333
{"evdotphausiaaw3",   VX (4, 336),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11334
{"evdotphassiaaw3",   VX (4, 337),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11335
{"evdotphasusiaaw3",    VX (4, 338),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11336
{"evdotphassfaaw3",   VX (4, 339),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11337
{"evdotphsssiaaw3",   VX (4, 341),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11338
{"evdotphsssfaaw3",   VX (4, 343),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11339
{"evdotphaumiaaw3",   VX (4, 344),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11340
{"evdotphasmiaaw3",   VX (4, 345),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11341
{"evdotphasumiaaw3",    VX (4, 346),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11342
{"evdotphassfraaw3",    VX (4, 347),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11343
{"evdotphssmiaaw3",   VX (4, 349),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11344
{"evdotphsssfraaw3",    VX (4, 351),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11345
{"evdotphausia",    VX (4, 352),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11346
{"evdotphassia",    VX (4, 353),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11347
{"evdotphasusia",   VX (4, 354),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11348
{"evdotphassfa",    VX (4, 355),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11349
{"evdotphsssfa",    VX (4, 359),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11350
{"evdotphaumia",    VX (4, 360),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11351
{"evdotphasmia",    VX (4, 361),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11352
{"evdotphasumia",   VX (4, 362),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11353
{"evdotphassfra",   VX (4, 363),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11354
{"evdotphssmia",    VX (4, 365),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11355
{"evdotphsssia",    VX (4, 365),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11356
{"evdotphsssfra",   VX (4, 367),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11357
{"evdotphausiaaw",    VX (4, 368),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11358
{"evdotphassiaaw",    VX (4, 369),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11359
{"evdotphasusiaaw",   VX (4, 370),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11360
{"evdotphassfaaw",    VX (4, 371),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11361
{"evdotphsssiaaw",    VX (4, 373),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11362
{"evdotphsssfaaw",    VX (4, 375),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11363
{"evdotphaumiaaw",    VX (4, 376),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11364
{"evdotphasmiaaw",    VX (4, 377),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11365
{"evdotphasumiaaw",   VX (4, 378),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11366
{"evdotphassfraaw",   VX (4, 379),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11367
{"evdotphssmiaaw",    VX (4, 381),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11368
{"evdotphsssfraaw",   VX (4, 383),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11369
{"evdotp4hgaumi",   VX (4, 384),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11370
{"evdotp4hgasmi",   VX (4, 385),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11371
{"evdotp4hgasumi",    VX (4, 386),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11372
{"evdotp4hgasmf",   VX (4, 387),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11373
{"evdotp4hgssmi",   VX (4, 388),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11374
{"evdotp4hgssmf",   VX (4, 389),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11375
{"evdotp4hxgasmi",    VX (4, 390),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11376
{"evdotp4hxgasmf",    VX (4, 391),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11377
{"evdotpbaumi",     VX (4, 392),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11378
{"evdotpbasmi",     VX (4, 393),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11379
{"evdotpbasumi",    VX (4, 394),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11380
{"evdotp4hxgssmi",    VX (4, 398),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11381
{"evdotp4hxgssmf",    VX (4, 399),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11382
{"evdotp4hgaumiaa3",    VX (4, 400),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11383
{"evdotp4hgasmiaa3",    VX (4, 401),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11384
{"evdotp4hgasumiaa3",   VX (4, 402),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11385
{"evdotp4hgasmfaa3",    VX (4, 403),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11386
{"evdotp4hgssmiaa3",    VX (4, 404),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11387
{"evdotp4hgssmfaa3",    VX (4, 405),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11388
{"evdotp4hxgasmiaa3",   VX (4, 406),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11389
{"evdotp4hxgasmfaa3",   VX (4, 407),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11390
{"evdotpbaumiaaw3",   VX (4, 408),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11391
{"evdotpbasmiaaw3",   VX (4, 409),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11392
{"evdotpbasumiaaw3",    VX (4, 410),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11393
{"evdotp4hxgssmiaa3",   VX (4, 414),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11394
{"evdotp4hxgssmfaa3",   VX (4, 415),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11395
{"evdotp4hgaumia",    VX (4, 416),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11396
{"evdotp4hgasmia",    VX (4, 417),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11397
{"evdotp4hgasumia",   VX (4, 418),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11398
{"evdotp4hgasmfa",    VX (4, 419),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11399
{"evdotp4hgssmia",    VX (4, 420),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11400
{"evdotp4hgssmfa",    VX (4, 421),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11401
{"evdotp4hxgasmia",   VX (4, 422),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11402
{"evdotp4hxgasmfa",   VX (4, 423),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11403
{"evdotpbaumia",    VX (4, 424),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11404
{"evdotpbasmia",    VX (4, 425),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11405
{"evdotpbasumia",   VX (4, 426),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11406
{"evdotp4hxgssmia",   VX (4, 430),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11407
{"evdotp4hxgssmfa",   VX (4, 431),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11408
{"evdotp4hgaumiaa",   VX (4, 432),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11409
{"evdotp4hgasmiaa",   VX (4, 433),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11410
{"evdotp4hgasumiaa",    VX (4, 434),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11411
{"evdotp4hgasmfaa",   VX (4, 435),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11412
{"evdotp4hgssmiaa",   VX (4, 436),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11413
{"evdotp4hgssmfaa",   VX (4, 437),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11414
{"evdotp4hxgasmiaa",    VX (4, 438),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11415
{"evdotp4hxgasmfaa",    VX (4, 439),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11416
{"evdotpbaumiaaw",    VX (4, 440),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11417
{"evdotpbasmiaaw",    VX (4, 441),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11418
{"evdotpbasumiaaw",   VX (4, 442),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11419
{"evdotp4hxgssmiaa",    VX (4, 446),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11420
{"evdotp4hxgssmfaa",    VX (4, 447),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11421
{"evdotpwausi",     VX (4, 448),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11422
{"evdotpwassi",     VX (4, 449),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11423
{"evdotpwasusi",    VX (4, 450),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11424
{"evdotpwaumi",     VX (4, 456),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11425
{"evdotpwasmi",     VX (4, 457),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11426
{"evdotpwasumi",    VX (4, 458),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11427
{"evdotpwssmi",     VX (4, 461),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11428
{"evdotpwsssi",     VX (4, 461),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11429
{"evdotpwausiaa3",    VX (4, 464),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11430
{"evdotpwassiaa3",    VX (4, 465),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11431
{"evdotpwasusiaa3",   VX (4, 466),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11432
{"evdotpwsssiaa3",    VX (4, 469),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11433
{"evdotpwaumiaa3",    VX (4, 472),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11434
{"evdotpwasmiaa3",    VX (4, 473),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11435
{"evdotpwasumiaa3",   VX (4, 474),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11436
{"evdotpwssmiaa3",    VX (4, 477),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11437
{"evdotpwausia",    VX (4, 480),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11438
{"evdotpwassia",    VX (4, 481),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11439
{"evdotpwasusia",   VX (4, 482),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11440
{"evdotpwaumia",    VX (4, 488),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11441
{"evdotpwasmia",    VX (4, 489),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11442
{"evdotpwasumia",   VX (4, 490),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11443
{"evdotpwssmia",    VX (4, 493),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11444
{"evdotpwsssia",    VX (4, 493),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11445
{"evdotpwausiaa",   VX (4, 496),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11446
{"evdotpwassiaa",   VX (4, 497),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11447
{"evdotpwasusiaa",    VX (4, 498),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11448
{"evdotpwsssiaa",   VX (4, 501),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11449
{"evdotpwaumiaa",   VX (4, 504),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11450
{"evdotpwasmiaa",   VX (4, 505),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11451
{"evdotpwasumiaa",    VX (4, 506),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11452
{"evdotpwssmiaa",   VX (4, 509),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11453
{"evaddib",     VX (4, 515),    VX_MASK,    PPCSPE2, 0, {RD, RB, UIMM}},
11454
{"evaddih",     VX (4, 513),    VX_MASK,    PPCSPE2, 0, {RD, RB, UIMM}},
11455
{"evsubifh",      VX (4, 517),    VX_MASK,    PPCSPE2, 0, {RD, UIMM, RB}},
11456
{"evsubifb",      VX (4, 519),    VX_MASK,    PPCSPE2, 0, {RD, UIMM, RB}},
11457
{"evabsb",      VX_RB_CONST(4, 520, 2),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11458
{"evabsh",      VX_RB_CONST(4, 520, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11459
{"evabsd",      VX_RB_CONST(4, 520, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11460
{"evabss",      VX_RB_CONST(4, 520, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11461
{"evabsbs",     VX_RB_CONST(4, 520, 10), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11462
{"evabshs",     VX_RB_CONST(4, 520, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11463
{"evabsds",     VX_RB_CONST(4, 520, 14), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11464
{"evnegwo",     VX_RB_CONST(4, 521, 1),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11465
{"evnegb",      VX_RB_CONST(4, 521, 2),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11466
{"evnegbo",     VX_RB_CONST(4, 521, 3),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11467
{"evnegh",      VX_RB_CONST(4, 521, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11468
{"evnegho",     VX_RB_CONST(4, 521, 5),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11469
{"evnegd",      VX_RB_CONST(4, 521, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11470
{"evnegs",      VX_RB_CONST(4, 521, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11471
{"evnegwos",      VX_RB_CONST(4, 521, 9),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11472
{"evnegbs",     VX_RB_CONST(4, 521, 10), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11473
{"evnegbos",      VX_RB_CONST(4, 521, 11), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11474
{"evneghs",     VX_RB_CONST(4, 521, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11475
{"evneghos",      VX_RB_CONST(4, 521, 13), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11476
{"evnegds",     VX_RB_CONST(4, 521, 14), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11477
{"evextzb",     VX_RB_CONST(4, 522, 1),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11478
{"evextsbh",      VX_RB_CONST(4, 522, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11479
{"evextsw",     VX_RB_CONST(4, 523, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11480
{"evrndwh",     VX_RB_CONST(4, 524, 0),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11481
{"evrndhb",     VX_RB_CONST(4, 524, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11482
{"evrnddw",     VX_RB_CONST(4, 524, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11483
{"evrndwhus",     VX_RB_CONST(4, 524, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11484
{"evrndwhss",     VX_RB_CONST(4, 524, 9),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11485
{"evrndhbus",     VX_RB_CONST(4, 524, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11486
{"evrndhbss",     VX_RB_CONST(4, 524, 13), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11487
{"evrnddwus",     VX_RB_CONST(4, 524, 14), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11488
{"evrnddwss",     VX_RB_CONST(4, 524, 15), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11489
{"evrndwnh",      VX_RB_CONST(4, 524, 16), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11490
{"evrndhnb",      VX_RB_CONST(4, 524, 20), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11491
{"evrnddnw",      VX_RB_CONST(4, 524, 22), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11492
{"evrndwnhus",      VX_RB_CONST(4, 524, 24), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11493
{"evrndwnhss",      VX_RB_CONST(4, 524, 25), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11494
{"evrndhnbus",      VX_RB_CONST(4, 524, 28), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11495
{"evrndhnbss",      VX_RB_CONST(4, 524, 29), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11496
{"evrnddnwus",      VX_RB_CONST(4, 524, 30), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11497
{"evrnddnwss",      VX_RB_CONST(4, 524, 31), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11498
{"evcntlzh",      VX_RB_CONST(4, 525, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11499
{"evcntlsh",      VX_RB_CONST(4, 526, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11500
{"evpopcntb",     VX_RB_CONST(4, 526, 26), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11501
{"circinc",     VX (4, 528),       VX_MASK,   PPCSPE2, 0, {RD, RA, RB}},
11502
{"evunpkhibui",     VX_RB_CONST(4, 540, 0),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11503
{"evunpkhibsi",     VX_RB_CONST(4, 540, 1),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11504
{"evunpkhihui",     VX_RB_CONST(4, 540, 2),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11505
{"evunpkhihsi",     VX_RB_CONST(4, 540, 3),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11506
{"evunpklobui",     VX_RB_CONST(4, 540, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11507
{"evunpklobsi",     VX_RB_CONST(4, 540, 5),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11508
{"evunpklohui",     VX_RB_CONST(4, 540, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11509
{"evunpklohsi",     VX_RB_CONST(4, 540, 7),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11510
{"evunpklohf",      VX_RB_CONST(4, 540, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11511
{"evunpkhihf",      VX_RB_CONST(4, 540, 9),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11512
{"evunpklowgsf",    VX_RB_CONST(4, 540, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11513
{"evunpkhiwgsf",    VX_RB_CONST(4, 540, 13), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11514
{"evsatsduw",     VX_RB_CONST(4, 540, 16), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11515
{"evsatsdsw",     VX_RB_CONST(4, 540, 17), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11516
{"evsatshub",     VX_RB_CONST(4, 540, 18), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11517
{"evsatshsb",     VX_RB_CONST(4, 540, 19), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11518
{"evsatuwuh",     VX_RB_CONST(4, 540, 20), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11519
{"evsatswsh",     VX_RB_CONST(4, 540, 21), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11520
{"evsatswuh",     VX_RB_CONST(4, 540, 22), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11521
{"evsatuhub",     VX_RB_CONST(4, 540, 23), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11522
{"evsatuduw",     VX_RB_CONST(4, 540, 24), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11523
{"evsatuwsw",     VX_RB_CONST(4, 540, 25), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11524
{"evsatshuh",     VX_RB_CONST(4, 540, 26), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11525
{"evsatuhsh",     VX_RB_CONST(4, 540, 27), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11526
{"evsatswuw",     VX_RB_CONST(4, 540, 28), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11527
{"evsatswgsdf",     VX_RB_CONST(4, 540, 29), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11528
{"evsatsbub",     VX_RB_CONST(4, 540, 30), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11529
{"evsatubsb",     VX_RB_CONST(4, 540, 31), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11530
{"evmaxhpuw",     VX_RB_CONST(4, 541, 0),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11531
{"evmaxhpsw",     VX_RB_CONST(4, 541, 1),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11532
{"evmaxbpuh",     VX_RB_CONST(4, 541, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11533
{"evmaxbpsh",     VX_RB_CONST(4, 541, 5),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11534
{"evmaxwpud",     VX_RB_CONST(4, 541, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11535
{"evmaxwpsd",     VX_RB_CONST(4, 541, 7),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11536
{"evminhpuw",     VX_RB_CONST(4, 541, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11537
{"evminhpsw",     VX_RB_CONST(4, 541, 9),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11538
{"evminbpuh",     VX_RB_CONST(4, 541, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11539
{"evminbpsh",     VX_RB_CONST(4, 541, 13), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11540
{"evminwpud",     VX_RB_CONST(4, 541, 14), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11541
{"evminwpsd",     VX_RB_CONST(4, 541, 15), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11542
{"evmaxmagws",      VX (4, 543),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11543
{"evsl",      VX (4, 549),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11544
{"evsli",     VX (4, 551),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM}},
11545
{"evsplatie",     VX_RB_CONST (4, 553, 1),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11546
{"evsplatib",     VX_RB_CONST (4, 553, 2),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11547
{"evsplatibe",      VX_RB_CONST (4, 553, 3),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11548
{"evsplatih",     VX_RB_CONST (4, 553, 4),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11549
{"evsplatihe",      VX_RB_CONST (4, 553, 5),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11550
{"evsplatid",     VX_RB_CONST (4, 553, 6),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11551
{"evsplatia",     VX_RB_CONST (4, 553, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11552
{"evsplatiea",      VX_RB_CONST (4, 553, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11553
{"evsplatiba",      VX_RB_CONST (4, 553, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11554
{"evsplatibea",     VX_RB_CONST (4, 553, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11555
{"evsplatiha",      VX_RB_CONST (4, 553, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11556
{"evsplatihea",     VX_RB_CONST (4, 553, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11557
{"evsplatida",      VX_RB_CONST (4, 553, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11558
{"evsplatfio",      VX_RB_CONST (4, 555, 1),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11559
{"evsplatfib",      VX_RB_CONST (4, 555, 2),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11560
{"evsplatfibo",     VX_RB_CONST (4, 555, 3),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11561
{"evsplatfih",      VX_RB_CONST (4, 555, 4),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11562
{"evsplatfiho",     VX_RB_CONST (4, 555, 5),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11563
{"evsplatfid",      VX_RB_CONST (4, 555, 6),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11564
{"evsplatfia",      VX_RB_CONST (4, 555, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11565
{"evsplatfioa",     VX_RB_CONST (4, 555, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11566
{"evsplatfiba",     VX_RB_CONST (4, 555, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11567
{"evsplatfiboa",    VX_RB_CONST (4, 555, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11568
{"evsplatfiha",     VX_RB_CONST (4, 555, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11569
{"evsplatfihoa",    VX_RB_CONST (4, 555, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11570
{"evsplatfida",     VX_RB_CONST (4, 555, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11571
{"evcmpgtdu",     VX_SPE_CRFD (4, 560, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11572
{"evcmpgtds",     VX_SPE_CRFD (4, 561, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11573
{"evcmpltdu",     VX_SPE_CRFD (4, 562, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11574
{"evcmpltds",     VX_SPE_CRFD (4, 563, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11575
{"evcmpeqd",      VX_SPE_CRFD (4, 564, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11576
{"evswapbhilo",     VX (4, 568),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11577
{"evswapblohi",     VX (4, 569),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11578
{"evswaphhilo",     VX (4, 570),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11579
{"evswaphlohi",     VX (4, 571),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11580
{"evswaphe",      VX (4, 572),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11581
{"evswaphhi",     VX (4, 573),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11582
{"evswaphlo",     VX (4, 574),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11583
{"evswapho",      VX (4, 575),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11584
{"evinsb",      VX (4, 584),    VX_MASK_DDD,    PPCSPE2, 0, {RD, RA, DDD, BBB}},
11585
{"evxtrb",      VX (4, 586),    VX_MASK_DDD,    PPCSPE2, 0, {RD, RA, DDD, BBB}},
11586
{"evsplath",      VX_SPE2_HH (4, 588, 0, 0), VX_SPE2_HH_MASK, PPCSPE2, 0, {RD, RA, HH}},
11587
{"evsplatb",      VX_SPE2_SPLATB (4, 588, 2), VX_SPE2_SPLATB_MASK, PPCSPE2, 0, {RD, RA, BBB}},
11588
{"evinsh",      VX_SPE2_DDHH (4, 589, 0), VX_SPE2_DDHH_MASK,  PPCSPE2, 0, {RD, RA, DD, HH}},
11589
{"evclrbe",     VX_SPE2_CLR (4, 590, 0), VX_SPE2_CLR_MASK,  PPCSPE2, 0, {RD, RA, MMMM}},
11590
{"evclrbo",     VX_SPE2_CLR (4, 590, 1), VX_SPE2_CLR_MASK,  PPCSPE2, 0, {RD, RA, MMMM}},
11591
{"evclrh",      VX_SPE2_CLR (4, 591, 1), VX_SPE2_CLR_MASK,  PPCSPE2, 0, {RD, RA, MMMM}},
11592
{"evxtrh",      VX_SPE2_DDHH (4, 591, 0), VX_SPE2_DDHH_MASK,  PPCSPE2, 0, {RD, RA, DD, HH}},
11593
{"evselbitm0",      VX (4, 592),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11594
{"evselbitm1",      VX (4, 593),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11595
{"evselbit",      VX (4, 594),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11596
{"evperm",      VX (4, 596),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11597
{"evperm2",     VX (4, 597),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11598
{"evperm3",     VX (4, 598),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11599
{"evxtrd",      VX (4, 600),    VX_OFF_SPE2_MASK, PPCSPE2, 0, {RD, RA, RB, VX_OFF_SPE2}},
11600
{"evsrbu",      VX (4, 608),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11601
{"evsrbs",      VX (4, 609),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11602
{"evsrbiu",     VX (4, 610),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11603
{"evsrbis",     VX (4, 611),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11604
{"evslb",     VX (4, 612),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11605
{"evrlb",     VX (4, 613),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11606
{"evslbi",      VX (4, 614),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11607
{"evrlbi",      VX (4, 615),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11608
{"evsrhu",      VX (4, 616),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11609
{"evsrhs",      VX (4, 617),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11610
{"evsrhiu",     VX (4, 618),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11611
{"evsrhis",     VX (4, 619),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11612
{"evslh",     VX (4, 620),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11613
{"evrlh",     VX (4, 621),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11614
{"evslhi",      VX (4, 622),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11615
{"evrlhi",      VX (4, 623),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11616
{"evsru",     VX (4, 624),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11617
{"evsrs",     VX (4, 625),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11618
{"evsriu",      VX (4, 626),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM}},
11619
{"evsris",      VX (4, 627),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM}},
11620
{"evlvsl",      VX (4, 628),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11621
{"evlvsr",      VX (4, 629),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11622
{"evsroiu",     VX_SPE2_OCTET (4, 631, 0), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
11623
{"evsrois",     VX_SPE2_OCTET (4, 631, 1), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
11624
{"evsloi",      VX_SPE2_OCTET (4, 631, 2), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
11625
{"evldbx",      VX (4, 774),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11626
{"evldb",     VX (4, 775),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8, RA}},
11627
{"evlhhsplathx",    VX (4, 778),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11628
{"evlhhsplath",     VX (4, 779),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2, RA}},
11629
{"evlwbsplatwx",    VX (4, 786),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11630
{"evlwbsplatw",     VX (4, 787),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11631
{"evlwhsplatwx",    VX (4, 794),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11632
{"evlwhsplatw",     VX (4, 795),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11633
{"evlbbsplatbx",    VX (4, 798),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11634
{"evlbbsplatb",     VX (4, 799),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_1, RA}},
11635
{"evstdbx",     VX (4, 806),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11636
{"evstdb",      VX (4, 807),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8, RA}},
11637
{"evlwbex",     VX (4, 810),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11638
{"evlwbe",      VX (4, 811),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11639
{"evlwboux",      VX (4, 812),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11640
{"evlwbou",     VX (4, 813),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11641
{"evlwbosx",      VX (4, 814),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11642
{"evlwbos",     VX (4, 815),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11643
{"evstwbex",      VX (4, 818),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11644
{"evstwbe",     VX (4, 819),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4, RA}},
11645
{"evstwbox",      VX (4, 822),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11646
{"evstwbo",     VX (4, 823),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4, RA}},
11647
{"evstwbx",     VX (4, 826),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11648
{"evstwb",      VX (4, 827),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4, RA}},
11649
{"evsthbx",     VX (4, 830),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11650
{"evsthb",      VX (4, 831),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_2, RA}},
11651
{"evlddmx",     VX (4, 832),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11652
{"evlddu",      VX (4, 833),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11653
{"evldwmx",     VX (4, 834),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11654
{"evldwu",      VX (4, 835),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11655
{"evldhmx",     VX (4, 836),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11656
{"evldhu",      VX (4, 837),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11657
{"evldbmx",     VX (4, 838),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11658
{"evldbu",      VX (4, 839),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11659
{"evlhhesplatmx",   VX (4, 840),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11660
{"evlhhesplatu",    VX (4, 841),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11661
{"evlhhsplathmx",   VX (4, 842),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11662
{"evlhhsplathu",    VX (4, 843),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11663
{"evlhhousplatmx",    VX (4, 844),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11664
{"evlhhousplatu",   VX (4, 845),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11665
{"evlhhossplatmx",    VX (4, 846),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11666
{"evlhhossplatu",   VX (4, 847),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11667
{"evlwhemx",      VX (4, 848),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11668
{"evlwheu",     VX (4, 849),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11669
{"evlwbsplatwmx",   VX (4, 850),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11670
{"evlwbsplatwu",    VX (4, 851),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11671
{"evlwhoumx",     VX (4, 852),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11672
{"evlwhouu",      VX (4, 853),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11673
{"evlwhosmx",     VX (4, 854),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11674
{"evlwhosu",      VX (4, 855),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11675
{"evlwwsplatmx",    VX (4, 856),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11676
{"evlwwsplatu",     VX (4, 857),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11677
{"evlwhsplatwmx",   VX (4, 858),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11678
{"evlwhsplatwu",    VX (4, 859),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11679
{"evlwhsplatmx",    VX (4, 860),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11680
{"evlwhsplatu",     VX (4, 861),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11681
{"evlbbsplatbmx",   VX (4, 862),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11682
{"evlbbsplatbu",    VX (4, 863),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_1_EX0, RA}},
11683
{"evstddmx",      VX (4, 864),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11684
{"evstddu",     VX (4, 865),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11685
{"evstdwmx",      VX (4, 866),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11686
{"evstdwu",     VX (4, 867),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11687
{"evstdhmx",      VX (4, 868),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11688
{"evstdhu",     VX (4, 869),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11689
{"evstdbmx",      VX (4, 870),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11690
{"evstdbu",     VX (4, 871),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11691
{"evlwbemx",      VX (4, 874),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11692
{"evlwbeu",     VX (4, 875),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11693
{"evlwboumx",     VX (4, 876),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11694
{"evlwbouu",      VX (4, 877),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11695
{"evlwbosmx",     VX (4, 878),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11696
{"evlwbosu",      VX (4, 879),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11697
{"evstwhemx",     VX (4, 880),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11698
{"evstwheu",      VX (4, 881),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11699
{"evstwbemx",     VX (4, 882),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11700
{"evstwbeu",      VX (4, 883),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11701
{"evstwhomx",     VX (4, 884),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11702
{"evstwhou",      VX (4, 885),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11703
{"evstwbomx",     VX (4, 886),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11704
{"evstwbou",      VX (4, 887),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11705
{"evstwwemx",     VX (4, 888),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11706
{"evstwweu",      VX (4, 889),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11707
{"evstwbmx",      VX (4, 890),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11708
{"evstwbu",     VX (4, 891),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11709
{"evstwwomx",     VX (4, 892),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11710
{"evstwwou",      VX (4, 893),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11711
{"evsthbmx",      VX (4, 894),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11712
{"evsthbu",     VX (4, 895),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_2_EX0, RA}},
11713
{"evmhusi",     VX (4, 1024),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11714
{"evmhssi",     VX (4, 1025),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11715
{"evmhsusi",      VX (4, 1026),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11716
{"evmhssf",     VX (4, 1028),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11717
{"evmhumi",     VX (4, 1029),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11718
{"evmhssfr",      VX (4, 1030),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11719
{"evmhesumi",     VX (4, 1034),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11720
{"evmhosumi",     VX (4, 1038),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11721
{"evmbeumi",      VX (4, 1048),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11722
{"evmbesmi",      VX (4, 1049),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11723
{"evmbesumi",     VX (4, 1050),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11724
{"evmboumi",      VX (4, 1052),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11725
{"evmbosmi",      VX (4, 1053),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11726
{"evmbosumi",     VX (4, 1054),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11727
{"evmhesumia",      VX (4, 1066),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11728
{"evmhosumia",      VX (4, 1070),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11729
{"evmbeumia",     VX (4, 1080),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11730
{"evmbesmia",     VX (4, 1081),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11731
{"evmbesumia",      VX (4, 1082),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11732
{"evmboumia",     VX (4, 1084),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11733
{"evmbosmia",     VX (4, 1085),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11734
{"evmbosumia",      VX (4, 1086),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11735
{"evmwusiw",      VX (4, 1088),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11736
{"evmwssiw",      VX (4, 1089),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11737
{"evmwhssfr",     VX (4, 1094),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11738
{"evmwehgsmfr",     VX (4, 1110),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11739
{"evmwehgsmf",      VX (4, 1111),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11740
{"evmwohgsmfr",     VX (4, 1118),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11741
{"evmwohgsmf",      VX (4, 1119),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11742
{"evmwhssfra",      VX (4, 1126),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11743
{"evmwehgsmfra",    VX (4, 1142),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11744
{"evmwehgsmfa",     VX (4, 1143),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11745
{"evmwohgsmfra",    VX (4, 1150),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11746
{"evmwohgsmfa",     VX (4, 1151),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11747
{"evaddusiaa",      VX_RB_CONST(4, 1152, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11748
{"evaddssiaa",      VX_RB_CONST(4, 1153, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11749
{"evsubfusiaa",     VX_RB_CONST(4, 1154, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11750
{"evsubfssiaa",     VX_RB_CONST(4, 1155, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11751
{"evaddsmiaa",      VX_RB_CONST(4, 1156, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11752
{"evsubfsmiaa",     VX_RB_CONST(4, 1158, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11753
{"evaddh",      VX (4, 1160),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11754
{"evaddhss",      VX (4, 1161),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11755
{"evsubfh",     VX (4, 1162),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11756
{"evsubfhss",     VX (4, 1163),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11757
{"evaddhx",     VX (4, 1164),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11758
{"evaddhxss",     VX (4, 1165),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11759
{"evsubfhx",      VX (4, 1166),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11760
{"evsubfhxss",      VX (4, 1167),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11761
{"evaddd",      VX (4, 1168),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11762
{"evadddss",      VX (4, 1169),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11763
{"evsubfd",     VX (4, 1170),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11764
{"evsubfdss",     VX (4, 1171),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11765
{"evaddb",      VX (4, 1172),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11766
{"evaddbss",      VX (4, 1173),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11767
{"evsubfb",     VX (4, 1174),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11768
{"evsubfbss",     VX (4, 1175),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11769
{"evaddsubfh",      VX (4, 1176),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11770
{"evaddsubfhss",    VX (4, 1177),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11771
{"evsubfaddh",      VX (4, 1178),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11772
{"evsubfaddhss",    VX (4, 1179),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11773
{"evaddsubfhx",     VX (4, 1180),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11774
{"evaddsubfhxss",   VX (4, 1181),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11775
{"evsubfaddhx",     VX (4, 1182),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11776
{"evsubfaddhxss",   VX (4, 1183),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11777
{"evadddus",      VX (4, 1184),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11778
{"evaddbus",      VX (4, 1185),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11779
{"evsubfdus",     VX (4, 1186),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11780
{"evsubfbus",     VX (4, 1187),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11781
{"evaddwus",      VX (4, 1188),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11782
{"evaddwxus",     VX (4, 1189),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11783
{"evsubfwus",     VX (4, 1190),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11784
{"evsubfwxus",      VX (4, 1191),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11785
{"evadd2subf2h",    VX (4, 1192),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11786
{"evadd2subf2hss",    VX (4, 1193),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11787
{"evsubf2add2h",    VX (4, 1194),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11788
{"evsubf2add2hss",    VX (4, 1195),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11789
{"evaddhus",      VX (4, 1196),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11790
{"evaddhxus",     VX (4, 1197),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11791
{"evsubfhus",     VX (4, 1198),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11792
{"evsubfhxus",      VX (4, 1199),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11793
{"evaddwss",      VX (4, 1201),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11794
{"evsubfwss",     VX (4, 1203),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11795
{"evaddwx",     VX (4, 1204),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11796
{"evaddwxss",     VX (4, 1205),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11797
{"evsubfwx",      VX (4, 1206),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11798
{"evsubfwxss",      VX (4, 1207),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11799
{"evaddsubfw",      VX (4, 1208),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11800
{"evaddsubfwss",    VX (4, 1209),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11801
{"evsubfaddw",      VX (4, 1210),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11802
{"evsubfaddwss",    VX (4, 1211),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11803
{"evaddsubfwx",     VX (4, 1212),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11804
{"evaddsubfwxss",   VX (4, 1213),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11805
{"evsubfaddwx",     VX (4, 1214),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11806
{"evsubfaddwxss",   VX (4, 1215),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11807
{"evmar",     VX_SPE2_EVMAR (4, 1220),  VX_SPE2_EVMAR_MASK, PPCSPE2, 0, {RD}},
11808
{"evsumwu",     VX_RB_CONST(4, 1221, 0),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11809
{"evsumws",     VX_RB_CONST(4, 1221, 1),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11810
{"evsum4bu",      VX_RB_CONST(4, 1221, 2),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11811
{"evsum4bs",      VX_RB_CONST(4, 1221, 3),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11812
{"evsum2hu",      VX_RB_CONST(4, 1221, 4),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11813
{"evsum2hs",      VX_RB_CONST(4, 1221, 5),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11814
{"evdiff2his",      VX_RB_CONST(4, 1221, 6),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11815
{"evsum2his",     VX_RB_CONST(4, 1221, 7),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11816
{"evsumwua",      VX_RB_CONST(4, 1221, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11817
{"evsumwsa",      VX_RB_CONST(4, 1221, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11818
{"evsum4bua",     VX_RB_CONST(4, 1221, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11819
{"evsum4bsa",     VX_RB_CONST(4, 1221, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11820
{"evsum2hua",     VX_RB_CONST(4, 1221, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11821
{"evsum2hsa",     VX_RB_CONST(4, 1221, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11822
{"evdiff2hisa",     VX_RB_CONST(4, 1221, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11823
{"evsum2hisa",      VX_RB_CONST(4, 1221, 23), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11824
{"evsumwuaa",     VX_RB_CONST(4, 1221, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11825
{"evsumwsaa",     VX_RB_CONST(4, 1221, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11826
{"evsum4buaaw",     VX_RB_CONST(4, 1221, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11827
{"evsum4bsaaw",     VX_RB_CONST(4, 1221, 27), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11828
{"evsum2huaaw",     VX_RB_CONST(4, 1221, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11829
{"evsum2hsaaw",     VX_RB_CONST(4, 1221, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11830
{"evdiff2hisaaw",   VX_RB_CONST(4, 1221, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11831
{"evsum2hisaaw",    VX_RB_CONST(4, 1221, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11832
{"evdivwsf",      VX (4, 1228),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11833
{"evdivwuf",      VX (4, 1229),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11834
{"evdivs",      VX (4, 1230),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11835
{"evdivu",      VX (4, 1231),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11836
{"evaddwegsi",      VX (4, 1232),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11837
{"evaddwegsf",      VX (4, 1233),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11838
{"evsubfwegsi",     VX (4, 1234),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11839
{"evsubfwegsf",     VX (4, 1235),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11840
{"evaddwogsi",      VX (4, 1236),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11841
{"evaddwogsf",      VX (4, 1237),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11842
{"evsubfwogsi",     VX (4, 1238),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11843
{"evsubfwogsf",     VX (4, 1239),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11844
{"evaddhhiuw",      VX (4, 1240),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11845
{"evaddhhisw",      VX (4, 1241),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11846
{"evsubfhhiuw",     VX (4, 1242),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11847
{"evsubfhhisw",     VX (4, 1243),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11848
{"evaddhlouw",      VX (4, 1244),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11849
{"evaddhlosw",      VX (4, 1245),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11850
{"evsubfhlouw",     VX (4, 1246),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11851
{"evsubfhlosw",     VX (4, 1247),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11852
{"evmhesusiaaw",    VX (4, 1282),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11853
{"evmhosusiaaw",    VX (4, 1286),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11854
{"evmhesumiaaw",    VX (4, 1290),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11855
{"evmhosumiaaw",    VX (4, 1294),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11856
{"evmbeusiaah",     VX (4, 1296),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11857
{"evmbessiaah",     VX (4, 1297),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11858
{"evmbesusiaah",    VX (4, 1298),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11859
{"evmbousiaah",     VX (4, 1300),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11860
{"evmbossiaah",     VX (4, 1301),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11861
{"evmbosusiaah",    VX (4, 1302),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11862
{"evmbeumiaah",     VX (4, 1304),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11863
{"evmbesmiaah",     VX (4, 1305),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11864
{"evmbesumiaah",    VX (4, 1306),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11865
{"evmboumiaah",     VX (4, 1308),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11866
{"evmbosmiaah",     VX (4, 1309),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11867
{"evmbosumiaah",    VX (4, 1310),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11868
{"evmwlusiaaw3",    VX (4, 1346),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11869
{"evmwlssiaaw3",    VX (4, 1347),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11870
{"evmwhssfraaw3",   VX (4, 1348),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11871
{"evmwhssfaaw3",    VX (4, 1349),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11872
{"evmwhssfraaw",    VX (4, 1350),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11873
{"evmwhssfaaw",     VX (4, 1351),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11874
{"evmwlumiaaw3",    VX (4, 1354),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11875
{"evmwlsmiaaw3",    VX (4, 1355),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11876
{"evmwusiaa",     VX (4, 1360),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11877
{"evmwssiaa",     VX (4, 1361),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11878
{"evmwehgsmfraa",   VX (4, 1366),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11879
{"evmwehgsmfaa",    VX (4, 1367),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11880
{"evmwohgsmfraa",   VX (4, 1374),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11881
{"evmwohgsmfaa",    VX (4, 1375),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11882
{"evmhesusianw",    VX (4, 1410),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11883
{"evmhosusianw",    VX (4, 1414),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11884
{"evmhesumianw",    VX (4, 1418),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11885
{"evmhosumianw",    VX (4, 1422),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11886
{"evmbeusianh",     VX (4, 1424),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11887
{"evmbessianh",     VX (4, 1425),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11888
{"evmbesusianh",    VX (4, 1426),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11889
{"evmbousianh",     VX (4, 1428),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11890
{"evmbossianh",     VX (4, 1429),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11891
{"evmbosusianh",    VX (4, 1430),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11892
{"evmbeumianh",     VX (4, 1432),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11893
{"evmbesmianh",     VX (4, 1433),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11894
{"evmbesumianh",    VX (4, 1434),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11895
{"evmboumianh",     VX (4, 1436),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11896
{"evmbosmianh",     VX (4, 1437),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11897
{"evmbosumianh",    VX (4, 1438),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11898
{"evmwlusianw3",    VX (4, 1474),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11899
{"evmwlssianw3",    VX (4, 1475),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11900
{"evmwhssfranw3",   VX (4, 1476),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11901
{"evmwhssfanw3",    VX (4, 1477),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11902
{"evmwhssfranw",    VX (4, 1478),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11903
{"evmwhssfanw",     VX (4, 1479),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11904
{"evmwlumianw3",    VX (4, 1482),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11905
{"evmwlsmianw3",    VX (4, 1483),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11906
{"evmwusian",     VX (4, 1488),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11907
{"evmwssian",     VX (4, 1489),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11908
{"evmwehgsmfran",   VX (4, 1494),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11909
{"evmwehgsmfan",    VX (4, 1495),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11910
{"evmwohgsmfran",   VX (4, 1502),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11911
{"evmwohgsmfan",    VX (4, 1503),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11912
{"evseteqb",      VX (4, 1536),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11913
{"evseteqb.",     VX (4, 1537),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11914
{"evseteqh",      VX (4, 1538),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11915
{"evseteqh.",     VX (4, 1539),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11916
{"evseteqw",      VX (4, 1540),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11917
{"evseteqw.",     VX (4, 1541),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11918
{"evsetgthu",     VX (4, 1544),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11919
{"evsetgthu.",      VX (4, 1545),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11920
{"evsetgths",     VX (4, 1546),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11921
{"evsetgths.",      VX (4, 1547),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11922
{"evsetgtwu",     VX (4, 1548),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11923
{"evsetgtwu.",      VX (4, 1549),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11924
{"evsetgtws",     VX (4, 1550),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11925
{"evsetgtws.",      VX (4, 1551),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11926
{"evsetgtbu",     VX (4, 1552),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11927
{"evsetgtbu.",      VX (4, 1553),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11928
{"evsetgtbs",     VX (4, 1554),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11929
{"evsetgtbs.",      VX (4, 1555),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11930
{"evsetltbu",     VX (4, 1556),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11931
{"evsetltbu.",      VX (4, 1557),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11932
{"evsetltbs",     VX (4, 1558),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11933
{"evsetltbs.",      VX (4, 1559),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11934
{"evsetlthu",     VX (4, 1560),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11935
{"evsetlthu.",      VX (4, 1561),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11936
{"evsetlths",     VX (4, 1562),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11937
{"evsetlths.",      VX (4, 1563),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11938
{"evsetltwu",     VX (4, 1564),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11939
{"evsetltwu.",      VX (4, 1565),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11940
{"evsetltws",     VX (4, 1566),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11941
{"evsetltws.",      VX (4, 1567),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11942
{"evsaduw",     VX (4, 1568),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11943
{"evsadsw",     VX (4, 1569),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11944
{"evsad4ub",      VX (4, 1570),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11945
{"evsad4sb",      VX (4, 1571),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11946
{"evsad2uh",      VX (4, 1572),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11947
{"evsad2sh",      VX (4, 1573),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11948
{"evsaduwa",      VX (4, 1576),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11949
{"evsadswa",      VX (4, 1577),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11950
{"evsad4uba",     VX (4, 1578),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11951
{"evsad4sba",     VX (4, 1579),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11952
{"evsad2uha",     VX (4, 1580),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11953
{"evsad2sha",     VX (4, 1581),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11954
{"evabsdifuw",      VX (4, 1584),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11955
{"evabsdifsw",      VX (4, 1585),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11956
{"evabsdifub",      VX (4, 1586),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11957
{"evabsdifsb",      VX (4, 1587),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11958
{"evabsdifuh",      VX (4, 1588),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11959
{"evabsdifsh",      VX (4, 1589),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11960
{"evsaduwaa",     VX (4, 1592),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11961
{"evsadswaa",     VX (4, 1593),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11962
{"evsad4ubaaw",     VX (4, 1594),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11963
{"evsad4sbaaw",     VX (4, 1595),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11964
{"evsad2uhaaw",     VX (4, 1596),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11965
{"evsad2shaaw",     VX (4, 1597),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11966
{"evpkshubs",     VX (4, 1600),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11967
{"evpkshsbs",     VX (4, 1601),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11968
{"evpkswuhs",     VX (4, 1602),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11969
{"evpkswshs",     VX (4, 1603),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11970
{"evpkuhubs",     VX (4, 1604),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11971
{"evpkuwuhs",     VX (4, 1605),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11972
{"evpkswshilvs",    VX (4, 1606),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11973
{"evpkswgshefrs",   VX (4, 1607),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11974
{"evpkswshfrs",     VX (4, 1608),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11975
{"evpkswshilvfrs",    VX (4, 1609),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11976
{"evpksdswfrs",     VX (4, 1610),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11977
{"evpksdshefrs",    VX (4, 1611),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11978
{"evpkuduws",     VX (4, 1612),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11979
{"evpksdsws",     VX (4, 1613),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11980
{"evpkswgswfrs",    VX (4, 1614),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11981
{"evilveh",     VX (4, 1616),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11982
{"evilveoh",      VX (4, 1617),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11983
{"evilvhih",      VX (4, 1618),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11984
{"evilvhiloh",      VX (4, 1619),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11985
{"evilvloh",      VX (4, 1620),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11986
{"evilvlohih",      VX (4, 1621),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11987
{"evilvoeh",      VX (4, 1622),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11988
{"evilvoh",     VX (4, 1623),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11989
{"evdlveb",     VX (4, 1624),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11990
{"evdlveh",     VX (4, 1625),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11991
{"evdlveob",      VX (4, 1626),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11992
{"evdlveoh",      VX (4, 1627),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11993
{"evdlvob",     VX (4, 1628),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11994
{"evdlvoh",     VX (4, 1629),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11995
{"evdlvoeb",      VX (4, 1630),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11996
{"evdlvoeh",      VX (4, 1631),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11997
{"evmaxbu",     VX (4, 1632),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11998
{"evmaxbs",     VX (4, 1633),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11999
{"evmaxhu",     VX (4, 1634),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12000
{"evmaxhs",     VX (4, 1635),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12001
{"evmaxwu",     VX (4, 1636),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12002
{"evmaxws",     VX (4, 1637),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12003
{"evmaxdu",     VX (4, 1638),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12004
{"evmaxds",     VX (4, 1639),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12005
{"evminbu",     VX (4, 1640),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12006
{"evminbs",     VX (4, 1641),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12007
{"evminhu",     VX (4, 1642),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12008
{"evminhs",     VX (4, 1643),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12009
{"evminwu",     VX (4, 1644),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12010
{"evminws",     VX (4, 1645),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12011
{"evmindu",     VX (4, 1646),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12012
{"evminds",     VX (4, 1647),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12013
{"evavgwu",     VX (4, 1648),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12014
{"evavgws",     VX (4, 1649),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12015
{"evavgbu",     VX (4, 1650),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12016
{"evavgbs",     VX (4, 1651),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12017
{"evavghu",     VX (4, 1652),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12018
{"evavghs",     VX (4, 1653),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12019
{"evavgdu",     VX (4, 1654),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12020
{"evavgds",     VX (4, 1655),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12021
{"evavgwur",      VX (4, 1656),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12022
{"evavgwsr",      VX (4, 1657),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12023
{"evavgbur",      VX (4, 1658),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12024
{"evavgbsr",      VX (4, 1659),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12025
{"evavghur",      VX (4, 1660),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12026
{"evavghsr",      VX (4, 1661),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12027
{"evavgdur",      VX (4, 1662),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12028
{"evavgdsr",      VX (4, 1663),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
12029
};
12030
12031
const unsigned int spe2_num_opcodes = ARRAY_SIZE (spe2_opcodes);