Coverage Report

Created: 2025-06-24 06:45

/src/binutils-gdb/opcodes/ppc-opc.c
Line
Count
Source (jump to first uncovered line)
1
/* ppc-opc.c -- PowerPC opcode list
2
   Copyright (C) 1994-2025 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
3.94k
{
169
3.94k
  int64_t ba = (insn >> 16) & 0x1f;
170
3.94k
  int64_t bb = (insn >> 11) & 0x1f;
171
172
3.94k
  if (ba != bb)
173
513
    *invalid = 1;
174
3.94k
  return ba;
175
3.94k
}
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
3.61k
{
196
3.61k
  int64_t bt = (insn >> 21) & 0x1f;
197
3.61k
  int64_t bab = extract_bab (insn, dialect, invalid);
198
199
3.61k
  if (bt != bab)
200
336
    *invalid = 1;
201
3.61k
  return bt;
202
3.61k
}
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
587k
#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
149k
{
249
149k
  if ((dialect & ISA_V2) == 0)
250
14.1k
    {
251
14.1k
      if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
252
2.18k
  *invalid = 1;
253
14.1k
    }
254
135k
  else
255
135k
    {
256
135k
      if ((insn & (0x17 << 21)) != (0x06 << 21)
257
135k
    && (insn & (0x1d << 21)) != (0x18 << 21))
258
121k
  *invalid = 1;
259
135k
    }
260
261
149k
  return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
262
149k
}
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
138k
{
294
138k
  if ((dialect & ISA_V2) == 0)
295
13.3k
    {
296
13.3k
      if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
297
10.3k
  *invalid = 1;
298
13.3k
    }
299
125k
  else
300
125k
    {
301
125k
      if ((insn & (0x17 << 21)) != (0x07 << 21)
302
125k
    && (insn & (0x1d << 21)) != (0x19 << 21))
303
116k
  *invalid = 1;
304
125k
    }
305
306
138k
  return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
307
138k
}
308
309
static inline int
310
valid_bo_pre_v2 (int64_t value)
311
190k
{
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
190k
  if ((value & 0x14) == 0)
325
    /* BO: 0000y, 0001y, 0100y, 0101y.  */
326
12.4k
    return 1;
327
178k
  else if ((value & 0x14) == 0x4)
328
    /* BO: 001zy, 011zy.  */
329
170
    return (value & 0x2) == 0;
330
178k
  else if ((value & 0x14) == 0x10)
331
    /* BO: 1z00y, 1z01y.  */
332
117k
    return (value & 0x8) == 0;
333
61.2k
  else
334
    /* BO: 1z1zz.  */
335
61.2k
    return value == 0x14;
336
190k
}
337
338
static inline int
339
valid_bo_post_v2 (int64_t value)
340
190k
{
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
190k
  if ((value & 0x14) == 0)
354
    /* BO: 0000z, 0001z, 0100z, 0101z.  */
355
12.4k
    return (value & 0x1) == 0;
356
178k
  else if ((value & 0x14) == 0x14)
357
    /* BO: 1z1zz.  */
358
61.2k
    return value == 0x14;
359
117k
  else if ((value & 0x14) == 0x4)
360
    /* BO: 001at, 011at, with "at" == 0b01 being reserved.  */
361
170
    return (value & 0x3) != 1;
362
117k
  else if ((value & 0x14) == 0x10)
363
    /* BO: 1a00t, 1a01t, with "at" == 0b01 being reserved.  */
364
117k
    return (value & 0x9) != 1;
365
0
  else
366
0
    return 1;
367
190k
}
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
190k
{
374
190k
  int valid_y = valid_bo_pre_v2 (value);
375
190k
  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
190k
  if (extract && dialect == ~(ppc_cpu_t) PPC_OPCODE_ANY)
380
0
    return valid_y || valid_at;
381
190k
  if ((dialect & ISA_V2) == 0)
382
64.3k
    return valid_y;
383
126k
  else
384
126k
    return valid_at;
385
190k
}
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
83.2k
{
409
83.2k
  int64_t value = (insn >> 21) & 0x1f;
410
83.2k
  if (!valid_bo (value, dialect, 1))
411
20.9k
    *invalid = 1;
412
83.2k
  return value;
413
83.2k
}
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
107k
{
421
107k
  if ((dialect & ISA_V2) == 0)
422
25.2k
    {
423
25.2k
      if ((bo & 0x14) != 0x14)
424
  /* BO: 0000y, 0001y, 001zy, 0100y, 0101y, 011zy, 1z00y, 1z01y .  */
425
23.4k
  return 1;
426
1.80k
      else
427
  /* BO: 1z1zz.  */
428
1.80k
  return 0;
429
25.2k
    }
430
82.4k
  else
431
82.4k
    {
432
82.4k
      if ((bo & 0x14) == 0x4)
433
  /* BO: 001at, 011at.  */
434
62
  return 0x3;
435
82.3k
      else if ((bo & 0x14) == 0x10)
436
  /* BO: 1a00t, 1a01t.  */
437
45.3k
  return 0x9;
438
36.9k
      else
439
  /* BO: 0000z, 0001z, 0100z, 0101z, 1z1zz.  */
440
36.9k
  return 0;
441
82.4k
    }
442
107k
}
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
107k
{
485
107k
  int64_t value = (insn >> 21) & 0x1f;
486
107k
  int64_t implied_hint;
487
107k
  int64_t hint_mask = get_bo_hint_mask (value, dialect);
488
489
107k
  if (branch_taken)
490
49.5k
    implied_hint = hint_mask;
491
58.1k
  else
492
58.1k
    implied_hint = hint_mask & ~1;
493
494
107k
  if (!valid_bo (value, dialect, 1)
495
107k
      || implied_hint == 0
496
107k
      || (value & hint_mask) != implied_hint)
497
89.6k
    *invalid = 1;
498
107k
  return value;
499
107k
}
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
58.1k
{
517
58.1k
  return extract_boe (insn, dialect, invalid, 0);
518
58.1k
}
519
520
/* The BO field in a B form instruction when the + modifier is used.  */
521
522
static uint64_t
523
insert_bop (uint64_t insn,
524
      int64_t value,
525
      ppc_cpu_t dialect,
526
      const char **errmsg)
527
0
{
528
0
  return insert_boe (insn, value, dialect, errmsg, 1);
529
0
}
530
531
static int64_t
532
extract_bop (uint64_t insn,
533
       ppc_cpu_t dialect,
534
       int *invalid)
535
49.5k
{
536
49.5k
  return extract_boe (insn, dialect, invalid, 1);
537
49.5k
}
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
840
{
559
840
  return (insn & 0x40) | ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
560
840
}
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
102
{
586
102
  int64_t dw = ((insn & 1) << 8) | ((insn >> 18) & 0xf8);
587
102
  return dw - 512;
588
102
}
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
3.70k
{
607
3.70k
  uint64_t dxd = (insn & 0xffc1) | ((insn >> 15) & 0x3e);
608
3.70k
  return (dxd ^ 0x8000) - 0x8000;
609
3.70k
}
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
3.22k
{
645
3.22k
  int64_t mask = 1ULL << 33;
646
3.22k
  int64_t value = ((insn >> 16) & 0x3ffff0000ULL) | (insn & 0xffff);
647
3.22k
  value = (value ^ mask) - mask;
648
3.22k
  return value;
649
3.22k
}
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
114
{
670
114
  int64_t value = extract_d34 (insn, dialect, invalid);
671
114
  *invalid = 1;
672
114
  return -value;
673
114
}
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
656
{
691
656
  return (insn & 0xffff) | ((insn >> 16) & 0xffff0000);
692
656
}
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
34
{
711
34
  int64_t mask = 1ULL << 31;
712
34
  int64_t value = ((insn >> 16) & 0xffff0000ULL) | (insn & 0xffff);
713
34
  value = (value ^ mask) - mask;
714
34
  return value;
715
34
}
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
0
{
735
0
  int64_t value = extract_si32 (insn, dialect, invalid);
736
0
  *invalid = 1;
737
0
  return -value;
738
0
}
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
6.18k
{
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
6.18k
  if (*invalid < 0)
769
2.14k
    return ~ *invalid & 1;
770
771
4.04k
  int64_t ra = (insn >> 16) & 0x1f;
772
4.04k
  int64_t pcrel = (insn >> 52) & 0x1;
773
4.04k
  if (ra != 0 && pcrel != 0)
774
486
    *invalid = 1;
775
776
4.04k
  return pcrel;
777
6.18k
}
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
182
{
787
182
  int64_t pcrel = extract_pcrel (insn, dialect, invalid);
788
182
  if (!pcrel)
789
65
    *invalid = 1;
790
182
  return pcrel;
791
182
}
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
24.6k
{
842
  /* Return a value of -1 for a missing optional operand, which is
843
     used as a flag by insert_fxm.  */
844
24.6k
  if (*invalid < 0)
845
5.69k
    return -1;
846
847
18.9k
  int64_t mask = (insn >> 12) & 0xff;
848
  /* Is this a Power4 insn?  */
849
18.9k
  if ((insn & (1 << 20)) != 0)
850
5.78k
    {
851
      /* Exactly one bit of MASK should be set.  */
852
5.78k
      if (mask == 0 || (mask & -mask) != mask)
853
53
  *invalid = 1;
854
5.78k
    }
855
856
  /* Check that non-power4 form of mfcr has a zero MASK.  */
857
13.2k
  else if ((insn & (0x3ff << 1)) == 19 << 1)
858
11.4k
    {
859
11.4k
      if (mask != 0)
860
70
  *invalid = 1;
861
11.3k
      else
862
11.3k
  mask = -1;
863
11.4k
    }
864
865
18.9k
  return mask;
866
24.6k
}
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
114
{
884
  /* Return a value of 1 for a missing optional operand.  */
885
114
  if (*invalid < 0)
886
32
    return 1;
887
888
82
  return (insn >> 21) & 1;
889
114
}
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.98k
{
1004
1.98k
  uint64_t value;
1005
1006
  /* Missing optional operands have a value of zero.  */
1007
1.98k
  if (*invalid < 0)
1008
504
    return 0;
1009
1010
1.48k
  if (((insn >> 1) & 0x3ff) == 598)
1011
770
    {
1012
      /* For SYNC, some L values are illegal.  */
1013
770
      int64_t mask = (dialect & PPC_OPCODE_POWER10) ?  0x7 : 0x3;
1014
1015
770
      value = (insn >> 21) & mask;
1016
770
      switch (value)
1017
770
  {
1018
42
  case 2:
1019
42
    if (dialect & PPC_OPCODE_POWER4)
1020
42
      break;
1021
    /* Fall through.  */
1022
32
  case 3:
1023
54
  case 6:
1024
54
  case 7:
1025
54
    *invalid = 1;
1026
54
    break;
1027
674
  default:
1028
674
    break;
1029
770
  }
1030
770
    }
1031
711
  else if (((insn >> 1) & 0x3ff) == 86)
1032
157
    {
1033
      /* For DCBF, some L values are illegal.  */
1034
157
      int64_t mask = (dialect & PPC_OPCODE_POWER10) ?  0x7 : 0x3;
1035
1036
157
      value = (insn >> 21) & mask;
1037
157
      switch (value)
1038
157
  {
1039
57
  case 2:
1040
57
  case 5:
1041
87
  case 7:
1042
87
    *invalid = 1;
1043
87
    break;
1044
70
  default:
1045
70
    break;
1046
157
  }
1047
157
    }
1048
554
  else
1049
554
    {
1050
      /* For WAIT, some WC values are illegal.  */
1051
554
      value = (insn >> 21) & 0x3;
1052
554
      if ((dialect & PPC_OPCODE_A2) == 0
1053
554
    && (dialect & PPC_OPCODE_E500MC) == 0)
1054
554
  switch (value)
1055
554
    {
1056
31
    case 1:
1057
31
    case 2:
1058
31
      if (dialect & PPC_OPCODE_POWER10)
1059
31
        break;
1060
      /* Fall through.  */
1061
33
    case 3:
1062
33
      *invalid = 1;
1063
33
      break;
1064
490
    default:
1065
490
      break;
1066
554
    }
1067
554
    }
1068
1069
1.48k
  return value;
1070
1.48k
}
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
907
{
1096
  /* Missing optional operands have a value of zero.  */
1097
907
  if (*invalid < 0)
1098
214
    return 0;
1099
1100
693
  uint64_t ls = (insn >> 21) & 0x3;
1101
693
  uint64_t value = (insn >> 16) & 0xf;
1102
693
  if (value != 0
1103
693
      && ((~value >> 1) & 0x1) != ls)
1104
79
    *invalid = 1;
1105
693
  return value;
1106
907
}
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
2.55k
{
1124
2.55k
  return ~(insn >> 1) & 0x1f;
1125
2.55k
}
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
147k
{
1372
147k
  return ((insn >> 6) & 0x1f) | (insn & 0x20);
1373
147k
}
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
9.83k
{
1429
9.83k
  return 63 - extract_mb6 (insn, dialect, invalid);
1430
9.83k
}
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
48
{
1440
48
  int64_t ret;
1441
1442
48
  ret = (insn >> 11) & 0x1f;
1443
48
  if (ret == 0)
1444
6
    ret = 32;
1445
48
  return ret;
1446
48
}
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
859
{
1513
  /* Missing optional operands have a value of zero.  */
1514
859
  if (*invalid < 0)
1515
262
    return 0;
1516
1517
597
  uint64_t value = (insn >> 16) & 0x3;
1518
1519
  /* For WAIT, some PL values are illegal.  */
1520
597
  if (((insn >> 1) & 0x3ff) == 30
1521
597
      && value != 0)
1522
28
    *invalid = 1;
1523
597
  return value;
1524
859
}
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
40
{
1542
40
  uint64_t value = ((insn >> 15) & 0x2) | ((insn >> 11) & 0x1);
1543
40
  return value;
1544
40
}
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
297k
{
1567
297k
  int64_t rtvalue = (insn >> 21) & 0x1f;
1568
297k
  int64_t ravalue = (insn >> 16) & 0x1f;
1569
1570
297k
  if (rtvalue == ravalue || ravalue == 0)
1571
26.7k
    *invalid = 1;
1572
297k
  return ravalue;
1573
297k
}
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
59.2k
{
1594
59.2k
  uint64_t rtvalue = (insn >> 21) & 0x1f;
1595
59.2k
  uint64_t ravalue = (insn >> 16) & 0x1f;
1596
1597
59.2k
  if (ravalue >= rtvalue)
1598
30.5k
    *invalid = 1;
1599
59.2k
  return ravalue;
1600
59.2k
}
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
40.7k
{
1623
  /* Missing optional operands have a value of zero.  */
1624
40.7k
  if (*invalid < 0)
1625
262
    return 0;
1626
1627
40.5k
  uint64_t rtvalue = (insn >> 21) & 0x1f;
1628
40.5k
  uint64_t ravalue = (insn >> 16) & 0x1f;
1629
40.5k
  if (ravalue == rtvalue)
1630
6.42k
    *invalid = 1;
1631
40.5k
  return ravalue;
1632
40.7k
}
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
516k
{
1654
516k
  uint64_t ravalue = (insn >> 16) & 0x1f;
1655
1656
516k
  if (ravalue == 0)
1657
104k
    *invalid = 1;
1658
516k
  return ravalue;
1659
516k
}
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
191k
{
1680
191k
  int64_t rs = (insn >> 21) & 0x1f;
1681
191k
  int64_t rb = (insn >> 11) & 0x1f;
1682
1683
191k
  if (rs != rb)
1684
838
    *invalid = 1;
1685
191k
  return rs;
1686
191k
}
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
85
{
1709
85
  uint64_t rtvalue = (insn >> 21) & 0x1f;
1710
85
  uint64_t rbvalue = (insn >> 11) & 0x1f;
1711
1712
85
  if (rbvalue == rtvalue)
1713
15
    *invalid = 1;
1714
85
  return rbvalue;
1715
85
}
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 n operand of rotrwi, sets SH = 32 - n.  */
1819
1820
static uint64_t
1821
insert_rrwn (uint64_t insn,
1822
       int64_t value,
1823
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1824
       const char **errmsg ATTRIBUTE_UNUSED)
1825
0
{
1826
0
  return insn | ((-value & 0x1f) << 11);
1827
0
}
1828
1829
static int64_t
1830
extract_rrwn (uint64_t insn,
1831
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1832
        int *invalid ATTRIBUTE_UNUSED)
1833
0
{
1834
0
  return 31 & -(insn >> 11);
1835
0
}
1836
1837
/* The n operand of slwi, sets SH = n and ME = 31 - n.  */
1838
1839
static uint64_t
1840
insert_slwn (uint64_t insn,
1841
       int64_t value,
1842
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1843
       const char **errmsg ATTRIBUTE_UNUSED)
1844
0
{
1845
0
  return insn | ((value & 0x1f) << 11) | ((~value & 0x1f) << 1);
1846
0
}
1847
1848
static int64_t
1849
extract_slwn (uint64_t insn,
1850
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1851
        int *invalid)
1852
10.7k
{
1853
10.7k
  int64_t sh = (insn >> 11) & 0x1f;
1854
10.7k
  int64_t nme = ~(insn >> 1) & 0x1f;
1855
10.7k
  if (sh != nme)
1856
3.15k
    *invalid = 1;
1857
10.7k
  return sh;
1858
10.7k
}
1859
1860
/* The n operand of srwi, sets SH = 32 - n and MB = n.  */
1861
1862
static uint64_t
1863
insert_srwn (uint64_t insn,
1864
       int64_t value,
1865
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1866
       const char **errmsg ATTRIBUTE_UNUSED)
1867
0
{
1868
0
  return insn | ((-value & 0x1f) << 11) | ((value & 0x1f) << 6);
1869
0
}
1870
1871
static int64_t
1872
extract_srwn (uint64_t insn,
1873
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1874
        int *invalid)
1875
2.65k
{
1876
2.65k
  int64_t nsh = -(insn >> 11) & 0x1f;
1877
2.65k
  int64_t mb = (insn >> 6) & 0x1f;
1878
2.65k
  if (nsh != mb)
1879
943
    *invalid = 1;
1880
2.65k
  return nsh;
1881
2.65k
}
1882
1883
/* The SH field in an MD form instruction.  This is split.  */
1884
1885
static uint64_t
1886
insert_sh6 (uint64_t insn,
1887
      int64_t value,
1888
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1889
      const char **errmsg ATTRIBUTE_UNUSED)
1890
0
{
1891
0
  return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
1892
0
}
1893
1894
static int64_t
1895
extract_sh6 (uint64_t insn,
1896
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1897
       int *invalid ATTRIBUTE_UNUSED)
1898
141k
{
1899
141k
  return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
1900
141k
}
1901
1902
/* The n operand of rotrdi, which writes to SH field.  */
1903
1904
static uint64_t
1905
insert_rrdn (uint64_t insn,
1906
       int64_t value,
1907
       ppc_cpu_t dialect,
1908
       const char **errmsg)
1909
0
{
1910
0
  return insert_sh6 (insn, -value, dialect, errmsg);
1911
0
}
1912
1913
static int64_t
1914
extract_rrdn (uint64_t insn,
1915
        ppc_cpu_t dialect,
1916
        int *invalid)
1917
20.0k
{
1918
20.0k
  return -extract_sh6 (insn, dialect, invalid) & 63;
1919
20.0k
}
1920
1921
/* The n operand of sldi, which writes to SH and ME fields.  */
1922
1923
static uint64_t
1924
insert_sldn (uint64_t insn,
1925
       int64_t value,
1926
       ppc_cpu_t dialect,
1927
       const char **errmsg)
1928
0
{
1929
0
  insn = insert_sh6 (insn, value, dialect, errmsg);
1930
0
  return insert_crdn (insn, value, dialect, errmsg);
1931
0
}
1932
1933
static int64_t
1934
extract_sldn (uint64_t insn,
1935
        ppc_cpu_t dialect,
1936
        int *invalid)
1937
7.39k
{
1938
7.39k
  int64_t sh = extract_sh6 (insn, dialect, invalid);
1939
7.39k
  int64_t me = extract_crdn (insn, dialect, invalid);
1940
7.39k
  if (me != sh)
1941
7.22k
    *invalid = 1;
1942
7.39k
  return sh;
1943
7.39k
}
1944
1945
/* The n operand of srdi, which writes to SH and MB fields.  */
1946
1947
static uint64_t
1948
insert_srdn (uint64_t insn,
1949
       int64_t value,
1950
       ppc_cpu_t dialect,
1951
       const char **errmsg)
1952
0
{
1953
0
  insn = insert_rrdn (insn, value, dialect, errmsg);
1954
0
  return insert_mb6 (insn, value, dialect, errmsg);
1955
0
}
1956
1957
static int64_t
1958
extract_srdn (uint64_t insn,
1959
        ppc_cpu_t dialect,
1960
        int *invalid)
1961
20.0k
{
1962
20.0k
  int64_t sh = extract_rrdn (insn, dialect, invalid);
1963
20.0k
  int64_t mb = extract_mb6 (insn, dialect, invalid);
1964
20.0k
  if (mb != sh)
1965
19.2k
    *invalid = 1;
1966
20.0k
  return sh;
1967
20.0k
}
1968
1969
/* The b operand of extrdi, which sets SH field.  */
1970
1971
static uint64_t
1972
insert_erdb (uint64_t insn,
1973
       int64_t value,
1974
       ppc_cpu_t dialect,
1975
       const char **errmsg)
1976
0
{
1977
0
  int64_t n = extract_erdn (insn, dialect, NULL);
1978
0
  return insert_sh6 (insn, value + n, dialect, errmsg);
1979
0
}
1980
1981
static int64_t
1982
extract_erdb (uint64_t insn,
1983
        ppc_cpu_t dialect,
1984
        int *invalid)
1985
0
{
1986
0
  int64_t sh = extract_sh6 (insn, dialect, invalid);
1987
0
  int64_t n = extract_erdn (insn, dialect, invalid);
1988
0
  return (sh - n) & 63;
1989
0
}
1990
1991
/* The b and n operands of clrlsldi.  */
1992
1993
static uint64_t
1994
insert_csldn (uint64_t insn,
1995
        int64_t value,
1996
        ppc_cpu_t dialect,
1997
        const char **errmsg)
1998
0
{
1999
0
  uint64_t mb6 = 0x3f << 5;
2000
0
  int64_t b = extract_mb6 (insn, dialect, NULL);
2001
0
  insn = insert_mb6 (insn & ~mb6, b - value, dialect, errmsg);
2002
0
  return insert_sh6 (insn, value, dialect, errmsg);
2003
0
}
2004
2005
static int64_t
2006
extract_csldb (uint64_t insn,
2007
         ppc_cpu_t dialect,
2008
         int *invalid)
2009
0
{
2010
0
  int64_t sh = extract_sh6 (insn, dialect, invalid);
2011
0
  int64_t mb = extract_mb6 (insn, dialect, invalid);
2012
0
  return (mb + sh) & 63;
2013
0
}
2014
2015
/* The b and n operands of insrdi.  */
2016
2017
static uint64_t
2018
insert_irdb (uint64_t insn,
2019
       int64_t value,
2020
       ppc_cpu_t dialect,
2021
       const char **errmsg)
2022
0
{
2023
0
  uint64_t sh6 = (0x1f << 11) | 2;
2024
0
  int64_t n = extract_sh6 (insn, dialect, NULL);
2025
0
  insn = insert_sh6 (insn & ~sh6, -(value + n), dialect, errmsg);
2026
0
  return insert_mb6 (insn, value, dialect, errmsg);
2027
0
}
2028
2029
static int64_t
2030
extract_irdn (uint64_t insn,
2031
        ppc_cpu_t dialect,
2032
        int *invalid)
2033
0
{
2034
0
  int64_t sh = extract_sh6 (insn, dialect, invalid);
2035
0
  int64_t mb = extract_mb6 (insn, dialect, invalid);
2036
0
  return (~(mb + sh) & 63) + 1;
2037
0
}
2038
2039
/* The SPR field in an XFX form instruction.  This is flipped--the
2040
   lower 5 bits are stored in the upper 5 and vice- versa.  */
2041
2042
static uint64_t
2043
insert_spr (uint64_t insn,
2044
      int64_t value,
2045
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2046
      const char **errmsg ATTRIBUTE_UNUSED)
2047
0
{
2048
0
  return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
2049
0
}
2050
2051
static int64_t
2052
extract_spr (uint64_t insn,
2053
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2054
       int *invalid ATTRIBUTE_UNUSED)
2055
978
{
2056
978
  return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
2057
978
}
2058
2059
/* Some dialects have 8 [DI]BAT registers instead of the standard 4.  */
2060
123
#define ALLOW8_BAT (PPC_OPCODE_750)
2061
2062
static uint64_t
2063
insert_sprbat (uint64_t insn,
2064
         int64_t value,
2065
         ppc_cpu_t dialect,
2066
         const char **errmsg)
2067
0
{
2068
0
  if ((uint64_t) value > 7
2069
0
      || ((uint64_t) value > 3 && (dialect & ALLOW8_BAT) == 0))
2070
0
    *errmsg = _("invalid bat number");
2071
2072
  /* If this is [di]bat4..7 then use spr 560..575, otherwise 528..543.  */
2073
0
  if ((uint64_t) value > 3)
2074
0
    value = ((value & 3) << 6) | 1;
2075
0
  else
2076
0
    value = value << 6;
2077
2078
0
  return insn | (value << 11);
2079
0
}
2080
2081
static int64_t
2082
extract_sprbat (uint64_t insn,
2083
    ppc_cpu_t dialect,
2084
    int *invalid)
2085
213
{
2086
213
  uint64_t val = (insn >> 17) & 0x3;
2087
2088
213
  val = val + ((insn >> 9) & 0x4);
2089
213
  if (val > 3 && (dialect & ALLOW8_BAT) == 0)
2090
123
    *invalid = 1;
2091
213
  return val;
2092
213
}
2093
2094
/* Some dialects have 8 SPRG registers instead of the standard 4.  */
2095
602
#define ALLOW8_SPRG (PPC_OPCODE_BOOKE | PPC_OPCODE_405)
2096
2097
static uint64_t
2098
insert_sprg (uint64_t insn,
2099
       int64_t value,
2100
       ppc_cpu_t dialect,
2101
       const char **errmsg)
2102
0
{
2103
0
  if ((uint64_t) value > 7
2104
0
      || ((uint64_t) value > 3 && (dialect & ALLOW8_SPRG) == 0))
2105
0
    *errmsg = _("invalid sprg number");
2106
2107
  /* If this is mfsprg4..7 then use spr 260..263 which can be read in
2108
     user mode.  Anything else must use spr 272..279.  */
2109
0
  if ((uint64_t) value <= 3 || (insn & 0x100) != 0)
2110
0
    value |= 0x10;
2111
2112
0
  return insn | ((value & 0x17) << 16);
2113
0
}
2114
2115
static int64_t
2116
extract_sprg (uint64_t insn,
2117
        ppc_cpu_t dialect,
2118
        int *invalid)
2119
626
{
2120
626
  uint64_t val = (insn >> 16) & 0x1f;
2121
2122
  /* mfsprg can use 260..263 and 272..279.  mtsprg only uses spr 272..279
2123
     If not BOOKE, 405 or VLE, then both use only 272..275.  */
2124
626
  if ((val - 0x10 > 3 && (dialect & ALLOW8_SPRG) == 0)
2125
626
      || (val - 0x10 > 7 && (insn & 0x100) != 0)
2126
626
      || val <= 3
2127
626
      || (val & 8) != 0)
2128
592
    *invalid = 1;
2129
626
  return val & 7;
2130
626
}
2131
2132
/* The TBR field in an XFX instruction.  This is just like SPR, but it
2133
   is optional.  */
2134
2135
static uint64_t
2136
insert_tbr (uint64_t insn,
2137
      int64_t value,
2138
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2139
      const char **errmsg)
2140
0
{
2141
0
  if (value != 268 && value != 269)
2142
0
    *errmsg = _("invalid tbr number");
2143
0
  return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
2144
0
}
2145
2146
static int64_t
2147
extract_tbr (uint64_t insn,
2148
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2149
       int *invalid)
2150
1.02k
{
2151
  /* Missing optional operands have a value of 268.  */
2152
1.02k
  if (*invalid < 0)
2153
233
    return 268;
2154
2155
790
  int64_t ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
2156
790
  if (ret != 268 && ret != 269)
2157
324
    *invalid = 1;
2158
790
  return ret;
2159
1.02k
}
2160
2161
/* The XT and XS fields in an XX1 or XX3 form instruction.  This is split.  */
2162
2163
static uint64_t
2164
insert_xt6 (uint64_t insn,
2165
      int64_t value,
2166
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2167
      const char **errmsg ATTRIBUTE_UNUSED)
2168
0
{
2169
0
  return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 5);
2170
0
}
2171
2172
static int64_t
2173
extract_xt6 (uint64_t insn,
2174
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2175
       int *invalid ATTRIBUTE_UNUSED)
2176
70.5k
{
2177
70.5k
  return ((insn << 5) & 0x20) | ((insn >> 21) & 0x1f);
2178
70.5k
}
2179
2180
/* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
2181
static uint64_t
2182
insert_xtq6 (uint64_t insn,
2183
       int64_t value,
2184
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2185
       const char **errmsg ATTRIBUTE_UNUSED)
2186
0
{
2187
0
  return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 2);
2188
0
}
2189
2190
static int64_t
2191
extract_xtq6 (uint64_t insn,
2192
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2193
        int *invalid ATTRIBUTE_UNUSED)
2194
12.9k
{
2195
12.9k
  return ((insn << 2) & 0x20) | ((insn >> 21) & 0x1f);
2196
12.9k
}
2197
2198
/* The 5-bit XAp field in an XX3 form instruction.  This is split.  */
2199
2200
static uint64_t
2201
insert_xa5 (uint64_t insn,
2202
      int64_t value,
2203
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2204
      const char **errmsg ATTRIBUTE_UNUSED)
2205
0
{
2206
0
  return insn | ((value & 0x1e) << 16) | ((value & 0x20) >> 3);
2207
0
}
2208
2209
static int64_t
2210
extract_xa5 (uint64_t insn,
2211
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2212
       int *invalid ATTRIBUTE_UNUSED)
2213
319
{
2214
319
  return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1e);
2215
319
}
2216
2217
/* The XA field in an XX3 form instruction.  This is split.  */
2218
2219
static uint64_t
2220
insert_xa6 (uint64_t insn,
2221
      int64_t value,
2222
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2223
      const char **errmsg ATTRIBUTE_UNUSED)
2224
0
{
2225
0
  return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3);
2226
0
}
2227
2228
static int64_t
2229
extract_xa6 (uint64_t insn,
2230
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2231
       int *invalid ATTRIBUTE_UNUSED)
2232
68.3k
{
2233
68.3k
  return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
2234
68.3k
}
2235
2236
/* The XA field in an MMA XX3 form instruction.  This is split
2237
   and must not overlap with the ACC operand.  */
2238
2239
static uint64_t
2240
insert_xa6a (uint64_t insn,
2241
       int64_t value,
2242
       ppc_cpu_t dialect,
2243
       const char **errmsg)
2244
0
{
2245
0
  int64_t acc = (insn >> 23) & 0x7;
2246
  /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions.  */
2247
0
  if ((dialect & PPC_OPCODE_FUTURE) == 0
2248
0
      && (value >> 2) == acc)
2249
0
    *errmsg = _("VSR overlaps ACC operand");
2250
0
  return insert_xa6 (insn, value, dialect, errmsg);
2251
0
}
2252
2253
static int64_t
2254
extract_xa6a (uint64_t insn,
2255
        ppc_cpu_t dialect,
2256
        int *invalid)
2257
670
{
2258
670
  int64_t acc = (insn >> 23) & 0x7;
2259
670
  int64_t value = extract_xa6 (insn, dialect, invalid);
2260
  /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions.  */
2261
670
  if ((dialect & PPC_OPCODE_FUTURE) == 0
2262
670
      && (value >> 2) == acc)
2263
164
    *invalid = 1;
2264
670
  return value;
2265
670
}
2266
2267
/* The 5-bit XB field in an XX3 form instruction.  This is split.  */
2268
2269
static uint64_t
2270
insert_xb5 (uint64_t insn,
2271
      int64_t value,
2272
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2273
      const char **errmsg ATTRIBUTE_UNUSED)
2274
0
{
2275
0
  return insn | ((value & 0x1e) << 11) | ((value & 0x20) >> 4);
2276
0
}
2277
2278
static int64_t
2279
extract_xb5 (uint64_t insn,
2280
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2281
       int *invalid ATTRIBUTE_UNUSED)
2282
103
{
2283
103
  return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1e);
2284
103
}
2285
/* The XB field in an XX3 form instruction.  This is split.  */
2286
2287
static uint64_t
2288
insert_xb6 (uint64_t insn,
2289
      int64_t value,
2290
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2291
      const char **errmsg ATTRIBUTE_UNUSED)
2292
0
{
2293
0
  return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
2294
0
}
2295
2296
static int64_t
2297
extract_xb6 (uint64_t insn,
2298
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2299
       int *invalid ATTRIBUTE_UNUSED)
2300
69.6k
{
2301
69.6k
  return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1f);
2302
69.6k
}
2303
2304
/* The XB field in an MMA XX3 form instruction.  This is split
2305
   and must not overlap with the ACC operand.  */
2306
2307
static uint64_t
2308
insert_xb6a (uint64_t insn,
2309
       int64_t value,
2310
       ppc_cpu_t dialect,
2311
       const char **errmsg)
2312
0
{
2313
0
  int64_t acc = (insn >> 23) & 0x7;
2314
  /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions.  */
2315
0
  if ((dialect & PPC_OPCODE_FUTURE) == 0
2316
0
      && (value >> 2) == acc)
2317
0
    *errmsg = _("VSR overlaps ACC operand");
2318
0
  return insert_xb6 (insn, value, dialect, errmsg);
2319
0
}
2320
2321
static int64_t
2322
extract_xb6a (uint64_t insn,
2323
        ppc_cpu_t dialect,
2324
        int *invalid)
2325
670
{
2326
670
  int64_t acc = (insn >> 23) & 0x7;
2327
670
  int64_t value = extract_xb6 (insn, dialect, invalid);
2328
  /* Power10 doesn't allow VSRs to overlap ACCs in MMA instructions.  */
2329
670
  if ((dialect & PPC_OPCODE_FUTURE) == 0
2330
670
      && (value >> 2) == acc)
2331
52
    *invalid = 1;
2332
670
  return value;
2333
670
}
2334
2335
/* The XA and XB fields in an XX3 form instruction when they must be the same.
2336
   This is used for extended mnemonics like xvmovdp.  The extraction function
2337
   enforces that the fields are the same.  */
2338
2339
static uint64_t
2340
insert_xab6 (uint64_t insn,
2341
       int64_t value,
2342
       ppc_cpu_t dialect,
2343
       const char **errmsg)
2344
0
{
2345
0
  return insert_xa6 (insn, value, dialect, errmsg)
2346
0
   | insert_xb6 (insn, value, dialect, errmsg);
2347
0
}
2348
2349
static int64_t
2350
extract_xab6 (uint64_t insn,
2351
        ppc_cpu_t dialect,
2352
        int *invalid)
2353
2.28k
{
2354
2.28k
  int64_t xa6 = extract_xa6 (insn, dialect, invalid);
2355
2.28k
  int64_t xb6 = extract_xb6 (insn, dialect, invalid);
2356
2357
2.28k
  if (xa6 != xb6)
2358
1.94k
    *invalid = 1;
2359
2.28k
  return xa6;
2360
2.28k
}
2361
2362
/* The XC field in an XX4 form instruction.  This is split.  */
2363
2364
static uint64_t
2365
insert_xc6 (uint64_t insn,
2366
      int64_t value,
2367
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2368
      const char **errmsg ATTRIBUTE_UNUSED)
2369
0
{
2370
0
  return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 2);
2371
0
}
2372
2373
static int64_t
2374
extract_xc6 (uint64_t insn,
2375
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2376
       int *invalid ATTRIBUTE_UNUSED)
2377
14.9k
{
2378
14.9k
  return ((insn << 2) & 0x20) | ((insn >> 6) & 0x1f);
2379
14.9k
}
2380
2381
/* The split XTp and XSp field in a vector paired insn.  */
2382
2383
static uint64_t
2384
insert_xtp (uint64_t insn,
2385
      int64_t value,
2386
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2387
      const char **errmsg ATTRIBUTE_UNUSED)
2388
0
{
2389
0
  return insn | ((value & 0x1e) << 21) | ((value & 0x20) << (21 - 5));
2390
0
}
2391
2392
static int64_t
2393
extract_xtp (uint64_t insn,
2394
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2395
       int *invalid ATTRIBUTE_UNUSED)
2396
28.0k
{
2397
28.0k
  return ((insn >> (21 - 5)) & 0x20) | ((insn >> 21) & 0x1e);
2398
28.0k
}
2399
2400
/* The split XT field in a vector splat insn.  */
2401
2402
static uint64_t
2403
insert_xts (uint64_t insn,
2404
      int64_t value,
2405
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2406
      const char **errmsg ATTRIBUTE_UNUSED)
2407
0
{
2408
0
  return insn | ((value & 0x1f) << 21) | ((value & 0x20) << (16 - 5));
2409
0
}
2410
2411
static int64_t
2412
extract_xts (uint64_t insn,
2413
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2414
       int *invalid ATTRIBUTE_UNUSED)
2415
656
{
2416
656
  return ((insn >> (16 - 5)) & 0x20) | ((insn >> 21) & 0x1f);
2417
656
}
2418
2419
static uint64_t
2420
insert_dm (uint64_t insn,
2421
     int64_t value,
2422
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2423
     const char **errmsg)
2424
0
{
2425
0
  if (value != 0 && value != 1)
2426
0
    *errmsg = _("invalid constant");
2427
0
  return insn | (((value) ? 3 : 0) << 8);
2428
0
}
2429
2430
static int64_t
2431
extract_dm (uint64_t insn,
2432
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2433
      int *invalid)
2434
1.16k
{
2435
1.16k
  int64_t value = (insn >> 8) & 3;
2436
1.16k
  if (value != 0 && value != 3)
2437
667
    *invalid = 1;
2438
1.16k
  return (value) ? 1 : 0;
2439
1.16k
}
2440
2441
static uint64_t
2442
insert_m2 (uint64_t insn,
2443
    int64_t value,
2444
    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2445
    const char **errmsg)
2446
0
{
2447
0
  if (value != 0 && value != 1 && value != 2)
2448
0
    *errmsg = _("invalid M value");
2449
0
  return insn | ((value & 0x2) << (15)) | ((value & 0x1) << 11);
2450
0
}
2451
2452
static int64_t
2453
extract_m2 (uint64_t insn,
2454
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2455
     int *invalid)
2456
19
{
2457
19
  int64_t value = ((insn >> 15) & 0x2) | ((insn >> 11) & 0x1);
2458
19
  if (value == 3)
2459
19
    *invalid = 1;
2460
19
  return value;
2461
19
}
2462
2463
/* The VLESIMM field in an I16A form instruction.  This is split.  */
2464
2465
static uint64_t
2466
insert_vlesi (uint64_t insn,
2467
        int64_t value,
2468
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2469
        const char **errmsg ATTRIBUTE_UNUSED)
2470
0
{
2471
0
  return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2472
0
}
2473
2474
static int64_t
2475
extract_vlesi (uint64_t insn,
2476
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2477
         int *invalid ATTRIBUTE_UNUSED)
2478
0
{
2479
0
  int64_t value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2480
0
  value = (value ^ 0x8000) - 0x8000;
2481
0
  return value;
2482
0
}
2483
2484
static uint64_t
2485
insert_vlensi (uint64_t insn,
2486
         int64_t value,
2487
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2488
         const char **errmsg ATTRIBUTE_UNUSED)
2489
0
{
2490
0
  value = -value;
2491
0
  return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2492
0
}
2493
static int64_t
2494
extract_vlensi (uint64_t insn,
2495
    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2496
    int *invalid)
2497
0
{
2498
0
  int64_t value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2499
0
  value = (value ^ 0x8000) - 0x8000;
2500
  /* Don't use for disassembly.  */
2501
0
  *invalid = 1;
2502
0
  return -value;
2503
0
}
2504
2505
/* The VLEUIMM field in an I16A form instruction.  This is split.  */
2506
2507
static uint64_t
2508
insert_vleui (uint64_t insn,
2509
        int64_t value,
2510
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2511
        const char **errmsg ATTRIBUTE_UNUSED)
2512
0
{
2513
0
  return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2514
0
}
2515
2516
static int64_t
2517
extract_vleui (uint64_t insn,
2518
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2519
         int *invalid ATTRIBUTE_UNUSED)
2520
0
{
2521
0
  return ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2522
0
}
2523
2524
/* The VLEUIMML field in an I16L form instruction.  This is split.  */
2525
2526
static uint64_t
2527
insert_vleil (uint64_t insn,
2528
        int64_t value,
2529
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2530
        const char **errmsg ATTRIBUTE_UNUSED)
2531
0
{
2532
0
  return insn | ((value & 0xf800) << 5) | (value & 0x7ff);
2533
0
}
2534
2535
static int64_t
2536
extract_vleil (uint64_t insn,
2537
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2538
         int *invalid ATTRIBUTE_UNUSED)
2539
0
{
2540
0
  return ((insn >> 5) & 0xf800) | (insn & 0x7ff);
2541
0
}
2542
2543
static uint64_t
2544
insert_evuimm1_ex0 (uint64_t insn,
2545
        int64_t value,
2546
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2547
        const char **errmsg)
2548
0
{
2549
0
  if (value <= 0 || value > 0x1f)
2550
0
    *errmsg = _("UIMM = 00000 is illegal");
2551
0
  return insn | ((value & 0x1f) << 11);
2552
0
}
2553
2554
static int64_t
2555
extract_evuimm1_ex0 (uint64_t insn,
2556
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2557
         int *invalid)
2558
171
{
2559
171
  int64_t value = ((insn >> 11) & 0x1f);
2560
171
  if (value == 0)
2561
139
    *invalid = 1;
2562
2563
171
  return value;
2564
171
}
2565
2566
static uint64_t
2567
insert_evuimm2_ex0 (uint64_t insn,
2568
        int64_t value,
2569
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2570
        const char **errmsg)
2571
0
{
2572
0
  if (value <= 0 || value > 0x3e)
2573
0
    *errmsg = _("UIMM = 00000 is illegal");
2574
0
  return insn | ((value & 0x3e) << 10);
2575
0
}
2576
2577
static int64_t
2578
extract_evuimm2_ex0 (uint64_t insn,
2579
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2580
         int *invalid)
2581
218
{
2582
218
  int64_t value = ((insn >> 10) & 0x3e);
2583
218
  if (value == 0)
2584
32
    *invalid = 1;
2585
2586
218
  return value;
2587
218
}
2588
2589
static uint64_t
2590
insert_evuimm4_ex0 (uint64_t insn,
2591
        int64_t value,
2592
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2593
        const char **errmsg)
2594
0
{
2595
0
  if (value <= 0 || value > 0x7c)
2596
0
    *errmsg = _("UIMM = 00000 is illegal");
2597
0
  return insn | ((value & 0x7c) << 9);
2598
0
}
2599
2600
static int64_t
2601
extract_evuimm4_ex0 (uint64_t insn,
2602
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2603
         int *invalid)
2604
403
{
2605
403
  int64_t value = ((insn >> 9) & 0x7c);
2606
403
  if (value == 0)
2607
191
    *invalid = 1;
2608
2609
403
  return value;
2610
403
}
2611
2612
static uint64_t
2613
insert_evuimm8_ex0 (uint64_t insn,
2614
        int64_t value,
2615
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2616
        const char **errmsg)
2617
0
{
2618
0
  if (value <= 0 || value > 0xf8)
2619
0
    *errmsg = _("UIMM = 00000 is illegal");
2620
0
  return insn | ((value & 0xf8) << 8);
2621
0
}
2622
2623
static int64_t
2624
extract_evuimm8_ex0 (uint64_t insn,
2625
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2626
         int *invalid)
2627
109
{
2628
109
  int64_t value = ((insn >> 8) & 0xf8);
2629
109
  if (value == 0)
2630
29
    *invalid = 1;
2631
2632
109
  return value;
2633
109
}
2634
2635
static uint64_t
2636
insert_evuimm_lt8 (uint64_t insn,
2637
       int64_t value,
2638
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2639
       const char **errmsg)
2640
0
{
2641
0
  if (value < 0 || value > 7)
2642
0
    *errmsg = _("UIMM values >7 are illegal");
2643
0
  return insn | ((value & 0x7) << 11);
2644
0
}
2645
2646
static int64_t
2647
extract_evuimm_lt8 (uint64_t insn,
2648
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2649
        int *invalid)
2650
240
{
2651
240
  int64_t value = ((insn >> 11) & 0x1f);
2652
240
  if (value > 7)
2653
210
    *invalid = 1;
2654
2655
240
  return value;
2656
240
}
2657
2658
static uint64_t
2659
insert_evuimm_lt16 (uint64_t insn,
2660
        int64_t value,
2661
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2662
        const char **errmsg)
2663
0
{
2664
0
  if (value < 0 || value > 15)
2665
0
    *errmsg = _("UIMM values >15 are illegal");
2666
0
  return insn | ((value & 0xf) << 11);
2667
0
}
2668
2669
static int64_t
2670
extract_evuimm_lt16 (uint64_t insn,
2671
         ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2672
         int *invalid)
2673
52
{
2674
52
  int64_t value = ((insn >> 11) & 0x1f);
2675
52
  if (value > 15)
2676
14
    *invalid = 1;
2677
2678
52
  return value;
2679
52
}
2680
2681
static uint64_t
2682
insert_rD_rS_even (uint64_t insn,
2683
       int64_t value,
2684
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2685
       const char **errmsg)
2686
0
{
2687
0
  if ((value & 0x1) != 0)
2688
0
    *errmsg = _("GPR odd is illegal");
2689
0
  return insn | ((value & 0x1e) << 21);
2690
0
}
2691
2692
static int64_t
2693
extract_rD_rS_even (uint64_t insn,
2694
        ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2695
        int *invalid)
2696
594
{
2697
594
  int64_t value = ((insn >> 21) & 0x1f);
2698
594
  if ((value & 0x1) != 0)
2699
201
    *invalid = 1;
2700
2701
594
  return value;
2702
594
}
2703
2704
static uint64_t
2705
insert_off_lsp (uint64_t insn,
2706
    int64_t value,
2707
    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2708
    const char **errmsg)
2709
0
{
2710
0
  if (value <= 0 || value > 0x3)
2711
0
    *errmsg = _("invalid offset");
2712
0
  return insn | (value & 0x3);
2713
0
}
2714
2715
static int64_t
2716
extract_off_lsp (uint64_t insn,
2717
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2718
     int *invalid)
2719
0
{
2720
0
  int64_t value = (insn & 0x3);
2721
0
  if (value == 0)
2722
0
    *invalid = 1;
2723
2724
0
  return value;
2725
0
}
2726
2727
static uint64_t
2728
insert_off_spe2 (uint64_t insn,
2729
     int64_t value,
2730
     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2731
     const char **errmsg)
2732
0
{
2733
0
  if (value <= 0 || value > 0x7)
2734
0
    *errmsg = _("invalid offset");
2735
0
  return insn | (value & 0x7);
2736
0
}
2737
2738
static int64_t
2739
extract_off_spe2 (uint64_t insn,
2740
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2741
      int *invalid)
2742
34
{
2743
34
  int64_t value = (insn & 0x7);
2744
34
  if (value == 0)
2745
12
    *invalid = 1;
2746
2747
34
  return value;
2748
34
}
2749
2750
static uint64_t
2751
insert_Ddd (uint64_t insn,
2752
      int64_t value,
2753
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2754
      const char **errmsg)
2755
0
{
2756
0
  if (value < 0 || value > 0x7)
2757
0
    *errmsg = _("invalid Ddd value");
2758
0
  return insn | ((value & 0x3) << 11) | ((value & 0x4) >> 2);
2759
0
}
2760
2761
static int64_t
2762
extract_Ddd (uint64_t insn,
2763
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2764
       int *invalid ATTRIBUTE_UNUSED)
2765
176
{
2766
176
  return ((insn >> 11) & 0x3) | ((insn << 2) & 0x4);
2767
176
}
2768
2769
static uint64_t
2770
insert_sxl (uint64_t insn,
2771
      int64_t value,
2772
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2773
      const char **errmsg ATTRIBUTE_UNUSED)
2774
0
{
2775
0
  return insn | ((value & 0x1) << 11);
2776
0
}
2777
2778
static int64_t
2779
extract_sxl (uint64_t insn,
2780
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2781
       int *invalid)
2782
0
{
2783
  /* Missing optional operands have a value of one.  */
2784
0
  if (*invalid < 0)
2785
0
    return 1;
2786
0
  return (insn >> 11) & 0x1;
2787
0
}
2788
2789
/* The list of embedded processors that use the embedded operand ordering
2790
   for the 3 operand dcbt and dcbtst instructions.  */
2791
464
#define DCBT_EO (PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \
2792
464
     | PPC_OPCODE_A2)
2793
2794
/* ISA 2.03 and later specify extended mnemonics dcbtct, dcbtds, and
2795
   dcbtstct, dcbtstds with a note saying these should be used in new
2796
   programs rather than the base mnemonics "so that it can be coded
2797
   with TH as the last operand for all categories".  For that reason
2798
   the extended mnemonics are enabled in the assembler for the
2799
   embedded processors, but not for the disassembler so as to display
2800
   the embedded dcbt or dcbtst expected form with TH first for
2801
   embedded programmers.  */
2802
2803
static uint64_t
2804
insert_thct (uint64_t insn,
2805
      int64_t value,
2806
      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2807
      const char **errmsg)
2808
0
{
2809
0
  if ((uint64_t) value > 7)
2810
0
    *errmsg = _("invalid TH value");
2811
0
  return insn | ((value & 7) << 21);
2812
0
}
2813
2814
static int64_t
2815
extract_thct (uint64_t insn,
2816
        ppc_cpu_t dialect,
2817
        int *invalid)
2818
266
{
2819
  /* Missing optional operands have a value of 0.  */
2820
266
  if (*invalid < 0)
2821
33
    return 0;
2822
2823
233
  int64_t value = (insn >> 21) & 0x1f;
2824
233
  if (value > 7 || (dialect & DCBT_EO) != 0)
2825
135
    *invalid = 1;
2826
2827
233
  return value;
2828
266
}
2829
2830
static uint64_t
2831
insert_thds (uint64_t insn,
2832
       int64_t value,
2833
       ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2834
       const char **errmsg)
2835
0
{
2836
0
  if (value < 8 || value > 15)
2837
0
    *errmsg = _("invalid TH value");
2838
0
  return insn | ((value & 0x1f) << 21);
2839
0
}
2840
2841
static int64_t
2842
extract_thds (uint64_t insn,
2843
        ppc_cpu_t dialect,
2844
        int *invalid)
2845
501
{
2846
  /* Missing optional operands have a value of 8.  */
2847
501
  if (*invalid < 0)
2848
122
    return 8;
2849
2850
379
  int64_t value = (insn >> 21) & 0x1f;
2851
379
  if (value < 8 || value > 15 || (dialect & DCBT_EO) != 0)
2852
13
    *invalid = 1;
2853
2854
379
  return value;
2855
501
}
2856

2857
/* The operands table.
2858
2859
   The fields are bitm, shift, insert, extract, flags.
2860
2861
   We used to put parens around the various additions, like the one
2862
   for BA just below.  However, that caused trouble with feeble
2863
   compilers with a limit on depth of a parenthesized expression, like
2864
   (reportedly) the compiler in Microsoft Developer Studio 5.  So we
2865
   omit the parens, since the macros are never used in a context where
2866
   the addition will be ambiguous.  */
2867
2868
const struct powerpc_operand powerpc_operands[] =
2869
{
2870
  /* The zero index is used to indicate the end of the list of
2871
     operands.  */
2872
#define UNUSED 0
2873
  { 0, 0, NULL, NULL, 0 },
2874
2875
  /* The BA field in an XL form instruction.  */
2876
#define BA UNUSED + 1
2877
  /* The BI field in a B form or XL form instruction.  */
2878
#define BI BA
2879
#define BI_MASK (0x1f << 16)
2880
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
2881
2882
  /* The BT, BA and BB fields in a XL form instruction when they must all
2883
     be the same.  */
2884
#define BTAB BA + 1
2885
  { 0x1f, 21, insert_btab, extract_btab, PPC_OPERAND_CR_BIT },
2886
2887
  /* The BB field in an XL form instruction.  */
2888
#define BB BTAB + 1
2889
#define BB_MASK (0x1f << 11)
2890
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR_BIT },
2891
2892
  /* The BA and BB fields in a XL form instruction when they must be
2893
     the same.  */
2894
#define BAB BB + 1
2895
  { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_CR_BIT },
2896
2897
  /* The VRA and VRB fields in a VX form instruction when they must be the same.
2898
     This is used for extended mnemonics like vmr.  */
2899
#define VAB BAB + 1
2900
  { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_VR },
2901
2902
  /* The RA and RB fields in a VX form instruction when they must be the same.
2903
     This is used for extended mnemonics like evmr.  */
2904
#define RAB VAB + 1
2905
  { 0x1f, 16, insert_bab, extract_bab, PPC_OPERAND_GPR },
2906
2907
#define BC RAB + 1
2908
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_CR_BIT },
2909
2910
  /* The BD field in a B form instruction.  The lower two bits are
2911
     forced to zero.  */
2912
#define BD BC + 1
2913
  { 0xfffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2914
2915
  /* The BD field in a B form instruction when absolute addressing is
2916
     used.  */
2917
#define BDA BD + 1
2918
  { 0xfffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2919
2920
  /* The BD field in a B form instruction when the - modifier is used.
2921
     This sets the y bit of the BO field appropriately.  */
2922
#define BDM BDA + 1
2923
  { 0xfffc, 0, insert_bdm, extract_bdm,
2924
    PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2925
2926
  /* The BD field in a B form instruction when the - modifier is used
2927
     and absolute address is used.  */
2928
#define BDMA BDM + 1
2929
  { 0xfffc, 0, insert_bdm, extract_bdm,
2930
    PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2931
2932
  /* The BD field in a B form instruction when the + modifier is used.
2933
     This sets the y bit of the BO field appropriately.  */
2934
#define BDP BDMA + 1
2935
  { 0xfffc, 0, insert_bdp, extract_bdp,
2936
    PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
2937
2938
  /* The BD field in a B form instruction when the + modifier is used
2939
     and absolute addressing is used.  */
2940
#define BDPA BDP + 1
2941
  { 0xfffc, 0, insert_bdp, extract_bdp,
2942
    PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
2943
2944
  /* The BF field in an X or XL form instruction.  */
2945
#define BF BDPA + 1
2946
  /* The CRFD field in an X form instruction.  */
2947
#define CRFD BF
2948
  /* The CRD field in an XL form instruction.  */
2949
#define CRD BF
2950
  { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG },
2951
2952
  /* The BF field in an X or XL form instruction.  */
2953
#define BFF BF + 1
2954
  { 0x7, 23, NULL, NULL, 0 },
2955
2956
  /* The ACC field in a VSX ACC 8LS:D-form instruction.  */
2957
#define ACC BFF + 1
2958
  { 0x7, 23, NULL, NULL, PPC_OPERAND_ACC },
2959
2960
  /* The DMR field in a MMA instruction.  */
2961
#define DMR ACC + 1
2962
  { 0x7, 23, NULL, NULL, PPC_OPERAND_DMR },
2963
2964
  /* The second DMR field in a two DMR operand MMA instruction.  */
2965
#define DMRAB DMR + 1
2966
  { 0x7, 13, NULL, NULL, PPC_OPERAND_DMR },
2967
2968
  /* An optional BF field.  This is used for comparison instructions,
2969
     in which an omitted BF field is taken as zero.  */
2970
#define OBF DMRAB + 1
2971
  { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
2972
2973
  /* The BFA field in an X or XL form instruction.  */
2974
#define BFA OBF + 1
2975
  { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG },
2976
2977
  /* The BO field in a B form instruction.  Certain values are
2978
     illegal.  */
2979
#define BO BFA + 1
2980
#define BO_MASK (0x1f << 21)
2981
  { 0x1f, 21, insert_bo, extract_bo, 0 },
2982
2983
  /* The BO field in a B form instruction when the - modifier is used.  */
2984
#define BOM BO + 1
2985
  { 0x1f, 21, insert_bom, extract_bom, 0 },
2986
2987
  /* The BO field in a B form instruction when the + modifier is used.  */
2988
#define BOP BOM + 1
2989
  { 0x1f, 21, insert_bop, extract_bop, 0 },
2990
2991
  /* The RM field in an X form instruction.  */
2992
#define RM BOP + 1
2993
#define DD RM
2994
#define mo1 RM
2995
  { 0x3, 11, NULL, NULL, 0 },
2996
2997
#define BH RM + 1
2998
  { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
2999
3000
  /* The BT field in an X or XL form instruction.  */
3001
#define BT BH + 1
3002
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT },
3003
3004
  /* The BT field in a mtfsb0 or mtfsb1 instruction.  */
3005
#define BTF BT + 1
3006
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT | PPC_OPERAND_CR_REG },
3007
3008
  /* The BI16 field in a BD8 form instruction.  */
3009
#define BI16 BTF + 1
3010
  { 0x3, 8, NULL, NULL, PPC_OPERAND_CR_BIT },
3011
3012
  /* The BI32 field in a BD15 form instruction.  */
3013
#define BI32 BI16 + 1
3014
  { 0xf, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
3015
3016
  /* The BO32 field in a BD15 form instruction.  */
3017
#define BO32 BI32 + 1
3018
  { 0x3, 20, NULL, NULL, 0 },
3019
3020
  /* The B8 field in a BD8 form instruction.  */
3021
#define B8 BO32 + 1
3022
  { 0x1fe, -1, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3023
3024
  /* The B15 field in a BD15 form instruction.  The lowest bit is
3025
     forced to zero.  */
3026
#define B15 B8 + 1
3027
  { 0xfffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3028
3029
  /* The B24 field in a BD24 form instruction.  The lowest bit is
3030
     forced to zero.  */
3031
#define B24 B15 + 1
3032
  { 0x1fffffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3033
3034
  /* The condition register number portion of the BI field in a B form
3035
     or XL form instruction.  This is used for the extended
3036
     conditional branch mnemonics, which set the lower two bits of the
3037
     BI field.  This field is optional.  */
3038
#define CR B24 + 1
3039
  { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
3040
3041
  /* The CRB field in an X form instruction.  */
3042
#define CRB CR + 1
3043
  /* The MB field in an M form instruction.  */
3044
#define MB CRB
3045
#define MB_MASK (0x1f << 6)
3046
  { 0x1f, 6, NULL, NULL, 0 },
3047
3048
  /* The CRD32 field in an XL form instruction.  */
3049
#define CRD32 CRB + 1
3050
  { 0x3, 21, NULL, NULL, PPC_OPERAND_CR_REG },
3051
3052
  /* The CRFS field in an X form instruction.  */
3053
#define CRFS CRD32 + 1
3054
  { 0x7, 0, NULL, NULL, PPC_OPERAND_CR_REG },
3055
3056
#define CRS CRFS + 1
3057
  { 0x3, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
3058
3059
  /* The CT field in an X form instruction.  */
3060
#define CT CRS + 1
3061
  /* The MO field in an mbar instruction.  */
3062
#define MO CT
3063
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
3064
3065
  /* The TH field in dcbtct.  */
3066
#define THCT CT + 1
3067
  { 0x1f, 21, insert_thct, extract_thct, PPC_OPERAND_OPTIONAL },
3068
3069
  /* The TH field in dcbtds.  */
3070
#define THDS THCT + 1
3071
  { 0x1f, 21, insert_thds, extract_thds, PPC_OPERAND_OPTIONAL },
3072
3073
  /* The D field in a D form instruction.  This is a displacement off
3074
     a register, and implies that the next operand is a register in
3075
     parentheses.  */
3076
#define D THDS + 1
3077
  { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3078
3079
  /* The D8 field in a D form instruction.  This is a displacement off
3080
     a register, and implies that the next operand is a register in
3081
     parentheses.  */
3082
#define D8 D + 1
3083
  { 0xff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3084
3085
  /* The DCMX field in an X form instruction.  */
3086
#define DCMX D8 + 1
3087
  { 0x7f, 16, NULL, NULL, 0 },
3088
3089
  /* The split DCMX field in an X form instruction.  */
3090
#define DCMXS DCMX + 1
3091
  { 0x7f, PPC_OPSHIFT_INV, insert_dcmxs, extract_dcmxs, 0 },
3092
3093
  /* The DQ field in a DQ form instruction.  This is like D, but the
3094
     lower four bits are forced to zero. */
3095
#define DQ DCMXS + 1
3096
  { 0xfff0, 0, NULL, NULL,
3097
    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
3098
3099
  /* The DS field in a DS form instruction.  This is like D, but the
3100
     lower two bits are forced to zero.  */
3101
#define DS DQ + 1
3102
  { 0xfffc, 0, NULL, NULL,
3103
    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS },
3104
3105
  /* The D field in an 8-byte D form prefix instruction.  This is a displacement
3106
     off a register, and implies that the next operand is a register in
3107
     parentheses.  */
3108
#define D34 DS + 1
3109
  { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_d34, extract_d34,
3110
    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3111
3112
  /* The SI field in an 8-byte D form prefix instruction.  */
3113
#define SI34 D34 + 1
3114
  { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_d34, extract_d34, PPC_OPERAND_SIGNED },
3115
3116
  /* The NSI field in an 8-byte D form prefix instruction.  This is the
3117
     same as the SI34 field, only negated.  */
3118
#define NSI34 SI34 + 1
3119
  { UINT64_C(0x3ffffffff), PPC_OPSHIFT_INV, insert_nsi34, extract_nsi34,
3120
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
3121
3122
  /* The 32bit SI field in an 8-byte D form prefix instruction.  */
3123
#define SI32 NSI34 + 1
3124
  { UINT64_C(0xffffffff), PPC_OPSHIFT_INV, insert_si32, extract_si32, PPC_OPERAND_SIGNED },
3125
3126
  /* The NSI field in an 8-byte D form prefix instruction with 32bit SI field.  This is
3127
     the same as the SI32 field, only negated.  */
3128
#define NSI32 SI32 + 1
3129
  { UINT64_C(0xffffffff), PPC_OPSHIFT_INV, insert_nsi32, extract_nsi32,
3130
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
3131
3132
  /* The IMM32 field in a vector splat immediate prefix instruction.  */
3133
#define IMM32 NSI32 + 1
3134
  { 0xffffffff, PPC_OPSHIFT_INV, insert_imm32, extract_imm32, 0},
3135
3136
  /* The UIM field in a vector permute extended prefix instruction.  */
3137
#define UIM3 IMM32 + 1
3138
  { 0x7, 32, NULL, NULL, 0},
3139
3140
  /* The UIM field in a vector eval prefix instruction.  */
3141
#define UIM8 UIM3 + 1
3142
  { 0xff, 32, NULL, NULL, 0},
3143
3144
  /* The IX field in xxsplti32dx.  */
3145
#define IX UIM8 + 1
3146
  { 0x1, 17, NULL, NULL, 0 },
3147
3148
  /* The PMSK field in GER rank 8 prefix instructions.  */
3149
#define PMSK8 IX + 1
3150
  { 0xff, 40, NULL, NULL, 0 },
3151
3152
  /* The PMSK field in GER rank 4 prefix instructions.  */
3153
#define PMSK4 PMSK8 + 1
3154
  { 0xf, 44, NULL, NULL, 0 },
3155
3156
  /* The PMSK field in GER rank 2 prefix instructions.  */
3157
#define PMSK2 PMSK4 + 1
3158
  { 0x3, 46, NULL, NULL, 0 },
3159
3160
  /* The XMSK field in GER prefix instructions.  */
3161
#define XMSK PMSK2 + 1
3162
  { 0xf, 36, NULL, NULL, 0 },
3163
3164
  /* The XMSK field in GERX prefix instructions.  */
3165
#define XMSK8 XMSK + 1
3166
  { 0xff, 36, NULL, NULL, 0 },
3167
3168
  /* The YMSK field in GER prefix instructions.  */
3169
#define YMSK XMSK8 + 1
3170
  { 0xf, 32, NULL, NULL, 0 },
3171
3172
  /* The YMSK field in 64-bit GER prefix instructions.  */
3173
#define YMSK2 YMSK + 1
3174
  { 0x3, 34, NULL, NULL, 0 },
3175
3176
  /* The DUIS or BHRBE fields in a XFX form instruction, 10 bits
3177
     unsigned imediate */
3178
#define DUIS YMSK2 + 1
3179
#define BHRBE DUIS
3180
  { 0x3ff, 11, NULL, NULL, 0 },
3181
3182
  /* The split DW field in a X form instruction.  */
3183
#define DW DUIS + 1
3184
  { -1, PPC_OPSHIFT_INV, insert_dw, extract_dw,
3185
    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED},
3186
3187
  /* The split D field in a DX form instruction.  */
3188
#define DXD DW + 1
3189
  { 0xffff, PPC_OPSHIFT_INV, insert_dxd, extract_dxd,
3190
    PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
3191
3192
  /* The split ND field in a DX form instruction.
3193
     This is the same as the DX field, only negated.  */
3194
#define NDXD DXD + 1
3195
  { 0xffff, PPC_OPSHIFT_INV, insert_dxdn, extract_dxdn,
3196
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
3197
3198
  /* The E field in a wrteei instruction.  */
3199
  /* And the W bit in the pair singles instructions.  */
3200
  /* And the ST field in a VX form instruction.  */
3201
#define E NDXD + 1
3202
#define PSW E
3203
#define ST E
3204
  { 0x1, 15, NULL, NULL, 0 },
3205
3206
  /* The FL1 field in a POWER SC form instruction.  */
3207
#define FL1 E + 1
3208
  /* The U field in an X form instruction.  */
3209
#define U FL1
3210
  { 0xf, 12, NULL, NULL, 0 },
3211
3212
  /* The FL2 field in a POWER SC form instruction.  */
3213
#define FL2 FL1 + 1
3214
  { 0x7, 2, NULL, NULL, 0 },
3215
3216
  /* The FLM field in an XFL form instruction.  */
3217
#define FLM FL2 + 1
3218
  { 0xff, 17, NULL, NULL, 0 },
3219
3220
  /* The FRA field in an X or A form instruction.  */
3221
#define FRA FLM + 1
3222
#define FRA_MASK (0x1f << 16)
3223
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_FPR },
3224
3225
  /* The FRAp field of DFP instructions.  */
3226
#define FRAp FRA + 1
3227
  { 0x1e, 16, NULL, NULL, PPC_OPERAND_FPR },
3228
3229
  /* The FRB field in an X or A form instruction.  */
3230
#define FRB FRAp + 1
3231
#define FRB_MASK (0x1f << 11)
3232
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_FPR },
3233
3234
  /* The FRBp field of DFP instructions.  */
3235
#define FRBp FRB + 1
3236
  { 0x1e, 11, NULL, NULL, PPC_OPERAND_FPR },
3237
3238
  /* The FRC field in an A form instruction.  */
3239
#define FRC FRBp + 1
3240
#define FRC_MASK (0x1f << 6)
3241
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_FPR },
3242
3243
  /* The FRS field in an X form instruction or the FRT field in a D, X
3244
     or A form instruction.  */
3245
#define FRS FRC + 1
3246
#define FRT FRS
3247
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_FPR },
3248
3249
  /* The FRSp field of stfdp or the FRTp field of lfdp and DFP
3250
     instructions.  */
3251
#define FRSp FRS + 1
3252
#define FRTp FRSp
3253
  { 0x1e, 21, NULL, NULL, PPC_OPERAND_FPR },
3254
3255
  /* The FXM field in an XFX instruction.  */
3256
#define FXM FRSp + 1
3257
  { 0xff, 12, insert_fxm, extract_fxm, 0 },
3258
3259
  /* Power4 version for mfcr.  */
3260
#define FXM4 FXM + 1
3261
  { 0xff, 12, insert_fxm, extract_fxm, PPC_OPERAND_OPTIONAL },
3262
3263
  /* The IMM20 field in an LI instruction.  */
3264
#define IMM20 FXM4 + 1
3265
  { 0xfffff, PPC_OPSHIFT_INV, insert_li20, extract_li20, PPC_OPERAND_SIGNED},
3266
3267
  /* The L field in a D or X form instruction.  */
3268
#define L IMM20 + 1
3269
  { 0x1, 21, NULL, NULL, 0 },
3270
3271
  /* The optional L field in tlbie and tlbiel instructions.  */
3272
#define LOPT L + 1
3273
  /* The R field in a HTM X form instruction.  */
3274
#define HTM_R LOPT
3275
  { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
3276
3277
  /* The optional L field in the paste. instruction. This is similar to LOPT
3278
     above, but with a default value of 1.  */
3279
#define L1OPT LOPT + 1
3280
  { 0x1, 21, insert_l1opt, extract_l1opt, PPC_OPERAND_OPTIONAL },
3281
3282
  /* The optional (for 32-bit) L field in cmp[l][i] instructions.  */
3283
#define L32OPT L1OPT + 1
3284
  { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL32 },
3285
3286
  /* The 2-bit L or WC field in an X (sync, dcbf or wait) form instruction.  */
3287
#define L2OPT L32OPT + 1
3288
#define LS L2OPT
3289
#define WC L2OPT
3290
  { 0x3, 21, insert_ls, extract_ls, PPC_OPERAND_OPTIONAL },
3291
3292
  /* The LEV field in a POWER SVC / POWER9 SCV form instruction.  */
3293
#define SVC_LEV L2OPT + 1
3294
  { 0x7f, 5, NULL, NULL, 0 },
3295
3296
  /* The LEV field in an SC form instruction.  */
3297
#define LEV SVC_LEV + 1
3298
  { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL },
3299
3300
  /* The LI field in an I form instruction.  The lower two bits are
3301
     forced to zero.  */
3302
#define LI LEV + 1
3303
  { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
3304
3305
  /* The LI field in an I form instruction when used as an absolute
3306
     address.  */
3307
#define LIA LI + 1
3308
  { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
3309
3310
  /* The 3-bit L field in a sync or dcbf instruction.  */
3311
#define LS3 LIA + 1
3312
#define L3OPT LS3
3313
  { 0x7, 21, insert_ls, extract_ls, PPC_OPERAND_OPTIONAL },
3314
3315
  /* The ME field in an M form instruction.  */
3316
#define ME LS3 + 1
3317
#define ME_MASK (0x1f << 1)
3318
  { 0x1f, 1, NULL, NULL, 0 },
3319
3320
#define CRWn ME + 1
3321
  { 0x1f, 1, insert_crwn, extract_crwn, 0 },
3322
3323
#define ELWn CRWn + 1
3324
  { 0x1f, 1, insert_elwn, extract_elwn, PPC_OPERAND_PLUS1 },
3325
3326
#define ERWn ELWn + 1
3327
  { 0x1f, 6, insert_erwn, extract_erwn, 0 },
3328
3329
#define ERWb ERWn + 1
3330
  { 0x1f, 11, insert_erwb, extract_erwb, 0 },
3331
3332
#define CSLWb ERWb + 1
3333
  { 0x1f, 6, NULL, extract_cslwb, 0 },
3334
3335
#define CSLWn CSLWb + 1
3336
  { 0x1f, 11, insert_cslwn, NULL, 0 },
3337
3338
#define ILWn CSLWn + 1
3339
  { 0x1f, 1, NULL, extract_ilwn, PPC_OPERAND_PLUS1 },
3340
3341
#define ILWb ILWn + 1
3342
  { 0x1f, 6, insert_ilwb, NULL, 0 },
3343
3344
#define IRWn ILWb + 1
3345
  { 0x1f, 1, NULL, extract_irwn, PPC_OPERAND_PLUS1 },
3346
3347
#define IRWb IRWn + 1
3348
  { 0x1f, 6, insert_irwb, NULL, 0 },
3349
3350
  /* The MB and ME fields in an M form instruction expressed a single
3351
     operand which is a bitmask indicating which bits to select.  This
3352
     is a two operand form using PPC_OPERAND_NEXT.  See the
3353
     description in opcode/ppc.h for what this means.  */
3354
#define MBE IRWb + 1
3355
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT },
3356
  { -1, 0, insert_mbe, extract_mbe, 0 },
3357
3358
  /* The MB or ME field in an MD or MDS form instruction.  The high
3359
     bit is wrapped to the low end.  */
3360
#define MB6 MBE + 2
3361
#define ME6 MB6
3362
#define MB6_MASK (0x3f << 5)
3363
  { 0x3f, 5, insert_mb6, extract_mb6, 0 },
3364
3365
#define ELDn MB6 + 1
3366
  { 0x3f, 5, insert_eldn, extract_eldn, PPC_OPERAND_PLUS1 },
3367
3368
#define ERDn ELDn + 1
3369
  { 0x3f, 5, insert_erdn, extract_erdn, 0 },
3370
3371
#define CRDn ERDn + 1
3372
  { 0x3f, 5, insert_crdn, extract_crdn, 0 },
3373
3374
  /* The NB field in an X form instruction.  The value 32 is stored as
3375
     0.  */
3376
#define NB CRDn + 1
3377
  { 0x1f, 11, NULL, extract_nb, PPC_OPERAND_PLUS1 },
3378
3379
  /* The NBI field in an lswi instruction, which has special value
3380
     restrictions.  The value 32 is stored as 0.  */
3381
#define NBI NB + 1
3382
  { 0x1f, 11, insert_nbi, extract_nb, PPC_OPERAND_PLUS1 },
3383
3384
  /* The NSI field in a D form instruction.  This is the same as the
3385
     SI field, only negated.  */
3386
#define NSI NBI + 1
3387
  { 0xffff, 0, insert_nsi, extract_nsi,
3388
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
3389
3390
  /* The NSI field in a D form instruction when we accept a wide range
3391
     of positive values.  */
3392
#define NSISIGNOPT NSI + 1
3393
  { 0xffff, 0, insert_nsi, extract_nsi,
3394
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3395
3396
  /* The RA field in an D, DS, DQ, X, XO, M, or MDS form instruction.  */
3397
#define RA NSISIGNOPT + 1
3398
#define RA_MASK (0x1f << 16)
3399
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR },
3400
3401
  /* As above, but 0 in the RA field means zero, not r0.  */
3402
#define RA0 RA + 1
3403
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 },
3404
3405
  /* Similar to above, but optional.  */
3406
#define PRA0 RA0 + 1
3407
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 | PPC_OPERAND_OPTIONAL },
3408
3409
  /* The RA field in the DQ form lq or an lswx instruction, which have
3410
     special value restrictions.  */
3411
#define RAQ PRA0 + 1
3412
#define RAX RAQ
3413
  { 0x1f, 16, insert_raq, extract_raq, PPC_OPERAND_GPR_0 },
3414
3415
  /* Similar to above, but optional.  */
3416
#define PRAQ RAQ + 1
3417
  { 0x1f, 16, insert_raq, extract_raq,
3418
    PPC_OPERAND_GPR_0 | PPC_OPERAND_OPTIONAL },
3419
3420
  /* The R field in an 8-byte D, DS, DQ or X form prefix instruction.  */
3421
#define PCREL PRAQ + 1
3422
#define PCREL_MASK (1ULL << 52)
3423
  { 0x1, 52, insert_pcrel, extract_pcrel, PPC_OPERAND_OPTIONAL },
3424
3425
#define PCREL1 PCREL + 1
3426
  { 0x1, 52, insert_pcrel, extract_pcrel1, PPC_OPERAND_OPTIONAL },
3427
3428
  /* The RA field in a D or X form instruction which is an updating
3429
     load, which means that the RA field may not be zero and may not
3430
     equal the RT field.  */
3431
#define RAL PCREL1 + 1
3432
  { 0x1f, 16, insert_ral, extract_ral, PPC_OPERAND_GPR_0 },
3433
3434
  /* The RA field in an lmw instruction, which has special value
3435
     restrictions.  */
3436
#define RAM RAL + 1
3437
  { 0x1f, 16, insert_ram, extract_ram, PPC_OPERAND_GPR_0 },
3438
3439
  /* The RA field in a D or X form instruction which is an updating
3440
     store or an updating floating point load or a hash store or check,
3441
     which means that the RA field may not be zero.  */
3442
#define RAS RAM + 1
3443
  { 0x1f, 16, insert_ras, extract_ras, PPC_OPERAND_GPR_0 },
3444
3445
  /* The RA field of the tlbwe, dccci and iccci instructions,
3446
     which are optional.  */
3447
#define RAOPT RAS + 1
3448
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
3449
3450
  /* The RB field in an X, XO, M, or MDS form instruction.  */
3451
#define RB RAOPT + 1
3452
#define RB_MASK (0x1f << 11)
3453
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR },
3454
3455
  /* The RS and RB fields in an X form instruction when they must be the same.
3456
     This is used for extended mnemonics like mr.  */
3457
#define RSB RB + 1
3458
  { 0x1f, 11, insert_rsb, extract_rsb, PPC_OPERAND_GPR },
3459
3460
  /* The RB field in an lswx instruction, which has special value
3461
     restrictions.  */
3462
#define RBX RSB + 1
3463
  { 0x1f, 11, insert_rbx, extract_rbx, PPC_OPERAND_GPR },
3464
3465
  /* The RB field of the dccci and iccci instructions, which are optional.  */
3466
#define RBOPT RBX + 1
3467
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
3468
3469
  /* The RC register field in an maddld, maddhd or maddhdu instruction.  */
3470
#define RC RBOPT + 1
3471
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_GPR },
3472
3473
  /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
3474
     instruction or the RT field in a D, DS, X, XFX or XO form
3475
     instruction.  */
3476
#define RS RC + 1
3477
#define RT RS
3478
#define RT_MASK (0x1f << 21)
3479
#define RD RS
3480
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR },
3481
3482
#define RD_EVEN RS + 1
3483
#define RS_EVEN RD_EVEN
3484
  { 0x1f, 21, insert_rD_rS_even, extract_rD_rS_even, PPC_OPERAND_GPR },
3485
3486
  /* The RS and RT fields of the DS form stq and DQ form lq instructions,
3487
     which have special value restrictions.  */
3488
#define RSQ RS_EVEN + 1
3489
#define RTQ RSQ
3490
#define Q_MASK (1 << 21)
3491
  { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR },
3492
3493
  /* The RS field of the tlbwe instruction, which is optional.  */
3494
#define RSO RSQ + 1
3495
#define RTO RSO
3496
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
3497
3498
  /* The RX field of the SE_RR form instruction.  */
3499
#define RX RSO + 1
3500
  { 0x1f, PPC_OPSHIFT_INV, insert_rx, extract_rx, PPC_OPERAND_GPR },
3501
3502
  /* The ARX field of the SE_RR form instruction.  */
3503
#define ARX RX + 1
3504
  { 0x1f, PPC_OPSHIFT_INV, insert_arx, extract_arx, PPC_OPERAND_GPR },
3505
3506
  /* The RY field of the SE_RR form instruction.  */
3507
#define RY ARX + 1
3508
#define RZ RY
3509
  { 0x1f, PPC_OPSHIFT_INV, insert_ry, extract_ry, PPC_OPERAND_GPR },
3510
3511
  /* The ARY field of the SE_RR form instruction.  */
3512
#define ARY RY + 1
3513
  { 0x1f, PPC_OPSHIFT_INV, insert_ary, extract_ary, PPC_OPERAND_GPR },
3514
3515
  /* The SCLSCI8 field in a D form instruction.  */
3516
#define SCLSCI8 ARY + 1
3517
  { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8, extract_sci8, 0 },
3518
3519
  /* The SCLSCI8N field in a D form instruction.  This is the same as the
3520
     SCLSCI8 field, only negated.  */
3521
#define SCLSCI8N SCLSCI8 + 1
3522
  { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8n, extract_sci8n,
3523
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
3524
3525
  /* The SD field of the SD4 form instruction.  */
3526
#define SE_SD SCLSCI8N + 1
3527
  { 0xf, 8, NULL, NULL, PPC_OPERAND_PARENS },
3528
3529
  /* The SD field of the SD4 form instruction, for halfword.  */
3530
#define SE_SDH SE_SD + 1
3531
  { 0x1e, 7, NULL, NULL, PPC_OPERAND_PARENS },
3532
3533
  /* The SD field of the SD4 form instruction, for word.  */
3534
#define SE_SDW SE_SDH + 1
3535
  { 0x3c, 6, NULL, NULL, PPC_OPERAND_PARENS },
3536
3537
  /* The SH field in an X or M form instruction.  */
3538
#define SH SE_SDW + 1
3539
#define SH_MASK (0x1f << 11)
3540
  /* The other UIMM field in a EVX form instruction.  */
3541
#define EVUIMM SH
3542
  /* The FC field in an atomic X form instruction.  */
3543
#define FC SH
3544
#define UIM5 SH
3545
  { 0x1f, 11, NULL, NULL, 0 },
3546
3547
#define RRWn SH + 1
3548
  { 0x1f, 11, insert_rrwn, extract_rrwn, 0 },
3549
3550
#define SLWn RRWn + 1
3551
  { 0x1f, 11, insert_slwn, extract_slwn, 0 },
3552
3553
#define SRWn SLWn + 1
3554
  { 0x1f, 11, insert_srwn, extract_srwn, 0 },
3555
3556
#define EVUIMM_LT8 SRWn + 1
3557
  { 0x1f, 11, insert_evuimm_lt8, extract_evuimm_lt8, 0 },
3558
3559
#define EVUIMM_LT16 EVUIMM_LT8 + 1
3560
  { 0x1f, 11, insert_evuimm_lt16, extract_evuimm_lt16, 0 },
3561
3562
  /* The SI field in a HTM X form instruction.  */
3563
#define HTM_SI EVUIMM_LT16 + 1
3564
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_SIGNED },
3565
3566
  /* The SH field in an MD form instruction.  This is split.  */
3567
#define SH6 HTM_SI + 1
3568
#define SH6_MASK ((0x1f << 11) | (1 << 1))
3569
  { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_sh6, 0 },
3570
3571
#define RRDn SH6 + 1
3572
  { 0x3f, PPC_OPSHIFT_INV, insert_rrdn, extract_rrdn, 0 },
3573
3574
#define SLDn RRDn + 1
3575
  { 0x3f, PPC_OPSHIFT_INV, insert_sldn, extract_sldn, 0 },
3576
3577
#define SRDn SLDn + 1
3578
  { 0x3f, PPC_OPSHIFT_INV, insert_srdn, extract_srdn, 0 },
3579
3580
#define ERDb SRDn + 1
3581
  { 0x3f, PPC_OPSHIFT_INV, insert_erdb, extract_erdb, 0 },
3582
3583
#define CSLDn ERDb + 1
3584
  { 0x3f, PPC_OPSHIFT_SH6, insert_csldn, extract_sh6, 0 },
3585
3586
#define CSLDb CSLDn + 1
3587
  { 0x3f, 5, insert_mb6, extract_csldb, 0 },
3588
3589
#define IRDn CSLDb + 1
3590
  { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_irdn, PPC_OPERAND_PLUS1 },
3591
3592
#define IRDb IRDn + 1
3593
  { 0x3f, 5, insert_irdb, extract_mb6, 0 },
3594
3595
  /* The SH field of some variants of the tlbre and tlbwe
3596
     instructions, and the ELEV field of the e_sc instruction.  */
3597
#define SHO IRDb + 1
3598
#define ELEV SHO
3599
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
3600
3601
  /* The SI field in a D form instruction.  */
3602
#define SI SHO + 1
3603
  { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
3604
3605
  /* The SI field in a D form instruction when we accept a wide range
3606
     of positive values.  */
3607
#define SISIGNOPT SI + 1
3608
  { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3609
3610
  /* The SI8 field in a D form instruction.  */
3611
#define SI8 SISIGNOPT + 1
3612
  { 0xff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
3613
3614
  /* The SPR field in an XFX form instruction.  This is flipped--the
3615
     lower 5 bits are stored in the upper 5 and vice- versa.  */
3616
#define SPR SI8 + 1
3617
#define PMR SPR
3618
#define TMR SPR
3619
#define SPR_MASK (0x3ff << 11)
3620
  { 0x3ff, 11, insert_spr, extract_spr, PPC_OPERAND_SPR },
3621
3622
  /* The BAT index number in an XFX form m[ft]ibat[lu] instruction.  */
3623
#define SPRBAT SPR + 1
3624
#define SPRBAT_MASK (0xc1 << 11)
3625
  { 0x7, PPC_OPSHIFT_INV, insert_sprbat, extract_sprbat, PPC_OPERAND_SPR },
3626
3627
  /* The GQR index number in an XFX form m[ft]gqr instruction.  */
3628
#define SPRGQR SPRBAT + 1
3629
#define SPRGQR_MASK (0x7 << 16)
3630
  { 0x7, 16, NULL, NULL, PPC_OPERAND_GQR },
3631
3632
  /* The SPRG register number in an XFX form m[ft]sprg instruction.  */
3633
#define SPRG SPRGQR + 1
3634
  { 0x1f, 16, insert_sprg, extract_sprg, PPC_OPERAND_SPR },
3635
3636
  /* The SR field in an X form instruction.  */
3637
#define SR SPRG + 1
3638
  /* The 4-bit UIMM field in a VX form instruction.  */
3639
#define UIMM4 SR
3640
  { 0xf, 16, NULL, NULL, 0 },
3641
3642
  /* The STRM field in an X AltiVec form instruction.  */
3643
#define STRM SR + 1
3644
  /* The T field in a tlbilx form instruction.  */
3645
#define T STRM
3646
  /* The L field in wclr instructions.  */
3647
#define L2 STRM
3648
  { 0x3, 21, NULL, NULL, 0 },
3649
3650
  /* The ESYNC field in an X (sync) form instruction.  */
3651
#define ESYNC STRM + 1
3652
  { 0xf, 16, insert_esync, extract_esync, PPC_OPERAND_OPTIONAL },
3653
3654
  /* The SV field in a POWER SC form instruction.  */
3655
#define SV ESYNC + 1
3656
  { 0x3fff, 2, NULL, NULL, 0 },
3657
3658
  /* The TBR field in an XFX form instruction.  This is like the SPR
3659
     field, but it is optional.  */
3660
#define TBR SV + 1
3661
  { 0x3ff, 11, insert_tbr, extract_tbr,
3662
    PPC_OPERAND_SPR | PPC_OPERAND_OPTIONAL },
3663
3664
  /* The TO field in a D or X form instruction.  */
3665
#define TO TBR + 1
3666
#define DUI TO
3667
#define SVme TO
3668
#define SVG TO
3669
#define TO_MASK (0x1f << 21)
3670
  { 0x1f, 21, NULL, NULL, 0 },
3671
3672
  /* The UI field in a D form instruction.  */
3673
#define UI TO + 1
3674
  { 0xffff, 0, NULL, NULL, 0 },
3675
3676
#define UISIGNOPT UI + 1
3677
  { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNOPT },
3678
3679
  /* The IMM field in an SE_IM5 instruction.  */
3680
#define UI5 UISIGNOPT + 1
3681
  { 0x1f, 4, NULL, NULL, 0 },
3682
3683
  /* The OIMM field in an SE_OIM5 instruction.  */
3684
#define OIMM5 UI5 + 1
3685
  { 0x1f, 4, insert_oimm, extract_oimm, PPC_OPERAND_PLUS1 },
3686
3687
  /* The UI7 field in an SE_LI instruction.  */
3688
#define UI7 OIMM5 + 1
3689
  { 0x7f, 4, NULL, NULL, 0 },
3690
3691
  /* The VA field in a VA, VX or VXR form instruction.  */
3692
#define VA UI7 + 1
3693
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_VR },
3694
3695
  /* The VB field in a VA, VX or VXR form instruction.  */
3696
#define VB VA + 1
3697
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_VR },
3698
3699
  /* The VC field in a VA form instruction.  */
3700
#define VC VB + 1
3701
  { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR },
3702
3703
  /* The VD or VS field in a VA, VX, VXR or X form instruction.  */
3704
#define VD VC + 1
3705
#define VS VD
3706
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR },
3707
3708
  /* The SIMM field in a VX form instruction, and TE in Z form.  */
3709
#define SIMM VD + 1
3710
#define TE SIMM
3711
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED},
3712
3713
  /* The UIMM field in a VX form instruction.  */
3714
#define UIMM SIMM + 1
3715
#define DCTL UIMM
3716
#define rmm UIMM
3717
  { 0x1f, 16, NULL, NULL, 0 },
3718
3719
  /* The 3-bit UIMM field in a VX form instruction.  */
3720
#define UIMM3 UIMM + 1
3721
  { 0x7, 16, NULL, NULL, 0 },
3722
3723
  /* The 6-bit UIM field in a X form instruction.  */
3724
#define UIM6 UIMM3 + 1
3725
  { 0x3f, 16, NULL, NULL, 0 },
3726
3727
  /* The SIX field in a VX form instruction.  */
3728
#define SIX UIM6 + 1
3729
#define MMMM SIX
3730
  { 0xf, 11, NULL, NULL, 0 },
3731
3732
  /* The PS field in a VX form instruction.  */
3733
#define PS SIX + 1
3734
  { 0x1, 9, NULL, NULL, 0 },
3735
3736
  /* The SH field in a vector shift double by bit immediate instruction.  */
3737
#define SH3 PS + 1
3738
  { 0x7, 6, NULL, NULL, 0 },
3739
3740
  /* The SHB field in a VA form instruction.  */
3741
#define SHB SH3 + 1
3742
  { 0xf, 6, NULL, NULL, 0 },
3743
3744
  /* The other UIMM field in a half word EVX form instruction.  */
3745
#define EVUIMM_1 SHB + 1
3746
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_PARENS },
3747
3748
#define EVUIMM_1_EX0 EVUIMM_1 + 1
3749
  { 0x1f, 11, insert_evuimm1_ex0, extract_evuimm1_ex0, PPC_OPERAND_PARENS },
3750
3751
#define EVUIMM_2 EVUIMM_1_EX0 + 1
3752
  { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
3753
3754
#define EVUIMM_2_EX0 EVUIMM_2 + 1
3755
  { 0x3e, 10, insert_evuimm2_ex0, extract_evuimm2_ex0, PPC_OPERAND_PARENS },
3756
3757
  /* The other UIMM field in a word EVX form instruction.  */
3758
#define EVUIMM_4 EVUIMM_2_EX0 + 1
3759
  { 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS },
3760
3761
#define EVUIMM_4_EX0 EVUIMM_4 + 1
3762
  { 0x7c, 9, insert_evuimm4_ex0, extract_evuimm4_ex0, PPC_OPERAND_PARENS },
3763
3764
  /* The other UIMM field in a double EVX form instruction.  */
3765
#define EVUIMM_8 EVUIMM_4_EX0 + 1
3766
  { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS },
3767
3768
#define EVUIMM_8_EX0 EVUIMM_8 + 1
3769
  { 0xf8, 8, insert_evuimm8_ex0, extract_evuimm8_ex0, PPC_OPERAND_PARENS },
3770
3771
  /* The WS or DRM field in an X form instruction.  */
3772
#define WS EVUIMM_8_EX0 + 1
3773
#define DRM WS
3774
  /* The NNN field in a VX form instruction for SPE2  */
3775
#define NNN WS
3776
  { 0x7, 11, NULL, NULL, 0 },
3777
3778
  /* PowerPC paired singles extensions.  */
3779
  /* W bit in the pair singles instructions for x type instructions.  */
3780
#define PSWM WS + 1
3781
  /* The BO16 field in a BD8 form instruction.  */
3782
#define BO16 PSWM
3783
  /* The pst field in a SVRM form instruction.  */
3784
#define pst PSWM
3785
  /* The L field in a XO form instruction.  */
3786
#define XOL PSWM
3787
  {  0x1, 10, 0, 0, 0 },
3788
3789
  /* IDX bits for quantization in the pair singles instructions.  */
3790
#define PSQ PSWM + 1
3791
  {  0x7, 12, 0, 0, PPC_OPERAND_GQR },
3792
3793
  /* IDX bits for quantization in the pair singles x-type instructions.  */
3794
#define PSQM PSQ + 1
3795
  {  0x7, 7, 0, 0, PPC_OPERAND_GQR },
3796
3797
  /* Smaller D field for quantization in the pair singles instructions.  */
3798
#define PSD PSQM + 1
3799
  {  0xfff, 0, 0, 0,  PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
3800
3801
  /* The L field in an mtmsrd or A form instruction or R or W in an
3802
     X form.  */
3803
#define A_L PSD + 1
3804
#define W A_L
3805
#define X_R A_L
3806
  { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
3807
3808
  /* The RMC or CY field in a Z23 form instruction.  */
3809
#define RMC A_L + 1
3810
#define CY RMC
3811
#define ew RMC
3812
  { 0x3, 9, NULL, NULL, 0 },
3813
3814
#define R RMC + 1
3815
#define MP R
3816
#define P1 R
3817
  { 0x1, 16, NULL, NULL, 0 },
3818
3819
#define RIC R + 1
3820
  { 0x3, 18, NULL, NULL, PPC_OPERAND_OPTIONAL },
3821
3822
#define PRS RIC + 1
3823
  { 0x1, 17, NULL, NULL, PPC_OPERAND_OPTIONAL },
3824
3825
#define SP PRS + 1
3826
#define mi0 SP
3827
  { 0x3, 19, NULL, NULL, 0 },
3828
3829
#define S SP + 1
3830
  { 0x1, 20, NULL, NULL, 0 },
3831
3832
  /* The S field in a XL form instruction.  */
3833
#define SXL S + 1
3834
  { 0x1, 11, insert_sxl, extract_sxl, PPC_OPERAND_OPTIONAL },
3835
3836
  /* SH field starting at bit position 16.  */
3837
#define SH16 SXL + 1
3838
  /* The DCM and DGM fields in a Z form instruction.  */
3839
#define DCM SH16
3840
#define DGM DCM
3841
  { 0x3f, 10, NULL, NULL, 0 },
3842
3843
  /* The EH field in larx instruction.  */
3844
#define EH SH16 + 1
3845
  { 0x1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL },
3846
3847
  /* The L field in an mtfsf or XFL form instruction.  */
3848
  /* The A field in a HTM X form instruction.  */
3849
#define XFL_L EH + 1
3850
#define HTM_A XFL_L
3851
  { 0x1, 25, NULL, NULL, PPC_OPERAND_OPTIONAL},
3852
3853
  /* Xilinx APU related masks and macros */
3854
#define FCRT XFL_L + 1
3855
#define FCRT_MASK (0x1f << 21)
3856
  { 0x1f, 21, 0, 0, PPC_OPERAND_FCR },
3857
3858
  /* Xilinx FSL related masks and macros */
3859
#define FSL FCRT + 1
3860
#define FSL_MASK (0x1f << 11)
3861
  { 0x1f, 11, 0, 0, PPC_OPERAND_FSL },
3862
3863
  /* Xilinx UDI related masks and macros */
3864
#define URT FSL + 1
3865
  { 0x1f, 21, 0, 0, PPC_OPERAND_UDI },
3866
3867
#define URA URT + 1
3868
  { 0x1f, 16, 0, 0, PPC_OPERAND_UDI },
3869
3870
#define URB URA + 1
3871
  { 0x1f, 11, 0, 0, PPC_OPERAND_UDI },
3872
3873
#define URC URB + 1
3874
  { 0x1f, 6, 0, 0, PPC_OPERAND_UDI },
3875
3876
  /* The VLESIMM field in a D form instruction.  */
3877
#define VLESIMM URC + 1
3878
  { 0xffff, PPC_OPSHIFT_INV, insert_vlesi, extract_vlesi,
3879
    PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3880
3881
  /* The VLENSIMM field in a D form instruction.  */
3882
#define VLENSIMM VLESIMM + 1
3883
  { 0xffff, PPC_OPSHIFT_INV, insert_vlensi, extract_vlensi,
3884
    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
3885
3886
  /* The VLEUIMM field in a D form instruction.  */
3887
#define VLEUIMM VLENSIMM + 1
3888
  { 0xffff, PPC_OPSHIFT_INV, insert_vleui, extract_vleui, 0 },
3889
3890
  /* The VLEUIMML field in a D form instruction.  */
3891
#define VLEUIMML VLEUIMM + 1
3892
  { 0xffff, PPC_OPSHIFT_INV, insert_vleil, extract_vleil, 0 },
3893
3894
  /* The XT and XS fields in an XX1 or XX3 form instruction.  This is
3895
     split.  */
3896
#define XS6 VLEUIMML + 1
3897
#define XT6 XS6
3898
  { 0x3f, PPC_OPSHIFT_INV, insert_xt6, extract_xt6, PPC_OPERAND_VSR },
3899
3900
  /* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
3901
#define XSQ6 XT6 + 1
3902
#define XTQ6 XSQ6
3903
  { 0x3f, PPC_OPSHIFT_INV, insert_xtq6, extract_xtq6, PPC_OPERAND_VSR },
3904
3905
  /* The split XTp and XSp field in a vector paired instruction.  */
3906
#define XTP XSQ6 + 1
3907
#define XSP XTP
3908
  { 0x3e, PPC_OPSHIFT_INV, insert_xtp, extract_xtp, PPC_OPERAND_VSR },
3909
3910
#define XTS XTP + 1
3911
  { 0x3f, PPC_OPSHIFT_INV, insert_xts, extract_xts, PPC_OPERAND_VSR },
3912
3913
  /* The XT field in a plxv instruction.  Runs into the OP field.  */
3914
#define XTOP XTS + 1
3915
  { 0x3f, 21, NULL, NULL, PPC_OPERAND_VSR },
3916
3917
  /* The XA field in an XX3 form instruction.  This is split.  */
3918
#define XA6 XTOP + 1
3919
  { 0x3f, PPC_OPSHIFT_INV, insert_xa6, extract_xa6, PPC_OPERAND_VSR },
3920
3921
  /* The XA field in an MMA XX3 form instruction.  This is split and
3922
     must not overlap with the ACC operand.  */
3923
#define XA6a XA6 + 1
3924
  { 0x3f, PPC_OPSHIFT_INV, insert_xa6a, extract_xa6a, PPC_OPERAND_VSR },
3925
3926
  /* The XAp field in an MMA XX3 form instruction.  This is split.
3927
     This is like XA6a, but must be even.  */
3928
#define XA6ap XA6a + 1
3929
  { 0x3e, PPC_OPSHIFT_INV, insert_xa6a, extract_xa6a, PPC_OPERAND_VSR },
3930
3931
  /* The 5-bit XAp field in an MMA XX3 form instruction.  This is split.
3932
     This is like XA6, but must be even.  */
3933
#define XA5p XA6ap + 1
3934
  { 0x3e, PPC_OPSHIFT_INV, insert_xa5, extract_xa5, PPC_OPERAND_VSR },
3935
3936
  /* The XB field in an XX2 or XX3 form instruction.  This is split.  */
3937
#define XB6 XA5p + 1
3938
  { 0x3f, PPC_OPSHIFT_INV, insert_xb6, extract_xb6, PPC_OPERAND_VSR },
3939
3940
  /* The XB field in an XX3 form instruction.  This is split and
3941
     must not overlap with the ACC operand.  */
3942
#define XB6a XB6 + 1
3943
  { 0x3f, PPC_OPSHIFT_INV, insert_xb6a, extract_xb6a, PPC_OPERAND_VSR },
3944
3945
  /* The 5-bit XBp field in an MMA XX3 form instruction.  This is split.
3946
     This is like XB6, but must be even.  */
3947
#define XB5p XB6a + 1
3948
  { 0x3e, PPC_OPSHIFT_INV, insert_xb5, extract_xb5, PPC_OPERAND_VSR },
3949
3950
  /* The XA and XB fields in an XX3 form instruction when they must be the same.
3951
     This is used in extended mnemonics like xvmovdp.  This is split.  */
3952
#define XAB6 XB5p + 1
3953
  { 0x3f, PPC_OPSHIFT_INV, insert_xab6, extract_xab6, PPC_OPERAND_VSR },
3954
3955
  /* The XC field in an XX4 form instruction.  This is split.  */
3956
#define XC6 XAB6 + 1
3957
  { 0x3f, PPC_OPSHIFT_INV, insert_xc6, extract_xc6, PPC_OPERAND_VSR },
3958
3959
  /* The DM or SHW field in an XX3 form instruction.  */
3960
#define DM XC6 + 1
3961
#define SHW DM
3962
  { 0x3, 8, NULL, NULL, 0 },
3963
3964
  /* The DM field in an extended mnemonic XX3 form instruction.  */
3965
#define DMEX DM + 1
3966
  { 0x3, 8, insert_dm, extract_dm, 0 },
3967
3968
  /* The 2-bit M field in an AES XX2/XX3 form instruction. This is split.  */
3969
#define AESM DMEX + 1
3970
  { 0x3, PPC_OPSHIFT_INV, insert_m2, extract_m2, 0 },
3971
3972
  /* The UIM field in an XX2 form instruction.  */
3973
#define UIM AESM + 1
3974
  /* The 2-bit UIMM field in a VX form instruction.  */
3975
#define UIMM2 UIM
3976
  /* The 2-bit L field in a darn instruction.  */
3977
#define LRAND UIM
3978
  { 0x3, 16, NULL, NULL, 0 },
3979
3980
#define ERAT_T UIM + 1
3981
  { 0x7, 21, NULL, NULL, 0 },
3982
3983
#define IH ERAT_T + 1
3984
  { 0x7, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
3985
3986
  /* The 2-bit SC or PL field in an X form instruction.  */
3987
#define SC2 IH + 1
3988
#define PL SC2
3989
  { 0x3, 16, insert_pl, extract_pl, PPC_OPERAND_OPTIONAL },
3990
3991
#define P2 PL + 1
3992
  { 0x3, PPC_OPSHIFT_INV, insert_p2, extract_p2, 0 },
3993
3994
  /* The 8-bit IMM8 field in a XX1 form instruction.  */
3995
#define IMM8 P2 + 1
3996
  { 0xff, 11, NULL, NULL, PPC_OPERAND_SIGNOPT },
3997
3998
#define VX_OFF IMM8 + 1
3999
  { 0x3, 0, insert_off_lsp, extract_off_lsp, 0 },
4000
4001
#define VX_OFF_SPE2 VX_OFF + 1
4002
  { 0x7, 0, insert_off_spe2, extract_off_spe2, 0 },
4003
4004
#define BBB VX_OFF_SPE2 + 1
4005
  { 0x7, 13, NULL, NULL, 0 },
4006
4007
#define DDD BBB + 1
4008
#define VX_MASK_DDD  (VX_MASK & ~0x1)
4009
  { 0x7, PPC_OPSHIFT_INV, insert_Ddd, extract_Ddd, 0 },
4010
4011
#define HH DDD + 1
4012
#define mo0 HH
4013
  { 0x3, 13, NULL, NULL, 0 },
4014
4015
#define SVi HH + 1
4016
  { 0x3f, 9, NULL, NULL, PPC_OPERAND_NONZERO },
4017
4018
#define vf SVi + 1
4019
#define sk vf
4020
  { 0x1, 6, NULL, NULL, 0 },
4021
4022
#define vs vf + 1
4023
#define mm vs
4024
  { 0x1, 7, NULL, NULL, 0 },
4025
4026
#define ms vs + 1
4027
#define yx ms
4028
  /* The P field in Galois Field XX3 form instruction.  */
4029
#define PGF1 yx
4030
  { 0x1, 8, NULL, NULL, 0 },
4031
4032
#define SVLcr ms + 1
4033
  { 0x1, 5, NULL, NULL, 0 },
4034
4035
#define SVxd SVLcr + 1
4036
  { 0x1f, 21, NULL, NULL, PPC_OPERAND_NONZERO },
4037
4038
#define SVyd SVxd + 1
4039
  { 0x1f, 16, NULL, NULL, PPC_OPERAND_NONZERO },
4040
4041
#define SVzd SVyd + 1
4042
#define SVd SVzd
4043
  { 0x1f, 11, NULL, NULL, PPC_OPERAND_NONZERO },
4044
4045
#define SVrm SVzd + 1
4046
  { 0xf, 7, NULL, NULL, 0 },
4047
4048
#define mi1 SVrm + 1
4049
  { 0x3, 17, NULL, NULL, 0 },
4050
4051
#define mi2 mi1 + 1
4052
  { 0x3, 15, NULL, NULL, 0 },
4053
};
4054
4055
const unsigned int num_powerpc_operands = ARRAY_SIZE (powerpc_operands);
4056

4057
/* Macros used to form opcodes.  */
4058
4059
/* The main opcode.  */
4060
#define OP(x) ((((uint64_t)(x)) & 0x3f) << 26)
4061
#define OP_MASK OP (0x3f)
4062
4063
/* The prefix opcode.  */
4064
#define PREFIX_OP (1ULL << 58)
4065
4066
/* The 2-bit prefix form.  */
4067
#define PREFIX_FORM(x) ((x & 3ULL) << 56)
4068
4069
#define SUFFIX_MASK ((1ULL << 32) - 1)
4070
#define PREFIX_MASK (SUFFIX_MASK << 32)
4071
4072
/* Prefix insn, eight byte load/store form 8LS.  */
4073
#define P8LS (PREFIX_OP | PREFIX_FORM (0))
4074
4075
/* Prefix insn, eight byte register to register form 8RR.  */
4076
#define P8RR (PREFIX_OP | PREFIX_FORM (1))
4077
4078
/* Prefix insn, modified load/store form MLS.  */
4079
#define PMLS (PREFIX_OP | PREFIX_FORM (2))
4080
4081
/* Prefix insn, modified register to register form MRR.  */
4082
#define PMRR (PREFIX_OP | PREFIX_FORM (3))
4083
4084
/* Prefix insn, modified masked immediate register to register form MMIRR.  */
4085
#define PMMIRR (PREFIX_OP | PREFIX_FORM (3) | (9ULL << 52))
4086
4087
/* An 8-byte D form prefix instruction.  */
4088
#define P_D_MASK (((-1ULL << 50) & ~PCREL_MASK) | OP_MASK)
4089
4090
/* An 8-byte D form prefix instruction with 32bit SI field.  */
4091
#define P_D_SI32_MASK (((-1ULL << 48) & ~PCREL_MASK) | OP_MASK)
4092
4093
/* The same as P_D_MASK, but with the RA and PCREL fields specified.  */
4094
#define P_DRAPCREL_MASK (P_D_MASK | PCREL_MASK | RA_MASK)
4095
4096
/* The same as P_D_SI32_MASK, but with the RA and PCREL fields specified.  */
4097
#define P_DRAPCREL_SI32_MASK (P_D_SI32_MASK | PCREL_MASK | RA_MASK)
4098
4099
/* Mask for prefix X form instructions.  */
4100
#define P_X_MASK (PREFIX_MASK | X_MASK)
4101
#define P_XX1_MASK (PREFIX_MASK | XX1_MASK)
4102
4103
/* Mask for prefix vector permute insns.  */
4104
#define P_XX4_MASK (PREFIX_MASK | XX4_MASK)
4105
#define P_UXX4_MASK (P_XX4_MASK & ~(7ULL << 32))
4106
#define P_U8XX4_MASK (P_XX4_MASK & ~(0xffULL << 32))
4107
4108
/* MMIRR:XX3-form 8-byte outer product instructions.  */
4109
#define P_GER_MASK ((-1ULL << 40) | XX3ACC_MASK)
4110
#define P_GER2_MASK (P_GER_MASK & ~(3ULL << 46))
4111
#define P_GER4_MASK (P_GER_MASK & ~(15ULL << 44))
4112
#define P_GER8_MASK (P_GER_MASK & ~(255ULL << 40))
4113
#define P_GER64_MASK (P_GER_MASK | (3ULL << 32))
4114
#define P_GERX4_MASK ((-1ULL << 48) | XX3GERX_MASK)
4115
#define P_GERX2_MASK (P_GERX4_MASK & ~(3ULL << 46))
4116
4117
/* Vector splat immediate op.  */
4118
#define VSOP(op, xop) (OP (op) | (xop << 17))
4119
#define P_VS_MASK ((-1ULL << 48) | VSOP (0x3f, 0xf))
4120
#define P_VSI_MASK ((-1ULL << 48) | VSOP (0x3f, 0xe))
4121
4122
/* The main opcode combined with a trap code in the TO field of a D
4123
   form instruction.  Used for extended mnemonics for the trap
4124
   instructions.  */
4125
#define OPTO(x,to) (OP (x) | ((((uint64_t)(to)) & 0x1f) << 21))
4126
#define OPTO_MASK (OP_MASK | TO_MASK)
4127
4128
/* The main opcode combined with a comparison size bit in the L field
4129
   of a D form or X form instruction.  Used for extended mnemonics for
4130
   the comparison instructions.  */
4131
#define OPL(x,l) (OP (x) | ((((uint64_t)(l)) & 1) << 21))
4132
#define OPL_MASK OPL (0x3f,1)
4133
4134
/* The main opcode combined with an update code in D form instruction.
4135
   Used for extended mnemonics for VLE memory instructions.  */
4136
#define OPVUP(x,vup) (OP (x) | ((((uint64_t)(vup)) & 0xff) << 8))
4137
#define OPVUP_MASK OPVUP (0x3f,  0xff)
4138
4139
/* The main opcode combined with an update code and the RT fields
4140
   specified in D form instruction.  Used for VLE volatile context
4141
   save/restore instructions.  */
4142
#define OPVUPRT(x,vup,rt)     \
4143
  (OPVUP (x, vup)       \
4144
   | ((((uint64_t)(rt)) & 0x1f) << 21))
4145
#define OPVUPRT_MASK OPVUPRT (0x3f, 0xff, 0x1f)
4146
4147
/* An A form instruction.  */
4148
#define A(op, xop, rc)        \
4149
  (OP (op)          \
4150
   | ((((uint64_t)(xop)) & 0x1f) << 1)  \
4151
   | (((uint64_t)(rc)) & 1))
4152
#define A_MASK A (0x3f, 0x1f, 1)
4153
4154
/* An A_MASK with the FRB field fixed.  */
4155
#define AFRB_MASK (A_MASK | FRB_MASK)
4156
4157
/* An A_MASK with the FRC field fixed.  */
4158
#define AFRC_MASK (A_MASK | FRC_MASK)
4159
4160
/* An A_MASK with the FRA and FRC fields fixed.  */
4161
#define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
4162
4163
/* An AFRAFRC_MASK, but with L bit clear.  */
4164
#define AFRALFRC_MASK (AFRAFRC_MASK & ~((uint64_t) 1 << 16))
4165
4166
/* A B form instruction.  */
4167
#define B(op, aa, lk)       \
4168
  (OP (op)          \
4169
   | ((((uint64_t)(aa)) & 1) << 1)    \
4170
   | ((lk) & 1))
4171
#define B_MASK B (0x3f, 1, 1)
4172
4173
/* A BD8 form instruction.  This is a 16-bit instruction.  */
4174
#define BD8(op, aa, lk)       \
4175
  (((((uint64_t)(op)) & 0x3f) << 10)  \
4176
   | (((aa) & 1) << 9)        \
4177
   | (((lk) & 1) << 8))
4178
#define BD8_MASK BD8 (0x3f, 1, 1)
4179
4180
/* Another BD8 form instruction.  This is a 16-bit instruction.  */
4181
#define BD8IO(op) ((((uint64_t)(op)) & 0x1f) << 11)
4182
#define BD8IO_MASK BD8IO (0x1f)
4183
4184
/* A BD8 form instruction for simplified mnemonics.  */
4185
#define EBD8IO(op, bo, bi) (BD8IO ((op)) | ((bo) << 10) | ((bi) << 8))
4186
/* A mask that excludes BO32 and BI32.  */
4187
#define EBD8IO1_MASK 0xf800
4188
/* A mask that includes BO32 and excludes BI32.  */
4189
#define EBD8IO2_MASK 0xfc00
4190
/* A mask that include BO32 AND BI32.  */
4191
#define EBD8IO3_MASK 0xff00
4192
4193
/* A BD15 form instruction.  */
4194
#define BD15(op, aa, lk)      \
4195
  (OP (op)          \
4196
   | ((((uint64_t)(aa)) & 0xf) << 22) \
4197
   | ((lk) & 1))
4198
#define BD15_MASK BD15 (0x3f, 0xf, 1)
4199
4200
/* A BD15 form instruction for extended conditional branch mnemonics.  */
4201
#define EBD15(op, aa, bo, lk)     \
4202
  (((op) & 0x3fu) << 26)      \
4203
  | (((aa) & 0xf) << 22)      \
4204
  | (((bo) & 0x3) << 20)      \
4205
  | ((lk) & 1)
4206
#define EBD15_MASK 0xfff00001
4207
4208
/* A BD15 form instruction for extended conditional branch mnemonics
4209
   with BI.  */
4210
#define EBD15BI(op, aa, bo, bi, lk)   \
4211
  ((((op) & 0x3fu) << 26)     \
4212
   | (((aa) & 0xf) << 22)     \
4213
   | (((bo) & 0x3) << 20)     \
4214
   | (((bi) & 0x3) << 16)     \
4215
   | ((lk) & 1))
4216
4217
#define EBD15BI_MASK  0xfff30001
4218
4219
/* A BD24 form instruction.  */
4220
#define BD24(op, aa, lk)      \
4221
  (OP (op)          \
4222
   | ((((uint64_t)(aa)) & 1) << 25) \
4223
   | ((lk) & 1))
4224
#define BD24_MASK BD24 (0x3f, 1, 1)
4225
4226
/* A B form instruction setting the BO field.  */
4227
#define BBO(op, bo, aa, lk)     \
4228
  (B ((op), (aa), (lk))       \
4229
   | ((((uint64_t)(bo)) & 0x1f) << 21))
4230
#define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
4231
4232
/* A BBO_MASK with the y bit of the BO field removed.  This permits
4233
   matching a conditional branch regardless of the setting of the y
4234
   bit.  Similarly for the 'at' bits used for power4 branch hints.  */
4235
#define Y_MASK   (((uint64_t) 1) << 21)
4236
#define AT1_MASK (((uint64_t) 3) << 21)
4237
#define AT2_MASK (((uint64_t) 9) << 21)
4238
#define BBOY_MASK  (BBO_MASK &~ Y_MASK)
4239
#define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
4240
4241
/* A B form instruction setting the BO field and the condition bits of
4242
   the BI field.  */
4243
#define BBOCB(op, bo, cb, aa, lk) \
4244
  (BBO ((op), (bo), (aa), (lk)) | ((((uint64_t)(cb)) & 0x3) << 16))
4245
#define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
4246
4247
/* A BBOCB_MASK with the y bit of the BO field removed.  */
4248
#define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
4249
#define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
4250
#define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
4251
4252
/* A BBOYCB_MASK in which the BI field is fixed.  */
4253
#define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
4254
#define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
4255
4256
/* A VLE C form instruction.  */
4257
#define C_LK(x, lk) (((((uint64_t)(x)) & 0x7fff) << 1) | ((lk) & 1))
4258
#define C_LK_MASK C_LK(0x7fff, 1)
4259
#define C(x) ((((uint64_t)(x)) & 0xffff))
4260
#define C_MASK C(0xffff)
4261
4262
/* An Context form instruction.  */
4263
#define CTX(op, xop)   (OP (op) | (((uint64_t)(xop)) & 0x7))
4264
#define CTX_MASK CTX(0x3f, 0x7)
4265
4266
/* An User Context form instruction.  */
4267
#define UCTX(op, xop)  (OP (op) | (((uint64_t)(xop)) & 0x1f))
4268
#define UCTX_MASK UCTX(0x3f, 0x1f)
4269
4270
/* The main opcode mask with the RA field clear.  */
4271
#define DRA_MASK (OP_MASK | RA_MASK)
4272
4273
/* A DQ form VSX instruction.  */
4274
#define DQX(op, xop) (OP (op) | ((xop) & 0x7))
4275
#define DQX_MASK DQX (0x3f, 7)
4276
4277
/* A DQ form VSX vector paired instruction.  */
4278
#define DQXP(op, xop) (OP (op) | ((xop) & 0xf))
4279
#define DQXP_MASK DQXP (0x3f, 0xf)
4280
4281
/* A DS form instruction.  */
4282
#define DSO(op, xop) (OP (op) | ((xop) & 0x3))
4283
#define DS_MASK DSO (0x3f, 3)
4284
4285
/* An DX form instruction.  */
4286
#define DX(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
4287
#define DX_MASK DX (0x3f, 0x1f)
4288
/* An DX form instruction with the D bits specified.  */
4289
#define NODX_MASK (DX_MASK | 0x1fffc1)
4290
4291
/* An EVSEL form instruction.  */
4292
#define EVSEL(op, xop) (OP (op) | (((uint64_t)(xop)) & 0xff) << 3)
4293
#define EVSEL_MASK EVSEL(0x3f, 0xff)
4294
4295
/* An IA16 form instruction.  */
4296
#define IA16(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
4297
#define IA16_MASK IA16(0x3f, 0x1f)
4298
4299
/* An I16A form instruction.  */
4300
#define I16A(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
4301
#define I16A_MASK I16A(0x3f, 0x1f)
4302
4303
/* An I16L form instruction.  */
4304
#define I16L(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1f) << 11)
4305
#define I16L_MASK I16L(0x3f, 0x1f)
4306
4307
/* An IM7 form instruction.  */
4308
#define IM7(op) ((((uint64_t)(op)) & 0x1f) << 11)
4309
#define IM7_MASK IM7(0x1f)
4310
4311
/* An M form instruction.  */
4312
#define M(op, rc) (OP (op) | ((rc) & 1))
4313
#define M_MASK M (0x3f, 1)
4314
4315
/* An LI20 form instruction.  */
4316
#define LI20(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x1) << 15)
4317
#define LI20_MASK LI20(0x3f, 0x1)
4318
4319
/* An M form instruction with the ME field specified.  */
4320
#define MME(op, me, rc)       \
4321
  (M ((op), (rc))       \
4322
   | ((((uint64_t)(me)) & 0x1f) << 1))
4323
4324
/* An M_MASK with the MB field fixed.  */
4325
#define MMB_MASK (M_MASK | MB_MASK)
4326
4327
/* An M_MASK with the ME field fixed.  */
4328
#define MME_MASK (M_MASK | ME_MASK)
4329
4330
/* An M_MASK with the MB and ME fields fixed.  */
4331
#define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
4332
4333
/* An M_MASK with the SH and ME fields fixed.  */
4334
#define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
4335
4336
/* An M_MASK with the SH and MB fields fixed.  */
4337
#define MSHMB_MASK (M_MASK | SH_MASK | MB_MASK)
4338
4339
/* An MD form instruction.  */
4340
#define MD(op, xop, rc)       \
4341
  (OP (op)          \
4342
   | ((((uint64_t)(xop)) & 0x7) << 2) \
4343
   | ((rc) & 1))
4344
#define MD_MASK MD (0x3f, 0x7, 1)
4345
4346
/* An MD_MASK with the MB field fixed.  */
4347
#define MDMB_MASK (MD_MASK | MB6_MASK)
4348
4349
/* An MD_MASK with the SH field fixed.  */
4350
#define MDSH_MASK (MD_MASK | SH6_MASK)
4351
4352
/* An MDS form instruction.  */
4353
#define MDS(op, xop, rc)      \
4354
  (OP (op)          \
4355
   | ((((uint64_t)(xop)) & 0xf) << 1) \
4356
   | ((rc) & 1))
4357
#define MDS_MASK MDS (0x3f, 0xf, 1)
4358
4359
/* An MDS_MASK with the MB field fixed.  */
4360
#define MDSMB_MASK (MDS_MASK | MB6_MASK)
4361
4362
/* An SC form instruction.  */
4363
#define SC(op, sa, lk)        \
4364
  (OP (op)          \
4365
   | ((((uint64_t)(sa)) & 1) << 1)    \
4366
   | ((lk) & 1))
4367
#define SC_MASK         \
4368
  (OP_MASK          \
4369
   | (((uint64_t) 0x3ff) << 16)   \
4370
   | (((uint64_t) 1) << 1)      \
4371
   | 1)
4372
4373
/* An SCI8 form instruction.  */
4374
#define SCI8(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 11))
4375
#define SCI8_MASK SCI8(0x3f, 0x1f)
4376
4377
/* An SCI8 form instruction.  */
4378
#define SCI8BF(op, fop, xop)      \
4379
  (OP (op)          \
4380
   | ((((uint64_t)(xop)) & 0x1f) << 11) \
4381
   | (((fop) & 7) << 23))
4382
#define SCI8BF_MASK SCI8BF(0x3f, 7, 0x1f)
4383
4384
/* An SD4 form instruction.  This is a 16-bit instruction.  */
4385
#define SD4(op) ((((uint64_t)(op)) & 0xf) << 12)
4386
#define SD4_MASK SD4(0xf)
4387
4388
/* An SE_IM5 form instruction.  This is a 16-bit instruction.  */
4389
#define SE_IM5(op, xop)       \
4390
  (((((uint64_t)(op)) & 0x3f) << 10)  \
4391
   | (((xop) & 0x1) << 9))
4392
#define SE_IM5_MASK SE_IM5(0x3f, 1)
4393
4394
/* An SE_R form instruction.  This is a 16-bit instruction.  */
4395
#define SE_R(op, xop)       \
4396
  (((((uint64_t)(op)) & 0x3f) << 10)  \
4397
   | (((xop) & 0x3f) << 4))
4398
#define SE_R_MASK SE_R(0x3f, 0x3f)
4399
4400
/* An SE_RR form instruction.  This is a 16-bit instruction.  */
4401
#define SE_RR(op, xop)        \
4402
  (((((uint64_t)(op)) & 0x3f) << 10)  \
4403
   | (((xop) & 0x3) << 8))
4404
#define SE_RR_MASK SE_RR(0x3f, 3)
4405
4406
/* A VX form instruction.  */
4407
#define VX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7ff))
4408
4409
/* The mask for an VX form instruction.  */
4410
#define VX_MASK VX(0x3f, 0x7ff)
4411
4412
/* A VX LSP form instruction.  */
4413
#define VX_LSP(op, xop) (OP (op) | (((uint64_t)(xop)) & 0xffff))
4414
4415
/* The mask for an VX LSP form instruction.  */
4416
#define VX_LSP_MASK VX_LSP(0x3f, 0xffff)
4417
#define VX_LSP_OFF_MASK VX_LSP(0x3f, 0x7fc)
4418
4419
/* Additional format of VX SPE2 form instruction.   */
4420
#define VX_RA_CONST(op, xop, bits11_15)     \
4421
  (OP (op)            \
4422
   | (((uint64_t)(bits11_15) & 0x1f) << 16) \
4423
   | (((uint64_t)(xop)) & 0x7ff))
4424
#define VX_RA_CONST_MASK VX_RA_CONST(0x3f, 0x7ff, 0x1f)
4425
4426
#define VX_RB_CONST(op, xop, bits16_20)     \
4427
  (OP (op)            \
4428
   | (((uint64_t)(bits16_20) & 0x1f) << 11) \
4429
   | (((uint64_t)(xop)) & 0x7ff))
4430
#define VX_RB_CONST_MASK VX_RB_CONST(0x3f, 0x7ff, 0x1f)
4431
4432
#define VX_OFF_SPE2_MASK VX(0x3f, 0x7f8)
4433
4434
#define VX_SPE_CRFD(op, xop, bits9_10)      \
4435
  (OP (op)            \
4436
   | (((uint64_t)(bits9_10) & 0x3) << 21)   \
4437
   | (((uint64_t)(xop)) & 0x7ff))
4438
#define VX_SPE_CRFD_MASK VX_SPE_CRFD(0x3f, 0x7ff, 0x3)
4439
4440
#define VX_SPE2_CLR(op, xop, bit16)     \
4441
  (OP (op)            \
4442
   | (((uint64_t)(bit16) & 0x1) << 15)    \
4443
   | (((uint64_t)(xop)) & 0x7ff))
4444
#define VX_SPE2_CLR_MASK VX_SPE2_CLR(0x3f, 0x7ff, 0x1)
4445
4446
#define VX_SPE2_SPLATB(op, xop, bits19_20)    \
4447
  (OP (op)            \
4448
   | (((uint64_t)(bits19_20) & 0x3) << 11)    \
4449
   | (((uint64_t)(xop)) & 0x7ff))
4450
#define VX_SPE2_SPLATB_MASK VX_SPE2_SPLATB(0x3f, 0x7ff, 0x3)
4451
4452
#define VX_SPE2_OCTET(op, xop, bits16_17)   \
4453
  (OP (op)            \
4454
   | (((uint64_t)(bits16_17) & 0x3) << 14)    \
4455
   | (((uint64_t)(xop)) & 0x7ff))
4456
#define VX_SPE2_OCTET_MASK VX_SPE2_OCTET(0x3f, 0x7ff, 0x7)
4457
4458
#define VX_SPE2_DDHH(op, xop, bit16)      \
4459
  (OP (op)            \
4460
   | (((uint64_t)(bit16) & 0x1) << 15)    \
4461
   | (((uint64_t)(xop)) & 0x7ff))
4462
#define VX_SPE2_DDHH_MASK VX_SPE2_DDHH(0x3f, 0x7ff, 0x1)
4463
4464
#define VX_SPE2_HH(op, xop, bit16, bits19_20)   \
4465
  (OP (op)            \
4466
   | (((uint64_t)(bit16) & 0x1) << 15)    \
4467
   | (((uint64_t)(bits19_20) & 0x3) << 11)  \
4468
   | (((uint64_t)(xop)) & 0x7ff))
4469
#define VX_SPE2_HH_MASK VX_SPE2_HH(0x3f, 0x7ff, 0x1, 0x3)
4470
4471
#define VX_SPE2_EVMAR(op, xop)        \
4472
  (OP (op)            \
4473
   | ((uint64_t)(0x1) << 11)      \
4474
   | (((uint64_t)(xop)) & 0x7ff))
4475
#define VX_SPE2_EVMAR_MASK        \
4476
  (VX_SPE2_EVMAR(0x3f, 0x7ff)       \
4477
   | ((uint64_t)(0x1) << 11))
4478
4479
/* A VX_MASK with the VA field fixed.  */
4480
#define VXVA_MASK (VX_MASK | (0x1f << 16))
4481
4482
/* A VX_MASK with the VB field fixed.  */
4483
#define VXVB_MASK (VX_MASK | (0x1f << 11))
4484
4485
/* A VX_MASK with the VA and VB fields fixed.  */
4486
#define VXVAVB_MASK (VX_MASK | (0x1f << 16) | (0x1f << 11))
4487
4488
/* A VX_MASK with the VD and VA fields fixed.  */
4489
#define VXVDVA_MASK (VX_MASK | (0x1f << 21) | (0x1f << 16))
4490
4491
/* A VX_MASK with a UIMM4 field.  */
4492
#define VXUIMM4_MASK (VX_MASK | (0x1 << 20))
4493
4494
/* A VX_MASK with a UIMM3 field.  */
4495
#define VXUIMM3_MASK (VX_MASK | (0x3 << 19))
4496
4497
/* A VX_MASK with a UIMM2 field.  */
4498
#define VXUIMM2_MASK (VX_MASK | (0x7 << 18))
4499
4500
/* A VX_MASK with a PS field.  */
4501
#define VXPS_MASK (VX_MASK & ~(0x1 << 9))
4502
4503
/* A VX_MASK with the VA field fixed with a PS field.  */
4504
#define VXVAPS_MASK (VXVA_MASK & ~(0x1 << 9))
4505
4506
/* A VX_MASK with the VA field fixed with a MP field.  */
4507
#define VXVAM_MASK (VXVA_MASK & ~(0x1 << 16))
4508
4509
/* A VX_MASK for instructions using a BF field.  */
4510
#define VXBF_MASK (VX_MASK | (3 << 21))
4511
4512
/* A VX_MASK for instructions with an RC field.  */
4513
#define VXRC_MASK (VX_MASK & ~(0x1f << 6))
4514
4515
/* A VX_MASK for instructions with a SH field.  */
4516
#define VXSH_MASK (VX_MASK & ~(0x7 << 6))
4517
4518
/* A VA form instruction.  */
4519
#define VXA(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x03f))
4520
4521
/* The mask for an VA form instruction.  */
4522
#define VXA_MASK VXA(0x3f, 0x3f)
4523
4524
/* A VXA_MASK with a SHB field.  */
4525
#define VXASHB_MASK (VXA_MASK | (1 << 10))
4526
4527
/* A VXR form instruction.  */
4528
#define VXR(op, xop, rc)      \
4529
  (OP (op)          \
4530
   | (((uint64_t)(rc) & 1) << 10)   \
4531
   | (((uint64_t)(xop)) & 0x3ff))
4532
4533
/* The mask for a VXR form instruction.  */
4534
#define VXR_MASK VXR(0x3f, 0x3ff, 1)
4535
4536
/* A VX form instruction with a VA tertiary opcode.  */
4537
#define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16))
4538
4539
#define VXASH(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1f) << 1))
4540
#define VXASH_MASK VXASH (0x3f, 0x1f)
4541
4542
/* An X form instruction.  */
4543
#define X(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3ff) << 1))
4544
4545
/* A X form instruction for Quad-Precision FP Instructions.  */
4546
#define XVA(op, xop, vaop) (X(op,xop) | (((vaop) & 0x1f) << 16))
4547
4548
/* An EX form instruction.  */
4549
#define EX(op, xop) (OP (op) | (((uint64_t)(xop)) & 0x7ff))
4550
4551
/* The mask for an EX form instruction.  */
4552
#define EX_MASK EX (0x3f, 0x7ff)
4553
4554
/* An XX2 form instruction.  */
4555
#define XX2(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1ff) << 2))
4556
4557
/* A XX2 form instruction with the VA bits specified.  */
4558
#define XX2VA(op, xop, vaop) (XX2(op,xop) | (((vaop) & 0x1f) << 16))
4559
4560
/* An XX2 form instruction with the M bits specified.  */
4561
#define XX2M(op, xop, m)      \
4562
  (XX2 (op, xop)        \
4563
   | (((uint64_t)(m) & 0x2) << 15)    \
4564
   | (((uint64_t)(m) & 0x1) << 11))
4565
4566
/* An XX3 form instruction.  */
4567
#define XX3(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0xff) << 3))
4568
4569
/* An XX3 form instruction with the RC bit specified.  */
4570
#define XX3RC(op, xop, rc)      \
4571
  (OP (op)          \
4572
   | (((uint64_t)(rc) & 1) << 10)   \
4573
   | ((((uint64_t)(xop)) & 0x7f) << 3))
4574
4575
/* An XX3 form instruction with the M bits specified.  */
4576
#define XX3M(op, xop, m)      \
4577
  (XX3 (op, xop)        \
4578
   | (((uint64_t)(m) & 0x2) << 15)    \
4579
   | (((uint64_t)(m) & 0x1) << 11))
4580
4581
/* A GF XX3 form instruction with the P bit specified.  */
4582
#define XX3GF(op, xop, xop1, p)     \
4583
  (XX3 (op, xop)        \
4584
   | (((uint64_t)(xop1) & 3) << 9)    \
4585
   | (((uint64_t)(p) & 1) << 8))
4586
4587
/* An XX4 form instruction.  */
4588
#define XX4(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3) << 4))
4589
4590
/* A Z form instruction.  */
4591
#define Z(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x1ff) << 1))
4592
4593
/* An X form instruction with the RC bit specified.  */
4594
#define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
4595
4596
/* A X form instruction for Quad-Precision FP Instructions with RC bit.  */
4597
#define XVARC(op, xop, vaop, rc) (XVA ((op), (xop), (vaop)) | ((rc) & 1))
4598
4599
/* An X form instruction with the RA bits specified as two ops.  */
4600
#define XMMF(op, xop, mop0, mop1)   \
4601
  (X ((op), (xop))        \
4602
   | ((mop0) & 3) << 19       \
4603
   | ((mop1) & 7) << 16)
4604
4605
/* A Z form instruction with the RC bit specified.  */
4606
#define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
4607
4608
/* The mask for an X form instruction.  */
4609
#define X_MASK XRC (0x3f, 0x3ff, 1)
4610
4611
/* The mask for an X form instruction with the BF bits specified.  */
4612
#define XBF_MASK (X_MASK | (3 << 21))
4613
4614
/* An X form instruction without the RC field specified.  */
4615
#define XRC_MASK XRC (0x3f, 0x3ff, 0)
4616
4617
/* An X form wait instruction with everything filled in except the WC
4618
   field.  */
4619
#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
4620
4621
/* An X form wait instruction with everything filled in except the WC
4622
   and PL fields.  */
4623
#define XWCPL_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | (3 << 18) | RB_MASK)
4624
4625
/* The mask for an XX1 form instruction.  */
4626
#define XX1_MASK X (0x3f, 0x3ff)
4627
4628
/* An XX1_MASK with the RB field fixed.  */
4629
#define XX1RB_MASK (XX1_MASK | RB_MASK)
4630
4631
/* The mask for an XX2 form instruction.  */
4632
#define XX2_MASK (XX2 (0x3f, 0x1ff) | (0x1f << 16))
4633
4634
/* The mask for an XX2 form instruction with the UIM bits specified.  */
4635
#define XX2UIM_MASK (XX2 (0x3f, 0x1ff) | (7 << 18))
4636
4637
/* The mask for an XX2 form instruction with the 4 UIM bits specified.  */
4638
#define XX2UIM4_MASK (XX2 (0x3f, 0x1ff) | (1 << 20))
4639
4640
/* The mask for an XX2 form instruction with the BF bits specified.  */
4641
#define XX2BF_MASK (XX2_MASK | (3 << 21) | (1))
4642
4643
/* The mask for an XX2 form instruction with the BF and DCMX bits
4644
   specified.  */
4645
#define XX2BFD_MASK (XX2 (0x3f, 0x1ff) | 1)
4646
4647
/* The mask for an XX2 form instruction with a split DCMX bits
4648
   specified.  */
4649
#define XX2DCMXS_MASK XX2 (0x3f, 0x1ee)
4650
4651
/* The mask for an XX3 form instruction.  */
4652
#define XX3_MASK XX3 (0x3f, 0xff)
4653
4654
/* The mask for an XX3 form instruction with the BF bits specified.  */
4655
#define XX3BF_MASK (XX3 (0x3f, 0xff) | (3 << 21) | (1))
4656
4657
/* An X_MASK with an accumulator register and the RA and RB fields fixed.  */
4658
#define XACC_MASK (X_MASK | RA_MASK | RB_MASK | (3 << 21))
4659
#define XDMR_MASK XACC_MASK
4660
4661
/* An X_MASK with two dense math register.  */
4662
#define XDMRDMR_MASK (X_MASK | RA_MASK | (3 << 21) | (3 << 11))
4663
4664
/* The mask for an XX3 form instruction with the DM or SHW bits
4665
   specified.  */
4666
#define XX3DM_MASK (XX3 (0x3f, 0x1f) | (1 << 10))
4667
#define XX3SHW_MASK XX3DM_MASK
4668
4669
/* The masks for X* form instructions with an ACC/DMR register.  */
4670
#define XX2ACC_MASK (XX2 (0x3f, 0x1ff) | (3 << 21) | 1)
4671
#define XX3ACC_MASK (XX3_MASK | (3 << 21) | 1)
4672
#define XX3DMR_MASK (XX3ACC_MASK | (1 << 11))
4673
#define XX2DMR_MASK (XX2ACC_MASK | (0xf << 17))
4674
#define XX3GERX_MASK (XX3ACC_MASK | (1 << 16))
4675
4676
/* The masks for XX2 AES instructions with m0, m1 bits.  */
4677
#define XX2AES_MASK (XX2 (0x3f, 0x1ff) | (0xf << 17) | 1)
4678
#define XX2AESM_MASK (XX2AES_MASK | (1 << 16) | (1 << 11))
4679
4680
/* The masks for XX3 AES instructions with m0, m1 bits.  */
4681
#define XX3AES_MASK (XX3 (0x3f, 0xff) | 1)
4682
#define XX3AESM_MASK (XX3AES_MASK | (1 << 16) | (1 << 11))
4683
4684
/* The masks for XX3 GF instructions with P bit.  */
4685
#define XX3GF_MASK (XX3 (0x3f, 0xff) & ~(1 << 8))
4686
4687
/* The mask for an XX4 form instruction.  */
4688
#define XX4_MASK XX4 (0x3f, 0x3)
4689
4690
/* An X form wait instruction with everything filled in except the WC
4691
   field.  */
4692
#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
4693
4694
/* The mask for an XMMF form instruction.  */
4695
#define XMMF_MASK (XMMF (0x3f, 0x3ff, 3, 7) | (1))
4696
4697
/* The mask for a Z form instruction.  */
4698
#define Z_MASK ZRC (0x3f, 0x1ff, 1)
4699
#define Z2_MASK ZRC (0x3f, 0xff, 1)
4700
4701
/* An X_MASK with the RA/VA field fixed.  */
4702
#define XRA_MASK (X_MASK | RA_MASK)
4703
#define XVA_MASK XRA_MASK
4704
4705
/* An XRA_MASK with the A_L/W field clear.  */
4706
#define XWRA_MASK (XRA_MASK & ~((uint64_t) 1 << 16))
4707
#define XRLA_MASK XWRA_MASK
4708
4709
/* An X_MASK with the RB field fixed.  */
4710
#define XRB_MASK (X_MASK | RB_MASK)
4711
4712
/* An X_MASK with the RT field fixed.  */
4713
#define XRT_MASK (X_MASK | RT_MASK)
4714
4715
/* An XRT_MASK mask with the 2 L bits clear.  */
4716
#define XLRT_MASK (XRT_MASK & ~((uint64_t) 0x3 << 21))
4717
4718
/* An XRT_MASK mask with the 3 L bits clear.  */
4719
#define XL3RT_MASK (XRT_MASK & ~((uint64_t) 0x7 << 21))
4720
4721
/* An X_MASK with the RA and RB fields fixed.  */
4722
#define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
4723
4724
/* An XBF_MASK with the RA and RB fields fixed.  */
4725
#define XBFRARB_MASK (XBF_MASK | RA_MASK | RB_MASK)
4726
4727
/* An XRARB_MASK, but with the L bit clear.  */
4728
#define XRLARB_MASK (XRARB_MASK & ~((uint64_t) 1 << 16))
4729
4730
/* An XRARB_MASK, but with the L bits in a darn instruction clear.  */
4731
#define XLRAND_MASK (XRARB_MASK & ~((uint64_t) 3 << 16))
4732
4733
/* An X_MASK with the RT and RA fields fixed.  */
4734
#define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
4735
4736
/* An X_MASK with the RT and RB fields fixed.  */
4737
#define XRTRB_MASK (X_MASK | RT_MASK | RB_MASK)
4738
4739
/* An XRTRA_MASK, but with L bit clear.  */
4740
#define XRTLRA_MASK (XRTRA_MASK & ~((uint64_t) 1 << 21))
4741
4742
/* An X_MASK with the RT, RA and RB fields fixed.  */
4743
#define XRTRARB_MASK (X_MASK | RT_MASK | RA_MASK | RB_MASK)
4744
4745
/* An XRTRARB_MASK, but with L bit clear.  */
4746
#define XRTLRARB_MASK (XRTRARB_MASK & ~((uint64_t) 1 << 21))
4747
4748
/* An XRTRARB_MASK, but with A bit clear.  */
4749
#define XRTARARB_MASK (XRTRARB_MASK & ~((uint64_t) 1 << 25))
4750
4751
/* An XRTRARB_MASK, but with BF bits clear.  */
4752
#define XRTBFRARB_MASK (XRTRARB_MASK & ~((uint64_t) 7 << 23))
4753
4754
/* An X form instruction with the L bit specified.  */
4755
#define XOPL(op, xop, l)      \
4756
  (X ((op), (xop))        \
4757
   | ((((uint64_t)(l)) & 1) << 21))
4758
4759
/* An X form instruction with the 2 L bits specified.  */
4760
#define XOPL2(op, xop, l)     \
4761
  (X ((op), (xop))        \
4762
   | ((((uint64_t)(l)) & 3) << 21))
4763
4764
/* An X form instruction with the 3 L bits specified.  */
4765
#define XOPL3(op, xop, l)     \
4766
  (X ((op), (xop))        \
4767
   | ((((uint64_t)(l)) & 7) << 21))
4768
4769
/* An X form instruction with the WC and PL bits specified.  */
4770
#define XWCPL(op, xop, wc, pl)      \
4771
  (XOPL3 ((op), (xop), (wc))      \
4772
   | ((((uint64_t)(pl)) & 3) << 16))
4773
4774
/* An X form instruction with the L bit and RC bit specified.  */
4775
#define XRCL(op, xop, l, rc)      \
4776
  (XRC ((op), (xop), (rc))      \
4777
   | ((((uint64_t)(l)) & 1) << 21))
4778
4779
/* An X form instruction with RT fields specified */
4780
#define XRT(op, xop, rt)      \
4781
  (X ((op), (xop))        \
4782
   | ((((uint64_t)(rt)) & 0x1f) << 21))
4783
4784
/* An X form instruction with RT and RA fields specified */
4785
#define XRTRA(op, xop, rt, ra)      \
4786
  (X ((op), (xop))        \
4787
   | ((((uint64_t)(rt)) & 0x1f) << 21)  \
4788
   | ((((uint64_t)(ra)) & 0x1f) << 16))
4789
4790
/* The mask for an X form comparison instruction.  */
4791
#define XCMP_MASK (X_MASK | (((uint64_t)1) << 22))
4792
4793
/* The mask for an X form comparison instruction with the L field
4794
   fixed.  */
4795
#define XCMPL_MASK (XCMP_MASK | (((uint64_t)1) << 21))
4796
4797
/* An X form trap instruction with the TO field specified.  */
4798
#define XTO(op, xop, to)      \
4799
  (X ((op), (xop))        \
4800
   | ((((uint64_t)(to)) & 0x1f) << 21))
4801
#define XTO_MASK (X_MASK | TO_MASK)
4802
4803
/* An X form tlb instruction with the SH field specified.  */
4804
#define XTLB(op, xop, sh)     \
4805
  (X ((op), (xop))        \
4806
   | ((((uint64_t)(sh)) & 0x1f) << 11))
4807
#define XTLB_MASK (X_MASK | SH_MASK)
4808
4809
/* An X form sync instruction.  */
4810
#define XSYNC(op, xop, l)     \
4811
  (X ((op), (xop))        \
4812
   | ((((uint64_t)(l)) & 3) << 21))
4813
4814
/* An X form sync instruction with everything filled in except the LS
4815
   field.  */
4816
#define XSYNC_MASK (0xff9fffff)
4817
4818
/* An X form sync instruction with everything filled in except the L
4819
   and E fields.  */
4820
#define XSYNCLE_MASK (0xff90ffff)
4821
4822
/* An X form sync instruction.  */
4823
#define XSYNCLS(op, xop, l, s)      \
4824
  (X ((op), (xop))        \
4825
   | ((((uint64_t)(l)) & 7) << 21)    \
4826
   | ((((uint64_t)(s)) & 3) << 16))
4827
4828
/* An X form sync instruction with everything filled in except the
4829
   L and SC fields.  */
4830
#define XSYNCLS_MASK (0xff1cffff)
4831
4832
/* An X_MASK, but with the EH bit clear.  */
4833
#define XEH_MASK (X_MASK & ~((uint64_t )1))
4834
4835
/* An X form AltiVec dss instruction.  */
4836
#define XDSS(op, xop, a) (X ((op), (xop)) | ((((uint64_t)(a)) & 1) << 25))
4837
#define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
4838
4839
/* An XFL form instruction.  */
4840
#define XFL(op, xop, rc)      \
4841
  (OP (op)          \
4842
   | ((((uint64_t)(xop)) & 0x3ff) << 1) \
4843
   | (((uint64_t)(rc)) & 1))
4844
#define XFL_MASK XFL (0x3f, 0x3ff, 1)
4845
4846
/* An X form isel instruction.  */
4847
#define XISEL(op, xop, cr)  (OP (op) | ((xop) << 1) | ((cr) << 6))
4848
#define XISEL_MASK  XISEL(0x3f, 0x1f, 0)
4849
4850
/* An XL form instruction with the LK field set to 0.  */
4851
#define XL(op, xop) (OP (op) | ((((uint64_t)(xop)) & 0x3ff) << 1))
4852
4853
/* An XL form instruction which uses the LK field.  */
4854
#define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
4855
4856
/* The mask for an XL form instruction.  */
4857
#define XL_MASK XLLK (0x3f, 0x3ff, 1)
4858
4859
/* An XL_MASK with the RT, RA and RB fields fixed, but S bit clear.  */
4860
#define XLS_MASK ((XL_MASK | RT_MASK | RA_MASK | RB_MASK) & ~(1 << 11))
4861
4862
/* An XL form instruction which explicitly sets the BO field.  */
4863
#define XLO(op, bo, xop, lk) \
4864
  (XLLK ((op), (xop), (lk)) | ((((uint64_t)(bo)) & 0x1f) << 21))
4865
#define XLO_MASK (XL_MASK | BO_MASK)
4866
4867
/* An XL form instruction which sets the BO field and the condition
4868
   bits of the BI field.  */
4869
#define XLOCB(op, bo, cb, xop, lk) \
4870
  (XLO ((op), (bo), (xop), (lk)) | ((((uint64_t)(cb)) & 3) << 16))
4871
4872
/* An XL_MASK with the BB field fixed.  */
4873
#define XLBB_MASK (XL_MASK | BB_MASK)
4874
4875
/* A mask for branch instructions using the BH field.  */
4876
#define XLBH_MASK (XL_MASK | (BB_MASK & ~(3 << 11)))
4877
4878
/* An XLBH_MASK with the BO field fixed.  */
4879
#define XLBOBB_MASK (XLBH_MASK | BO_MASK)
4880
4881
/* An XLBH_MASK with the BO and BI fields fixed.  */
4882
#define XLBOBIBB_MASK (XLBOBB_MASK | BI_MASK)
4883
4884
/* An XLBH_MASK with the BO and condition bits of the BI fields fixed.  */
4885
#define XLBOCBBB_MASK (XLBOBB_MASK | (3 << 16))
4886
4887
/* An X form mbar instruction with MO field.  */
4888
#define XMBAR(op, xop, mo)      \
4889
  (X ((op), (xop))        \
4890
   | ((((uint64_t)(mo)) & 1) << 21))
4891
4892
/* An XO form instruction.  */
4893
#define XO(op, xop, oe, rc)     \
4894
  (OP (op)          \
4895
   | ((((uint64_t)(xop)) & 0x1ff) << 1) \
4896
   | ((((uint64_t)(oe)) & 1) << 10) \
4897
   | (((unsigned long)(rc)) & 1))
4898
#define XO_MASK XO (0x3f, 0x1ff, 1, 1)
4899
#define XOL_MASK XO (0x3f, 0x1ff, 0, 1)
4900
4901
/* An XO_MASK with the RB field fixed.  */
4902
#define XORB_MASK (XO_MASK | RB_MASK)
4903
4904
/* An XOPS form instruction for paired singles.  */
4905
#define XOPS(op, xop, rc)     \
4906
  (OP (op)          \
4907
   | ((((uint64_t)(xop)) & 0x3ff) << 1) \
4908
   | (((uint64_t)(rc)) & 1))
4909
#define XOPS_MASK XOPS (0x3f, 0x3ff, 1)
4910
4911
4912
/* An XS form instruction.  */
4913
#define XS(op, xop, rc)       \
4914
  (OP (op)          \
4915
   | ((((uint64_t)(xop)) & 0x1ff) << 2) \
4916
   | (((uint64_t)(rc)) & 1))
4917
#define XS_MASK XS (0x3f, 0x1ff, 1)
4918
4919
/* A mask for the FXM version of an XFX form instruction.  */
4920
#define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
4921
4922
/* An XFX form instruction with the FXM field filled in.  */
4923
#define XFXM(op, xop, fxm, p4)      \
4924
  (X ((op), (xop))        \
4925
   | ((((uint64_t)(fxm)) & 0xff) << 12) \
4926
   | ((uint64_t)(p4) << 20))
4927
4928
/* An XFX form instruction with the SPR field filled in.  */
4929
#define XSPR(op, xop, spr)      \
4930
  (X ((op), (xop))        \
4931
   | ((((uint64_t)(spr)) & 0x1f) << 16) \
4932
   | ((((uint64_t)(spr)) & 0x3e0) << 6))
4933
#define XSPR_MASK (X_MASK | SPR_MASK)
4934
4935
/* An XFX form instruction with the SPR field filled in except for the
4936
   SPRBAT field.  */
4937
#define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
4938
4939
/* An XFX form instruction with the SPR field filled in except for the
4940
   SPRGQR field.  */
4941
#define XSPRGQR_MASK (XSPR_MASK &~ SPRGQR_MASK)
4942
4943
/* An XFX form instruction with the SPR field filled in except for the
4944
   SPRG field.  */
4945
#define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16))
4946
4947
/* An X form instruction with everything filled in except the E field.  */
4948
#define XE_MASK (0xffff7fff)
4949
4950
/* An X form user context instruction.  */
4951
#define XUC(op, xop)  (OP (op) | (((uint64_t)(xop)) & 0x1f))
4952
#define XUC_MASK      XUC(0x3f, 0x1f)
4953
4954
/* An XW form instruction.  */
4955
#define XW(op, xop, rc)       \
4956
  (OP (op)          \
4957
   | ((((uint64_t)(xop)) & 0x3f) << 1)  \
4958
   | ((rc) & 1))
4959
/* The mask for a G form instruction. rc not supported at present.  */
4960
#define XW_MASK XW (0x3f, 0x3f, 0)
4961
4962
/* An APU form instruction.  */
4963
#define APU(op, xop, rc)      \
4964
  (OP (op)          \
4965
   | (((uint64_t)(xop)) & 0x3ff) << 1 \
4966
   | ((rc) & 1))
4967
4968
/* The mask for an APU form instruction.  */
4969
#define APU_MASK APU (0x3f, 0x3ff, 1)
4970
#define APU_RT_MASK (APU_MASK | RT_MASK)
4971
#define APU_RA_MASK (APU_MASK | RA_MASK)
4972
4973
/* An SVL form instruction. */
4974
#define SVL(op, xop, rc)      \
4975
  (OP (op)          \
4976
   | ((((uint64_t)(xop)) & 0x1f) << 1)    \
4977
   | (((uint64_t)(rc)) & 1))
4978
#define SVL_MASK  SVL (0x3f, 0x1f, 1)
4979
4980
/* An SVM form instruction. */
4981
#define SVM(op, xop)        \
4982
  (OP (op)          \
4983
   | (((uint64_t)(xop)) & 0x3f))
4984
#define SVM_MASK  SVM (0x3f, 0x3f)
4985
4986
/* An SVRM form instruction. */
4987
#define SVRM(op, xop)       \
4988
  (OP (op)          \
4989
   | (((uint64_t)(xop)) & 0x3f))
4990
#define SVRM_MASK SVRM (0x3f, 0x3f)
4991
4992
/* An SVI form instruction. */
4993
#define SVI(op, xop)        \
4994
  (OP (op)          \
4995
   | (((uint64_t)(xop)) & 0x3f))
4996
#define SVI_MASK  SVI (0x3f, 0x3f)
4997
4998
/* The BO encodings used in extended conditional branch mnemonics.  */
4999
#define BODNZF  (0x0)
5000
#define BODNZFP (0x1)
5001
#define BODZF (0x2)
5002
#define BODZFP  (0x3)
5003
#define BODNZT  (0x8)
5004
#define BODNZTP (0x9)
5005
#define BODZT (0xa)
5006
#define BODZTP  (0xb)
5007
5008
#define BOF (0x4)
5009
#define BOFP  (0x5)
5010
#define BOFM4 (0x6)
5011
#define BOFP4 (0x7)
5012
#define BOT (0xc)
5013
#define BOTP  (0xd)
5014
#define BOTM4 (0xe)
5015
#define BOTP4 (0xf)
5016
5017
#define BODNZ (0x10)
5018
#define BODNZP  (0x11)
5019
#define BODZ  (0x12)
5020
#define BODZP (0x13)
5021
#define BODNZM4 (0x18)
5022
#define BODNZP4 (0x19)
5023
#define BODZM4  (0x1a)
5024
#define BODZP4  (0x1b)
5025
5026
#define BOU (0x14)
5027
5028
/* The BO16 encodings used in extended VLE conditional branch mnemonics.  */
5029
#define BO16F   (0x0)
5030
#define BO16T   (0x1)
5031
5032
/* The BO32 encodings used in extended VLE conditional branch mnemonics.  */
5033
#define BO32F   (0x0)
5034
#define BO32T   (0x1)
5035
#define BO32DNZ (0x2)
5036
#define BO32DZ  (0x3)
5037
5038
/* The BI condition bit encodings used in extended conditional branch
5039
   mnemonics.  */
5040
#define CBLT  (0)
5041
#define CBGT  (1)
5042
#define CBEQ  (2)
5043
#define CBSO  (3)
5044
5045
/* The TO encodings used in extended trap mnemonics.  */
5046
#define TOLGT (0x1)
5047
#define TOLLT (0x2)
5048
#define TOEQ  (0x4)
5049
#define TOLGE (0x5)
5050
#define TOLNL (0x5)
5051
#define TOLLE (0x6)
5052
#define TOLNG (0x6)
5053
#define TOGT  (0x8)
5054
#define TOGE  (0xc)
5055
#define TONL  (0xc)
5056
#define TOLT  (0x10)
5057
#define TOLE  (0x14)
5058
#define TONG  (0x14)
5059
#define TONE  (0x18)
5060
#define TOU (0x1f)
5061

5062
/* Smaller names for the flags so each entry in the opcodes table will
5063
   fit on a single line.  */
5064
#undef  PPC
5065
#define PPC PPC_OPCODE_PPC
5066
#define PPCCOM  PPC_OPCODE_PPC | PPC_OPCODE_COMMON
5067
#define POWER4  PPC_OPCODE_POWER4
5068
#define POWER5  PPC_OPCODE_POWER5
5069
#define POWER6  PPC_OPCODE_POWER6
5070
#define POWER7  PPC_OPCODE_POWER7
5071
#define POWER8  PPC_OPCODE_POWER8
5072
#define POWER9  PPC_OPCODE_POWER9
5073
#define POWER10 PPC_OPCODE_POWER10
5074
#define FUTURE  PPC_OPCODE_FUTURE
5075
#define CELL  PPC_OPCODE_CELL
5076
#define PPC64 PPC_OPCODE_64 | PPC_OPCODE_64_BRIDGE
5077
#define NON32 (PPC_OPCODE_64 | PPC_OPCODE_POWER4  \
5078
     | PPC_OPCODE_EFS | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
5079
#define PPC403  PPC_OPCODE_403
5080
#define PPC405  PPC_OPCODE_405
5081
#define PPC440  PPC_OPCODE_440
5082
#define PPC464  PPC440
5083
#define PPC476  PPC_OPCODE_476
5084
#define PPC750  PPC_OPCODE_750
5085
#define GEKKO PPC_OPCODE_750
5086
#define BROADWAY PPC_OPCODE_750
5087
#define PPC7450 PPC_OPCODE_7450
5088
#define PPC860  PPC_OPCODE_860
5089
#define PPCPS PPC_OPCODE_PPCPS
5090
#define PPCVEC  PPC_OPCODE_ALTIVEC
5091
#define PPCVEC2 (PPC_OPCODE_POWER8 | PPC_OPCODE_E6500)
5092
#define PPCVEC3 PPC_OPCODE_POWER9
5093
#define PPCVSX  PPC_OPCODE_VSX
5094
#define PPCVSX2 PPC_OPCODE_POWER8
5095
#define PPCVSX3 PPC_OPCODE_POWER9
5096
#define PPCVSX4 PPC_OPCODE_POWER10
5097
#define PPCVSXF PPC_OPCODE_FUTURE
5098
#define POWER PPC_OPCODE_POWER
5099
#define POWER2  PPC_OPCODE_POWER | PPC_OPCODE_POWER2
5100
#define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
5101
#define PPCPWR2 (PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 \
5102
     | PPC_OPCODE_COMMON)
5103
#define COM PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
5104
#define M601  PPC_OPCODE_POWER | PPC_OPCODE_601
5105
#define PWRCOM  PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
5106
#define MFDEC1  PPC_OPCODE_POWER
5107
#define MFDEC2  (PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE \
5108
     | PPC_OPCODE_TITAN)
5109
#define BOOKE PPC_OPCODE_BOOKE
5110
#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
5111
#define PPCE300 PPC_OPCODE_E300
5112
#define PPCSPE  PPC_OPCODE_SPE
5113
#define PPCSPE2 PPC_OPCODE_SPE2
5114
#define PPCISEL PPC_OPCODE_ISEL
5115
#define PPCEFS  PPC_OPCODE_EFS
5116
#define PPCEFS2 PPC_OPCODE_EFS2
5117
#define PPCBRLK PPC_OPCODE_BRLOCK
5118
#define PPCPMR  PPC_OPCODE_PMR
5119
#define PPCTMR  PPC_OPCODE_TMR
5120
#define PPCCHLK PPC_OPCODE_CACHELCK
5121
#define PPCRFMCI PPC_OPCODE_RFMCI
5122
#define E500MC  PPC_OPCODE_E500MC
5123
#define PPCA2 PPC_OPCODE_A2
5124
#define TITAN PPC_OPCODE_TITAN
5125
#define MULHW PPC_OPCODE_405 | PPC_OPCODE_440 | PPC_OPCODE_476 | TITAN
5126
#define E500  PPC_OPCODE_E500
5127
#define E6500 PPC_OPCODE_E6500
5128
#define PPCVLE  PPC_OPCODE_VLE
5129
#define PPCHTM  PPC_OPCODE_POWER8
5130
#define E200Z4  PPC_OPCODE_E200Z4
5131
#define PPCLSP  PPC_OPCODE_LSP
5132
#define SVP64 PPC_OPCODE_SVP64
5133
/* Used to mark extended mnemonic in deprecated field so that -Mraw
5134
   won't use this variant in disassembly.  */
5135
#define EXT PPC_OPCODE_RAW
5136

5137
/* The opcode table.
5138
5139
   The format of the opcode table is:
5140
5141
   NAME   OPCODE    MASK       FLAGS  ANTI    {OPERANDS}
5142
5143
   NAME is the name of the instruction.
5144
   OPCODE is the instruction opcode.
5145
   MASK is the opcode mask; this is used to tell the disassembler
5146
     which bits in the actual opcode must match OPCODE.
5147
   FLAGS are flags indicating which processors support the instruction.
5148
   ANTI indicates which processors don't support the instruction.
5149
   OPERANDS is the list of operands.
5150
5151
   The disassembler reads the table in order and prints the first
5152
   instruction which matches, so this table is sorted to put more
5153
   specific instructions before more general instructions.
5154
5155
   This table must be sorted by major opcode.  Please try to keep it
5156
   vaguely sorted within major opcode too, except of course where
5157
   constrained otherwise by disassembler operation.  */
5158
5159
const struct powerpc_opcode powerpc_opcodes[] = {
5160
{"attn",  X(0,256), X_MASK,   POWER4|PPCA2, PPC476|PPCVLE,  {0}},
5161
{"tdlgti",  OPTO(2,TOLGT),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5162
{"tdllti",  OPTO(2,TOLLT),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5163
{"tdeqi", OPTO(2,TOEQ), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5164
{"tdlgei",  OPTO(2,TOLGE),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5165
{"tdlnli",  OPTO(2,TOLNL),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5166
{"tdllei",  OPTO(2,TOLLE),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5167
{"tdlngi",  OPTO(2,TOLNG),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5168
{"tdgti", OPTO(2,TOGT), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5169
{"tdgei", OPTO(2,TOGE), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5170
{"tdnli", OPTO(2,TONL), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5171
{"tdlti", OPTO(2,TOLT), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5172
{"tdlei", OPTO(2,TOLE), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5173
{"tdngi", OPTO(2,TONG), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5174
{"tdnei", OPTO(2,TONE), OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5175
{"tdui",  OPTO(2,TOU),  OPTO_MASK,   PPC64, PPCVLE|EXT, {RA, SI}},
5176
{"tdi",   OP(2),    OP_MASK,     PPC64, PPCVLE,   {TO, RA, SI}},
5177
5178
{"twlgti",  OPTO(3,TOLGT),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5179
{"tlgti", OPTO(3,TOLGT),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5180
{"twllti",  OPTO(3,TOLLT),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5181
{"tllti", OPTO(3,TOLLT),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5182
{"tweqi", OPTO(3,TOEQ), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5183
{"teqi",  OPTO(3,TOEQ), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5184
{"twlgei",  OPTO(3,TOLGE),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5185
{"tlgei", OPTO(3,TOLGE),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5186
{"twlnli",  OPTO(3,TOLNL),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5187
{"tlnli", OPTO(3,TOLNL),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5188
{"twllei",  OPTO(3,TOLLE),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5189
{"tllei", OPTO(3,TOLLE),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5190
{"twlngi",  OPTO(3,TOLNG),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5191
{"tlngi", OPTO(3,TOLNG),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5192
{"twgti", OPTO(3,TOGT), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5193
{"tgti",  OPTO(3,TOGT), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5194
{"twgei", OPTO(3,TOGE), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5195
{"tgei",  OPTO(3,TOGE), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5196
{"twnli", OPTO(3,TONL), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5197
{"tnli",  OPTO(3,TONL), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5198
{"twlti", OPTO(3,TOLT), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5199
{"tlti",  OPTO(3,TOLT), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5200
{"twlei", OPTO(3,TOLE), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5201
{"tlei",  OPTO(3,TOLE), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5202
{"twngi", OPTO(3,TONG), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5203
{"tngi",  OPTO(3,TONG), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5204
{"twnei", OPTO(3,TONE), OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5205
{"tnei",  OPTO(3,TONE), OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5206
{"twui",  OPTO(3,TOU),  OPTO_MASK,   PPCCOM,  PPCVLE|EXT, {RA, SI}},
5207
{"tui",   OPTO(3,TOU),  OPTO_MASK,   PWRCOM,  PPCVLE|EXT, {RA, SI}},
5208
{"twi",   OP(3),    OP_MASK,     PPCCOM,  PPCVLE,   {TO, RA, SI}},
5209
{"ti",    OP(3),    OP_MASK,     PWRCOM,  PPCVLE,   {TO, RA, SI}},
5210
5211
{"ps_cmpu0",  X  (4,   0),  XBF_MASK,    PPCPS, 0,    {BF, FRA, FRB}},
5212
{"vaddubm", VX (4,   0),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5213
{"vmul10cuq", VX (4,   1),  VXVB_MASK,   PPCVEC3, 0,    {VD, VA}},
5214
{"vmaxub",  VX (4,   2),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5215
{"vrlb",  VX (4,   4),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5216
{"vrlq",  VX (4,   5),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5217
{"vcmpequb",  VXR(4,   6,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5218
{"vcmpneb", VXR(4,   7,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5219
{"vmuloub", VX (4,   8),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5220
{"vaddfp",  VX (4,  10),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5221
{"vdivuq",  VX (4,  11),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5222
{"psq_lx",  XW (4,   6,0),  XW_MASK,     PPCPS, 0,    {FRT,RA,RB,PSWM,PSQM}},
5223
{"vmrghb",  VX (4,  12),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5224
{"vstribl", VXVA(4,13,0), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5225
{"vstribr", VXVA(4,13,1), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5226
{"vstrihl", VXVA(4,13,2), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5227
{"vstrihr", VXVA(4,13,3), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5228
{"psq_stx", XW (4,   7,0),  XW_MASK,     PPCPS, 0,    {FRS,RA,RB,PSWM,PSQM}},
5229
{"vpkuhum", VX (4,  14),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5230
{"vinsbvlx",  VX (4,  15),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5231
{"mulhhwu", XRC(4,   8,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5232
{"mulhhwu.",  XRC(4,   8,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5233
{"mtvsrbmi",  DX (4,10),  DX_MASK,     POWER10, 0,    {VD, DXD}},
5234
{"ps_sum0", A  (4,  10,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5235
{"ps_sum0.",  A  (4,  10,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5236
{"vsldbi",  VX (4,  22),  VXSH_MASK,   POWER10, 0,    {VD, VA, VB, SH3}},
5237
{"ps_sum1", A  (4,  11,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5238
{"ps_sum1.",  A  (4,  11,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5239
{"vextdubvlx",  VX (4,  24),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5240
{"ps_muls0",  A  (4,  12,0),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5241
{"machhwu", XO (4,  12,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5242
{"vextdubvrx",  VX (4,  25),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5243
{"ps_muls0.", A  (4,  12,1),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5244
{"machhwu.",  XO (4,  12,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5245
{"vextduhvlx",  VX (4,  26),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5246
{"ps_muls1",  A  (4,  13,0),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5247
{"vextduhvrx",  VX (4,  27),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5248
{"ps_muls1.", A  (4,  13,1),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5249
{"vextduwvlx",  VX (4,  28),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5250
{"ps_madds0", A  (4,  14,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5251
{"vextduwvrx",  VX (4,  29),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5252
{"ps_madds0.",  A  (4,  14,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5253
{"vextddvlx", VX (4,  30),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5254
{"ps_madds1", A  (4,  15,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5255
{"vextddvrx", VX (4,  31),  VXRC_MASK,   POWER10, 0,    {VD, VA, VB, RC}},
5256
{"ps_madds1.",  A  (4,  15,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5257
{"vmhaddshs", VXA(4,  32),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5258
{"vmhraddshs",  VXA(4,  33),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5259
{"vmladduhm", VXA(4,  34),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5260
{"vmsumudm",  VXA(4,  35),  VXA_MASK,    PPCVEC3, 0,    {VD, VA, VB, VC}},
5261
{"ps_div",  A  (4,  18,0),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5262
{"vmsumcud",  VXA(4,  23),  VXA_MASK,    POWER10, 0,    {VD, VA, VB, VC}},
5263
{"vmsumubm",  VXA(4,  36),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5264
{"ps_div.", A  (4,  18,1),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5265
{"vmsummbm",  VXA(4,  37),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5266
{"vmsumuhm",  VXA(4,  38),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5267
{"vmsumuhs",  VXA(4,  39),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5268
{"ps_sub",  A  (4,  20,0),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5269
{"vmsumshm",  VXA(4,  40),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5270
{"ps_sub.", A  (4,  20,1),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5271
{"vmsumshs",  VXA(4,  41),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5272
{"ps_add",  A  (4,  21,0),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5273
{"vsel",  VXA(4,  42),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5274
{"ps_add.", A  (4,  21,1),  AFRC_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5275
{"vperm", VXA(4,  43),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VB, VC}},
5276
{"vsldoi",  VXA(4,  44),  VXASHB_MASK, PPCVEC,  0,    {VD, VA, VB, SHB}},
5277
{"vpermxor",  VXA(4,  45),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5278
{"ps_sel",  A  (4,  23,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5279
{"vmaddfp", VXA(4,  46),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VC, VB}},
5280
{"ps_sel.", A  (4,  23,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5281
{"vnmsubfp",  VXA(4,  47),  VXA_MASK,    PPCVEC,  0,    {VD, VA, VC, VB}},
5282
{"ps_res",  A  (4,  24,0), AFRAFRC_MASK, PPCPS, 0,    {FRT, FRB}},
5283
{"maddhd",  VXA(4,  48),  VXA_MASK,    POWER9,  0,    {RT, RA, RB, RC}},
5284
{"ps_res.", A  (4,  24,1), AFRAFRC_MASK, PPCPS, 0,    {FRT, FRB}},
5285
{"maddhdu", VXA(4,  49),  VXA_MASK,    POWER9,  0,    {RT, RA, RB, RC}},
5286
{"ps_mul",  A  (4,  25,0),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5287
{"ps_mul.", A  (4,  25,1),  AFRB_MASK,   PPCPS, 0,    {FRT, FRA, FRC}},
5288
{"maddld",  VXA(4,  51),  VXA_MASK,    POWER9,  0,    {RT, RA, RB, RC}},
5289
{"ps_rsqrte", A  (4,  26,0), AFRAFRC_MASK, PPCPS, 0,    {FRT, FRB}},
5290
{"ps_rsqrte.",  A  (4,  26,1), AFRAFRC_MASK, PPCPS, 0,    {FRT, FRB}},
5291
{"ps_msub", A  (4,  28,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5292
{"ps_msub.",  A  (4,  28,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5293
{"ps_madd", A  (4,  29,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5294
{"ps_madd.",  A  (4,  29,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5295
{"vpermr",  VXA(4,  59),  VXA_MASK,    PPCVEC3, 0,    {VD, VA, VB, VC}},
5296
{"ps_nmsub",  A  (4,  30,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5297
{"vaddeuqm",  VXA(4,  60),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5298
{"ps_nmsub.", A  (4,  30,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5299
{"vaddecuq",  VXA(4,  61),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5300
{"ps_nmadd",  A  (4,  31,0),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5301
{"vsubeuqm",  VXA(4,  62),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5302
{"ps_nmadd.", A  (4,  31,1),  A_MASK,      PPCPS, 0,    {FRT, FRA, FRC, FRB}},
5303
{"vsubecuq",  VXA(4,  63),  VXA_MASK,    PPCVEC2, 0,    {VD, VA, VB, VC}},
5304
{"ps_cmpo0",  X  (4,  32),  XBF_MASK,    PPCPS, 0,    {BF, FRA, FRB}},
5305
{"vadduhm", VX (4,  64),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5306
{"vmul10ecuq",  VX (4,  65),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5307
{"vmaxuh",  VX (4,  66),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5308
{"vrlh",  VX (4,  68),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5309
{"vrlqmi",  VX (4,  69),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5310
{"vcmpequh",  VXR(4,  70,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5311
{"vcmpneh", VXR(4,  71,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5312
{"vmulouh", VX (4,  72),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5313
{"vsubfp",  VX (4,  74),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5314
{"psq_lux", XW (4,  38,0),  XW_MASK,     PPCPS, 0,    {FRT,RA,RB,PSWM,PSQM}},
5315
{"vmrghh",  VX (4,  76),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5316
{"psq_stux",  XW (4,  39,0),  XW_MASK,     PPCPS, 0,    {FRS,RA,RB,PSWM,PSQM}},
5317
{"vpkuwum", VX (4,  78),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5318
{"vinshvlx",  VX (4,  79),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5319
{"ps_neg",  XRC(4,  40,0),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5320
{"mulhhw",  XRC(4,  40,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5321
{"ps_neg.", XRC(4,  40,1),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5322
{"mulhhw.", XRC(4,  40,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5323
{"machhw",  XO (4,  44,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5324
{"machhw.", XO (4,  44,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5325
{"nmachhw", XO (4,  46,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5326
{"nmachhw.",  XO (4,  46,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5327
{"ps_cmpu1",  X  (4,  64),  XBF_MASK,    PPCPS, 0,    {BF, FRA, FRB}},
5328
{"vadduwm", VX (4,  128), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5329
{"vmaxuw",  VX (4,  130), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5330
{"vrlw",  VX (4,  132), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5331
{"vrlwmi",  VX (4,  133), VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5332
{"vcmpequw",  VXR(4,  134,0), VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5333
{"vcmpnew", VXR(4,  135,0), VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5334
{"vmulouw", VX (4,  136), VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5335
{"vmuluwm", VX (4,  137), VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5336
{"vdivuw",  VX (4,  139), VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5337
{"vmrghw",  VX (4,  140), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5338
{"vpkuhus", VX (4,  142), VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5339
{"vinswvlx",  VX (4,  143), VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5340
{"ps_mr", XRC(4,  72,0),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5341
{"ps_mr.",  XRC(4,  72,1),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5342
{"machhwsu",  XO (4,  76,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5343
{"machhwsu.", XO (4,  76,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5344
{"ps_cmpo1",  X  (4,  96),  XBF_MASK,    PPCPS, 0,    {BF, FRA, FRB}},
5345
{"vaddudm", VX (4, 192),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5346
{"vmaxud",  VX (4, 194),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5347
{"vrld",  VX (4, 196),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5348
{"vrldmi",  VX (4, 197),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5349
{"vcmpeqfp",  VXR(4, 198,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5350
{"vcmpequd",  VXR(4, 199,0),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
5351
{"vmuloud", VX (4, 200),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5352
{"vdivud",  VX (4, 203),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5353
{"vpkuwus", VX (4, 206),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5354
{"vinsw", VX (4, 207),   VXUIMM4_MASK, POWER10, 0,    {VD, RB, UIMM4}},
5355
{"machhws", XO (4, 108,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5356
{"machhws.",  XO (4, 108,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5357
{"nmachhws",  XO (4, 110,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5358
{"nmachhws.", XO (4, 110,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5359
{"vadduqm", VX (4, 256),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5360
{"vcmpuq",  VX (4, 257),  VXBF_MASK,   POWER10, 0,    {BF, VA, VB}},
5361
{"vmaxsb",  VX (4, 258),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5362
{"vslb",  VX (4, 260),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5363
{"vslq",  VX (4, 261),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5364
{"vcmpnezb",  VXR(4, 263,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5365
{"vmulosb", VX (4, 264),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5366
{"vrefp", VX (4, 266),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5367
{"vdivsq",  VX (4, 267),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5368
{"vmrglb",  VX (4, 268),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5369
{"vpkshus", VX (4, 270),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5370
{"vinsbvrx",  VX (4, 271),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5371
{"ps_nabs", XRC(4, 136,0),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5372
{"mulchwu", XRC(4, 136,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5373
{"ps_nabs.",  XRC(4, 136,1),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5374
{"mulchwu.",  XRC(4, 136,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5375
{"macchwu", XO (4, 140,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5376
{"macchwu.",  XO (4, 140,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5377
{"vaddcuq", VX (4, 320),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5378
{"vcmpsq",  VX (4, 321),  VXBF_MASK,   POWER10, 0,    {BF, VA, VB}},
5379
{"vmaxsh",  VX (4, 322),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5380
{"vslh",  VX (4, 324),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5381
{"vrlqnm",  VX (4, 325),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5382
{"vcmpnezh",  VXR(4, 327,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5383
{"vmulosh", VX (4, 328),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5384
{"vrsqrtefp", VX (4, 330),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5385
{"vmrglh",  VX (4, 332),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5386
{"vpkswus", VX (4, 334),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5387
{"vinshvrx",  VX (4, 335),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5388
{"mulchw",  XRC(4, 168,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5389
{"mulchw.", XRC(4, 168,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5390
{"macchw",  XO (4, 172,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5391
{"macchw.", XO (4, 172,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5392
{"nmacchw", XO (4, 174,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5393
{"nmacchw.",  XO (4, 174,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5394
{"vaddcuw", VX (4, 384),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5395
{"vmaxsw",  VX (4, 386),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5396
{"vslw",  VX (4, 388),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5397
{"vrlwnm",  VX (4, 389),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5398
{"vcmpnezw",  VXR(4, 391,0),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5399
{"vmulosw", VX (4, 392),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5400
{"vexptefp",  VX (4, 394),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5401
{"vdivsw",  VX (4, 395),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5402
{"vmrglw",  VX (4, 396),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5403
{"vclrlb",  VX (4, 397),  VX_MASK,     POWER10, 0,    {VD, VA, RB}},
5404
{"vpkshss", VX (4, 398),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5405
{"vinswvrx",  VX (4, 399),  VX_MASK,     POWER10, 0,    {VD, RA, VB}},
5406
{"macchwsu",  XO (4, 204,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5407
{"macchwsu.", XO (4, 204,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5408
{"vmaxsd",  VX (4, 450),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5409
{"vsl",   VX (4, 452),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5410
{"vrldnm",  VX (4, 453),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5411
{"vcmpgefp",  VXR(4, 454,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5412
{"vcmpequq",  VXR(4, 455,0),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
5413
{"vmulosd", VX (4, 456),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5414
{"vmulld",  VX (4, 457),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5415
{"vlogefp", VX (4, 458),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5416
{"vdivsd",  VX (4, 459),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5417
{"vclrrb",  VX (4, 461),  VX_MASK,     POWER10, 0,    {VD, VA, RB}},
5418
{"vpkswss", VX (4, 462),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5419
{"vinsd", VX (4, 463),   VXUIMM4_MASK, POWER10, 0,    {VD, RB, UIMM4}},
5420
{"macchws", XO (4, 236,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5421
{"macchws.",  XO (4, 236,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5422
{"nmacchws",  XO (4, 238,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5423
{"nmacchws.", XO (4, 238,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5424
{"evaddw",  VX (4, 512),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5425
{"vaddubs", VX (4, 512),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5426
{"vmul10uq",  VX (4, 513),  VXVB_MASK,   PPCVEC3, 0,    {VD, VA}},
5427
{"evaddiw", VX (4, 514),  VX_MASK,     PPCSPE,  0,    {RS, RB, UIMM}},
5428
{"vminub",  VX (4, 514),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5429
{"evsubw",  VX (4, 516),  VX_MASK,     PPCSPE,  EXT,    {RS, RB, RA}},
5430
{"evsubfw", VX (4, 516),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5431
{"vsrb",  VX (4, 516),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5432
{"vsrq",  VX (4, 517),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5433
{"evsubiw", VX (4, 518),  VX_MASK,     PPCSPE,  EXT,    {RS, RB, UIMM}},
5434
{"evsubifw",  VX (4, 518),  VX_MASK,     PPCSPE,  0,    {RS, UIMM, RB}},
5435
{"vcmpgtub",  VXR(4, 518,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5436
{"evabs", VX (4, 520),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5437
{"vmuleub", VX (4, 520),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5438
{"evneg", VX (4, 521),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5439
{"evextsb", VX (4, 522),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5440
{"vrfin", VX (4, 522),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5441
{"vdiveuq", VX (4, 523),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5442
{"evextsh", VX (4, 523),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5443
{"evrndw",  VX (4, 524),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5444
{"vspltb",  VX (4, 524),   VXUIMM4_MASK, PPCVEC,  0,    {VD, VB, UIMM4}},
5445
{"vextractub",  VX (4, 525),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5446
{"evcntlzw",  VX (4, 525),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5447
{"evcntlsw",  VX (4, 526),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5448
{"vupkhsb", VX (4, 526),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5449
{"vinsblx", VX (4, 527),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5450
{"brinc", VX (4, 527),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5451
{"ps_abs",  XRC(4, 264,0),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5452
{"ps_abs.", XRC(4, 264,1),  XRA_MASK,    PPCPS, 0,    {FRT, FRB}},
5453
{"evand", VX (4, 529),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5454
{"evandc",  VX (4, 530),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5455
{"vsrdbi",  VX (4, 534),  VXSH_MASK,   POWER10, 0,    {VD, VA, VB, SH3}},
5456
{"evxor", VX (4, 534),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5457
{"evmr",  VX (4, 535),  VX_MASK,     PPCSPE,  EXT,    {RS, RAB}},
5458
{"evor",  VX (4, 535),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5459
{"evnot", VX (4, 536),  VX_MASK,     PPCSPE,  EXT,    {RS, RAB}},
5460
{"evnor", VX (4, 536),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5461
{"get",   APU(4, 268,0),  APU_RA_MASK, PPC405,  0,    {RT, FSL}},
5462
{"eveqv", VX (4, 537),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5463
{"evorc", VX (4, 539),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5464
{"evnand",  VX (4, 542),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5465
{"evsrwu",  VX (4, 544),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5466
{"evsrws",  VX (4, 545),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5467
{"evsrwiu", VX (4, 546),  VX_MASK,     PPCSPE,  0,    {RS, RA, EVUIMM}},
5468
{"evsrwis", VX (4, 547),  VX_MASK,     PPCSPE,  0,    {RS, RA, EVUIMM}},
5469
{"evslw", VX (4, 548),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5470
{"evslwi",  VX (4, 550),  VX_MASK,     PPCSPE,  0,    {RS, RA, EVUIMM}},
5471
{"evrlw", VX (4, 552),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5472
{"evsplati",  VX (4, 553),  VX_MASK,     PPCSPE,  0,    {RS, SIMM}},
5473
{"evrlwi",  VX (4, 554),  VX_MASK,     PPCSPE,  0,    {RS, RA, EVUIMM}},
5474
{"evsplatfi", VX (4, 555),  VX_MASK,     PPCSPE,  0,    {RS, SIMM}},
5475
{"evmergehi", VX (4, 556),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5476
{"evmergelo", VX (4, 557),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5477
{"evmergehilo", VX (4, 558),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5478
{"evmergelohi", VX (4, 559),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5479
{"evcmpgtu",  VX (4, 560),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5480
{"evcmpgts",  VX (4, 561),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5481
{"evcmpltu",  VX (4, 562),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5482
{"evcmplts",  VX (4, 563),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5483
{"evcmpeq", VX (4, 564),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5484
{"cget",  APU(4, 284,0),  APU_RA_MASK, PPC405,  0,    {RT, FSL}},
5485
{"vadduhs", VX (4, 576),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5486
{"vmul10euq", VX (4, 577),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5487
{"vminuh",  VX (4, 578),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5488
{"vsrh",  VX (4, 580),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5489
{"vcmpgtuh",  VXR(4, 582,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5490
{"vmuleuh", VX (4, 584),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5491
{"vrfiz", VX (4, 586),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5492
{"vsplth",  VX (4, 588),   VXUIMM3_MASK, PPCVEC,  0,    {VD, VB, UIMM3}},
5493
{"vextractuh",  VX (4, 589),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5494
{"vupkhsh", VX (4, 590),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5495
{"vinshlx", VX (4, 591),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5496
{"nget",  APU(4, 300,0),  APU_RA_MASK, PPC405,  0,    {RT, FSL}},
5497
{"evsel", EVSEL(4,79),  EVSEL_MASK,  PPCSPE,  0,    {RS, RA, RB, CRFS}},
5498
{"ncget", APU(4, 316,0),  APU_RA_MASK, PPC405,  0,    {RT, FSL}},
5499
{"evfsadd", VX (4, 640),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5500
{"vadduws", VX (4, 640),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5501
{"evfssub", VX (4, 641),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5502
{"evfsmadd",  VX (4, 642),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5503
{"vminuw",  VX (4, 642),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5504
{"evfsmsub",  VX (4, 643),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5505
{"evfsabs", VX (4, 644),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5506
{"vsrw",  VX (4, 644),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5507
{"evfsnabs",  VX (4, 645),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5508
{"evfsneg", VX (4, 646),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5509
{"vcmpgtuw",  VXR(4, 646,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5510
{"vcmpgtuq",  VXR(4, 647,0),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
5511
{"evfssqrt",  VX_RB_CONST(4, 647, 0),  VX_RB_CONST_MASK,  PPCEFS2,  0,    {RD, RA}},
5512
{"vmuleuw", VX (4, 648),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5513
{"evfsmul", VX (4, 648),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5514
{"vmulhuw", VX (4, 649),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5515
{"evfsdiv", VX (4, 649),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5516
{"evfsnmadd", VX (4, 650),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5517
{"vrfip", VX (4, 650),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5518
{"vdiveuw", VX (4, 651),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5519
{"evfsnmsub", VX (4, 651),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5520
{"evfscmpgt", VX (4, 652),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5521
{"vspltw",  VX (4, 652),   VXUIMM2_MASK, PPCVEC,  0,    {VD, VB, UIMM2}},
5522
{"vextractuw",  VX (4, 653),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5523
{"evfscmplt", VX (4, 653),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5524
{"evfscmpeq", VX (4, 654),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5525
{"vupklsb", VX (4, 654),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5526
{"vinswlx", VX (4, 655),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5527
{"evfscfui",  VX (4, 656),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5528
{"evfscfh", VX_RA_CONST(4, 657, 4),  VX_RA_CONST_MASK,  PPCEFS2,  0,    {RD, RB}},
5529
{"evfscfsi",  VX (4, 657),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5530
{"evfscfuf",  VX (4, 658),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5531
{"evfscfsf",  VX (4, 659),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5532
{"evfsctui",  VX (4, 660),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5533
{"evfscth", VX_RA_CONST(4, 661, 4),  VX_RA_CONST_MASK,  PPCEFS2,  0,    {RD, RB}},
5534
{"evfsctsi",  VX (4, 661),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5535
{"evfsctuf",  VX (4, 662),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5536
{"evfsctsf",  VX (4, 663),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5537
{"evfsctuiz", VX (4, 664),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5538
{"put",   APU(4, 332,0),  APU_RT_MASK, PPC405,  0,    {RA, FSL}},
5539
{"evfsctsiz", VX (4, 666),  VX_MASK,     PPCSPE,  0,    {RS, RB}},
5540
{"evfststgt", VX (4, 668),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5541
{"evfststlt", VX (4, 669),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5542
{"evfststeq", VX (4, 670),  VX_MASK,     PPCSPE,  0,    {CRFD, RA, RB}},
5543
{"evfsmax", VX (4, 672),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5544
{"evfsmin", VX (4, 673),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5545
{"evfsaddsub",  VX (4, 674),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5546
{"evfssubadd",  VX (4, 675),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5547
{"evfssum", VX (4, 676),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5548
{"evfsdiff",  VX (4, 677),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5549
{"evfssumdiff", VX (4, 678),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5550
{"evfsdiffsum", VX (4, 679),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5551
{"evfsaddx",  VX (4, 680),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5552
{"evfssubx",  VX (4, 681),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5553
{"evfsaddsubx", VX (4, 682),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5554
{"evfssubaddx", VX (4, 683),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5555
{"evfsmulx",  VX (4, 684),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5556
{"evfsmule",  VX (4, 686),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5557
{"evfsmulo",  VX (4, 687),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5558
{"efsmax",  VX (4, 688),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5559
{"efsmin",  VX (4, 689),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5560
{"efdmax",  VX (4, 696),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5561
{"cput",  APU(4, 348,0),  APU_RT_MASK, PPC405,  0,    {RA, FSL}},
5562
{"efdmin",  VX (4, 697),  VX_MASK,     PPCEFS2, 0,    {RD, RA, RB}},
5563
{"efsadd",  VX (4, 704),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5564
{"evsadd",  VX (4, 704),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5565
{"efssub",  VX (4, 705),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5566
{"evssub",  VX (4, 705),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5567
{"efsmadd", VX (4, 706),  VX_MASK,     PPCEFS2, 0,    {RS, RA, RB}},
5568
{"vminud",  VX (4, 706),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5569
{"efsmsub", VX (4, 707),  VX_MASK,     PPCEFS2, 0,    {RS, RA, RB}},
5570
{"efsabs",  VX (4, 708),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5571
{"evsabs",  VX (4, 708),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5572
{"vsr",   VX (4, 708),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5573
{"efsnabs", VX (4, 709),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5574
{"evsnabs", VX (4, 709),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5575
{"efsneg",  VX (4, 710),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5576
{"evsneg",  VX (4, 710),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5577
{"vcmpgtfp",  VXR(4, 710,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5578
{"efssqrt", VX_RB_CONST(4, 711, 0), VX_RB_CONST_MASK,PPCEFS2, 0,  {RD, RA}},
5579
{"vcmpgtud",  VXR(4, 711,0),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
5580
{"vmuleud", VX (4, 712),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5581
{"efsmul",  VX (4, 712),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5582
{"evsmul",  VX (4, 712),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5583
{"vmulhud", VX (4, 713),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5584
{"efsdiv",  VX (4, 713),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5585
{"evsdiv",  VX (4, 713),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5586
{"efsnmadd",  VX (4, 714),  VX_MASK,     PPCEFS2, 0,    {RS, RA, RB}},
5587
{"vrfim", VX (4, 714),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5588
{"vdiveud", VX (4, 715),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5589
{"efsnmsub",  VX (4, 715),  VX_MASK,     PPCEFS2, 0,    {RS, RA, RB}},
5590
{"efscmpgt",  VX (4, 716),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5591
{"evscmpgt",  VX (4, 716),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5592
{"vextractd", VX (4, 717),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5593
{"efscmplt",  VX (4, 717),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5594
{"evsgmplt",  VX (4, 717),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5595
{"efscmpeq",  VX (4, 718),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5596
{"evsgmpeq",  VX (4, 718),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5597
{"vupklsh", VX (4, 718),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5598
{"vinsdlx", VX (4, 719),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5599
{"efscfd",  VX (4, 719),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5600
{"efscfui", VX (4, 720),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5601
{"evscfui", VX (4, 720),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5602
{"efscfh",  VX_RA_CONST(4, 721, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5603
{"efscfsi", VX (4, 721),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5604
{"evscfsi", VX (4, 721),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5605
{"efscfuf", VX (4, 722),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5606
{"evscfuf", VX (4, 722),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5607
{"efscfsf", VX (4, 723),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5608
{"evscfsf", VX (4, 723),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5609
{"efsctui", VX (4, 724),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5610
{"evsctui", VX (4, 724),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5611
{"efscth",  VX_RA_CONST(4, 725, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5612
{"efsctsi", VX (4, 725),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5613
{"evsctsi", VX (4, 725),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5614
{"efsctuf", VX (4, 726),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5615
{"evsctuf", VX (4, 726),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5616
{"efsctsf", VX (4, 727),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5617
{"evsctsf", VX (4, 727),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5618
{"efsctuiz",  VX (4, 728),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5619
{"evsctuiz",  VX (4, 728),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5620
{"nput",  APU(4, 364,0),  APU_RT_MASK, PPC405,  0,    {RA, FSL}},
5621
{"efsctsiz",  VX (4, 730),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5622
{"evsctsiz",  VX (4, 730),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5623
{"efststgt",  VX (4, 732),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5624
{"evststgt",  VX (4, 732),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5625
{"efststlt",  VX (4, 733),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5626
{"evststlt",  VX (4, 733),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5627
{"efststeq",  VX (4, 734),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5628
{"evststeq",  VX (4, 734),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5629
{"efdadd",  VX (4, 736),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5630
{"efdsub",  VX (4, 737),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5631
{"efdmadd", VX (4, 738),  VX_MASK,     PPCEFS2,   E500|E500MC,  {RD, RA, RB}},
5632
{"efdcfuid",  VX (4, 738),  VX_MASK,     E500|E500MC,0,   {RS, RB}},
5633
{"efdmsub", VX (4, 739),  VX_MASK,     PPCEFS2,   E500|E500MC,  {RD, RA, RB}},
5634
{"efdcfsid",  VX (4, 739),  VX_MASK,     E500|E500MC,0,   {RS, RB}},
5635
{"efdabs",  VX (4, 740),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5636
{"efdnabs", VX (4, 741),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5637
{"efdneg",  VX (4, 742),  VX_MASK,     PPCEFS,  0,    {RS, RA}},
5638
{"efdsqrt", VX_RB_CONST(4, 743, 0), VX_RB_CONST_MASK, PPCEFS2, 0, {RD, RA}},
5639
{"efdmul",  VX (4, 744),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5640
{"efddiv",  VX (4, 745),  VX_MASK,     PPCEFS,  0,    {RS, RA, RB}},
5641
{"efdnmadd",  VX (4, 746),  VX_MASK,     PPCEFS2,   E500|E500MC,  {RD, RA, RB}},
5642
{"efdctuidz", VX (4, 746),  VX_MASK,     E500|E500MC,0,   {RS, RB}},
5643
{"efdnmsub",  VX (4, 747),  VX_MASK,     PPCEFS2,   E500|E500MC,  {RD, RA, RB}},
5644
{"efdctsidz", VX (4, 747),  VX_MASK,     E500|E500MC,0,   {RS, RB}},
5645
{"efdcmpgt",  VX (4, 748),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5646
{"efdcmplt",  VX (4, 749),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5647
{"efdcmpeq",  VX (4, 750),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5648
{"efdcfs",  VX (4, 751),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5649
{"efdcfui", VX_RA_CONST(4, 752, 0), VX_RA_CONST_MASK, PPCEFS, 0,  {RS, RB}},
5650
{"efdcfuid",  VX_RA_CONST(4, 752, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
5651
{"efdcfsi", VX_RA_CONST(4, 753, 0), VX_RA_CONST_MASK, PPCEFS, 0,  {RS, RB}},
5652
{"efdcfsid",  VX_RA_CONST(4, 753, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
5653
{"efdcfh",  VX_RA_CONST(4, 753, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5654
{"efdcfuf", VX (4, 754),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5655
{"efdcfsf", VX (4, 755),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5656
{"efdctui", VX (4, 756),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5657
{"efdcth",  VX_RA_CONST(4, 757, 4), VX_RA_CONST_MASK, PPCEFS2, 0, {RD, RB}},
5658
{"efdctsi", VX (4, 757),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5659
{"efdctuf", VX (4, 758),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5660
{"efdctsf", VX (4, 759),  VX_MASK,     PPCEFS,  0,    {RS, RB}},
5661
{"efdctuiz",  VX_RA_CONST(4, 760, 0), VX_RA_CONST_MASK, PPCEFS, 0,  {RS, RB}},
5662
{"efdctuidz", VX_RA_CONST(4, 760, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
5663
{"ncput", APU(4, 380,0),  APU_RT_MASK, PPC405,  0,    {RA, FSL}},
5664
{"efdctsiz",  VX_RA_CONST(4, 762, 0), VX_RA_CONST_MASK, PPCEFS, 0,  {RS, RB}},
5665
{"efdctsidz", VX_RA_CONST(4, 762, 1), VX_RA_CONST_MASK, PPCEFS, E500|E500MC,  {RS, RB}},
5666
{"efdtstgt",  VX (4, 764),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5667
{"efdtstlt",  VX (4, 765),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5668
{"efdtsteq",  VX (4, 766),  VX_MASK,     PPCEFS,  0,    {CRFD, RA, RB}},
5669
{"evlddx",  VX (4, 768),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5670
{"vaddsbs", VX (4, 768),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5671
{"evldd", VX (4, 769),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5672
{"evldwx",  VX (4, 770),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5673
{"vminsb",  VX (4, 770),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5674
{"evldw", VX (4, 771),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5675
{"evldhx",  VX (4, 772),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5676
{"vsrab", VX (4, 772),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5677
{"vsraq", VX (4, 773),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5678
{"evldh", VX (4, 773),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5679
{"vcmpgtsb",  VXR(4, 774,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5680
{"evlhhesplatx",VX (4, 776),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5681
{"vmulesb", VX (4, 776),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5682
{"evlhhesplat", VX (4, 777),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_2, RA}},
5683
{"vcfux", VX (4, 778),  VX_MASK,     PPCVEC,  0,    {VD, VB, UIMM}},
5684
{"vcuxwfp", VX (4, 778),  VX_MASK,     PPCVEC,  EXT,    {VD, VB, UIMM}},
5685
{"vdivesq", VX (4, 779),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5686
{"evlhhousplatx",VX(4, 780),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5687
{"vspltisb",  VX (4, 780),  VXVB_MASK,   PPCVEC,  0,    {VD, SIMM}},
5688
{"vinsertb",  VX (4, 781),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5689
{"evlhhousplat",VX (4, 781),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_2, RA}},
5690
{"evlhhossplatx",VX(4, 782),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5691
{"vpkpx", VX (4, 782),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5692
{"vinsbrx", VX (4, 783),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5693
{"evlhhossplat",VX (4, 783),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_2, RA}},
5694
{"mullhwu", XRC(4, 392,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5695
{"evlwhex", VX (4, 784),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5696
{"mullhwu.",  XRC(4, 392,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5697
{"evlwhe",  VX (4, 785),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5698
{"evlwhoux",  VX (4, 788),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5699
{"evlwhou", VX (4, 789),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5700
{"evlwhosx",  VX (4, 790),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5701
{"evlwhos", VX (4, 791),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5702
{"maclhwu", XO (4, 396,0,0),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5703
{"evlwwsplatx", VX (4, 792),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5704
{"maclhwu.",  XO (4, 396,0,1),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5705
{"evlwwsplat",  VX (4, 793),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5706
{"evlwhsplatx", VX (4, 796),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5707
{"evlwhsplat",  VX (4, 797),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5708
{"evstddx", VX (4, 800),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5709
{"evstdd",  VX (4, 801),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5710
{"evstdwx", VX (4, 802),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5711
{"evstdw",  VX (4, 803),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5712
{"evstdhx", VX (4, 804),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5713
{"evstdh",  VX (4, 805),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_8, RA}},
5714
{"evstwhex",  VX (4, 816),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5715
{"evstwhe", VX (4, 817),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5716
{"evstwhox",  VX (4, 820),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5717
{"evstwho", VX (4, 821),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5718
{"evstwwex",  VX (4, 824),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5719
{"evstwwe", VX (4, 825),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5720
{"evstwwox",  VX (4, 828),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5721
{"evstwwo", VX (4, 829),  VX_MASK,     PPCSPE,  0,    {RS, EVUIMM_4, RA}},
5722
{"vaddshs", VX (4, 832),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5723
{"bcdcpsgn.", VX (4, 833),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5724
{"vminsh",  VX (4, 834),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5725
{"vsrah", VX (4, 836),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5726
{"vcmpgtsh",  VXR(4, 838,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5727
{"vmulesh", VX (4, 840),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5728
{"vcfsx", VX (4, 842),  VX_MASK,     PPCVEC,  0,    {VD, VB, UIMM}},
5729
{"vcsxwfp", VX (4, 842),  VX_MASK,     PPCVEC,  EXT,    {VD, VB, UIMM}},
5730
{"vspltish",  VX (4, 844),  VXVB_MASK,   PPCVEC,  0,    {VD, SIMM}},
5731
{"vinserth",  VX (4, 845),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5732
{"vupkhpx", VX (4, 846),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5733
{"vinshrx", VX (4, 847),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5734
{"mullhw",  XRC(4, 424,0),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5735
{"mullhw.", XRC(4, 424,1),  X_MASK,      MULHW, 0,    {RT, RA, RB}},
5736
{"maclhw",  XO (4, 428,0,0),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5737
{"maclhw.", XO (4, 428,0,1),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5738
{"nmaclhw", XO (4, 430,0,0),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5739
{"nmaclhw.",  XO (4, 430,0,1),XO_MASK,     MULHW, 0,    {RT, RA, RB}},
5740
{"vaddsws", VX (4, 896),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5741
{"vminsw",  VX (4, 898),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5742
{"vsraw", VX (4, 900),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5743
{"vcmpgtsw",  VXR(4, 902,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5744
{"vcmpgtsq",  VXR(4, 903,0),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
5745
{"vmulesw", VX (4, 904),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5746
{"vmulhsw", VX (4, 905),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5747
{"vctuxs",  VX (4, 906),  VX_MASK,     PPCVEC,  0,    {VD, VB, UIMM}},
5748
{"vcfpuxws",  VX (4, 906),  VX_MASK,     PPCVEC,  EXT,    {VD, VB, UIMM}},
5749
{"vdivesw", VX (4, 907),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5750
{"vspltisw",  VX (4, 908),  VXVB_MASK,   PPCVEC,  0,    {VD, SIMM}},
5751
{"vinsertw",  VX (4, 909),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5752
{"vinswrx", VX (4, 911),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5753
{"maclhwsu",  XO (4, 460,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5754
{"maclhwsu.", XO (4, 460,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5755
{"vminsd",  VX (4, 962),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5756
{"vsrad", VX (4, 964),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5757
{"vcmpbfp", VXR(4, 966,0),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5758
{"vcmpgtsd",  VXR(4, 967,0),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
5759
{"vmulesd", VX (4, 968),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5760
{"vmulhsd", VX (4, 969),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5761
{"vctsxs",  VX (4, 970),  VX_MASK,     PPCVEC,  0,    {VD, VB, UIMM}},
5762
{"vcfpsxws",  VX (4, 970),  VX_MASK,     PPCVEC,  EXT,    {VD, VB, UIMM}},
5763
{"vdivesd", VX (4, 971),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5764
{"vinsertd",  VX (4, 973),   VXUIMM4_MASK, PPCVEC3, 0,    {VD, VB, UIMM4}},
5765
{"vupklpx", VX (4, 974),  VXVA_MASK,   PPCVEC,  0,    {VD, VB}},
5766
{"vinsdrx", VX (4, 975),  VX_MASK,     POWER10, 0,    {VD, RA, RB}},
5767
{"maclhws", XO (4, 492,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5768
{"maclhws.",  XO (4, 492,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5769
{"nmaclhws",  XO (4, 494,0,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5770
{"nmaclhws.", XO (4, 494,0,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5771
{"vsububm", VX (4,1024),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5772
{"bcdadd.", VX (4,1025),  VXPS_MASK,   PPCVEC2, 0,    {VD, VA, VB, PS}},
5773
{"vavgub",  VX (4,1026),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5774
{"vabsdub", VX (4,1027),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5775
{"evmhessf",  VX (4,1027),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5776
{"vand",  VX (4,1028),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5777
{"vcmpequb.", VXR(4,   6,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5778
{"vcmpneb.",  VXR(4,   7,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5779
{"udi0fcm.",  APU(4, 515,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5780
{"udi0fcm", APU(4, 515,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5781
{"evmhossf",  VX (4,1031),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5782
{"vpmsumb", VX (4,1032),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5783
{"evmheumi",  VX (4,1032),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5784
{"evmhesmi",  VX (4,1033),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5785
{"vmaxfp",  VX (4,1034),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5786
{"evmhesmf",  VX (4,1035),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5787
{"evmhoumi",  VX (4,1036),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5788
{"vslo",  VX (4,1036),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5789
{"vstribl.",  VXVA(4,1037,0), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5790
{"vstribr.",  VXVA(4,1037,1), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5791
{"vstrihl.",  VXVA(4,1037,2), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5792
{"vstrihr.",  VXVA(4,1037,3), VXVA_MASK,   POWER10, 0,    {VD, VB}},
5793
{"evmhosmi",  VX (4,1037),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5794
{"evmhosmf",  VX (4,1039),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5795
{"machhwuo",  XO (4,  12,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5796
{"machhwuo.", XO (4,  12,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5797
{"ps_merge00",  XOPS(4,528,0),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5798
{"ps_merge00.", XOPS(4,528,1),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5799
{"evmhessfa", VX (4,1059),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5800
{"evmhossfa", VX (4,1063),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5801
{"evmheumia", VX (4,1064),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5802
{"evmhesmia", VX (4,1065),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5803
{"evmhesmfa", VX (4,1067),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5804
{"evmhoumia", VX (4,1068),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5805
{"evmhosmia", VX (4,1069),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5806
{"evmhosmfa", VX (4,1071),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5807
{"vsubuhm", VX (4,1088),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5808
{"bcdsub.", VX (4,1089),  VXPS_MASK,   PPCVEC2, 0,    {VD, VA, VB, PS}},
5809
{"vavguh",  VX (4,1090),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5810
{"evmwlssf",  VX (4,1091),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5811
{"vabsduh", VX (4,1091),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5812
{"vandc", VX (4,1092),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5813
{"vcmpequh.", VXR(4,  70,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5814
{"udi1fcm.",  APU(4, 547,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5815
{"udi1fcm", APU(4, 547,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5816
{"vcmpneh.",  VXR(4,  71,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5817
{"evmwhssf",  VX (4,1095),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5818
{"vpmsumh", VX (4,1096),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5819
{"evmwlumi",  VX (4,1096),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5820
{"vminfp",  VX (4,1098),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5821
{"evmwlsmf",  VX (4,1099),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5822
{"evmwhumi",  VX (4,1100),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5823
{"vsro",  VX (4,1100),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5824
{"evmwhsmi",  VX (4,1101),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5825
{"vpkudum", VX (4,1102),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5826
{"evmwhsmf",  VX (4,1103),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5827
{"evmwssf", VX (4,1107),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5828
{"machhwo", XO (4,  44,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5829
{"evmwumi", VX (4,1112),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5830
{"machhwo.",  XO (4,  44,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5831
{"evmwsmi", VX (4,1113),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5832
{"evmwsmf", VX (4,1115),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5833
{"nmachhwo",  XO (4,  46,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5834
{"nmachhwo.", XO (4,  46,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5835
{"ps_merge01",  XOPS(4,560,0),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5836
{"ps_merge01.", XOPS(4,560,1),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5837
{"evmwlssfa", VX (4,1123),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5838
{"evmwhssfa", VX (4,1127),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5839
{"evmwlumia", VX (4,1128),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5840
{"evmwlsmfa", VX (4,1131),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5841
{"evmwhumia", VX (4,1132),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5842
{"evmwhsmia", VX (4,1133),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5843
{"evmwhsmfa", VX (4,1135),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5844
{"evmwssfa",  VX (4,1139),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5845
{"evmwumia",  VX (4,1144),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5846
{"evmwsmia",  VX (4,1145),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5847
{"evmwsmfa",  VX (4,1147),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5848
{"vsubuwm", VX (4,1152),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5849
{"bcdus.",  VX (4,1153),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5850
{"vavguw",  VX (4,1154),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5851
{"vabsduw", VX (4,1155),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5852
{"vmr",   VX (4,1156),  VX_MASK,     PPCVEC,  EXT,    {VD, VAB}},
5853
{"vor",   VX (4,1156),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5854
{"vcmpnew.",  VXR(4, 135,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5855
{"vpmsumw", VX (4,1160),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5856
{"vcmpequw.", VXR(4, 134,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5857
{"udi2fcm.",  APU(4, 579,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5858
{"udi2fcm", APU(4, 579,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5859
{"machhwsuo", XO (4,  76,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5860
{"machhwsuo.",  XO (4,  76,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5861
{"ps_merge10",  XOPS(4,592,0),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5862
{"ps_merge10.", XOPS(4,592,1),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5863
{"vsubudm", VX (4,1216),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5864
{"evaddusiaaw", VX (4,1216),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5865
{"bcds.", VX (4,1217),  VXPS_MASK,   PPCVEC3, 0,    {VD, VA, VB, PS}},
5866
{"evaddssiaaw", VX (4,1217),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5867
{"evsubfusiaaw",VX (4,1218),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5868
{"evsubfssiaaw",VX (4,1219),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5869
{"evmra", VX (4,1220),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5870
{"vxor",  VX (4,1220),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5871
{"evdivws", VX (4,1222),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5872
{"vcmpeqfp.", VXR(4, 198,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5873
{"udi3fcm.",  APU(4, 611,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5874
{"vcmpequd.", VXR(4, 199,1),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
5875
{"udi3fcm", APU(4, 611,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5876
{"evdivwu", VX (4,1223),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5877
{"vpmsumd", VX (4,1224),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5878
{"evaddumiaaw", VX (4,1224),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5879
{"evaddsmiaaw", VX (4,1225),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5880
{"evsubfumiaaw",VX (4,1226),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5881
{"evsubfsmiaaw",VX (4,1227),  VX_MASK,     PPCSPE,  0,    {RS, RA}},
5882
{"vgnb",  VX (4,1228),  VX_MASK,     POWER10, 0,    {RT, VB, UIMM3}},
5883
{"vpkudus", VX (4,1230),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5884
{"machhwso",  XO (4, 108,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5885
{"machhwso.", XO (4, 108,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5886
{"nmachhwso", XO (4, 110,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5887
{"nmachhwso.",  XO (4, 110,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5888
{"ps_merge11",  XOPS(4,624,0),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5889
{"ps_merge11.", XOPS(4,624,1),  XOPS_MASK,   PPCPS, 0,    {FRT, FRA, FRB}},
5890
{"vsubuqm", VX (4,1280),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5891
{"evmheusiaaw", VX (4,1280),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5892
{"bcdtrunc.", VX (4,1281),  VXPS_MASK,   PPCVEC3, 0,    {VD, VA, VB, PS}},
5893
{"evmhessiaaw", VX (4,1281),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5894
{"vavgsb",  VX (4,1282),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5895
{"evmhessfaaw", VX (4,1283),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5896
{"evmhousiaaw", VX (4,1284),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5897
{"vnot",  VX (4,1284),  VX_MASK,     PPCVEC,  EXT,    {VD, VAB}},
5898
{"vnor",  VX (4,1284),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5899
{"evmhossiaaw", VX (4,1285),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5900
{"udi4fcm.",  APU(4, 643,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5901
{"udi4fcm", APU(4, 643,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5902
{"vcmpnezb.", VXR(4, 263,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5903
{"evmhossfaaw", VX (4,1287),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5904
{"evmheumiaaw", VX (4,1288),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5905
{"vcipher", VX (4,1288),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5906
{"vcipherlast", VX (4,1289),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5907
{"evmhesmiaaw", VX (4,1289),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5908
{"evmhesmfaaw", VX (4,1291),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5909
{"vgbbd", VX (4,1292),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
5910
{"evmhoumiaaw", VX (4,1292),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5911
{"evmhosmiaaw", VX (4,1293),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5912
{"evmhosmfaaw", VX (4,1295),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5913
{"macchwuo",  XO (4, 140,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5914
{"macchwuo.", XO (4, 140,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5915
{"evmhegumiaa", VX (4,1320),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5916
{"evmhegsmiaa", VX (4,1321),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5917
{"evmhegsmfaa", VX (4,1323),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5918
{"evmhogumiaa", VX (4,1324),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5919
{"evmhogsmiaa", VX (4,1325),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5920
{"evmhogsmfaa", VX (4,1327),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5921
{"vsubcuq", VX (4,1344),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5922
{"evmwlusiaaw", VX (4,1344),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5923
{"bcdutrunc.",  VX (4,1345),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
5924
{"evmwlssiaaw", VX (4,1345),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5925
{"vavgsh",  VX (4,1346),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5926
{"evmwlssfaaw", VX (4,1347),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5927
{"evmwhusiaa",  VX (4,1348),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5928
{"vorc",  VX (4,1348),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5929
{"evmwhssmaa",  VX (4,1349),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5930
{"udi5fcm.",  APU(4, 675,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5931
{"udi5fcm", APU(4, 675,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5932
{"vcmpnezh.", VXR(4, 327,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5933
{"evmwhssfaa",  VX (4,1351),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5934
{"vncipher",  VX (4,1352),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5935
{"evmwlumiaaw", VX (4,1352),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5936
{"vncipherlast",VX (4,1353),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5937
{"evmwlsmiaaw", VX (4,1353),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5938
{"evmwlsmfaaw", VX (4,1355),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5939
{"evmwhumiaa",  VX (4,1356),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5940
{"vbpermq", VX (4,1356),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5941
{"vcfuged", VX (4,1357),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5942
{"evmwhsmiaa",  VX (4,1357),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5943
{"vpksdus", VX (4,1358),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5944
{"evmwhsmfaa",  VX (4,1359),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5945
{"evmwssfaa", VX (4,1363),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5946
{"macchwo", XO (4, 172,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5947
{"evmwumiaa", VX (4,1368),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5948
{"macchwo.",  XO (4, 172,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5949
{"evmwsmiaa", VX (4,1369),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5950
{"evmwsmfaa", VX (4,1371),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5951
{"nmacchwo",  XO (4, 174,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5952
{"nmacchwo.", XO (4, 174,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5953
{"evmwhgumiaa", VX (4,1380),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5954
{"evmwhgsmiaa", VX (4,1381),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5955
{"evmwhgssfaa", VX (4,1383),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5956
{"evmwhgsmfaa", VX (4,1391),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5957
{"evmheusianw", VX (4,1408),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5958
{"vsubcuw", VX (4,1408),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5959
{"evmhessianw", VX (4,1409),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5960
{"bcdctsq.",  VXVA(4,1409,0), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
5961
{"bcdcfsq.",  VXVA(4,1409,2), VXVAPS_MASK, PPCVEC3, 0,    {VD, VB, PS}},
5962
{"bcdctz.", VXVA(4,1409,4), VXVAPS_MASK, PPCVEC3, 0,    {VD, VB, PS}},
5963
{"bcdctn.", VXVA(4,1409,5), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
5964
{"bcdcfz.", VXVA(4,1409,6), VXVAPS_MASK, PPCVEC3, 0,    {VD, VB, PS}},
5965
{"bcdcfn.", VXVA(4,1409,7), VXVAPS_MASK, PPCVEC3, 0,    {VD, VB, PS}},
5966
{"bcdsetsgn.",  VXVA(4,1409,31), VXVAPS_MASK, PPCVEC3,  0,    {VD, VB, PS}},
5967
{"vavgsw",  VX (4,1410),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
5968
{"evmhessfanw", VX (4,1411),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5969
{"vnand", VX (4,1412),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5970
{"evmhousianw", VX (4,1412),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5971
{"evmhossianw", VX (4,1413),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5972
{"udi6fcm.",  APU(4, 707,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5973
{"udi6fcm", APU(4, 707,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
5974
{"vcmpnezw.", VXR(4, 391,1),  VXR_MASK,    PPCVEC3, 0,    {VD, VA, VB}},
5975
{"evmhossfanw", VX (4,1415),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5976
{"evmheumianw", VX (4,1416),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5977
{"evmhesmianw", VX (4,1417),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5978
{"evmhesmfanw", VX (4,1419),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5979
{"evmhoumianw", VX (4,1420),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5980
{"vpextd",  VX (4,1421),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
5981
{"evmhosmianw", VX (4,1421),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5982
{"evmhosmfanw", VX (4,1423),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5983
{"macchwsuo", XO (4, 204,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5984
{"macchwsuo.",  XO (4, 204,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
5985
{"evmhegumian", VX (4,1448),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5986
{"evmhegsmian", VX (4,1449),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5987
{"evmhegsmfan", VX (4,1451),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5988
{"evmhogumian", VX (4,1452),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5989
{"evmhogsmian", VX (4,1453),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5990
{"evmhogsmfan", VX (4,1455),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5991
{"evmwlusianw", VX (4,1472),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5992
{"bcdsr.",  VX (4,1473),  VXPS_MASK,   PPCVEC3, 0,    {VD, VA, VB, PS}},
5993
{"evmwlssianw", VX (4,1473),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
5994
{"evmwlssfanw", VX (4,1475),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5995
{"evmwhusian",  VX (4,1476),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5996
{"vsld",  VX (4,1476),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
5997
{"evmwhssian",  VX (4,1477),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
5998
{"vcmpgefp.", VXR(4, 454,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
5999
{"udi7fcm.",  APU(4, 739,0),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
6000
{"udi7fcm", APU(4, 739,1),  APU_MASK, PPC405|PPC440, 0,   {URT, URA, URB}},
6001
{"vcmpequq.", VXR(4, 455,1),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
6002
{"evmwhssfan",  VX (4,1479),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6003
{"vsbox", VX (4,1480),  VXVB_MASK,   PPCVEC2, 0,    {VD, VA}},
6004
{"evmwlumianw", VX (4,1480),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6005
{"evmwlsmianw", VX (4,1481),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6006
{"evmwlsmfanw", VX (4,1483),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6007
{"evmwhumian",  VX (4,1484),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6008
{"vbpermd", VX (4,1484),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
6009
{"vpdepd",  VX (4,1485),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6010
{"evmwhsmian",  VX (4,1485),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6011
{"vpksdss", VX (4,1486),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6012
{"evmwhsmfan",  VX (4,1487),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6013
{"evmwssfan", VX (4,1491),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6014
{"macchwso",  XO (4, 236,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6015
{"evmwumian", VX (4,1496),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6016
{"macchwso.", XO (4, 236,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6017
{"evmwsmian", VX (4,1497),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6018
{"evmwsmfan", VX (4,1499),  VX_MASK,     PPCSPE,  0,    {RS, RA, RB}},
6019
{"evmwhgumian", VX (4,1508),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6020
{"evmwhgsmian", VX (4,1509),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6021
{"evmwhgssfan", VX (4,1511),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6022
{"evmwhgsmfan", VX (4,1519),  VX_MASK,     PPCSPE,  0,    {RD, RA, RB}},
6023
{"nmacchwso", XO (4, 238,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6024
{"nmacchwso.",  XO (4, 238,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6025
{"vsububs", VX (4,1536),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6026
{"vclzlsbb",  VXVA(4,1538,0), VXVA_MASK,   PPCVEC3, 0,    {RT, VB}},
6027
{"vctzlsbb",  VXVA(4,1538,1), VXVA_MASK,   PPCVEC3, 0,    {RT, VB}},
6028
{"vnegw", VXVA(4,1538,6), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
6029
{"vnegd", VXVA(4,1538,7), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
6030
{"vprtybw", VXVA(4,1538,8), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
6031
{"vprtybd", VXVA(4,1538,9), VXVA_MASK,   PPCVEC3, 0,    {VD, VB}},
6032
{"vprtybq", VXVA(4,1538,10), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6033
{"vextsb2w",  VXVA(4,1538,16), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6034
{"vextsh2w",  VXVA(4,1538,17), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6035
{"vextsb2d",  VXVA(4,1538,24), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6036
{"vextsh2d",  VXVA(4,1538,25), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6037
{"vextsw2d",  VXVA(4,1538,26), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6038
{"vextsd2q",  VXVA(4,1538,27), VXVA_MASK,  POWER10, 0,    {VD, VB}},
6039
{"vctzb", VXVA(4,1538,28), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6040
{"vctzh", VXVA(4,1538,29), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6041
{"vctzw", VXVA(4,1538,30), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6042
{"vctzd", VXVA(4,1538,31), VXVA_MASK,  PPCVEC3, 0,    {VD, VB}},
6043
{"mfvscr",  VX (4,1540),  VXVAVB_MASK, PPCVEC,  0,    {VD}},
6044
{"vcmpgtub.", VXR(4, 518,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6045
{"udi8fcm.",  APU(4, 771,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6046
{"udi8fcm", APU(4, 771,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6047
{"vsum4ubs",  VX (4,1544),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6048
{"vmoduq",  VX (4,1547),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6049
{"vextublx",  VX (4,1549),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
6050
{"vsubuhs", VX (4,1600),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6051
6052
{"vexpandbm", VXVA(4,1602,0),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
6053
{"vexpandhm", VXVA(4,1602,1),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
6054
{"vexpandwm", VXVA(4,1602,2),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
6055
{"vexpanddm", VXVA(4,1602,3),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
6056
{"vexpandqm", VXVA(4,1602,4),  VXVA_MASK,  POWER10, 0,    {VD, VB}},
6057
{"vextractbm",  VXVA(4,1602,8),  VXVA_MASK,  POWER10, 0,    {RT, VB}},
6058
{"vextracthm",  VXVA(4,1602,9),  VXVA_MASK,  POWER10, 0,    {RT, VB}},
6059
{"vextractwm",  VXVA(4,1602,10), VXVA_MASK,  POWER10, 0,    {RT, VB}},
6060
{"vextractdm",  VXVA(4,1602,11), VXVA_MASK,  POWER10, 0,    {RT, VB}},
6061
{"vextractqm",  VXVA(4,1602,12), VXVA_MASK,  POWER10, 0,    {RT, VB}},
6062
{"mtvsrbm", VXVA(4,1602,16), VXVA_MASK,  POWER10, 0,    {VD, RB}},
6063
{"mtvsrhm", VXVA(4,1602,17), VXVA_MASK,  POWER10, 0,    {VD, RB}},
6064
{"mtvsrwm", VXVA(4,1602,18), VXVA_MASK,  POWER10, 0,    {VD, RB}},
6065
{"mtvsrdm", VXVA(4,1602,19), VXVA_MASK,  POWER10, 0,    {VD, RB}},
6066
{"mtvsrqm", VXVA(4,1602,20), VXVA_MASK,  POWER10, 0,    {VD, RB}},
6067
{"vcntmbb", VXVA(4,1602,24), VXVAM_MASK, POWER10, 0,    {RT, VB, MP}},
6068
{"vcntmbh", VXVA(4,1602,26), VXVAM_MASK, POWER10, 0,    {RT, VB, MP}},
6069
{"vcntmbw", VXVA(4,1602,28), VXVAM_MASK, POWER10, 0,    {RT, VB, MP}},
6070
{"vcntmbd", VXVA(4,1602,30), VXVAM_MASK, POWER10, 0,    {RT, VB, MP}},
6071
6072
{"mtvscr",  VX (4,1604),  VXVDVA_MASK, PPCVEC,  0,    {VB}},
6073
{"vcmpgtuh.", VXR(4, 582,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6074
{"vsum4shs",  VX (4,1608),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6075
{"udi9fcm.",  APU(4, 804,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6076
{"udi9fcm", APU(4, 804,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6077
{"vextuhlx",  VX (4,1613),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
6078
{"vupkhsw", VX (4,1614),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6079
{"vsubuws", VX (4,1664),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6080
{"vshasigmaw",  VX (4,1666),  VX_MASK,     PPCVEC2, 0,    {VD, VA, ST, SIX}},
6081
{"veqv",  VX (4,1668),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6082
{"vcmpgtuw.", VXR(4, 646,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6083
{"udi10fcm.", APU(4, 835,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6084
{"vcmpgtuq.", VXR(4, 647,1),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
6085
{"udi10fcm",  APU(4, 835,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6086
{"vsum2sws",  VX (4,1672),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6087
{"vmoduw",  VX (4,1675),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6088
{"vmrgow",  VX (4,1676),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6089
{"vextuwlx",  VX (4,1677),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
6090
{"vshasigmad",  VX (4,1730),  VX_MASK,     PPCVEC2, 0,    {VD, VA, ST, SIX}},
6091
{"vsrd",  VX (4,1732),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6092
{"vcmpgtfp.", VXR(4, 710,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6093
{"udi11fcm.", APU(4, 867,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6094
{"vcmpgtud.", VXR(4, 711,1),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
6095
{"udi11fcm",  APU(4, 867,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6096
{"vmodud",  VX (4,1739),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6097
{"vupklsw", VX (4,1742),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6098
{"vsubsbs", VX (4,1792),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6099
{"vclzb", VX (4,1794),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6100
{"vpopcntb",  VX (4,1795),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6101
{"vsrv",  VX (4,1796),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
6102
{"vcmpgtsb.", VXR(4, 774,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6103
{"udi12fcm.", APU(4, 899,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6104
{"udi12fcm",  APU(4, 899,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6105
{"vsum4sbs",  VX (4,1800),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6106
{"vmodsq",  VX (4,1803),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6107
{"vextubrx",  VX (4,1805),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
6108
{"maclhwuo",  XO (4, 396,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6109
{"maclhwuo.", XO (4, 396,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6110
{"vsubshs", VX (4,1856),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6111
{"vclzh", VX (4,1858),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6112
{"vpopcnth",  VX (4,1859),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6113
{"vslv",  VX (4,1860),  VX_MASK,     PPCVEC3, 0,    {VD, VA, VB}},
6114
{"vcmpgtsh.", VXR(4, 838,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6115
{"vextuhrx",  VX (4,1869),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
6116
{"udi13fcm.", APU(4, 931,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6117
{"udi13fcm",  APU(4, 931,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6118
{"maclhwo", XO (4, 428,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6119
{"maclhwo.",  XO (4, 428,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6120
{"nmaclhwo",  XO (4, 430,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6121
{"nmaclhwo.", XO (4, 430,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6122
{"vsubsws", VX (4,1920),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6123
{"vclzw", VX (4,1922),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6124
{"vpopcntw",  VX (4,1923),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6125
{"vclzdm",  VX (4,1924),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6126
{"vcmpgtsw.", VXR(4, 902,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6127
{"udi14fcm.", APU(4, 963,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6128
{"vcmpgtsq.", VXR(4, 903,1),  VXR_MASK,    POWER10, 0,    {VD, VA, VB}},
6129
{"udi14fcm",  APU(4, 963,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6130
{"vsumsws", VX (4,1928),  VX_MASK,     PPCVEC,  0,    {VD, VA, VB}},
6131
{"vmodsw",  VX (4,1931),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6132
{"vmrgew",  VX (4,1932),  VX_MASK,     PPCVEC2, 0,    {VD, VA, VB}},
6133
{"vextuwrx",  VX (4,1933),  VX_MASK,     PPCVEC3, 0,    {RT, RA, VB}},
6134
{"maclhwsuo", XO (4, 460,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6135
{"maclhwsuo.",  XO (4, 460,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6136
{"vclzd", VX (4,1986),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6137
{"vpopcntd",  VX (4,1987),  VXVA_MASK,   PPCVEC2, 0,    {VD, VB}},
6138
{"vctzdm",  VX (4,1988),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6139
{"vcmpbfp.",  VXR(4, 966,1),  VXR_MASK,    PPCVEC,  0,    {VD, VA, VB}},
6140
{"udi15fcm.", APU(4, 995,0),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6141
{"vcmpgtsd.", VXR(4, 967,1),  VXR_MASK,    PPCVEC2, 0,    {VD, VA, VB}},
6142
{"udi15fcm",  APU(4, 995,1),  APU_MASK,    PPC440,  0,    {URT, URA, URB}},
6143
{"vmodsd",  VX (4,1995),  VX_MASK,     POWER10, 0,    {VD, VA, VB}},
6144
{"maclhwso",  XO (4, 492,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6145
{"maclhwso.", XO (4, 492,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6146
{"nmaclhwso", XO (4, 494,1,0), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6147
{"nmaclhwso.",  XO (4, 494,1,1), XO_MASK,    MULHW, 0,    {RT, RA, RB}},
6148
{"dcbz_l",  X  (4,1014),  XRT_MASK,    PPCPS, 0,    {RA, RB}},
6149
6150
{"lxvp",  DQXP(6,0),  DQXP_MASK,   POWER10, PPCVLE,   {XTP, DQ, RA0}},
6151
{"stxvp", DQXP(6,1),  DQXP_MASK,   POWER10, PPCVLE,   {XSP, DQ, RA0}},
6152
6153
{"mulli", OP(7),    OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA, SI}},
6154
{"muli",  OP(7),    OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA, SI}},
6155
6156
{"subfic",  OP(8),    OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA, SI}},
6157
{"sfi",   OP(8),    OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA, SI}},
6158
6159
{"dozi",  OP(9),    OP_MASK,     M601,  PPCVLE,   {RT, RA, SI}},
6160
6161
{"cmplwi",  OPL(10,0),  OPL_MASK,    PPCCOM,  PPCVLE|EXT, {OBF, RA, UISIGNOPT}},
6162
{"cmpldi",  OPL(10,1),  OPL_MASK,    PPC64, PPCVLE|EXT, {OBF, RA, UISIGNOPT}},
6163
{"cmpli", OP(10),   OP_MASK,     PPC, PPCVLE,   {BF, L32OPT, RA, UISIGNOPT}},
6164
{"cmpli", OP(10),   OP_MASK,     PWRCOM,  PPC|PPCVLE, {BF, RA, UISIGNOPT}},
6165
6166
{"cmpwi", OPL(11,0),  OPL_MASK,    PPCCOM,  PPCVLE|EXT, {OBF, RA, SI}},
6167
{"cmpdi", OPL(11,1),  OPL_MASK,    PPC64, PPCVLE|EXT, {OBF, RA, SI}},
6168
{"cmpi",  OP(11),   OP_MASK,     PPC, PPCVLE,   {BF, L32OPT, RA, SI}},
6169
{"cmpi",  OP(11),   OP_MASK,     PWRCOM,  PPC|PPCVLE, {BF, RA, SI}},
6170
6171
{"addic", OP(12),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA, SI}},
6172
{"ai",    OP(12),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA, SI}},
6173
{"subic", OP(12),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, RA, NSI}},
6174
6175
{"addic.",  OP(13),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA, SI}},
6176
{"ai.",   OP(13),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA, SI}},
6177
{"subic.",  OP(13),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, RA, NSI}},
6178
6179
{"li",    OP(14),   DRA_MASK,    PPCCOM,  PPCVLE|EXT, {RT, SI}},
6180
{"lil",   OP(14),   DRA_MASK,    PWRCOM,  PPCVLE|EXT, {RT, SI}},
6181
{"addi",  OP(14),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA0, SI}},
6182
{"cal",   OP(14),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, D, RA0}},
6183
{"subi",  OP(14),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, RA0, NSI}},
6184
{"la",    OP(14),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, D, RA0}},
6185
6186
{"lis",   OP(15),   DRA_MASK,    PPCCOM,  PPCVLE|EXT, {RT, SISIGNOPT}},
6187
{"liu",   OP(15),   DRA_MASK,    PWRCOM,  PPCVLE|EXT, {RT, SISIGNOPT}},
6188
{"addis", OP(15),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, RA0, SISIGNOPT}},
6189
{"cau",   OP(15),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, RA0, SISIGNOPT}},
6190
{"subis", OP(15),   OP_MASK,     PPCCOM,  PPCVLE|EXT, {RT, RA0, NSISIGNOPT}},
6191
6192
{"bdnz-",    BBO(16,BODNZ,0,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDM}},
6193
{"bdnz+",    BBO(16,BODNZ,0,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDP}},
6194
{"bdnz",     BBO(16,BODNZ,0,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BD}},
6195
{"bdn",      BBO(16,BODNZ,0,0),   BBOATBI_MASK,  PWRCOM,   PPCVLE|EXT,  {BD}},
6196
{"bdnzl-",   BBO(16,BODNZ,0,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDM}},
6197
{"bdnzl+",   BBO(16,BODNZ,0,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDP}},
6198
{"bdnzl",    BBO(16,BODNZ,0,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BD}},
6199
{"bdnl",     BBO(16,BODNZ,0,1),   BBOATBI_MASK,  PWRCOM,   PPCVLE|EXT,  {BD}},
6200
{"bdnza-",   BBO(16,BODNZ,1,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDMA}},
6201
{"bdnza+",   BBO(16,BODNZ,1,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDPA}},
6202
{"bdnza",    BBO(16,BODNZ,1,0),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDA}},
6203
{"bdna",     BBO(16,BODNZ,1,0),   BBOATBI_MASK,  PWRCOM,   PPCVLE|EXT,  {BDA}},
6204
{"bdnzla-",  BBO(16,BODNZ,1,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDMA}},
6205
{"bdnzla+",  BBO(16,BODNZ,1,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDPA}},
6206
{"bdnzla",   BBO(16,BODNZ,1,1),   BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDA}},
6207
{"bdnla",    BBO(16,BODNZ,1,1),   BBOATBI_MASK,  PWRCOM,   PPCVLE|EXT,  {BDA}},
6208
{"bdz-",     BBO(16,BODZ,0,0),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDM}},
6209
{"bdz+",     BBO(16,BODZ,0,0),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDP}},
6210
{"bdz",      BBO(16,BODZ,0,0),    BBOATBI_MASK,  COM,  PPCVLE|EXT,  {BD}},
6211
{"bdzl-",    BBO(16,BODZ,0,1),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDM}},
6212
{"bdzl+",    BBO(16,BODZ,0,1),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDP}},
6213
{"bdzl",     BBO(16,BODZ,0,1),    BBOATBI_MASK,  COM,  PPCVLE|EXT,  {BD}},
6214
{"bdza-",    BBO(16,BODZ,1,0),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDMA}},
6215
{"bdza+",    BBO(16,BODZ,1,0),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDPA}},
6216
{"bdza",     BBO(16,BODZ,1,0),    BBOATBI_MASK,  COM,  PPCVLE|EXT,  {BDA}},
6217
{"bdzla-",   BBO(16,BODZ,1,1),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDMA}},
6218
{"bdzla+",   BBO(16,BODZ,1,1),    BBOATBI_MASK,  PPCCOM,   PPCVLE|EXT,  {BDPA}},
6219
{"bdzla",    BBO(16,BODZ,1,1),    BBOATBI_MASK,  COM,  PPCVLE|EXT,  {BDA}},
6220
6221
{"bge-",     BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6222
{"bge+",     BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6223
{"bge",      BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6224
{"bnl-",     BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6225
{"bnl+",     BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6226
{"bnl",      BBOCB(16,BOF,CBLT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6227
{"bgel-",    BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6228
{"bgel+",    BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6229
{"bgel",     BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6230
{"bnll-",    BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6231
{"bnll+",    BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6232
{"bnll",     BBOCB(16,BOF,CBLT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6233
{"bgea-",    BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6234
{"bgea+",    BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6235
{"bgea",     BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6236
{"bnla-",    BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6237
{"bnla+",    BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6238
{"bnla",     BBOCB(16,BOF,CBLT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6239
{"bgela-",   BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6240
{"bgela+",   BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6241
{"bgela",    BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6242
{"bnlla-",   BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6243
{"bnlla+",   BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6244
{"bnlla",    BBOCB(16,BOF,CBLT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6245
{"ble-",     BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6246
{"ble+",     BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6247
{"ble",      BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6248
{"bng-",     BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6249
{"bng+",     BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6250
{"bng",      BBOCB(16,BOF,CBGT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6251
{"blel-",    BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6252
{"blel+",    BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6253
{"blel",     BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6254
{"bngl-",    BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6255
{"bngl+",    BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6256
{"bngl",     BBOCB(16,BOF,CBGT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6257
{"blea-",    BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6258
{"blea+",    BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6259
{"blea",     BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6260
{"bnga-",    BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6261
{"bnga+",    BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6262
{"bnga",     BBOCB(16,BOF,CBGT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6263
{"blela-",   BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6264
{"blela+",   BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6265
{"blela",    BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6266
{"bngla-",   BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6267
{"bngla+",   BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6268
{"bngla",    BBOCB(16,BOF,CBGT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6269
{"bne-",     BBOCB(16,BOF,CBEQ,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6270
{"bne+",     BBOCB(16,BOF,CBEQ,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6271
{"bne",      BBOCB(16,BOF,CBEQ,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6272
{"bnel-",    BBOCB(16,BOF,CBEQ,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6273
{"bnel+",    BBOCB(16,BOF,CBEQ,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6274
{"bnel",     BBOCB(16,BOF,CBEQ,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6275
{"bnea-",    BBOCB(16,BOF,CBEQ,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6276
{"bnea+",    BBOCB(16,BOF,CBEQ,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6277
{"bnea",     BBOCB(16,BOF,CBEQ,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6278
{"bnela-",   BBOCB(16,BOF,CBEQ,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6279
{"bnela+",   BBOCB(16,BOF,CBEQ,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6280
{"bnela",    BBOCB(16,BOF,CBEQ,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6281
{"bns-",     BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6282
{"bns+",     BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6283
{"bns",      BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6284
{"bnu-",     BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6285
{"bnu+",     BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6286
{"bnu",      BBOCB(16,BOF,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BD}},
6287
{"bnsl-",    BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6288
{"bnsl+",    BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6289
{"bnsl",     BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6290
{"bnul-",    BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6291
{"bnul+",    BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6292
{"bnul",     BBOCB(16,BOF,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BD}},
6293
{"bnsa-",    BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6294
{"bnsa+",    BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6295
{"bnsa",     BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6296
{"bnua-",    BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6297
{"bnua+",    BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6298
{"bnua",     BBOCB(16,BOF,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDA}},
6299
{"bnsla-",   BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6300
{"bnsla+",   BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6301
{"bnsla",    BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6302
{"bnula-",   BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6303
{"bnula+",   BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6304
{"bnula",    BBOCB(16,BOF,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDA}},
6305
6306
{"blt-",     BBOCB(16,BOT,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6307
{"blt+",     BBOCB(16,BOT,CBLT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6308
{"blt",      BBOCB(16,BOT,CBLT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6309
{"bltl-",    BBOCB(16,BOT,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6310
{"bltl+",    BBOCB(16,BOT,CBLT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6311
{"bltl",     BBOCB(16,BOT,CBLT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6312
{"blta-",    BBOCB(16,BOT,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6313
{"blta+",    BBOCB(16,BOT,CBLT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6314
{"blta",     BBOCB(16,BOT,CBLT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6315
{"bltla-",   BBOCB(16,BOT,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6316
{"bltla+",   BBOCB(16,BOT,CBLT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6317
{"bltla",    BBOCB(16,BOT,CBLT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6318
{"bgt-",     BBOCB(16,BOT,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6319
{"bgt+",     BBOCB(16,BOT,CBGT,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6320
{"bgt",      BBOCB(16,BOT,CBGT,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6321
{"bgtl-",    BBOCB(16,BOT,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6322
{"bgtl+",    BBOCB(16,BOT,CBGT,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6323
{"bgtl",     BBOCB(16,BOT,CBGT,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6324
{"bgta-",    BBOCB(16,BOT,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6325
{"bgta+",    BBOCB(16,BOT,CBGT,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6326
{"bgta",     BBOCB(16,BOT,CBGT,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6327
{"bgtla-",   BBOCB(16,BOT,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6328
{"bgtla+",   BBOCB(16,BOT,CBGT,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6329
{"bgtla",    BBOCB(16,BOT,CBGT,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6330
{"beq-",     BBOCB(16,BOT,CBEQ,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6331
{"beq+",     BBOCB(16,BOT,CBEQ,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6332
{"beq",      BBOCB(16,BOT,CBEQ,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6333
{"beql-",    BBOCB(16,BOT,CBEQ,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6334
{"beql+",    BBOCB(16,BOT,CBEQ,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6335
{"beql",     BBOCB(16,BOT,CBEQ,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6336
{"beqa-",    BBOCB(16,BOT,CBEQ,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6337
{"beqa+",    BBOCB(16,BOT,CBEQ,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6338
{"beqa",     BBOCB(16,BOT,CBEQ,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6339
{"beqla-",   BBOCB(16,BOT,CBEQ,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6340
{"beqla+",   BBOCB(16,BOT,CBEQ,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6341
{"beqla",    BBOCB(16,BOT,CBEQ,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6342
{"bso-",     BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6343
{"bso+",     BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6344
{"bso",      BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6345
{"bun-",     BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6346
{"bun+",     BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6347
{"bun",      BBOCB(16,BOT,CBSO,0,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BD}},
6348
{"bsol-",    BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6349
{"bsol+",    BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6350
{"bsol",     BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BD}},
6351
{"bunl-",    BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDM}},
6352
{"bunl+",    BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDP}},
6353
{"bunl",     BBOCB(16,BOT,CBSO,0,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BD}},
6354
{"bsoa-",    BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6355
{"bsoa+",    BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6356
{"bsoa",     BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6357
{"buna-",    BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6358
{"buna+",    BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6359
{"buna",     BBOCB(16,BOT,CBSO,1,0),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDA}},
6360
{"bsola-",   BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6361
{"bsola+",   BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6362
{"bsola",    BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  COM,  PPCVLE|EXT,  {CR, BDA}},
6363
{"bunla-",   BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDMA}},
6364
{"bunla+",   BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDPA}},
6365
{"bunla",    BBOCB(16,BOT,CBSO,1,1),  BBOATCB_MASK,  PPCCOM,   PPCVLE|EXT,  {CR, BDA}},
6366
6367
{"bdnzf-",   BBO(16,BODNZF,0,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6368
{"bdnzf+",   BBO(16,BODNZF,0,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6369
{"bdnzf",    BBO(16,BODNZF,0,0),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6370
{"bdnzfl-",  BBO(16,BODNZF,0,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6371
{"bdnzfl+",  BBO(16,BODNZF,0,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6372
{"bdnzfl",   BBO(16,BODNZF,0,1),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6373
{"bdnzfa-",  BBO(16,BODNZF,1,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6374
{"bdnzfa+",  BBO(16,BODNZF,1,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6375
{"bdnzfa",   BBO(16,BODNZF,1,0),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6376
{"bdnzfla-", BBO(16,BODNZF,1,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6377
{"bdnzfla+", BBO(16,BODNZF,1,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6378
{"bdnzfla",  BBO(16,BODNZF,1,1),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6379
{"bdzf-",    BBO(16,BODZF,0,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6380
{"bdzf+",    BBO(16,BODZF,0,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6381
{"bdzf",     BBO(16,BODZF,0,0),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6382
{"bdzfl-",   BBO(16,BODZF,0,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6383
{"bdzfl+",   BBO(16,BODZF,0,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6384
{"bdzfl",    BBO(16,BODZF,0,1),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6385
{"bdzfa-",   BBO(16,BODZF,1,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6386
{"bdzfa+",   BBO(16,BODZF,1,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6387
{"bdzfa",    BBO(16,BODZF,1,0),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6388
{"bdzfla-",  BBO(16,BODZF,1,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6389
{"bdzfla+",  BBO(16,BODZF,1,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6390
{"bdzfla",   BBO(16,BODZF,1,1),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6391
6392
{"bf-",      BBO(16,BOF,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDM}},
6393
{"bf+",      BBO(16,BOF,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDP}},
6394
{"bf",       BBO(16,BOF,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BD}},
6395
{"bbf",      BBO(16,BOF,0,0),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BD}},
6396
{"bfl-",     BBO(16,BOF,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDM}},
6397
{"bfl+",     BBO(16,BOF,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDP}},
6398
{"bfl",      BBO(16,BOF,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BD}},
6399
{"bbfl",     BBO(16,BOF,0,1),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BD}},
6400
{"bfa-",     BBO(16,BOF,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDMA}},
6401
{"bfa+",     BBO(16,BOF,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDPA}},
6402
{"bfa",      BBO(16,BOF,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDA}},
6403
{"bbfa",     BBO(16,BOF,1,0),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BDA}},
6404
{"bfla-",    BBO(16,BOF,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDMA}},
6405
{"bfla+",    BBO(16,BOF,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDPA}},
6406
{"bfla",     BBO(16,BOF,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDA}},
6407
{"bbfla",    BBO(16,BOF,1,1),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BDA}},
6408
6409
{"bdnzt-",   BBO(16,BODNZT,0,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6410
{"bdnzt+",   BBO(16,BODNZT,0,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6411
{"bdnzt",    BBO(16,BODNZT,0,0),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6412
{"bdnztl-",  BBO(16,BODNZT,0,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6413
{"bdnztl+",  BBO(16,BODNZT,0,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6414
{"bdnztl",   BBO(16,BODNZT,0,1),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6415
{"bdnzta-",  BBO(16,BODNZT,1,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6416
{"bdnzta+",  BBO(16,BODNZT,1,0),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6417
{"bdnzta",   BBO(16,BODNZT,1,0),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6418
{"bdnztla-", BBO(16,BODNZT,1,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6419
{"bdnztla+", BBO(16,BODNZT,1,1),  BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6420
{"bdnztla",  BBO(16,BODNZT,1,1),  BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6421
{"bdzt-",    BBO(16,BODZT,0,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6422
{"bdzt+",    BBO(16,BODZT,0,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6423
{"bdzt",     BBO(16,BODZT,0,0),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6424
{"bdztl-",   BBO(16,BODZT,0,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDM}},
6425
{"bdztl+",   BBO(16,BODZT,0,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDP}},
6426
{"bdztl",    BBO(16,BODZT,0,1),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BD}},
6427
{"bdzta-",   BBO(16,BODZT,1,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6428
{"bdzta+",   BBO(16,BODZT,1,0),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6429
{"bdzta",    BBO(16,BODZT,1,0),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6430
{"bdztla-",  BBO(16,BODZT,1,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDMA}},
6431
{"bdztla+",  BBO(16,BODZT,1,1),   BBOY_MASK,     PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BDPA}},
6432
{"bdztla",   BBO(16,BODZT,1,1),   BBOY_MASK,     PPCCOM,   PPCVLE|EXT,    {BI, BDA}},
6433
6434
{"bt-",      BBO(16,BOT,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDM}},
6435
{"bt+",      BBO(16,BOT,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDP}},
6436
{"bt",       BBO(16,BOT,0,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BD}},
6437
{"bbt",      BBO(16,BOT,0,0),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BD}},
6438
{"btl-",     BBO(16,BOT,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDM}},
6439
{"btl+",     BBO(16,BOT,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDP}},
6440
{"btl",      BBO(16,BOT,0,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BD}},
6441
{"bbtl",     BBO(16,BOT,0,1),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BD}},
6442
{"bta-",     BBO(16,BOT,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDMA}},
6443
{"bta+",     BBO(16,BOT,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDPA}},
6444
{"bta",      BBO(16,BOT,1,0),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDA}},
6445
{"bbta",     BBO(16,BOT,1,0),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BDA}},
6446
{"btla-",    BBO(16,BOT,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDMA}},
6447
{"btla+",    BBO(16,BOT,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDPA}},
6448
{"btla",     BBO(16,BOT,1,1),   BBOAT_MASK,    PPCCOM,   PPCVLE|EXT,  {BI, BDA}},
6449
{"bbtla",    BBO(16,BOT,1,1),   BBOAT_MASK,    PWRCOM,   PPCVLE|EXT,  {BI, BDA}},
6450
6451
{"bc-",   B(16,0,0),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOM, BI, BDM}},
6452
{"bc+",   B(16,0,0),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOP, BI, BDP}},
6453
{"bc",    B(16,0,0),  B_MASK,      COM, PPCVLE,   {BO, BI, BD}},
6454
{"bcl-",  B(16,0,1),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOM, BI, BDM}},
6455
{"bcl+",  B(16,0,1),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOP, BI, BDP}},
6456
{"bcl",   B(16,0,1),  B_MASK,      COM, PPCVLE,   {BO, BI, BD}},
6457
{"bca-",  B(16,1,0),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOM, BI, BDMA}},
6458
{"bca+",  B(16,1,0),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOP, BI, BDPA}},
6459
{"bca",   B(16,1,0),  B_MASK,      COM, PPCVLE,   {BO, BI, BDA}},
6460
{"bcla-", B(16,1,1),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOM, BI, BDMA}},
6461
{"bcla+", B(16,1,1),  B_MASK,      PPCCOM,  PPCVLE|EXT, {BOP, BI, BDPA}},
6462
{"bcla",  B(16,1,1),  B_MASK,      COM, PPCVLE,   {BO, BI, BDA}},
6463
6464
{"svc",   SC(17,0,0), SC_MASK,     POWER, PPCVLE,   {SVC_LEV, FL1, FL2}},
6465
{"scv",   SC(17,0,1), SC_MASK,     POWER9,  PPCVLE,   {SVC_LEV}},
6466
{"svcl",  SC(17,0,1), SC_MASK,     POWER, PPCVLE,   {SVC_LEV, FL1, FL2}},
6467
{"sc",    SC(17,1,0), SC_MASK,     PPC, PPCVLE,   {LEV}},
6468
{"svca",  SC(17,1,0), SC_MASK,     PWRCOM,  PPCVLE,   {SV}},
6469
{"svcla", SC(17,1,1), SC_MASK,     POWER, PPCVLE,   {SV}},
6470
6471
{"b",   B(18,0,0),  B_MASK,      COM, PPCVLE,   {LI}},
6472
{"bl",    B(18,0,1),  B_MASK,      COM, PPCVLE,   {LI}},
6473
{"ba",    B(18,1,0),  B_MASK,      COM, PPCVLE,   {LIA}},
6474
{"bla",   B(18,1,1),  B_MASK,      COM, PPCVLE,   {LIA}},
6475
6476
{"mcrf",     XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM,  PPCVLE,   {BF, BFA}},
6477
6478
{"lnia",     DX(19,2),    NODX_MASK,   POWER9,  PPCVLE|EXT, {RT}},
6479
{"addpcis",  DX(19,2),    DX_MASK,     POWER9,  PPCVLE,   {RT, DXD}},
6480
{"subpcis",  DX(19,2),    DX_MASK,     POWER9,  PPCVLE|EXT, {RT, NDXD}},
6481
6482
{"bdnzlr-",  XLO(19,BODNZ,16,0),  XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6483
{"bdnzlr+",  XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6484
{"bdnzlr",   XLO(19,BODNZ,16,0),  XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6485
{"bdnzlrl-", XLO(19,BODNZ,16,1),  XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6486
{"bdnzlrl+", XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6487
{"bdnzlrl",  XLO(19,BODNZ,16,1),  XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6488
{"bdzlr-",   XLO(19,BODZ,16,0),   XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6489
{"bdzlr+",   XLO(19,BODZP,16,0),  XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6490
{"bdzlr",    XLO(19,BODZ,16,0),   XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6491
{"bdzlrl-",  XLO(19,BODZ,16,1),   XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6492
{"bdzlrl+",  XLO(19,BODZP,16,1),  XLBOBIBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {BH}},
6493
{"bdzlrl",   XLO(19,BODZ,16,1),   XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6494
{"blr",      XLO(19,BOU,16,0),    XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6495
{"br",       XLO(19,BOU,16,0),    XLBOBIBB_MASK, PWRCOM,   PPCVLE|EXT,    {BH}},
6496
{"blrl",     XLO(19,BOU,16,1),    XLBOBIBB_MASK, PPCCOM,   PPCVLE|EXT,    {BH}},
6497
{"brl",      XLO(19,BOU,16,1),    XLBOBIBB_MASK, PWRCOM,   PPCVLE|EXT,    {BH}},
6498
{"bdnzlr-",  XLO(19,BODNZM4,16,0),  XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6499
{"bdnzlrl-", XLO(19,BODNZM4,16,1),  XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6500
{"bdnzlr+",  XLO(19,BODNZP4,16,0),  XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6501
{"bdnzlrl+", XLO(19,BODNZP4,16,1),  XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6502
{"bdzlr-",   XLO(19,BODZM4,16,0), XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6503
{"bdzlrl-",  XLO(19,BODZM4,16,1), XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6504
{"bdzlr+",   XLO(19,BODZP4,16,0), XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6505
{"bdzlrl+",  XLO(19,BODZP4,16,1), XLBOBIBB_MASK, ISA_V2,   PPCVLE|EXT,    {BH}},
6506
6507
{"bgelr-",   XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6508
{"bgelr+",   XLOCB(19,BOFP,CBLT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6509
{"bgelr",    XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6510
{"bger",     XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6511
{"bnllr-",   XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6512
{"bnllr+",   XLOCB(19,BOFP,CBLT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6513
{"bnllr",    XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6514
{"bnlr",     XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6515
{"bgelrl-",  XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6516
{"bgelrl+",  XLOCB(19,BOFP,CBLT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6517
{"bgelrl",   XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6518
{"bgerl",    XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6519
{"bnllrl-",  XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6520
{"bnllrl+",  XLOCB(19,BOFP,CBLT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6521
{"bnllrl",   XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6522
{"bnlrl",    XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6523
{"blelr-",   XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6524
{"blelr+",   XLOCB(19,BOFP,CBGT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6525
{"blelr",    XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6526
{"bler",     XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6527
{"bnglr-",   XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6528
{"bnglr+",   XLOCB(19,BOFP,CBGT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6529
{"bnglr",    XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6530
{"bngr",     XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6531
{"blelrl-",  XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6532
{"blelrl+",  XLOCB(19,BOFP,CBGT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6533
{"blelrl",   XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6534
{"blerl",    XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6535
{"bnglrl-",  XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6536
{"bnglrl+",  XLOCB(19,BOFP,CBGT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6537
{"bnglrl",   XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6538
{"bngrl",    XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6539
{"bnelr-",   XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6540
{"bnelr+",   XLOCB(19,BOFP,CBEQ,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6541
{"bnelr",    XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6542
{"bner",     XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6543
{"bnelrl-",  XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6544
{"bnelrl+",  XLOCB(19,BOFP,CBEQ,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6545
{"bnelrl",   XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6546
{"bnerl",    XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6547
{"bnslr-",   XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6548
{"bnslr+",   XLOCB(19,BOFP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6549
{"bnslr",    XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6550
{"bnsr",     XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6551
{"bnulr-",   XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6552
{"bnulr+",   XLOCB(19,BOFP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6553
{"bnulr",    XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6554
{"bnslrl-",  XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6555
{"bnslrl+",  XLOCB(19,BOFP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6556
{"bnslrl",   XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6557
{"bnsrl",    XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6558
{"bnulrl-",  XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6559
{"bnulrl+",  XLOCB(19,BOFP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6560
{"bnulrl",   XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6561
{"bgelr-",   XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6562
{"bnllr-",   XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6563
{"bgelrl-",  XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6564
{"bnllrl-",  XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6565
{"blelr-",   XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6566
{"bnglr-",   XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6567
{"blelrl-",  XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6568
{"bnglrl-",  XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6569
{"bnelr-",   XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6570
{"bnelrl-",  XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6571
{"bnslr-",   XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6572
{"bnulr-",   XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6573
{"bnslrl-",  XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6574
{"bnulrl-",  XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6575
{"bgelr+",   XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6576
{"bnllr+",   XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6577
{"bgelrl+",  XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6578
{"bnllrl+",  XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6579
{"blelr+",   XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6580
{"bnglr+",   XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6581
{"blelrl+",  XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6582
{"bnglrl+",  XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6583
{"bnelr+",   XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6584
{"bnelrl+",  XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6585
{"bnslr+",   XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6586
{"bnulr+",   XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6587
{"bnslrl+",  XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6588
{"bnulrl+",  XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6589
{"bltlr-",   XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6590
{"bltlr+",   XLOCB(19,BOTP,CBLT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6591
{"bltlr",    XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6592
{"bltr",     XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6593
{"bltlrl-",  XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6594
{"bltlrl+",  XLOCB(19,BOTP,CBLT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6595
{"bltlrl",   XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6596
{"bltrl",    XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6597
{"bgtlr-",   XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6598
{"bgtlr+",   XLOCB(19,BOTP,CBGT,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6599
{"bgtlr",    XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6600
{"bgtr",     XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6601
{"bgtlrl-",  XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6602
{"bgtlrl+",  XLOCB(19,BOTP,CBGT,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6603
{"bgtlrl",   XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6604
{"bgtrl",    XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6605
{"beqlr-",   XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6606
{"beqlr+",   XLOCB(19,BOTP,CBEQ,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6607
{"beqlr",    XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6608
{"beqr",     XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6609
{"beqlrl-",  XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6610
{"beqlrl+",  XLOCB(19,BOTP,CBEQ,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6611
{"beqlrl",   XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6612
{"beqrl",    XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6613
{"bsolr-",   XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6614
{"bsolr+",   XLOCB(19,BOTP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6615
{"bsolr",    XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6616
{"bsor",     XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6617
{"bunlr-",   XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6618
{"bunlr+",   XLOCB(19,BOTP,CBSO,16,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6619
{"bunlr",    XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6620
{"bsolrl-",  XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6621
{"bsolrl+",  XLOCB(19,BOTP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6622
{"bsolrl",   XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6623
{"bsorl",    XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM,   PPCVLE|EXT,    {CR, BH}},
6624
{"bunlrl-",  XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6625
{"bunlrl+",  XLOCB(19,BOTP,CBSO,16,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6626
{"bunlrl",   XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6627
{"bltlr-",   XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6628
{"bltlrl-",  XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6629
{"bgtlr-",   XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6630
{"bgtlrl-",  XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6631
{"beqlr-",   XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6632
{"beqlrl-",  XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6633
{"bsolr-",   XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6634
{"bunlr-",   XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6635
{"bsolrl-",  XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6636
{"bunlrl-",  XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6637
{"bltlr+",   XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6638
{"bltlrl+",  XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6639
{"bgtlr+",   XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6640
{"bgtlrl+",  XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6641
{"beqlr+",   XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6642
{"beqlrl+",  XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6643
{"bsolr+",   XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6644
{"bunlr+",   XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6645
{"bsolrl+",  XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6646
{"bunlrl+",  XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6647
6648
{"bdnzflr-", XLO(19,BODNZF,16,0), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6649
{"bdnzflr+", XLO(19,BODNZFP,16,0),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6650
{"bdnzflr",  XLO(19,BODNZF,16,0), XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6651
{"bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6652
{"bdnzflrl+",XLO(19,BODNZFP,16,1),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6653
{"bdnzflrl", XLO(19,BODNZF,16,1), XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6654
{"bdzflr-",  XLO(19,BODZF,16,0),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6655
{"bdzflr+",  XLO(19,BODZFP,16,0), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6656
{"bdzflr",   XLO(19,BODZF,16,0),  XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6657
{"bdzflrl-", XLO(19,BODZF,16,1),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6658
{"bdzflrl+", XLO(19,BODZFP,16,1), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6659
{"bdzflrl",  XLO(19,BODZF,16,1),  XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6660
{"bflr-",    XLO(19,BOF,16,0),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6661
{"bflr+",    XLO(19,BOFP,16,0),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6662
{"bflr",     XLO(19,BOF,16,0),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6663
{"bbfr",     XLO(19,BOF,16,0),    XLBOBB_MASK,   PWRCOM,   PPCVLE|EXT,    {BI, BH}},
6664
{"bflrl-",   XLO(19,BOF,16,1),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6665
{"bflrl+",   XLO(19,BOFP,16,1),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6666
{"bflrl",    XLO(19,BOF,16,1),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6667
{"bbfrl",    XLO(19,BOF,16,1),    XLBOBB_MASK,   PWRCOM,   PPCVLE|EXT,    {BI, BH}},
6668
{"bflr-",    XLO(19,BOFM4,16,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6669
{"bflrl-",   XLO(19,BOFM4,16,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6670
{"bflr+",    XLO(19,BOFP4,16,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6671
{"bflrl+",   XLO(19,BOFP4,16,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6672
{"bdnztlr-", XLO(19,BODNZT,16,0), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6673
{"bdnztlr+", XLO(19,BODNZTP,16,0),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6674
{"bdnztlr",  XLO(19,BODNZT,16,0), XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6675
{"bdnztlrl-", XLO(19,BODNZT,16,1),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6676
{"bdnztlrl+", XLO(19,BODNZTP,16,1), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6677
{"bdnztlrl", XLO(19,BODNZT,16,1), XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6678
{"bdztlr-",  XLO(19,BODZT,16,0),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6679
{"bdztlr+",  XLO(19,BODZTP,16,0), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6680
{"bdztlr",   XLO(19,BODZT,16,0),  XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6681
{"bdztlrl-", XLO(19,BODZT,16,1),  XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6682
{"bdztlrl+", XLO(19,BODZTP,16,1), XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6683
{"bdztlrl",  XLO(19,BODZT,16,1),  XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6684
{"btlr-",    XLO(19,BOT,16,0),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6685
{"btlr+",    XLO(19,BOTP,16,0),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6686
{"btlr",     XLO(19,BOT,16,0),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6687
{"bbtr",     XLO(19,BOT,16,0),    XLBOBB_MASK,   PWRCOM,   PPCVLE|EXT,    {BI, BH}},
6688
{"btlrl-",   XLO(19,BOT,16,1),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6689
{"btlrl+",   XLO(19,BOTP,16,1),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6690
{"btlrl",    XLO(19,BOT,16,1),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6691
{"bbtrl",    XLO(19,BOT,16,1),    XLBOBB_MASK,   PWRCOM,   PPCVLE|EXT,    {BI, BH}},
6692
{"btlr-",    XLO(19,BOTM4,16,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6693
{"btlrl-",   XLO(19,BOTM4,16,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6694
{"btlr+",    XLO(19,BOTP4,16,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6695
{"btlrl+",   XLO(19,BOTP4,16,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6696
6697
{"bclr-",    XLLK(19,16,0),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOM, BI, BH}},
6698
{"bclr+",    XLLK(19,16,0),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOP, BI, BH}},
6699
{"bclr",     XLLK(19,16,0),   XLBH_MASK,     PPCCOM,   PPCVLE,  {BO, BI, BH}},
6700
{"bcr",      XLLK(19,16,0),   XLBH_MASK,     PWRCOM,   PPCVLE,  {BO, BI, BH}},
6701
{"bclrl-",   XLLK(19,16,1),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOM, BI, BH}},
6702
{"bclrl+",   XLLK(19,16,1),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOP, BI, BH}},
6703
{"bclrl",    XLLK(19,16,1),   XLBH_MASK,     PPCCOM,   PPCVLE,  {BO, BI, BH}},
6704
{"bcrl",     XLLK(19,16,1),   XLBH_MASK,     PWRCOM,   PPCVLE,  {BO, BI, BH}},
6705
6706
{"rfid",  XL(19,18),  0xffffffff,  PPC64, PPCVLE, {0}},
6707
6708
{"crnot", XL(19,33),  XL_MASK,     PPCCOM,  PPCVLE|EXT, {BT, BAB}},
6709
{"crnor", XL(19,33),  XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6710
6711
{"rfmci", X(19,38),    0xffffffff, PPCRFMCI|PPCA2|PPC476, PPCVLE, {0}},
6712
{"rfdi",  XL(19,39),  0xffffffff,  E500MC,  PPCVLE,   {0}},
6713
{"rfi",   XL(19,50),  0xffffffff,  COM, PPCVLE,   {0}},
6714
{"rfci",  XL(19,51), 0xffffffff, PPC403|BOOKE|PPCE300|PPCA2|PPC476, PPCVLE, {0}},
6715
6716
{"rfscv", XL(19,82),  0xffffffff,  POWER9,  PPCVLE,   {0}},
6717
{"rfsvc", XL(19,82),  0xffffffff,  POWER, PPCVLE,   {0}},
6718
6719
{"rfgi",  XL(19,102),   0xffffffff, E500MC|PPCA2, PPCVLE,   {0}},
6720
6721
{"crandc",  XL(19,129), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6722
6723
{"rfebb", XL(19,146), XLS_MASK,    POWER8,  PPCVLE,   {SXL}},
6724
6725
{"isync", XL(19,150), 0xffffffff,  PPCCOM,  PPCVLE,   {0}},
6726
{"ics",   XL(19,150), 0xffffffff,  PWRCOM,  PPCVLE,   {0}},
6727
6728
{"crclr", XL(19,193), XL_MASK,     PPCCOM,  PPCVLE|EXT, {BTAB}},
6729
{"crxor", XL(19,193), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6730
6731
{"dnh",   X(19,198),  X_MASK,      E500MC,  PPCVLE,   {DUI, DUIS}},
6732
6733
{"crnand",  XL(19,225), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6734
6735
{"crand", XL(19,257), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6736
6737
{"hrfid", XL(19,274),    0xffffffff, POWER5|CELL, PPC476|PPCVLE,  {0}},
6738
6739
{"crset", XL(19,289), XL_MASK,     PPCCOM,  PPCVLE|EXT, {BTAB}},
6740
{"creqv", XL(19,289), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6741
6742
{"urfid", XL(19,306), 0xffffffff,  POWER9,  PPCVLE,   {0}},
6743
{"stop",  XL(19,370), 0xffffffff,  POWER9,  PPCVLE,   {0}},
6744
6745
{"doze",  XL(19,402), 0xffffffff,  POWER6,  POWER9|PPCVLE,  {0}},
6746
6747
{"crorc", XL(19,417), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6748
6749
{"nap",   XL(19,434), 0xffffffff,  POWER6,  POWER9|PPCVLE,  {0}},
6750
6751
{"crmove",  XL(19,449), XL_MASK,     PPCCOM,  PPCVLE|EXT, {BT, BAB}},
6752
{"cror",  XL(19,449), XL_MASK,     COM, PPCVLE,   {BT, BA, BB}},
6753
6754
{"sleep", XL(19,466), 0xffffffff,  POWER6,  POWER9|PPCVLE,  {0}},
6755
{"rvwinkle",  XL(19,498), 0xffffffff,  POWER6,  POWER9|PPCVLE,  {0}},
6756
6757
{"bctr",    XLO(19,BOU,528,0),    XLBOBIBB_MASK, COM,  PPCVLE|EXT,    {BH}},
6758
{"bctrl",   XLO(19,BOU,528,1),    XLBOBIBB_MASK, COM,  PPCVLE|EXT,    {BH}},
6759
{"bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6760
{"bgectr+", XLOCB(19,BOFP,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6761
{"bgectr",  XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6762
{"bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6763
{"bnlctr+", XLOCB(19,BOFP,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6764
{"bnlctr",  XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6765
{"bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6766
{"bgectrl+",XLOCB(19,BOFP,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6767
{"bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6768
{"bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6769
{"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6770
{"bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6771
{"blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6772
{"blectr+", XLOCB(19,BOFP,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6773
{"blectr",  XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6774
{"bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6775
{"bngctr+", XLOCB(19,BOFP,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6776
{"bngctr",  XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6777
{"blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6778
{"blectrl+",XLOCB(19,BOFP,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6779
{"blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6780
{"bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6781
{"bngctrl+",XLOCB(19,BOFP,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6782
{"bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6783
{"bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6784
{"bnectr+", XLOCB(19,BOFP,CBEQ,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6785
{"bnectr",  XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6786
{"bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6787
{"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6788
{"bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6789
{"bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6790
{"bnsctr+", XLOCB(19,BOFP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6791
{"bnsctr",  XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6792
{"bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6793
{"bnuctr+", XLOCB(19,BOFP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6794
{"bnuctr",  XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6795
{"bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6796
{"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6797
{"bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6798
{"bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6799
{"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6800
{"bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6801
{"bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6802
{"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6803
{"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6804
{"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6805
{"blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6806
{"bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6807
{"blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6808
{"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6809
{"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6810
{"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6811
{"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6812
{"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6813
{"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6814
{"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6815
{"bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6816
{"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6817
{"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6818
{"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6819
{"blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6820
{"bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6821
{"blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6822
{"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6823
{"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6824
{"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6825
{"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6826
{"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6827
{"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6828
{"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6829
{"bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6830
{"bltctr+", XLOCB(19,BOTP,CBLT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6831
{"bltctr",  XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6832
{"bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6833
{"bltctrl+",XLOCB(19,BOTP,CBLT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6834
{"bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6835
{"bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6836
{"bgtctr+", XLOCB(19,BOTP,CBGT,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6837
{"bgtctr",  XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6838
{"bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6839
{"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6840
{"bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6841
{"beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6842
{"beqctr+", XLOCB(19,BOTP,CBEQ,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6843
{"beqctr",  XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6844
{"beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6845
{"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6846
{"beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6847
{"bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6848
{"bsoctr+", XLOCB(19,BOTP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6849
{"bsoctr",  XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6850
{"bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6851
{"bunctr+", XLOCB(19,BOTP,CBSO,528,0),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6852
{"bunctr",  XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6853
{"bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6854
{"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6855
{"bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6856
{"bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6857
{"bunctrl+",XLOCB(19,BOTP,CBSO,528,1),  XLBOCBBB_MASK, PPCCOM,   ISA_V2|PPCVLE|EXT, {CR, BH}},
6858
{"bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM,   PPCVLE|EXT,    {CR, BH}},
6859
{"bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6860
{"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6861
{"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6862
{"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6863
{"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6864
{"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6865
{"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6866
{"bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6867
{"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6868
{"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6869
{"bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6870
{"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6871
{"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6872
{"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6873
{"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6874
{"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6875
{"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6876
{"bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6877
{"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6878
{"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2,   PPCVLE|EXT,    {CR, BH}},
6879
6880
{"bfctr-",  XLO(19,BOF,528,0),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6881
{"bfctr+",  XLO(19,BOFP,528,0),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6882
{"bfctr",   XLO(19,BOF,528,0),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6883
{"bfctrl-", XLO(19,BOF,528,1),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6884
{"bfctrl+", XLO(19,BOFP,528,1),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6885
{"bfctrl",  XLO(19,BOF,528,1),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6886
{"bfctr-",  XLO(19,BOFM4,528,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6887
{"bfctrl-", XLO(19,BOFM4,528,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6888
{"bfctr+",  XLO(19,BOFP4,528,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6889
{"bfctrl+", XLO(19,BOFP4,528,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6890
{"btctr-",  XLO(19,BOT,528,0),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6891
{"btctr+",  XLO(19,BOTP,528,0),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6892
{"btctr",   XLO(19,BOT,528,0),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6893
{"btctrl-", XLO(19,BOT,528,1),    XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6894
{"btctrl+", XLO(19,BOTP,528,1),   XLBOBB_MASK,   PPCCOM,   ISA_V2|PPCVLE|EXT, {BI, BH}},
6895
{"btctrl",  XLO(19,BOT,528,1),    XLBOBB_MASK,   PPCCOM,   PPCVLE|EXT,    {BI, BH}},
6896
{"btctr-",  XLO(19,BOTM4,528,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6897
{"btctrl-", XLO(19,BOTM4,528,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6898
{"btctr+",  XLO(19,BOTP4,528,0),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6899
{"btctrl+", XLO(19,BOTP4,528,1),  XLBOBB_MASK,   ISA_V2,   PPCVLE|EXT,    {BI, BH}},
6900
6901
{"bcctr-",  XLLK(19,528,0),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOM, BI, BH}},
6902
{"bcctr+",  XLLK(19,528,0),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOP, BI, BH}},
6903
{"bcctr",   XLLK(19,528,0),   XLBH_MASK,     PPCCOM,   PPCVLE,  {BO, BI, BH}},
6904
{"bcc",     XLLK(19,528,0),   XLBH_MASK,     PWRCOM,   PPCVLE,  {BO, BI, BH}},
6905
{"bcctrl-", XLLK(19,528,1),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOM, BI, BH}},
6906
{"bcctrl+", XLLK(19,528,1),   XLBH_MASK,     PPCCOM,   PPCVLE|EXT,  {BOP, BI, BH}},
6907
{"bcctrl",  XLLK(19,528,1),   XLBH_MASK,     PPCCOM,   PPCVLE,  {BO, BI, BH}},
6908
{"bccl",    XLLK(19,528,1),   XLBH_MASK,     PWRCOM,   PPCVLE,  {BO, BI, BH}},
6909
6910
{"bdnztar",   XLO(19,BODNZ,560,0),  XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6911
{"bdnztarl",  XLO(19,BODNZ,560,1),  XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6912
{"bdztar",    XLO(19,BODZ,560,0), XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6913
{"bdztarl",   XLO(19,BODZ,560,1), XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6914
{"btar",      XLO(19,BOU,560,0),  XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6915
{"btarl",     XLO(19,BOU,560,1),  XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6916
{"bdnztar-",  XLO(19,BODNZM4,560,0),    XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6917
{"bdnztarl-", XLO(19,BODNZM4,560,1),    XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6918
{"bdnztar+",  XLO(19,BODNZP4,560,0),    XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6919
{"bdnztarl+", XLO(19,BODNZP4,560,1),    XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6920
{"bdztar-",   XLO(19,BODZM4,560,0),     XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6921
{"bdztarl-",  XLO(19,BODZM4,560,1),     XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6922
{"bdztar+",   XLO(19,BODZP4,560,0),     XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6923
{"bdztarl+",  XLO(19,BODZP4,560,1),     XLBOBIBB_MASK, POWER8,   PPCVLE|EXT,  {BH}},
6924
6925
{"bgetar",  XLOCB(19,BOF,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6926
{"bnltar",  XLOCB(19,BOF,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6927
{"bgetarl", XLOCB(19,BOF,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6928
{"bnltarl", XLOCB(19,BOF,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6929
{"bletar",  XLOCB(19,BOF,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6930
{"bngtar",  XLOCB(19,BOF,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6931
{"bletarl", XLOCB(19,BOF,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6932
{"bngtarl", XLOCB(19,BOF,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6933
{"bnetar",  XLOCB(19,BOF,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6934
{"bnetarl", XLOCB(19,BOF,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6935
{"bnstar",  XLOCB(19,BOF,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6936
{"bnutar",  XLOCB(19,BOF,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6937
{"bnstarl", XLOCB(19,BOF,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6938
{"bnutarl", XLOCB(19,BOF,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6939
{"bgetar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6940
{"bnltar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6941
{"bgetarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6942
{"bnltarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6943
{"bletar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6944
{"bngtar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6945
{"bletarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6946
{"bngtarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6947
{"bnetar-", XLOCB(19,BOFM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6948
{"bnetarl-",XLOCB(19,BOFM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6949
{"bnstar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6950
{"bnutar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6951
{"bnstarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6952
{"bnutarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6953
{"bgetar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6954
{"bnltar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6955
{"bgetarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6956
{"bnltarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6957
{"bletar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6958
{"bngtar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6959
{"bletarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6960
{"bngtarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6961
{"bnetar+", XLOCB(19,BOFP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6962
{"bnetarl+",XLOCB(19,BOFP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6963
{"bnstar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6964
{"bnutar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6965
{"bnstarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6966
{"bnutarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6967
{"blttar",  XLOCB(19,BOT,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6968
{"blttarl", XLOCB(19,BOT,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6969
{"bgttar",  XLOCB(19,BOT,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6970
{"bgttarl", XLOCB(19,BOT,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6971
{"beqtar",  XLOCB(19,BOT,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6972
{"beqtarl", XLOCB(19,BOT,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6973
{"bsotar",  XLOCB(19,BOT,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6974
{"buntar",  XLOCB(19,BOT,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6975
{"bsotarl", XLOCB(19,BOT,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6976
{"buntarl", XLOCB(19,BOT,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6977
{"blttar-", XLOCB(19,BOTM4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6978
{"blttarl-",XLOCB(19,BOTM4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6979
{"bgttar-", XLOCB(19,BOTM4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6980
{"bgttarl-",XLOCB(19,BOTM4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6981
{"beqtar-", XLOCB(19,BOTM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6982
{"beqtarl-",XLOCB(19,BOTM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6983
{"bsotar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6984
{"buntar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6985
{"bsotarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6986
{"buntarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6987
{"blttar+", XLOCB(19,BOTP4,CBLT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6988
{"blttarl+",XLOCB(19,BOTP4,CBLT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6989
{"bgttar+", XLOCB(19,BOTP4,CBGT,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6990
{"bgttarl+",XLOCB(19,BOTP4,CBGT,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6991
{"beqtar+", XLOCB(19,BOTP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6992
{"beqtarl+",XLOCB(19,BOTP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6993
{"bsotar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6994
{"buntar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6995
{"bsotarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6996
{"buntarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8,   PPCVLE|EXT,  {CR, BH}},
6997
6998
{"bdnzftar",  XLO(19,BODNZF,560,0),     XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
6999
{"bdnzftarl", XLO(19,BODNZF,560,1),     XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7000
{"bdzftar",   XLO(19,BODZF,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7001
{"bdzftarl",  XLO(19,BODZF,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7002
7003
{"bftar",     XLO(19,BOF,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7004
{"bftarl",    XLO(19,BOF,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7005
{"bftar-",    XLO(19,BOFM4,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7006
{"bftarl-",   XLO(19,BOFM4,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7007
{"bftar+",    XLO(19,BOFP4,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7008
{"bftarl+",   XLO(19,BOFP4,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7009
7010
{"bdnzttar",  XLO(19,BODNZT,560,0),     XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7011
{"bdnzttarl", XLO(19,BODNZT,560,1),     XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7012
{"bdzttar",   XLO(19,BODZT,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7013
{"bdzttarl",  XLO(19,BODZT,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7014
7015
{"bttar",     XLO(19,BOT,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7016
{"bttarl",    XLO(19,BOT,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7017
{"bttar-",    XLO(19,BOTM4,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7018
{"bttarl-",   XLO(19,BOTM4,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7019
{"bttar+",    XLO(19,BOTP4,560,0),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7020
{"bttarl+",   XLO(19,BOTP4,560,1),  XLBOBB_MASK,   POWER8,   PPCVLE|EXT,  {BI, BH}},
7021
7022
{"bctar-",  XLLK(19,560,0),   XLBH_MASK,     POWER8,   PPCVLE|EXT,  {BOM, BI, BH}},
7023
{"bctar+",  XLLK(19,560,0),   XLBH_MASK,     POWER8,   PPCVLE|EXT,  {BOP, BI, BH}},
7024
{"bctar",   XLLK(19,560,0),   XLBH_MASK,     POWER8,   PPCVLE,  {BO, BI, BH}},
7025
{"bctarl-", XLLK(19,560,1),   XLBH_MASK,     POWER8,   PPCVLE|EXT,  {BOM, BI, BH}},
7026
{"bctarl+", XLLK(19,560,1),   XLBH_MASK,     POWER8,   PPCVLE|EXT,  {BOP, BI, BH}},
7027
{"bctarl",  XLLK(19,560,1),   XLBH_MASK,     POWER8,   PPCVLE,  {BO, BI, BH}},
7028
7029
{"rlwimi",  M(20,0),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7030
{"inslwi",  M(20,0),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, ILWn, ILWb}},
7031
{"insrwi",  M(20,0),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, IRWn, IRWb}},
7032
{"rlimi", M(20,0),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7033
7034
{"rlwimi.", M(20,1),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7035
{"inslwi.", M(20,1),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, ILWn, ILWb}},
7036
{"insrwi.", M(20,1),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, IRWn, IRWb}},
7037
{"rlimi.",  M(20,1),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7038
7039
{"rotlwi",  MME(21,31,0), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, SH}},
7040
{"rotrwi",  MME(21,31,0), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, RRWn}},
7041
{"clrlwi",  MME(21,31,0), MSHME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, MB}},
7042
{"clrrwi",  M(21,0),  MSHMB_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, CRWn}},
7043
{"slwi",  M(21,0),  MMB_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, SLWn}},
7044
{"srwi",  MME(21,31,0), MME_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, SRWn}},
7045
{"rlwinm",  M(21,0),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7046
{"extlwi",  M(21,0),  MMB_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, ELWn, SH}},
7047
{"extrwi",  MME(21,31,0), MME_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, ERWn, ERWb}},
7048
{"clrlslwi",  M(21,0),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, CSLWb, CSLWn}},
7049
{"sli",   M(21,0),  MMB_MASK,    PWRCOM,  PPCVLE|EXT, {RA, RS, SLWn}},
7050
{"sri",   MME(21,31,0), MME_MASK,    PWRCOM,  PPCVLE|EXT, {RA, RS, SRWn}},
7051
{"rlinm", M(21,0),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7052
{"rotlwi.", MME(21,31,1), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, SH}},
7053
{"rotrwi.", MME(21,31,1), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, RRWn}},
7054
{"clrlwi.", MME(21,31,1), MSHME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, MB}},
7055
{"clrrwi.", M(21,1),  MSHMB_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, CRWn}},
7056
{"slwi.", M(21,1),  MMB_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, SLWn}},
7057
{"srwi.", MME(21,31,1), MME_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, SRWn}},
7058
{"rlwinm.", M(21,1),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7059
{"extlwi.", M(21,1),  MMB_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, ELWn, SH}},
7060
{"extrwi.", MME(21,31,1), MME_MASK,    PPCCOM,  PPCVLE|EXT, {RA, RS, ERWn, ERWb}},
7061
{"clrlslwi.", M(21,1),  M_MASK,      PPCCOM,  PPCVLE|EXT, {RA, RS, CSLWb, CSLWn}},
7062
{"sli.",  M(21,1),  MMB_MASK,    PWRCOM,  PPCVLE|EXT, {RA, RS, SLWn}},
7063
{"sri.",  MME(21,31,1), MME_MASK,    PWRCOM,  PPCVLE|EXT, {RA, RS, SRWn}},
7064
{"rlinm.",  M(21,1),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, SH, MBE, ME}},
7065
7066
{"rlmi",  M(22,0),  M_MASK,      M601,  PPCVLE,   {RA, RS, RB, MBE, ME}},
7067
{"rlmi.", M(22,1),  M_MASK,      M601,  PPCVLE,   {RA, RS, RB, MBE, ME}},
7068
7069
{"svstep",  SVL(22,19,0), SVL_MASK, SVP64,  PPCVLE, {RT, SVi, vf}},
7070
{"svstep.", SVL(22,19,1), SVL_MASK, SVP64,  PPCVLE, {RT, SVi, vf}},
7071
7072
{"svshape", SVM(22,25), SVM_MASK, SVP64,  PPCVLE, {SVxd, SVyd, SVzd, SVrm, vf}},
7073
7074
{"setvl", SVL(22,27,0), SVL_MASK, SVP64,  PPCVLE, {RT, RA, SVi, vf, vs, ms}},
7075
{"setvl.",  SVL(22,27,1), SVL_MASK, SVP64,  PPCVLE, {RT, RA, SVi, vf, vs, ms}},
7076
7077
{"svindex", SVI(22,41), SVI_MASK, SVP64,  PPCVLE, {SVG, rmm, SVd, ew, yx, mm, sk}},
7078
7079
{"svremap", SVRM(22,57),  SVRM_MASK,  SVP64,  PPCVLE, {SVme, mi0, mi1, mi2, mo0, mo1, pst}},
7080
7081
{"rotlw", MME(23,31,0), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, RB}},
7082
{"rlwnm", M(23,0),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, RB, MBE, ME}},
7083
{"rlnm",  M(23,0),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, RB, MBE, ME}},
7084
{"rotlw.",  MME(23,31,1), MMBME_MASK,  PPCCOM,  PPCVLE|EXT, {RA, RS, RB}},
7085
{"rlwnm.",  M(23,1),  M_MASK,      PPCCOM,  PPCVLE,   {RA, RS, RB, MBE, ME}},
7086
{"rlnm.", M(23,1),  M_MASK,      PWRCOM,  PPCVLE,   {RA, RS, RB, MBE, ME}},
7087
7088
{"nop",   OP(24),   0xffffffff,  PPCCOM,  PPCVLE|EXT, {0}},
7089
{"exser", 0x63ff0000, 0xffffffff,  POWER9,  PPCVLE|EXT, {0}},
7090
{"ori",   OP(24),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
7091
{"oril",  OP(24),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
7092
7093
{"oris",  OP(25),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
7094
{"oriu",  OP(25),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
7095
7096
{"xnop",  OP(26),   0xffffffff,  PPCCOM,  PPCVLE|EXT, {0}},
7097
{"xori",  OP(26),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
7098
{"xoril", OP(26),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
7099
7100
{"xoris", OP(27),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
7101
{"xoriu", OP(27),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
7102
7103
{"andi.", OP(28),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
7104
{"andil.",  OP(28),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
7105
7106
{"andis.",  OP(29),   OP_MASK,     PPCCOM,  PPCVLE,   {RA, RS, UI}},
7107
{"andiu.",  OP(29),   OP_MASK,     PWRCOM,  PPCVLE,   {RA, RS, UI}},
7108
7109
{"rotldi",  MD(30,0,0), MDMB_MASK,   PPC64, PPCVLE|EXT, {RA, RS, SH6}},
7110
{"rotrdi",  MD(30,0,0), MDMB_MASK,   PPC64, PPCVLE|EXT, {RA, RS, RRDn}},
7111
{"clrldi",  MD(30,0,0), MDSH_MASK,   PPC64, PPCVLE|EXT, {RA, RS, MB6}},
7112
{"srdi",  MD(30,0,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, SRDn}},
7113
{"rldicl",  MD(30,0,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7114
{"extrdi",  MD(30,0,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, ERDn, ERDb}},
7115
{"rotldi.", MD(30,0,1), MDMB_MASK,   PPC64, PPCVLE|EXT, {RA, RS, SH6}},
7116
{"rotrdi.", MD(30,0,1), MDMB_MASK,   PPC64, PPCVLE|EXT, {RA, RS, RRDn}},
7117
{"clrldi.", MD(30,0,1), MDSH_MASK,   PPC64, PPCVLE|EXT, {RA, RS, MB6}},
7118
{"srdi.", MD(30,0,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, SRDn}},
7119
{"rldicl.", MD(30,0,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7120
{"extrdi.", MD(30,0,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, ERDn, ERDb}},
7121
7122
{"clrrdi",  MD(30,1,0), MDSH_MASK,   PPC64, PPCVLE|EXT, {RA, RS, CRDn}},
7123
{"sldi",  MD(30,1,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, SLDn}},
7124
{"rldicr",  MD(30,1,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, ME6}},
7125
{"extldi",  MD(30,1,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, ELDn, SH6}},
7126
{"clrrdi.", MD(30,1,1), MDSH_MASK,   PPC64, PPCVLE|EXT, {RA, RS, CRDn}},
7127
{"sldi.", MD(30,1,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, SLDn}},
7128
{"rldicr.", MD(30,1,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, ME6}},
7129
{"extldi.", MD(30,1,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, ELDn, SH6}},
7130
7131
{"rldic", MD(30,2,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7132
{"clrlsldi",  MD(30,2,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, CSLDb, CSLDn}},
7133
{"rldic.",  MD(30,2,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7134
{"clrlsldi.", MD(30,2,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, CSLDb, CSLDn}},
7135
7136
{"rldimi",  MD(30,3,0), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7137
{"insrdi",  MD(30,3,0), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, IRDn, IRDb}},
7138
{"rldimi.", MD(30,3,1), MD_MASK,     PPC64, PPCVLE,   {RA, RS, SH6, MB6}},
7139
{"insrdi.", MD(30,3,1), MD_MASK,     PPC64, PPCVLE|EXT, {RA, RS, IRDn, IRDb}},
7140
7141
{"rotld", MDS(30,8,0),  MDSMB_MASK,  PPC64, PPCVLE|EXT, {RA, RS, RB}},
7142
{"rldcl", MDS(30,8,0),  MDS_MASK,    PPC64, PPCVLE,   {RA, RS, RB, MB6}},
7143
{"rotld.",  MDS(30,8,1),  MDSMB_MASK,  PPC64, PPCVLE|EXT, {RA, RS, RB}},
7144
{"rldcl.",  MDS(30,8,1),  MDS_MASK,    PPC64, PPCVLE,   {RA, RS, RB, MB6}},
7145
7146
{"rldcr", MDS(30,9,0),  MDS_MASK,    PPC64, PPCVLE,   {RA, RS, RB, ME6}},
7147
{"rldcr.",  MDS(30,9,1),  MDS_MASK,    PPC64, PPCVLE,   {RA, RS, RB, ME6}},
7148
7149
{"cmpw",  XOPL(31,0,0), XCMPL_MASK,  PPCCOM,  EXT,    {OBF, RA, RB}},
7150
{"cmpd",  XOPL(31,0,1), XCMPL_MASK,  PPC64, EXT,    {OBF, RA, RB}},
7151
{"cmp",   X(31,0),  XCMP_MASK,   PPC, 0,    {BF, L32OPT, RA, RB}},
7152
{"cmp",   X(31,0),  XCMPL_MASK,  PWRCOM,  PPC,    {BF, RA, RB}},
7153
7154
{"twlgt", XTO(31,4,TOLGT), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7155
{"tlgt",  XTO(31,4,TOLGT), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7156
{"twllt", XTO(31,4,TOLLT), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7157
{"tllt",  XTO(31,4,TOLLT), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7158
{"tweq",  XTO(31,4,TOEQ),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7159
{"teq",   XTO(31,4,TOEQ),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7160
{"twlge", XTO(31,4,TOLGE), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7161
{"tlge",  XTO(31,4,TOLGE), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7162
{"twlnl", XTO(31,4,TOLNL), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7163
{"tlnl",  XTO(31,4,TOLNL), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7164
{"twlle", XTO(31,4,TOLLE), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7165
{"tlle",  XTO(31,4,TOLLE), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7166
{"twlng", XTO(31,4,TOLNG), XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7167
{"tlng",  XTO(31,4,TOLNG), XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7168
{"twgt",  XTO(31,4,TOGT),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7169
{"tgt",   XTO(31,4,TOGT),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7170
{"twge",  XTO(31,4,TOGE),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7171
{"tge",   XTO(31,4,TOGE),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7172
{"twnl",  XTO(31,4,TONL),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7173
{"tnl",   XTO(31,4,TONL),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7174
{"twlt",  XTO(31,4,TOLT),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7175
{"tlt",   XTO(31,4,TOLT),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7176
{"twle",  XTO(31,4,TOLE),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7177
{"tle",   XTO(31,4,TOLE),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7178
{"twng",  XTO(31,4,TONG),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7179
{"tng",   XTO(31,4,TONG),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7180
{"twne",  XTO(31,4,TONE),  XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7181
{"tne",   XTO(31,4,TONE),  XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7182
{"trap",  XTO(31,4,TOU),   0xffffffff, PPCCOM,  EXT,    {0}},
7183
{"twu",   XTO(31,4,TOU),   XTO_MASK,   PPCCOM,  EXT,    {RA, RB}},
7184
{"tu",    XTO(31,4,TOU),   XTO_MASK,   PWRCOM,  EXT,    {RA, RB}},
7185
{"tw",    X(31,4),   X_MASK,     PPCCOM,  0,    {TO, RA, RB}},
7186
{"t",   X(31,4),   X_MASK,     PWRCOM,  0,    {TO, RA, RB}},
7187
7188
{"lvsl",  X(31,6),  X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7189
{"lvebx", X(31,7),  X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7190
{"lbfcmx",  APU(31,7,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7191
7192
{"subfc", XO(31,8,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7193
{"sf",    XO(31,8,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7194
{"subc",  XO(31,8,0,0), XO_MASK,     PPCCOM,  EXT,    {RT, RB, RA}},
7195
{"subfc.",  XO(31,8,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7196
{"sf.",   XO(31,8,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7197
{"subc.", XO(31,8,0,1), XO_MASK,     PPCCOM,  EXT,    {RT, RB, RA}},
7198
7199
{"mulhdu",  XO(31,9,0,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7200
{"mulhdu.", XO(31,9,0,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7201
7202
{"addc",  XO(31,10,0,0),  XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7203
{"a",   XO(31,10,0,0),  XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7204
{"addc.", XO(31,10,0,1),  XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7205
{"a.",    XO(31,10,0,1),  XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7206
7207
{"mulhwu",  XO(31,11,0,0),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7208
{"mulhwu.", XO(31,11,0,1),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7209
7210
{"lxsiwzx", X(31,12), XX1_MASK,    PPCVSX2, 0,    {XT6, RA0, RB}},
7211
7212
{"lxvrbx",  X(31,13), XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7213
7214
{"isellt",  XISEL(31,15,0), X_MASK,      PPCISEL, EXT,    {RT, RA0, RB}},
7215
{"iselgt",  XISEL(31,15,1), X_MASK,      PPCISEL, EXT,    {RT, RA0, RB}},
7216
{"iseleq",  XISEL(31,15,2), X_MASK,      PPCISEL, EXT,    {RT, RA0, RB}},
7217
{"isel",  XISEL(31,15,0), XISEL_MASK, PPCISEL|TITAN, 0,   {RT, RA0, RB, BC}},
7218
7219
{"tlbilxlpid",  XTO(31,18,0), XTO_MASK, E500MC|PPCA2, 0,    {0}},
7220
{"tlbilxpid", XTO(31,18,1), XTO_MASK, E500MC|PPCA2, 0,    {0}},
7221
{"tlbilxva",  XTO(31,18,3), XTO_MASK, E500MC|PPCA2, 0,    {RA0, RB}},
7222
{"tlbilx",  X(31,18), X_MASK,   E500MC|PPCA2, 0,    {T, RA0, RB}},
7223
7224
{"mfcr",  XFXM(31,19,0,0), XFXFXM_MASK, COM,  0,    {RT, FXM4}},
7225
{"mfocrf",  XFXM(31,19,0,1), XFXFXM_MASK, COM,  0,    {RT, FXM}},
7226
7227
{"lwarx", X(31,20), XEH_MASK,    PPC, 0,    {RT, RA0, RB, EH}},
7228
7229
{"ldx",   X(31,21), X_MASK,      PPC64, 0,    {RT, RA0, RB}},
7230
7231
{"icbt",  X(31,22), X_MASK, POWER5|BOOKE|PPCE300, 0,    {CT, RA0, RB}},
7232
7233
{"lwzx",  X(31,23), X_MASK,      PPCCOM,  0,    {RT, RA0, RB}},
7234
{"lx",    X(31,23), X_MASK,      PWRCOM,  0,    {RT, RA, RB}},
7235
7236
{"slw",   XRC(31,24,0), X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
7237
{"sl",    XRC(31,24,0), X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
7238
{"slw.",  XRC(31,24,1), X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
7239
{"sl.",   XRC(31,24,1), X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
7240
7241
{"cntlzw",  XRC(31,26,0), XRB_MASK,    PPCCOM,  0,    {RA, RS}},
7242
{"cntlz", XRC(31,26,0), XRB_MASK,    PWRCOM,  0,    {RA, RS}},
7243
{"cntlzw.", XRC(31,26,1), XRB_MASK,    PPCCOM,  0,    {RA, RS}},
7244
{"cntlz.",  XRC(31,26,1), XRB_MASK,    PWRCOM,  0,    {RA, RS}},
7245
7246
{"sld",   XRC(31,27,0), X_MASK,      PPC64, 0,    {RA, RS, RB}},
7247
{"sld.",  XRC(31,27,1), X_MASK,      PPC64, 0,    {RA, RS, RB}},
7248
7249
{"and",   XRC(31,28,0), X_MASK,      COM, 0,    {RA, RS, RB}},
7250
{"and.",  XRC(31,28,1), X_MASK,      COM, 0,    {RA, RS, RB}},
7251
7252
{"maskg", XRC(31,29,0), X_MASK,      M601,  PPCA2,    {RA, RS, RB}},
7253
{"maskg.",  XRC(31,29,1), X_MASK,      M601,  PPCA2,    {RA, RS, RB}},
7254
7255
{"ldepx", X(31,29), X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7256
7257
{"waitasec",  X(31,30),      XRTRARB_MASK, POWER8,  POWER9,   {0}},
7258
{"waitrsv", XWCPL(31,30,1,0),0xffffffff, POWER10, EXT,    {0}},
7259
{"pause_short", XWCPL(31,30,2,0),0xffffffff, POWER10, EXT,    {0}},
7260
{"wait",  X(31,30), XWCPL_MASK,  POWER10, 0,    {WC, PL}},
7261
{"wait",  X(31,30), XWC_MASK,    POWER9,  POWER10,  {WC}},
7262
7263
{"lwepx", X(31,31), X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7264
7265
{"cmplw", XOPL(31,32,0),  XCMPL_MASK,  PPCCOM,  EXT,    {OBF, RA, RB}},
7266
{"cmpld", XOPL(31,32,1),  XCMPL_MASK,  PPC64, EXT,    {OBF, RA, RB}},
7267
{"cmpl",  X(31,32), XCMP_MASK,   PPC, 0,    {BF, L32OPT, RA, RB}},
7268
{"cmpl",  X(31,32), XCMPL_MASK,  PWRCOM,  PPC,    {BF, RA, RB}},
7269
7270
{"lvsr",  X(31,38), X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7271
{"lvehx", X(31,39), X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7272
{"lhfcmx",  APU(31,39,0), APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7273
7274
{"lxvrhx",  X(31,45), XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7275
7276
{"mviwsplt",  X(31,46), X_MASK,      E6500, 0,    {VD, RA, RB}},
7277
7278
{"lvewx", X(31,71), X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7279
7280
{"addg6s",  XO(31,74,0,0),  XO_MASK,     POWER6,  0,    {RT, RA, RB}},
7281
7282
{"lxsiwax", X(31,76), XX1_MASK,    PPCVSX2, 0,    {XT6, RA0, RB}},
7283
7284
{"lxvrwx",  X(31,77), XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7285
7286
{"subf",  XO(31,40,0,0),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7287
{"sub",   XO(31,40,0,0),  XO_MASK,     PPC, EXT,    {RT, RB, RA}},
7288
{"subf.", XO(31,40,0,1),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7289
{"sub.",  XO(31,40,0,1),  XO_MASK,     PPC, EXT,    {RT, RB, RA}},
7290
7291
{"mffprd",  X(31,51), XX1RB_MASK|1, PPCVSX2,  EXT,    {RA, FRS}},
7292
{"mfvrd", X(31,51)|1, XX1RB_MASK|1, PPCVSX2,  EXT,    {RA, VS}},
7293
{"mfvsrd",  X(31,51), XX1RB_MASK,   PPCVSX2,  0,    {RA, XS6}},
7294
{"eratilx", X(31,51), X_MASK,      PPCA2, 0,    {ERAT_T, RA, RB}},
7295
7296
{"lbarx", X(31,52), XEH_MASK, POWER8|E6500, 0,    {RT, RA0, RB, EH}},
7297
7298
{"ldux",  X(31,53), X_MASK,      PPC64, 0,    {RT, RAL, RB}},
7299
7300
{"dcbst", X(31,54), XRT_MASK,    PPC, 0,    {RA0, RB}},
7301
7302
{"lwzux", X(31,55), X_MASK,      PPCCOM,  0,    {RT, RAL, RB}},
7303
{"lux",   X(31,55), X_MASK,      PWRCOM,  0,    {RT, RA, RB}},
7304
7305
{"cntlzd",  XRC(31,58,0), XRB_MASK,    PPC64, 0,    {RA, RS}},
7306
{"cntlzd.", XRC(31,58,1), XRB_MASK,    PPC64, 0,    {RA, RS}},
7307
7308
{"cntlzdm", X(31,59), X_MASK,      POWER10, 0,    {RA, RS, RB}},
7309
7310
{"andc",  XRC(31,60,0), X_MASK,      COM, 0,    {RA, RS, RB}},
7311
{"andc.", XRC(31,60,1), X_MASK,      COM, 0,    {RA, RS, RB}},
7312
7313
{"waitrsv", X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, EXT,  {0}},
7314
{"waitimpl",  X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, EXT,  {0}},
7315
{"wait",  X(31,62), XWC_MASK,    E500MC|PPCA2, 0,   {WC}},
7316
7317
{"dcbstep", XRT(31,63,0), XRT_MASK,    E500MC|PPCA2, 0,   {RA0, RB}},
7318
7319
{"tdlgt", XTO(31,68,TOLGT), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7320
{"tdllt", XTO(31,68,TOLLT), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7321
{"tdeq",  XTO(31,68,TOEQ),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7322
{"tdlge", XTO(31,68,TOLGE), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7323
{"tdlnl", XTO(31,68,TOLNL), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7324
{"tdlle", XTO(31,68,TOLLE), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7325
{"tdlng", XTO(31,68,TOLNG), XTO_MASK,  PPC64, EXT,    {RA, RB}},
7326
{"tdgt",  XTO(31,68,TOGT),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7327
{"tdge",  XTO(31,68,TOGE),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7328
{"tdnl",  XTO(31,68,TONL),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7329
{"tdlt",  XTO(31,68,TOLT),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7330
{"tdle",  XTO(31,68,TOLE),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7331
{"tdng",  XTO(31,68,TONG),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7332
{"tdne",  XTO(31,68,TONE),  XTO_MASK,  PPC64, EXT,    {RA, RB}},
7333
{"tdu",   XTO(31,68,TOU),   XTO_MASK,  PPC64, EXT,    {RA, RB}},
7334
{"td",    X(31,68), X_MASK,      PPC64, 0,    {TO, RA, RB}},
7335
7336
{"lwfcmx",  APU(31,71,0), APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7337
{"subwus",  XO(31,72,0,0),  XO_MASK,     FUTURE,  EXT,    {RT, RB, RA}},
7338
{"subwus.", XO(31,72,0,1),  XO_MASK,     FUTURE,  EXT,    {RT, RB, RA}},
7339
{"subdus",  XO(31,72,1,0),  XO_MASK,     FUTURE,  EXT,    {RT, RB, RA}},
7340
{"subdus.", XO(31,72,1,1),  XO_MASK,     FUTURE,  EXT,    {RT, RB, RA}},
7341
{"subfus",  XO(31,72,0,0),  XOL_MASK,    FUTURE,  0,    {RT, XOL, RA, RB}},
7342
{"subfus.", XO(31,72,0,1),  XOL_MASK,    FUTURE,  0,    {RT, XOL, RA, RB}},
7343
{"mulhd", XO(31,73,0,0),  XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7344
{"mulhd.",  XO(31,73,0,1),  XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7345
7346
{"mulhw", XO(31,75,0,0),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7347
{"mulhw.",  XO(31,75,0,1),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
7348
7349
{"msgsndu", XRTRA(31,78,0,0), XRTRA_MASK, POWER9, 0,    {RB}},
7350
{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440|PPC476|TITAN, 0,  {RA, RS, RB}},
7351
{"dlmzb.",  XRC(31,78,1), X_MASK, PPC403|PPC440|PPC476|TITAN, 0,  {RA, RS, RB}},
7352
7353
{"mtsrd", X(31,82),  XRB_MASK|(1<<20), PPC64, 0,    {SR, RS}},
7354
7355
{"mfmsr", X(31,83), XRARB_MASK,  COM, 0,    {RT}},
7356
7357
{"ldarx", X(31,84), XEH_MASK,    PPC64, 0,    {RT, RA0, RB, EH}},
7358
7359
{"dcbfl", XOPL(31,86,1),  XRT_MASK,    POWER5,  PPC476|EXT, {RA0, RB}},
7360
{"dcbflp",  XOPL2(31,86,3), XRT_MASK,    POWER9,  PPC476|EXT, {RA0, RB}},
7361
{"dcbfps",  XOPL3(31,86,4), XRT_MASK,    POWER10,   PPC476|EXT, {RA0, RB}},
7362
{"dcbstps", XOPL3(31,86,6), XRT_MASK,    POWER10,   PPC476|EXT, {RA0, RB}},
7363
{"dcbf",  X(31,86), XL3RT_MASK,  POWER10, PPC476,   {RA0, RB, L3OPT}},
7364
{"dcbf",  X(31,86), XLRT_MASK,   PPC, POWER10,  {RA0, RB, L2OPT}},
7365
7366
{"lbzx",  X(31,87), X_MASK,      COM, 0,    {RT, RA0, RB}},
7367
7368
{"lbepx", X(31,95), X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7369
7370
{"dni",   XRC(31,97,1), XRB_MASK,    E6500, 0,    {DUI, DCTL}},
7371
7372
{"lvx",   X(31,103),  X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
7373
{"lqfcmx",  APU(31,103,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7374
7375
{"neg",   XO(31,104,0,0), XORB_MASK,   COM, 0,    {RT, RA}},
7376
{"neg.",  XO(31,104,0,1), XORB_MASK,   COM, 0,    {RT, RA}},
7377
7378
{"mul",   XO(31,107,0,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
7379
{"mul.",  XO(31,107,0,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
7380
7381
{"lxvrdx",  X(31,109),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7382
7383
{"msgclru", XRTRA(31,110,0,0), XRTRA_MASK, POWER9,  0,    {RB}},
7384
{"mvidsplt",  X(31,110),  X_MASK,      E6500, 0,    {VD, RA, RB}},
7385
7386
{"mtsrdin", X(31,114),  XRA_MASK,    PPC64, 0,    {RS, RB}},
7387
7388
{"mffprwz", X(31,115),  XX1RB_MASK|1, PPCVSX2,  EXT,    {RA, FRS}},
7389
{"mfvrwz",  X(31,115)|1,  XX1RB_MASK|1, PPCVSX2,  EXT,    {RA, VS}},
7390
{"mfvsrwz", X(31,115),  XX1RB_MASK,   PPCVSX2,  0,    {RA, XS6}},
7391
7392
{"lharx", X(31,116),  XEH_MASK, POWER8|E6500, 0,    {RT, RA0, RB, EH}},
7393
7394
{"clf",   X(31,118),  XTO_MASK,    POWER, 0,    {RA, RB}},
7395
7396
{"lbzux", X(31,119),  X_MASK,      COM, 0,    {RT, RAL, RB}},
7397
7398
{"popcntb", X(31,122),  XRB_MASK,    POWER5,  0,    {RA, RS}},
7399
7400
{"not",   XRC(31,124,0),  X_MASK,      COM, EXT,    {RA, RSB}},
7401
{"nor",   XRC(31,124,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
7402
{"not.",  XRC(31,124,1),  X_MASK,      COM, EXT,    {RA, RSB}},
7403
{"nor.",  XRC(31,124,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
7404
7405
{"dcbfep",  XRT(31,127,0),  XRT_MASK, E500MC|PPCA2, 0,    {RA0, RB}},
7406
7407
{"setb",  X(31,128),  XRB_MASK|(3<<16), POWER9, 0,    {RT, BFA}},
7408
7409
{"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,  {RS}},
7410
7411
{"dcbtstls",  X(31,134),  X_MASK, PPCCHLK|PPC476|TITAN, 0,  {CT, RA0, RB}},
7412
7413
{"stvebx",  X(31,135),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
7414
{"stbfcmx", APU(31,135,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7415
7416
{"subfe", XO(31,136,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7417
{"sfe",   XO(31,136,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7418
{"subfe.",  XO(31,136,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7419
{"sfe.",  XO(31,136,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7420
7421
{"adde",  XO(31,138,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7422
{"ae",    XO(31,138,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7423
{"adde.", XO(31,138,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7424
{"ae.",   XO(31,138,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7425
7426
{"stxsiwx", X(31,140),  XX1_MASK,    PPCVSX2, 0,    {XS6, RA0, RB}},
7427
7428
{"stxvrbx", X(31,141),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7429
7430
{"msgsndp", XRTRA(31,142,0,0), XRTRA_MASK, POWER8,  0,    {RB}},
7431
{"dcbtstlse", X(31,142),  X_MASK,      PPCCHLK, E500MC,   {CT, RA0, RB}},
7432
7433
{"mtcr",  XFXM(31,144,0xff,0), XRARB_MASK, COM, EXT,    {RS}},
7434
{"mtcrf", XFXM(31,144,0,0), XFXFXM_MASK, COM, 0,    {FXM, RS}},
7435
{"mtocrf",  XFXM(31,144,0,1), XFXFXM_MASK, COM, 0,    {FXM, RS}},
7436
7437
{"mtmsr", X(31,146),  XRLARB_MASK, COM, 0,    {RS, A_L}},
7438
7439
{"mtsle", X(31,147),    XRTLRARB_MASK, POWER8,  0,    {L}},
7440
{"eratsx",  XRC(31,147,0),  X_MASK,      PPCA2, 0,    {RT, RA0, RB}},
7441
{"eratsx.", XRC(31,147,1),  X_MASK,      PPCA2, 0,    {RT, RA0, RB}},
7442
7443
{"stdx",  X(31,149),  X_MASK,      PPC64, 0,    {RS, RA0, RB}},
7444
7445
{"stwcx.",  XRC(31,150,1),  X_MASK,      PPC, 0,    {RS, RA0, RB}},
7446
7447
{"stwx",  X(31,151),  X_MASK,      PPCCOM,  0,    {RS, RA0, RB}},
7448
{"stx",   X(31,151),  X_MASK,      PWRCOM,  0,    {RS, RA, RB}},
7449
7450
{"slq",   XRC(31,152,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
7451
{"slq.",  XRC(31,152,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
7452
7453
{"sle",   XRC(31,153,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
7454
{"sle.",  XRC(31,153,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
7455
7456
{"prtyw", X(31,154),    XRB_MASK, POWER6|PPCA2|PPC476, 0,   {RA, RS}},
7457
7458
{"brw",   X(31,155),  XRB_MASK,    POWER10, 0,    {RA, RS}},
7459
{"pdepd", X(31,156),  X_MASK,      POWER10, 0,    {RA, RS, RB}},
7460
7461
{"stdepx",  X(31,157),  X_MASK,   E500MC|PPCA2, 0,    {RS, RA0, RB}},
7462
7463
{"stwepx",  X(31,159),  X_MASK,   E500MC|PPCA2, 0,    {RS, RA0, RB}},
7464
7465
{"wrteei",  X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {E}},
7466
7467
{"dcbtls",  X(31,166),  X_MASK,  PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
7468
7469
{"stvehx",  X(31,167),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
7470
{"sthfcmx", APU(31,167,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7471
7472
{"addex", ZRC(31,170,0),  Z2_MASK,     POWER9,  0,    {RT, RA, RB, CY}},
7473
7474
{"stxvrhx", X(31,173),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7475
7476
{"msgclrp", XRTRA(31,174,0,0), XRTRA_MASK, POWER8,  0,    {RB}},
7477
{"dcbtlse", X(31,174),  X_MASK,      PPCCHLK, E500MC,   {CT, RA0, RB}},
7478
7479
{"dmxxmfacc", XVA(31,177,0),  XACC_MASK,   POWER10, 0,    {ACC}},
7480
{"xxmfacc", XVA(31,177,0),  XACC_MASK,   POWER10, 0,    {ACC}},
7481
{"dmxxmtacc", XVA(31,177,1),  XACC_MASK,   POWER10, 0,    {ACC}},
7482
{"xxmtacc", XVA(31,177,1),  XACC_MASK,   POWER10, 0,    {ACC}},
7483
{"dmsetdmrz", XVA(31,177,2),  XDMR_MASK,   FUTURE,  0,    {DMR}},
7484
{"dmsetaccz", XVA(31,177,3),  XACC_MASK,   POWER10, 0,    {ACC}},
7485
{"xxsetaccz", XVA(31,177,3),  XACC_MASK,   POWER10, 0,    {ACC}},
7486
{"dmmr",  XVA(31,177,6),  XDMRDMR_MASK,FUTURE,  0,    {DMR, DMRAB}},
7487
{"dmxor", XVA(31,177,7),  XDMRDMR_MASK,FUTURE,  0,    {DMR, DMRAB}},
7488
7489
{"mtmsrd",  X(31,178),  XRLARB_MASK, PPC64, 0,    {RS, A_L}},
7490
7491
{"mtfprd",  X(31,179),  XX1RB_MASK|1, PPCVSX2,  EXT,    {FRT, RA}},
7492
{"mtvrd", X(31,179)|1,  XX1RB_MASK|1, PPCVSX2,  EXT,    {VD, RA}},
7493
{"mtvsrd",  X(31,179),  XX1RB_MASK,   PPCVSX2,  0,    {XT6, RA}},
7494
{"eratre",  X(31,179),  X_MASK,      PPCA2, 0,    {RT, RA, WS}},
7495
7496
{"stdux", X(31,181),  X_MASK,      PPC64, 0,    {RS, RAS, RB}},
7497
7498
{"stqcx.",  XRC(31,182,1), X_MASK|Q_MASK, POWER8, 0,    {RSQ, RA0, RB}},
7499
{"wchkall", X(31,182),  X_MASK,      PPCA2, 0,    {OBF}},
7500
7501
{"stwux", X(31,183),  X_MASK,      PPCCOM,  0,    {RS, RAS, RB}},
7502
{"stux",  X(31,183),  X_MASK,      PWRCOM,  0,    {RS, RA0, RB}},
7503
7504
{"sliq",  XRC(31,184,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
7505
{"sliq.", XRC(31,184,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
7506
7507
{"prtyd", X(31,186),  XRB_MASK, POWER6|PPCA2, 0,    {RA, RS}},
7508
7509
{"brd",   X(31,187),  XRB_MASK,    POWER10, 0,    {RA, RS}},
7510
{"pextd", X(31,188),  X_MASK,      POWER10, 0,    {RA, RS, RB}},
7511
7512
{"cmprb", X(31,192),  XCMP_MASK,   POWER9,  0,    {BF, L, RA, RB}},
7513
7514
{"icblq.",  XRC(31,198,1),  X_MASK,      E6500, 0,    {CT, RA0, RB}},
7515
7516
{"stvewx",  X(31,199),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
7517
{"stwfcmx", APU(31,199,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7518
7519
{"subfze",  XO(31,200,0,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7520
{"sfze",  XO(31,200,0,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7521
{"subfze.", XO(31,200,0,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7522
{"sfze.", XO(31,200,0,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7523
7524
{"addze", XO(31,202,0,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7525
{"aze",   XO(31,202,0,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7526
{"addze.",  XO(31,202,0,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7527
{"aze.",  XO(31,202,0,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7528
7529
{"stxvrwx", X(31,205),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7530
7531
{"msgsnd",  XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0,  {RB}},
7532
7533
{"mtsr",  X(31,210), XRB_MASK|(1<<20), COM, NON32,    {SR, RS}},
7534
7535
{"mtfprwa", X(31,211),  XX1RB_MASK|1, PPCVSX2,  EXT,    {FRT, RA}},
7536
{"mtvrwa",  X(31,211)|1,  XX1RB_MASK|1, PPCVSX2,  EXT,    {VD, RA}},
7537
{"mtvsrwa", X(31,211),  XX1RB_MASK,   PPCVSX2,  0,    {XT6, RA}},
7538
{"eratwe",  X(31,211),  X_MASK,      PPCA2, 0,    {RS, RA, WS}},
7539
7540
{"ldawx.",  XRC(31,212,1),  X_MASK,      PPCA2, 0,    {RT, RA0, RB}},
7541
7542
{"stdcx.",  XRC(31,214,1),  X_MASK,      PPC64, 0,    {RS, RA0, RB}},
7543
7544
{"stbx",  X(31,215),  X_MASK,      COM, 0,    {RS, RA0, RB}},
7545
7546
{"sllq",  XRC(31,216,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
7547
{"sllq.", XRC(31,216,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
7548
7549
{"sleq",  XRC(31,217,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
7550
{"sleq.", XRC(31,217,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
7551
7552
{"brh",   X(31,219),  XRB_MASK,    POWER10, 0,    {RA, RS}},
7553
{"cfuged",  X(31,220),  X_MASK,      POWER10, 0,    {RA, RS, RB}},
7554
7555
{"stbepx",  X(31,223),  X_MASK,   E500MC|PPCA2, 0,    {RS, RA0, RB}},
7556
7557
{"cmpeqb",  X(31,224),  XCMPL_MASK,  POWER9,  0,    {BF, RA, RB}},
7558
7559
{"icblc", X(31,230),  X_MASK, PPCCHLK|PPC476|TITAN, 0,  {CT, RA0, RB}},
7560
7561
{"stvx",  X(31,231),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
7562
{"stqfcmx", APU(31,231,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7563
7564
{"subfme",  XO(31,232,0,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7565
{"sfme",  XO(31,232,0,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7566
{"subfme.", XO(31,232,0,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7567
{"sfme.", XO(31,232,0,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7568
7569
{"mulld", XO(31,233,0,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7570
{"mulld.",  XO(31,233,0,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
7571
7572
{"addme", XO(31,234,0,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7573
{"ame",   XO(31,234,0,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7574
{"addme.",  XO(31,234,0,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
7575
{"ame.",  XO(31,234,0,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
7576
7577
{"mullw", XO(31,235,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7578
{"muls",  XO(31,235,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7579
{"mullw.",  XO(31,235,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7580
{"muls.", XO(31,235,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7581
7582
{"stxvrdx", X(31,237),  XX1_MASK,    POWER10, 0,    {XT6, RA0, RB}},
7583
7584
{"icblce",  X(31,238),  X_MASK,      PPCCHLK, E500MC|PPCA2, {CT, RA, RB}},
7585
{"msgclr",  XRTRA(31,238,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0,  {RB}},
7586
{"mtsrin",  X(31,242),  XRA_MASK,    PPC, NON32,    {RS, RB}},
7587
{"mtsri", X(31,242),  XRA_MASK,    POWER, NON32,    {RS, RB}},
7588
7589
{"mtfprwz", X(31,243),  XX1RB_MASK|1, PPCVSX2,  EXT,    {FRT, RA}},
7590
{"mtvrwz",  X(31,243)|1,  XX1RB_MASK|1, PPCVSX2,  EXT,    {VD, RA}},
7591
{"mtvsrwz", X(31,243),  XX1RB_MASK,   PPCVSX2,  0,    {XT6, RA}},
7592
7593
{"dcbtstt", XRT(31,246,0x10), XRT_MASK,  POWER7,  EXT,    {RA0, RB}},
7594
{"dcbtstct",  X(31,246),  X_MASK,      POWER4,  EXT,    {RA0, RB, THCT}},
7595
{"dcbtstds",  X(31,246),  X_MASK,      POWER4,  EXT,    {RA0, RB, THDS}},
7596
{"dcbtst",  X(31,246),  X_MASK,      POWER4,  DCBT_EO,  {RA0, RB, CT}},
7597
{"dcbtst",  X(31,246),  X_MASK,      DCBT_EO, 0,    {CT, RA0, RB}},
7598
{"dcbtst",  X(31,246),  X_MASK,      PPC, POWER4|DCBT_EO, {RA0, RB}},
7599
7600
{"stbux", X(31,247),  X_MASK,      COM, 0,    {RS, RAS, RB}},
7601
7602
{"slliq", XRC(31,248,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
7603
{"slliq.",  XRC(31,248,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
7604
7605
{"bpermd",  X(31,252),  X_MASK,   POWER7|PPCA2, 0,    {RA, RS, RB}},
7606
7607
{"dcbtstep",  XRT(31,255,0),  X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7608
7609
{"mfdcrx",  X(31,259),  X_MASK, BOOKE|PPCA2|PPC476, TITAN,  {RS, RA}},
7610
{"mfdcrx.", XRC(31,259,1),  X_MASK,      PPCA2, 0,    {RS, RA}},
7611
7612
{"lvexbx",  X(31,261),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7613
7614
{"icbt",  X(31,262),  XRT_MASK,    PPC403,  0,    {RA, RB}},
7615
7616
{"lvepxl",  X(31,263),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7617
{"ldfcmx",  APU(31,263,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
7618
7619
{"doz",   XO(31,264,0,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
7620
{"doz.",  XO(31,264,0,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
7621
7622
{"modud", X(31,265),  X_MASK,      POWER9,  0,    {RT, RA, RB}},
7623
7624
{"add",   XO(31,266,0,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7625
{"cax",   XO(31,266,0,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7626
{"add.",  XO(31,266,0,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
7627
{"cax.",  XO(31,266,0,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
7628
7629
{"moduw", X(31,267),  X_MASK,      POWER9,  0,    {RT, RA, RB}},
7630
7631
{"lxvx",  X(31,268),  XX1_MASK|1<<6, PPCVSX3, 0,    {XT6, RA0, RB}},
7632
{"lxvl",  X(31,269),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
7633
7634
{"ehpriv",  X(31,270),  0xffffffff,  E500MC|PPCA2, 0,   {0}},
7635
7636
{"tlbiel",  X(31,274),  X_MASK|1<<20,POWER9,  0,    {RB, RSO, RIC, PRS, X_R}},
7637
{"tlbiel",  X(31,274),  XRTLRA_MASK, POWER4,  POWER9|PPC476,  {RB, LOPT}},
7638
7639
{"mfapidi", X(31,275),  X_MASK,      BOOKE, E500|TITAN, {RT, RA}},
7640
7641
{"lqarx", X(31,276),  XEH_MASK|Q_MASK, POWER8,  0,    {RTQ, RAX, RBX, EH}},
7642
7643
{"lscbx", XRC(31,277,0),  X_MASK,      M601,  0,    {RT, RA, RB}},
7644
{"lscbx.",  XRC(31,277,1),  X_MASK,      M601,  0,    {RT, RA, RB}},
7645
7646
{"dcbtt", XRT(31,278,0x10), XRT_MASK,  POWER7,  EXT,    {RA0, RB}},
7647
{"dcbna", XRT(31,278,0x11), XRT_MASK,  POWER10, EXT,    {RA0, RB}},
7648
{"dcbtct",  X(31,278),  X_MASK,      POWER4,  EXT,    {RA0, RB, THCT}},
7649
{"dcbtds",  X(31,278),  X_MASK,      POWER4,  EXT,    {RA0, RB, THDS}},
7650
{"dcbt",  X(31,278),  X_MASK,      POWER4,  DCBT_EO,  {RA0, RB, CT}},
7651
{"dcbt",  X(31,278),  X_MASK,      DCBT_EO, 0,    {CT, RA0, RB}},
7652
{"dcbt",  X(31,278),  X_MASK,      PPC, POWER4|DCBT_EO, {RA0, RB}},
7653
7654
{"lhzx",  X(31,279),  X_MASK,      COM, 0,    {RT, RA0, RB}},
7655
7656
{"cdtbcd",  X(31,282),  XRB_MASK,    POWER6,  0,    {RA, RS}},
7657
7658
{"eqv",   XRC(31,284,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
7659
{"eqv.",  XRC(31,284,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
7660
7661
{"lhepx", X(31,287),  X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7662
7663
{"mfdcrux", X(31,291),  X_MASK,  PPC464|PPC476, 0,    {RS, RA}},
7664
7665
{"lvexhx",  X(31,293),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7666
{"lvepx", X(31,295),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7667
7668
{"lxvll", X(31,301),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
7669
7670
{"mfbhrbe", X(31,302),  X_MASK,      POWER8,  0,    {RT, BHRBE}},
7671
7672
{"tlbie", X(31,306),  X_MASK|1<<20,POWER9,  TITAN,    {RB, RS, RIC, PRS, X_R}},
7673
{"tlbie", X(31,306),  XRA_MASK,    POWER7,  POWER9|TITAN, {RB, RS}},
7674
{"tlbie", X(31,306),  XRTLRA_MASK, PPC,    E500|POWER7|TITAN, {RB, LOPT}},
7675
{"tlbi",  X(31,306),  XRT_MASK,    POWER, 0,    {RA0, RB}},
7676
7677
{"mfvsrld", X(31,307),  XX1RB_MASK,  PPCVSX3, 0,    {RA, XS6}},
7678
7679
{"eciwx", X(31,310),  X_MASK,      PPC, E500|TITAN, {RT, RA0, RB}},
7680
7681
{"lhzux", X(31,311),  X_MASK,      COM, 0,    {RT, RAL, RB}},
7682
7683
{"cbcdtd",  X(31,314),  XRB_MASK,    POWER6,  0,    {RA, RS}},
7684
7685
{"xor",   XRC(31,316,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
7686
{"xor.",  XRC(31,316,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
7687
7688
{"dcbtep",  XRT(31,319,0),  X_MASK,   E500MC|PPCA2, 0,    {RT, RA0, RB}},
7689
7690
{"mfexisr", XSPR(31,323, 64), XSPR_MASK, PPC403,  0,    {RT}},
7691
{"mfexier", XSPR(31,323, 66), XSPR_MASK, PPC403,  0,    {RT}},
7692
{"mfbr0", XSPR(31,323,128), XSPR_MASK, PPC403,  0,    {RT}},
7693
{"mfbr1", XSPR(31,323,129), XSPR_MASK, PPC403,  0,    {RT}},
7694
{"mfbr2", XSPR(31,323,130), XSPR_MASK, PPC403,  0,    {RT}},
7695
{"mfbr3", XSPR(31,323,131), XSPR_MASK, PPC403,  0,    {RT}},
7696
{"mfbr4", XSPR(31,323,132), XSPR_MASK, PPC403,  0,    {RT}},
7697
{"mfbr5", XSPR(31,323,133), XSPR_MASK, PPC403,  0,    {RT}},
7698
{"mfbr6", XSPR(31,323,134), XSPR_MASK, PPC403,  0,    {RT}},
7699
{"mfbr7", XSPR(31,323,135), XSPR_MASK, PPC403,  0,    {RT}},
7700
{"mfbear",  XSPR(31,323,144), XSPR_MASK, PPC403,  0,    {RT}},
7701
{"mfbesr",  XSPR(31,323,145), XSPR_MASK, PPC403,  0,    {RT}},
7702
{"mfiocr",  XSPR(31,323,160), XSPR_MASK, PPC403,  0,    {RT}},
7703
{"mfdmacr0",  XSPR(31,323,192), XSPR_MASK, PPC403,  0,    {RT}},
7704
{"mfdmact0",  XSPR(31,323,193), XSPR_MASK, PPC403,  0,    {RT}},
7705
{"mfdmada0",  XSPR(31,323,194), XSPR_MASK, PPC403,  0,    {RT}},
7706
{"mfdmasa0",  XSPR(31,323,195), XSPR_MASK, PPC403,  0,    {RT}},
7707
{"mfdmacc0",  XSPR(31,323,196), XSPR_MASK, PPC403,  0,    {RT}},
7708
{"mfdmacr1",  XSPR(31,323,200), XSPR_MASK, PPC403,  0,    {RT}},
7709
{"mfdmact1",  XSPR(31,323,201), XSPR_MASK, PPC403,  0,    {RT}},
7710
{"mfdmada1",  XSPR(31,323,202), XSPR_MASK, PPC403,  0,    {RT}},
7711
{"mfdmasa1",  XSPR(31,323,203), XSPR_MASK, PPC403,  0,    {RT}},
7712
{"mfdmacc1",  XSPR(31,323,204), XSPR_MASK, PPC403,  0,    {RT}},
7713
{"mfdmacr2",  XSPR(31,323,208), XSPR_MASK, PPC403,  0,    {RT}},
7714
{"mfdmact2",  XSPR(31,323,209), XSPR_MASK, PPC403,  0,    {RT}},
7715
{"mfdmada2",  XSPR(31,323,210), XSPR_MASK, PPC403,  0,    {RT}},
7716
{"mfdmasa2",  XSPR(31,323,211), XSPR_MASK, PPC403,  0,    {RT}},
7717
{"mfdmacc2",  XSPR(31,323,212), XSPR_MASK, PPC403,  0,    {RT}},
7718
{"mfdmacr3",  XSPR(31,323,216), XSPR_MASK, PPC403,  0,    {RT}},
7719
{"mfdmact3",  XSPR(31,323,217), XSPR_MASK, PPC403,  0,    {RT}},
7720
{"mfdmada3",  XSPR(31,323,218), XSPR_MASK, PPC403,  0,    {RT}},
7721
{"mfdmasa3",  XSPR(31,323,219), XSPR_MASK, PPC403,  0,    {RT}},
7722
{"mfdmacc3",  XSPR(31,323,220), XSPR_MASK, PPC403,  0,    {RT}},
7723
{"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403,  0,    {RT}},
7724
{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {RT, SPR}},
7725
{"mfdcr.",  XRC(31,323,1),  X_MASK,      PPCA2, 0,    {RT, SPR}},
7726
7727
{"lvexwx",  X(31,325),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
7728
7729
{"dcread",  X(31,326),  X_MASK,   PPC476|TITAN, 0,    {RT, RA0, RB}},
7730
7731
{"div",   XO(31,331,0,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
7732
{"div.",  XO(31,331,0,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
7733
7734
{"lxvdsx",  X(31,332),  XX1_MASK,    PPCVSX,  0,    {XT6, RA0, RB}},
7735
7736
{"lxvpx", X(31,333),  XX1_MASK,    POWER10, 0,    {XTP, RA0, RB}},
7737
7738
{"mfpmr", X(31,334),  X_MASK, PPCPMR|PPCE300, 0,    {RT, PMR}},
7739
{"mftmr", X(31,366),  X_MASK,      PPCTMR,  0,    {RT, TMR}},
7740
7741
{"slbsync", X(31,338),  0xffffffff,  POWER9,  0,    {0}},
7742
7743
{"mfmq",  XSPR(31,339,  0), XSPR_MASK, M601,  EXT,    {RT}},
7744
{"mfxer", XSPR(31,339,  1), XSPR_MASK, COM, EXT,    {RT}},
7745
{"mfudscr", XSPR(31,339,  3), XSPR_MASK, POWER9,  EXT,    {RS}},
7746
{"mfrtcu",  XSPR(31,339,  4), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7747
{"mfrtcl",  XSPR(31,339,  5), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7748
{"mfdec", XSPR(31,339,  6), XSPR_MASK, MFDEC1,  EXT,    {RT}},
7749
{"mflr",  XSPR(31,339,  8), XSPR_MASK, COM, EXT,    {RT}},
7750
{"mfctr", XSPR(31,339,  9), XSPR_MASK, COM, EXT,    {RT}},
7751
{"mfuamr",  XSPR(31,339, 13), XSPR_MASK, POWER9,  EXT,    {RS}},
7752
{"mfdscr",  XSPR(31,339, 17), XSPR_MASK, POWER6,  EXT,    {RT}},
7753
{"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, EXT,    {RT}},
7754
{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7755
{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7756
{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2,  MFDEC1|EXT, {RT}},
7757
{"mfsdr0",  XSPR(31,339, 24), XSPR_MASK, POWER, EXT,    {RT}},
7758
{"mfsdr1",  XSPR(31,339, 25), XSPR_MASK, COM, TITAN|EXT,  {RT}},
7759
{"mfsrr0",  XSPR(31,339, 26), XSPR_MASK, COM, EXT,    {RT}},
7760
{"mfsrr1",  XSPR(31,339, 27), XSPR_MASK, COM, EXT,    {RT}},
7761
{"mfcfar",  XSPR(31,339, 28), XSPR_MASK, POWER6,  EXT,    {RT}},
7762
{"mfamr", XSPR(31,339, 29), XSPR_MASK, POWER7,  EXT,    {RS}},
7763
{"mfpidr",  XSPR(31,339, 48), XSPR_MASK, POWER10, EXT,    {RS}},
7764
{"mfpid", XSPR(31,339, 48), XSPR_MASK, BOOKE, EXT,    {RT}},
7765
{"mfcsrr0", XSPR(31,339, 58), XSPR_MASK, BOOKE, EXT,    {RT}},
7766
{"mfcsrr1", XSPR(31,339, 59), XSPR_MASK, BOOKE, EXT,    {RT}},
7767
{"mfiamr",  XSPR(31,339, 61), XSPR_MASK, POWER10, EXT,    {RS}},
7768
{"mfdear",  XSPR(31,339, 61), XSPR_MASK, BOOKE, EXT,    {RT}},
7769
{"mfesr", XSPR(31,339, 62), XSPR_MASK, BOOKE, EXT,    {RT}},
7770
{"mfivpr",  XSPR(31,339, 63), XSPR_MASK, BOOKE, EXT,    {RT}},
7771
{"mfctrl",  XSPR(31,339,136), XSPR_MASK, POWER4,  EXT,    {RT}},
7772
{"mfcmpa",  XSPR(31,339,144), XSPR_MASK, PPC860,  EXT,    {RT}},
7773
{"mfcmpb",  XSPR(31,339,145), XSPR_MASK, PPC860,  EXT,    {RT}},
7774
{"mfcmpc",  XSPR(31,339,146), XSPR_MASK, PPC860,  EXT,    {RT}},
7775
{"mfcmpd",  XSPR(31,339,147), XSPR_MASK, PPC860,  EXT,    {RT}},
7776
{"mficr", XSPR(31,339,148), XSPR_MASK, PPC860,  EXT,    {RT}},
7777
{"mfder", XSPR(31,339,149), XSPR_MASK, PPC860,  EXT,    {RT}},
7778
{"mfcounta",  XSPR(31,339,150), XSPR_MASK, PPC860,  EXT,    {RT}},
7779
{"mfcountb",  XSPR(31,339,151), XSPR_MASK, PPC860,  EXT,    {RT}},
7780
{"mfcmpe",  XSPR(31,339,152), XSPR_MASK, PPC860,  EXT,    {RT}},
7781
{"mffscr",  XSPR(31,339,153), XSPR_MASK, POWER10, EXT,    {RS}},
7782
{"mfcmpf",  XSPR(31,339,153), XSPR_MASK, PPC860,  EXT,    {RT}},
7783
{"mfcmpg",  XSPR(31,339,154), XSPR_MASK, PPC860,  EXT,    {RT}},
7784
{"mfcmph",  XSPR(31,339,155), XSPR_MASK, PPC860,  EXT,    {RT}},
7785
{"mflctrl1",  XSPR(31,339,156), XSPR_MASK, PPC860,  EXT,    {RT}},
7786
{"mfuamor", XSPR(31,339,157), XSPR_MASK, POWER7,  EXT,    {RS}},
7787
{"mflctrl2",  XSPR(31,339,157), XSPR_MASK, PPC860,  EXT,    {RT}},
7788
{"mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860,  EXT,    {RT}},
7789
{"mfpspb",  XSPR(31,339,159), XSPR_MASK, POWER10, EXT,    {RS}},
7790
{"mfbar", XSPR(31,339,159), XSPR_MASK, PPC860,  EXT,    {RT}},
7791
{"mfdpdes", XSPR(31,339,176), XSPR_MASK, POWER10, EXT,    {RS}},
7792
{"mfdawr0", XSPR(31,339,180), XSPR_MASK, POWER10, EXT,    {RS}},
7793
{"mfdawr1", XSPR(31,339,181), XSPR_MASK, POWER10, EXT,    {RS}},
7794
{"mfrpr", XSPR(31,339,186), XSPR_MASK, POWER10, EXT,    {RS}},
7795
{"mfciabr", XSPR(31,339,187), XSPR_MASK, POWER10, EXT,    {RS}},
7796
{"mfdawrx0",  XSPR(31,339,188), XSPR_MASK, POWER10, EXT,    {RS}},
7797
{"mfdawrx1",  XSPR(31,339,189), XSPR_MASK, POWER10, EXT,    {RS}},
7798
{"mfhfscr", XSPR(31,339,190), XSPR_MASK, POWER10, EXT,    {RS}},
7799
{"mfvrsave",  XSPR(31,339,256), XSPR_MASK, PPCVEC,  EXT,    {RT}},
7800
{"mfusprg0",  XSPR(31,339,256), XSPR_MASK, BOOKE, EXT,    {RT}},
7801
{"mfsprg",  XSPR(31,339,256), XSPRG_MASK, PPC,  EXT,    {RT, SPRG}},
7802
{"mfusprg3",  XSPR(31,339,259), XSPR_MASK, POWER10, EXT,    {RT}},
7803
{"mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, EXT,   {RT}},
7804
{"mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, EXT,   {RT}},
7805
{"mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, EXT,   {RT}},
7806
{"mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, EXT,   {RT}},
7807
{"mftbu", XSPR(31,339,269), XSPR_MASK, POWER4|BOOKE, EXT,   {RT}},
7808
{"mftb",  X(31,339),    X_MASK,    POWER4|BOOKE, EXT,   {RT, TBR}},
7809
{"mftbl", XSPR(31,339,268), XSPR_MASK, POWER4|BOOKE, EXT,   {RT}},
7810
{"mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, EXT,    {RT}},
7811
{"mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, EXT,    {RT}},
7812
{"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, EXT,    {RT}},
7813
{"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, EXT,    {RT}},
7814
{"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, EXT,    {RT}},
7815
{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, TITAN|EXT,  {RT}},
7816
{"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, EXT,    {RT}},
7817
{"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, EXT,    {RT}},
7818
{"mfhsprg0",  XSPR(31,339,304), XSPR_MASK, POWER10, EXT,    {RS}},
7819
{"mfdbsr",  XSPR(31,339,304), XSPR_MASK, BOOKE, EXT,    {RT}},
7820
{"mfhsprg1",  XSPR(31,339,305), XSPR_MASK, POWER10, EXT,    {RS}},
7821
{"mfhdisr", XSPR(31,339,306), XSPR_MASK, POWER10, EXT,    {RS}},
7822
{"mfhdar",  XSPR(31,339,307), XSPR_MASK, POWER10, EXT,    {RS}},
7823
{"mfspurr", XSPR(31,339,308), XSPR_MASK, POWER10, EXT,    {RS}},
7824
{"mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, EXT,    {RT}},
7825
{"mfpurr",  XSPR(31,339,309), XSPR_MASK, POWER10, EXT,    {RS}},
7826
{"mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, EXT,    {RT}},
7827
{"mfhdec",  XSPR(31,339,310), XSPR_MASK, POWER10, EXT,    {RS}},
7828
{"mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, EXT,    {RT}},
7829
{"mfiac1",  XSPR(31,339,312), XSPR_MASK, BOOKE, EXT,    {RT}},
7830
{"mfhrmor", XSPR(31,339,313), XSPR_MASK, POWER10, EXT,    {RS}},
7831
{"mfiac2",  XSPR(31,339,313), XSPR_MASK, BOOKE, EXT,    {RT}},
7832
{"mfhsrr0", XSPR(31,339,314), XSPR_MASK, POWER10, EXT,    {RS}},
7833
{"mfiac3",  XSPR(31,339,314), XSPR_MASK, BOOKE, EXT,    {RT}},
7834
{"mfhsrr1", XSPR(31,339,315), XSPR_MASK, POWER10, EXT,    {RS}},
7835
{"mfiac4",  XSPR(31,339,315), XSPR_MASK, BOOKE, EXT,    {RT}},
7836
{"mfdac1",  XSPR(31,339,316), XSPR_MASK, BOOKE, EXT,    {RT}},
7837
{"mfdac2",  XSPR(31,339,317), XSPR_MASK, BOOKE, EXT,    {RT}},
7838
{"mflpcr",  XSPR(31,339,318), XSPR_MASK, POWER10, EXT,    {RS}},
7839
{"mfdvc1",  XSPR(31,339,318), XSPR_MASK, BOOKE, EXT,    {RT}},
7840
{"mflpidr", XSPR(31,339,319), XSPR_MASK, POWER10, EXT,    {RS}},
7841
{"mfdvc2",  XSPR(31,339,319), XSPR_MASK, BOOKE, EXT,    {RT}},
7842
{"mfhmer",  XSPR(31,339,336), XSPR_MASK, POWER7,  EXT,    {RS}},
7843
{"mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, EXT,    {RT}},
7844
{"mfhmeer", XSPR(31,339,337), XSPR_MASK, POWER7,  EXT,    {RS}},
7845
{"mfpcr", XSPR(31,339,338), XSPR_MASK, POWER10, EXT,    {RS}},
7846
{"mfheir",  XSPR(31,339,339), XSPR_MASK, POWER10, EXT,    {RS}},
7847
{"mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, EXT,    {RT}},
7848
{"mfamor",  XSPR(31,339,349), XSPR_MASK, POWER7,  EXT,    {RS}},
7849
{"mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, EXT,    {RT}},
7850
{"mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, EXT,    {RT}},
7851
{"mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, EXT,    {RT}},
7852
{"mfivor3", XSPR(31,339,403), XSPR_MASK, BOOKE, EXT,    {RT}},
7853
{"mfivor4", XSPR(31,339,404), XSPR_MASK, BOOKE, EXT,    {RT}},
7854
{"mfivor5", XSPR(31,339,405), XSPR_MASK, BOOKE, EXT,    {RT}},
7855
{"mfivor6", XSPR(31,339,406), XSPR_MASK, BOOKE, EXT,    {RT}},
7856
{"mfivor7", XSPR(31,339,407), XSPR_MASK, BOOKE, EXT,    {RT}},
7857
{"mfivor8", XSPR(31,339,408), XSPR_MASK, BOOKE, EXT,    {RT}},
7858
{"mfivor9", XSPR(31,339,409), XSPR_MASK, BOOKE, EXT,    {RT}},
7859
{"mfivor10",  XSPR(31,339,410), XSPR_MASK, BOOKE, EXT,    {RT}},
7860
{"mfivor11",  XSPR(31,339,411), XSPR_MASK, BOOKE, EXT,    {RT}},
7861
{"mfivor12",  XSPR(31,339,412), XSPR_MASK, BOOKE, EXT,    {RT}},
7862
{"mfivor13",  XSPR(31,339,413), XSPR_MASK, BOOKE, EXT,    {RT}},
7863
{"mfivor14",  XSPR(31,339,414), XSPR_MASK, BOOKE, EXT,    {RT}},
7864
{"mfivor15",  XSPR(31,339,415), XSPR_MASK, BOOKE, EXT,    {RT}},
7865
{"mftir", XSPR(31,339,446), XSPR_MASK, POWER10, EXT,    {RS}},
7866
{"mfptcr",  XSPR(31,339,464), XSPR_MASK, POWER10, EXT,    {RS}},
7867
{"mfusprg0",  XSPR(31,339,496), XSPR_MASK, POWER10, EXT,    {RS}},
7868
{"mfusprg1",  XSPR(31,339,497), XSPR_MASK, POWER10, EXT,    {RS}},
7869
{"mfurmor", XSPR(31,339,505), XSPR_MASK, POWER10, EXT,    {RS}},
7870
{"mfusrr0", XSPR(31,339,506), XSPR_MASK, POWER10, EXT,    {RS}},
7871
{"mfusrr1", XSPR(31,339,507), XSPR_MASK, POWER10, EXT,    {RS}},
7872
{"mfsmfctrl", XSPR(31,339,511), XSPR_MASK, POWER10, EXT,    {RS}},
7873
{"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE,  EXT,    {RT}},
7874
{"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, EXT,    {RT}},
7875
{"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, EXT,    {RT}},
7876
{"mfivor32",  XSPR(31,339,528), XSPR_MASK, PPCSPE|E6500, EXT,   {RT}},
7877
{"mfivor33",  XSPR(31,339,529), XSPR_MASK, PPCSPE|E6500, EXT,   {RT}},
7878
{"mfivor34",  XSPR(31,339,530), XSPR_MASK, PPCSPE,  EXT,    {RT}},
7879
{"mfivor35",  XSPR(31,339,531), XSPR_MASK, PPCPMR,  EXT,    {RT}},
7880
{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC,  TITAN|EXT,  {RT, SPRBAT}},
7881
{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC,  TITAN|EXT,  {RT, SPRBAT}},
7882
{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC,  TITAN|EXT,  {RT, SPRBAT}},
7883
{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC,  TITAN|EXT,  {RT, SPRBAT}},
7884
{"mfic_cst",  XSPR(31,339,560), XSPR_MASK, PPC860,  EXT,    {RT}},
7885
{"mfic_adr",  XSPR(31,339,561), XSPR_MASK, PPC860,  EXT,    {RT}},
7886
{"mfic_dat",  XSPR(31,339,562), XSPR_MASK, PPC860,  EXT,    {RT}},
7887
{"mfdc_cst",  XSPR(31,339,568), XSPR_MASK, PPC860,  EXT,    {RT}},
7888
{"mfdc_adr",  XSPR(31,339,569), XSPR_MASK, PPC860,  EXT,    {RT}},
7889
{"mfdc_dat",  XSPR(31,339,570), XSPR_MASK, PPC860,  EXT,    {RT}},
7890
{"mfmcsrr0",  XSPR(31,339,570), XSPR_MASK, PPCRFMCI,  EXT,    {RT}},
7891
{"mfmcsrr1",  XSPR(31,339,571), XSPR_MASK, PPCRFMCI,  EXT,    {RT}},
7892
{"mfmcsr",  XSPR(31,339,572), XSPR_MASK, PPCRFMCI,  EXT,    {RT}},
7893
{"mfmcar",  XSPR(31,339,573), XSPR_MASK, PPCRFMCI,  TITAN|EXT,  {RT}},
7894
{"mfdpdr",  XSPR(31,339,630), XSPR_MASK, PPC860,  EXT,    {RT}},
7895
{"mfdpir",  XSPR(31,339,631), XSPR_MASK, PPC860,  EXT,    {RT}},
7896
{"mfimmr",  XSPR(31,339,638), XSPR_MASK, PPC860,  EXT,    {RT}},
7897
{"mfusier2",  XSPR(31,339,736), XSPR_MASK, POWER10, EXT,    {RT}},
7898
{"mfsier2", XSPR(31,339,736), XSPR_MASK, POWER10, EXT,    {RT}},
7899
{"mfusier3",  XSPR(31,339,737), XSPR_MASK, POWER10, EXT,    {RT}},
7900
{"mfsier3", XSPR(31,339,737), XSPR_MASK, POWER10, EXT,    {RT}},
7901
{"mfummcr3",  XSPR(31,339,738), XSPR_MASK, POWER10, EXT,    {RT}},
7902
{"mfmmcr3", XSPR(31,339,738), XSPR_MASK, POWER10, EXT,    {RT}},
7903
{"mfusier", XSPR(31,339,768), XSPR_MASK, POWER10, EXT,    {RT}},
7904
{"mfsier",  XSPR(31,339,768), XSPR_MASK, POWER10, EXT,    {RT}},
7905
{"mfummcr2",  XSPR(31,339,769), XSPR_MASK, POWER9,  EXT,    {RT}},
7906
{"mfmmcr2", XSPR(31,339,769), XSPR_MASK, POWER9,  EXT,    {RT}},
7907
{"mfummcra",  XSPR(31,339,770), XSPR_MASK, POWER9,  EXT,    {RS}},
7908
{"mfmmcra", XSPR(31,339,770), XSPR_MASK, POWER7,  EXT,    {RS}},
7909
{"mfupmc1", XSPR(31,339,771), XSPR_MASK, POWER9,  EXT,    {RT}},
7910
{"mfpmc1",  XSPR(31,339,771), XSPR_MASK, POWER7,  EXT,    {RT}},
7911
{"mfupmc2", XSPR(31,339,772), XSPR_MASK, POWER9,  EXT,    {RT}},
7912
{"mfpmc2",  XSPR(31,339,772), XSPR_MASK, POWER7,  EXT,    {RT}},
7913
{"mfupmc3", XSPR(31,339,773), XSPR_MASK, POWER9,  EXT,    {RT}},
7914
{"mfpmc3",  XSPR(31,339,773), XSPR_MASK, POWER7,  EXT,    {RT}},
7915
{"mfupmc4", XSPR(31,339,774), XSPR_MASK, POWER9,  EXT,    {RT}},
7916
{"mfpmc4",  XSPR(31,339,774), XSPR_MASK, POWER7,  EXT,    {RT}},
7917
{"mfupmc5", XSPR(31,339,775), XSPR_MASK, POWER9,  EXT,    {RT}},
7918
{"mfpmc5",  XSPR(31,339,775), XSPR_MASK, POWER7,  EXT,    {RT}},
7919
{"mfupmc6", XSPR(31,339,776), XSPR_MASK, POWER9,  EXT,    {RT}},
7920
{"mfpmc6",  XSPR(31,339,776), XSPR_MASK, POWER7,  EXT,    {RT}},
7921
{"mfummcr0",  XSPR(31,339,779), XSPR_MASK, POWER9,  EXT,    {RS}},
7922
{"mfmmcr0", XSPR(31,339,779), XSPR_MASK, POWER7,  EXT,    {RS}},
7923
{"mfusiar", XSPR(31,339,780), XSPR_MASK, POWER9,  EXT,    {RS}},
7924
{"mfsiar",  XSPR(31,339,780), XSPR_MASK, POWER9,  EXT,    {RS}},
7925
{"mfusdar", XSPR(31,339,781), XSPR_MASK, POWER9,  EXT,    {RS}},
7926
{"mfsdar",  XSPR(31,339,781), XSPR_MASK, POWER9,  EXT,    {RS}},
7927
{"mfummcr1",  XSPR(31,339,782), XSPR_MASK, POWER9,  EXT,    {RS}},
7928
{"mfmmcr1", XSPR(31,339,782), XSPR_MASK, POWER7,  EXT,    {RS}},
7929
{"mfmi_ctr",  XSPR(31,339,784), XSPR_MASK, PPC860,  EXT,    {RT}},
7930
{"mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860,  EXT,    {RT}},
7931
{"mfmi_epn",  XSPR(31,339,787), XSPR_MASK, PPC860,  EXT,    {RT}},
7932
{"mfmi_twc",  XSPR(31,339,789), XSPR_MASK, PPC860,  EXT,    {RT}},
7933
{"mfmi_rpn",  XSPR(31,339,790), XSPR_MASK, PPC860,  EXT,    {RT}},
7934
{"mfmd_ctr",  XSPR(31,339,792), XSPR_MASK, PPC860,  EXT,    {RT}},
7935
{"mfm_casid", XSPR(31,339,793), XSPR_MASK, PPC860,  EXT,    {RT}},
7936
{"mfmd_ap", XSPR(31,339,794), XSPR_MASK, PPC860,  EXT,    {RT}},
7937
{"mfmd_epn",  XSPR(31,339,795), XSPR_MASK, PPC860,  EXT,    {RT}},
7938
{"mfmd_twb",  XSPR(31,339,796), XSPR_MASK, PPC860,  EXT,    {RT}},
7939
{"mfmd_twc",  XSPR(31,339,797), XSPR_MASK, PPC860,  EXT,    {RT}},
7940
{"mfmd_rpn",  XSPR(31,339,798), XSPR_MASK, PPC860,  EXT,    {RT}},
7941
{"mfm_tw",  XSPR(31,339,799), XSPR_MASK, PPC860,  EXT,    {RT}},
7942
{"mfbescrs",  XSPR(31,339,800), XSPR_MASK, POWER9,  EXT,    {RS}},
7943
{"mfbescrsu", XSPR(31,339,801), XSPR_MASK, POWER9,  EXT,    {RS}},
7944
{"mfbescrr",  XSPR(31,339,802), XSPR_MASK, POWER9,  EXT,    {RS}},
7945
{"mfbescrru", XSPR(31,339,803), XSPR_MASK, POWER9,  EXT,    {RS}},
7946
{"mfebbhr", XSPR(31,339,804), XSPR_MASK, POWER9,  EXT,    {RS}},
7947
{"mfebbrr", XSPR(31,339,805), XSPR_MASK, POWER9,  EXT,    {RS}},
7948
{"mfbescr", XSPR(31,339,806), XSPR_MASK, POWER9,  EXT,    {RS}},
7949
{"mftar", XSPR(31,339,815), XSPR_MASK, POWER9,  EXT,    {RS}},
7950
{"mfasdr",  XSPR(31,339,816), XSPR_MASK, POWER10, EXT,    {RS}},
7951
{"mfmi_dbcam",  XSPR(31,339,816), XSPR_MASK, PPC860,  EXT,    {RT}},
7952
{"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860,  EXT,    {RT}},
7953
{"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860,  EXT,    {RT}},
7954
{"mfpsscr", XSPR(31,339,823), XSPR_MASK, POWER10, EXT,    {RS}},
7955
{"mfmd_dbcam",  XSPR(31,339,824), XSPR_MASK, PPC860,  EXT,    {RT}},
7956
{"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860,  EXT,    {RT}},
7957
{"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860,  EXT,    {RT}},
7958
{"mfic",  XSPR(31,339,848), XSPR_MASK, POWER8,  EXT,    {RS}},
7959
{"mfvtb", XSPR(31,339,849), XSPR_MASK, POWER8,  EXT,    {RS}},
7960
{"mfhpsscr",  XSPR(31,339,855), XSPR_MASK, POWER10, EXT,    {RS}},
7961
{"mfivndx", XSPR(31,339,880), XSPR_MASK, TITAN, EXT,    {RT}},
7962
{"mfdvndx", XSPR(31,339,881), XSPR_MASK, TITAN, EXT,    {RT}},
7963
{"mfivlim", XSPR(31,339,882), XSPR_MASK, TITAN, EXT,    {RT}},
7964
{"mfdvlim", XSPR(31,339,883), XSPR_MASK, TITAN, EXT,    {RT}},
7965
{"mfclcsr", XSPR(31,339,884), XSPR_MASK, TITAN, EXT,    {RT}},
7966
{"mfccr1",  XSPR(31,339,888), XSPR_MASK, TITAN, EXT,    {RT}},
7967
{"mfppr", XSPR(31,339,896), XSPR_MASK, POWER5,  EXT,    {RT}},
7968
{"mfppr32", XSPR(31,339,898), XSPR_MASK, POWER5,  EXT,    {RT}},
7969
{"mfgqr", XSPR(31,339,912), XSPRGQR_MASK, PPCPS,  EXT,    {RT, SPRGQR}},
7970
{"mfhid2",  XSPR(31,339,920), XSPR_MASK, GEKKO, EXT,    {RT}},
7971
{"mfwpar",  XSPR(31,339,921), XSPR_MASK, GEKKO, EXT,    {RT}},
7972
{"mfdmau",  XSPR(31,339,922), XSPR_MASK, GEKKO, EXT,    {RT}},
7973
{"mfdmal",  XSPR(31,339,923), XSPR_MASK, GEKKO, EXT,    {RT}},
7974
{"mfrstcfg",  XSPR(31,339,923), XSPR_MASK, TITAN, EXT,    {RT}},
7975
{"mfdcdbtrl", XSPR(31,339,924), XSPR_MASK, TITAN, EXT,    {RT}},
7976
{"mfdcdbtrh", XSPR(31,339,925), XSPR_MASK, TITAN, EXT,    {RT}},
7977
{"mficdbtr",  XSPR(31,339,927), XSPR_MASK, TITAN, EXT,    {RT}},
7978
{"mfummcr0",  XSPR(31,339,936), XSPR_MASK, PPC750,  EXT,    {RT}},
7979
{"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750,  EXT,    {RT}},
7980
{"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750,  EXT,    {RT}},
7981
{"mfusia",  XSPR(31,339,939), XSPR_MASK, PPC750,  EXT,    {RT}},
7982
{"mfummcr1",  XSPR(31,339,940), XSPR_MASK, PPC750,  EXT,    {RT}},
7983
{"mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750,  EXT,    {RT}},
7984
{"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750,  EXT,    {RT}},
7985
{"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403,  EXT,    {RT}},
7986
{"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403,  EXT,    {RT}},
7987
{"mfmmucr", XSPR(31,339,946), XSPR_MASK, TITAN, EXT,    {RT}},
7988
{"mfccr0",  XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, EXT,   {RT}},
7989
{"mfiac3",  XSPR(31,339,948), XSPR_MASK, PPC405,  EXT,    {RT}},
7990
{"mfiac4",  XSPR(31,339,949), XSPR_MASK, PPC405,  EXT,    {RT}},
7991
{"mfdvc1",  XSPR(31,339,950), XSPR_MASK, PPC405,  EXT,    {RT}},
7992
{"mfdvc2",  XSPR(31,339,951), XSPR_MASK, PPC405,  EXT,    {RT}},
7993
{"mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750,  EXT,    {RT}},
7994
{"mfpmc1",  XSPR(31,339,953), XSPR_MASK, PPC750,  EXT,    {RT}},
7995
{"mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403,  EXT,    {RT}},
7996
{"mfdcwr",  XSPR(31,339,954), XSPR_MASK, PPC403,  EXT,    {RT}},
7997
{"mfpmc2",  XSPR(31,339,954), XSPR_MASK, PPC750,  EXT,    {RT}},
7998
{"mfsia", XSPR(31,339,955), XSPR_MASK, PPC750,  EXT,    {RT}},
7999
{"mfsler",  XSPR(31,339,955), XSPR_MASK, PPC405,  EXT,    {RT}},
8000
{"mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750,  EXT,    {RT}},
8001
{"mfsu0r",  XSPR(31,339,956), XSPR_MASK, PPC405,  EXT,    {RT}},
8002
{"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405,  EXT,    {RT}},
8003
{"mfpmc3",  XSPR(31,339,957), XSPR_MASK, PPC750,  EXT,    {RT}},
8004
{"mfpmc4",  XSPR(31,339,958), XSPR_MASK, PPC750,  EXT,    {RT}},
8005
{"mficdbdr",  XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, EXT,   {RT}},
8006
{"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403,  EXT,    {RT}},
8007
{"mfdear",  XSPR(31,339,981), XSPR_MASK, PPC403,  EXT,    {RT}},
8008
{"mfevpr",  XSPR(31,339,982), XSPR_MASK, PPC403,  EXT,    {RT}},
8009
{"mfcdbcr", XSPR(31,339,983), XSPR_MASK, PPC403,  EXT,    {RT}},
8010
{"mftsr", XSPR(31,339,984), XSPR_MASK, PPC403,  EXT,    {RT}},
8011
{"mftcr", XSPR(31,339,986), XSPR_MASK, PPC403,  EXT,    {RT}},
8012
{"mfpit", XSPR(31,339,987), XSPR_MASK, PPC403,  EXT,    {RT}},
8013
{"mftbhi",  XSPR(31,339,988), XSPR_MASK, PPC403,  EXT,    {RT}},
8014
{"mftblo",  XSPR(31,339,989), XSPR_MASK, PPC403,  EXT,    {RT}},
8015
{"mfsrr2",  XSPR(31,339,990), XSPR_MASK, PPC403,  EXT,    {RT}},
8016
{"mfsrr3",  XSPR(31,339,991), XSPR_MASK, PPC403,  EXT,    {RT}},
8017
{"mfdbsr",  XSPR(31,339,1008), XSPR_MASK, PPC403, EXT,    {RT}},
8018
{"mfhid0",  XSPR(31,339,1008), XSPR_MASK, GEKKO,  EXT,    {RT}},
8019
{"mfhid1",  XSPR(31,339,1009), XSPR_MASK, GEKKO,  EXT,    {RT}},
8020
{"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, EXT,    {RT}},
8021
{"mfiabr",  XSPR(31,339,1010), XSPR_MASK, GEKKO,  EXT,    {RT}},
8022
{"mfhid4",  XSPR(31,339,1011), XSPR_MASK, BROADWAY, EXT,    {RT}},
8023
{"mfdbdr",  XSPR(31,339,1011), XSPR_MASK, TITAN,  EXT,    {RS}},
8024
{"mfiac1",  XSPR(31,339,1012), XSPR_MASK, PPC403, EXT,    {RT}},
8025
{"mfiac2",  XSPR(31,339,1013), XSPR_MASK, PPC403, EXT,    {RT}},
8026
{"mfdabr",  XSPR(31,339,1013), XSPR_MASK, PPC750, EXT,    {RT}},
8027
{"mfdac1",  XSPR(31,339,1014), XSPR_MASK, PPC403, EXT,    {RT}},
8028
{"mfdac2",  XSPR(31,339,1015), XSPR_MASK, PPC403, EXT,    {RT}},
8029
{"mfl2cr",  XSPR(31,339,1017), XSPR_MASK, PPC750, EXT,    {RT}},
8030
{"mfdccr",  XSPR(31,339,1018), XSPR_MASK, PPC403, EXT,    {RT}},
8031
{"mficcr",  XSPR(31,339,1019), XSPR_MASK, PPC403, EXT,    {RT}},
8032
{"mfictc",  XSPR(31,339,1019), XSPR_MASK, PPC750, EXT,    {RT}},
8033
{"mfpbl1",  XSPR(31,339,1020), XSPR_MASK, PPC403, EXT,    {RT}},
8034
{"mfthrm1", XSPR(31,339,1020), XSPR_MASK, PPC750, EXT,    {RT}},
8035
{"mfpbu1",  XSPR(31,339,1021), XSPR_MASK, PPC403, EXT,    {RT}},
8036
{"mfthrm2", XSPR(31,339,1021), XSPR_MASK, PPC750, EXT,    {RT}},
8037
{"mfpbl2",  XSPR(31,339,1022), XSPR_MASK, PPC403, EXT,    {RT}},
8038
{"mfthrm3", XSPR(31,339,1022), XSPR_MASK, PPC750, EXT,    {RT}},
8039
{"mfpir", XSPR(31,339,1023), XSPR_MASK, POWER10,  EXT,    {RT}},
8040
{"mfpbu2",  XSPR(31,339,1023), XSPR_MASK, PPC403, EXT,    {RT}},
8041
{"mfspr", X(31,339),  X_MASK,      COM, 0,    {RT, SPR}},
8042
8043
{"lwax",  X(31,341),  X_MASK,      PPC64, 0,    {RT, RA0, RB}},
8044
8045
{"dst",   XDSS(31,342,0), XDSS_MASK,   PPCVEC,  0,    {RA, RB, STRM}},
8046
{"dstt",  XDSS(31,342,1), XDSS_MASK,   PPCVEC,  0,    {RA, RB, STRM}},
8047
8048
{"lhax",  X(31,343),  X_MASK,      COM, 0,    {RT, RA0, RB}},
8049
8050
{"lvxl",  X(31,359),  X_MASK,      PPCVEC,  0,    {VD, RA0, RB}},
8051
8052
{"abs",   XO(31,360,0,0), XORB_MASK,   M601,  0,    {RT, RA}},
8053
{"abs.",  XO(31,360,0,1), XORB_MASK,   M601,  0,    {RT, RA}},
8054
8055
{"divs",  XO(31,363,0,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
8056
{"divs.", XO(31,363,0,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
8057
8058
{"lxvwsx",  X(31,364),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
8059
8060
{"tlbia", X(31,370),  0xffffffff,  PPC, E500|TITAN, {0}},
8061
8062
{"mftbu", XSPR(31,371,269), XSPR_MASK, PPC, NO371|POWER4|EXT, {RT}},
8063
{"mftb",  X(31,371),  X_MASK,      PPC, NO371|POWER4,   {RT, TBR}},
8064
{"mftbl", XSPR(31,371,268), XSPR_MASK, PPC, NO371|POWER4|EXT, {RT}},
8065
8066
{"lwaux", X(31,373),  X_MASK,      PPC64, 0,    {RT, RAL, RB}},
8067
8068
{"dstst", XDSS(31,374,0), XDSS_MASK,   PPCVEC,  0,    {RA, RB, STRM}},
8069
{"dststt",  XDSS(31,374,1), XDSS_MASK,   PPCVEC,  0,    {RA, RB, STRM}},
8070
8071
{"lhaux", X(31,375),  X_MASK,      COM, 0,    {RT, RAL, RB}},
8072
8073
{"popcntw", X(31,378),  XRB_MASK,    POWER7|PPCA2, 0,   {RA, RS}},
8074
8075
{"setbc", X(31,384),  XRB_MASK,    POWER10, 0,    {RT, BI}},
8076
8077
{"mtdcrx",  X(31,387),  X_MASK,      BOOKE|PPCA2|PPC476, TITAN, {RA, RS}},
8078
{"mtdcrx.", XRC(31,387,1),  X_MASK,      PPCA2, 0,    {RA, RS}},
8079
8080
{"stvexbx", X(31,389),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8081
8082
{"dcblc", X(31,390),  X_MASK,  PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
8083
{"stdfcmx", APU(31,391,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8084
8085
{"divdeu",  XO(31,393,0,0), XO_MASK,     POWER7|PPCA2, 0,   {RT, RA, RB}},
8086
{"divdeu.", XO(31,393,0,1), XO_MASK,     POWER7|PPCA2, 0,   {RT, RA, RB}},
8087
{"divweu",  XO(31,395,0,0), XO_MASK,     POWER7|PPCA2, 0,   {RT, RA, RB}},
8088
{"divweu.", XO(31,395,0,1), XO_MASK,     POWER7|PPCA2, 0,   {RT, RA, RB}},
8089
8090
{"stxvx", X(31,396),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
8091
{"stxvl", X(31,397),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
8092
8093
{"dcblce",  X(31,398),  X_MASK,      PPCCHLK, E500MC,   {CT, RA, RB}},
8094
8095
{"slbmte",  X(31,402),  XRA_MASK,    PPC64, 0,    {RS, RB}},
8096
8097
{"mtvsrws", X(31,403),  XX1RB_MASK,  PPCVSX3, 0,    {XT6, RA}},
8098
8099
{"pbt.",  XRC(31,404,1),  X_MASK,      POWER8,  0,    {RS, RA0, RB}},
8100
8101
{"icswx", XRC(31,406,0),  X_MASK,   POWER7|PPCA2, 0,    {RS, RA, RB}},
8102
{"icswx.",  XRC(31,406,1),  X_MASK,   POWER7|PPCA2, 0,    {RS, RA, RB}},
8103
8104
{"sthx",  X(31,407),  X_MASK,      COM, 0,    {RS, RA0, RB}},
8105
8106
{"orc",   XRC(31,412,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
8107
{"orc.",  XRC(31,412,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
8108
8109
{"sthepx",  X(31,415),  X_MASK,   E500MC|PPCA2, 0,    {RS, RA0, RB}},
8110
8111
{"setbcr",  X(31,416),  XRB_MASK,    POWER10, 0,    {RT, BI}},
8112
8113
{"mtdcrux", X(31,419),  X_MASK,  PPC464|PPC476, 0,    {RA, RS}},
8114
8115
{"stvexhx", X(31,421),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8116
8117
{"dcblq.",  XRC(31,422,1),  X_MASK,      E6500, 0,    {CT, RA0, RB}},
8118
8119
{"divde", XO(31,425,0,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8120
{"divde.",  XO(31,425,0,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8121
{"divwe", XO(31,427,0,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8122
{"divwe.",  XO(31,427,0,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8123
8124
{"stxvll",  X(31,429),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
8125
8126
{"clrbhrb", X(31,430),  0xffffffff,  POWER8,  0,    {0}},
8127
8128
{"slbie", X(31,434),  XRTRA_MASK,  PPC64, 0,    {RB}},
8129
8130
{"mtvsrdd", X(31,435),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
8131
8132
{"ecowx", X(31,438),  X_MASK,      PPC, E500|TITAN, {RT, RA0, RB}},
8133
8134
{"sthux", X(31,439),  X_MASK,      COM, 0,    {RS, RAS, RB}},
8135
8136
/* or 1,1,1 */
8137
{"cctpl", 0x7c210b78, 0xffffffff,  CELL,  EXT,    {0}},
8138
/* or 2,2,2 */
8139
{"cctpm", 0x7c421378, 0xffffffff,  CELL,  EXT,    {0}},
8140
/* or 3,3,3 */
8141
{"cctph", 0x7c631b78, 0xffffffff,  CELL,  EXT,    {0}},
8142
/* or 26,26,26 */
8143
{"miso",  0x7f5ad378,   0xffffffff, POWER8|E6500, EXT,    {0}},
8144
/* or 27,27,27 */
8145
{"yield", 0x7f7bdb78, 0xffffffff,  POWER7,  EXT,    {0}},
8146
/* or 28,28,28 */
8147
{"mdors", 0x7f9ce378, 0xffffffff,  E500MC,  EXT,    {0}},
8148
{"db8cyc",  0x7f9ce378, 0xffffffff,  CELL,  EXT,    {0}},
8149
/* or 29,29,29 */
8150
{"mdoio", 0x7fbdeb78, 0xffffffff,  POWER7,  EXT,    {0}},
8151
{"db10cyc", 0x7fbdeb78, 0xffffffff,  CELL,  EXT,    {0}},
8152
/* or 30,30,30 */
8153
{"mdoom", 0x7fdef378, 0xffffffff,  POWER7,  EXT,    {0}},
8154
{"db12cyc", 0x7fdef378, 0xffffffff,  CELL,  EXT,    {0}},
8155
/* or 31,31,31 */
8156
{"db16cyc", 0x7ffffb78, 0xffffffff,  CELL,  EXT,    {0}},
8157
8158
{"mr",    XRC(31,444,0),  X_MASK,      COM, EXT,    {RA, RSB}},
8159
{"or",    XRC(31,444,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
8160
{"mr.",   XRC(31,444,1),  X_MASK,      COM, EXT,    {RA, RSB}},
8161
{"or.",   XRC(31,444,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
8162
8163
{"setnbc",  X(31,448),  XRB_MASK,    POWER10, 0,    {RT, BI}},
8164
8165
{"mtexisr", XSPR(31,451, 64), XSPR_MASK, PPC403,  0,    {RS}},
8166
{"mtexier", XSPR(31,451, 66), XSPR_MASK, PPC403,  0,    {RS}},
8167
{"mtbr0", XSPR(31,451,128), XSPR_MASK, PPC403,  0,    {RS}},
8168
{"mtbr1", XSPR(31,451,129), XSPR_MASK, PPC403,  0,    {RS}},
8169
{"mtbr2", XSPR(31,451,130), XSPR_MASK, PPC403,  0,    {RS}},
8170
{"mtbr3", XSPR(31,451,131), XSPR_MASK, PPC403,  0,    {RS}},
8171
{"mtbr4", XSPR(31,451,132), XSPR_MASK, PPC403,  0,    {RS}},
8172
{"mtbr5", XSPR(31,451,133), XSPR_MASK, PPC403,  0,    {RS}},
8173
{"mtbr6", XSPR(31,451,134), XSPR_MASK, PPC403,  0,    {RS}},
8174
{"mtbr7", XSPR(31,451,135), XSPR_MASK, PPC403,  0,    {RS}},
8175
{"mtbear",  XSPR(31,451,144), XSPR_MASK, PPC403,  0,    {RS}},
8176
{"mtbesr",  XSPR(31,451,145), XSPR_MASK, PPC403,  0,    {RS}},
8177
{"mtiocr",  XSPR(31,451,160), XSPR_MASK, PPC403,  0,    {RS}},
8178
{"mtdmacr0",  XSPR(31,451,192), XSPR_MASK, PPC403,  0,    {RS}},
8179
{"mtdmact0",  XSPR(31,451,193), XSPR_MASK, PPC403,  0,    {RS}},
8180
{"mtdmada0",  XSPR(31,451,194), XSPR_MASK, PPC403,  0,    {RS}},
8181
{"mtdmasa0",  XSPR(31,451,195), XSPR_MASK, PPC403,  0,    {RS}},
8182
{"mtdmacc0",  XSPR(31,451,196), XSPR_MASK, PPC403,  0,    {RS}},
8183
{"mtdmacr1",  XSPR(31,451,200), XSPR_MASK, PPC403,  0,    {RS}},
8184
{"mtdmact1",  XSPR(31,451,201), XSPR_MASK, PPC403,  0,    {RS}},
8185
{"mtdmada1",  XSPR(31,451,202), XSPR_MASK, PPC403,  0,    {RS}},
8186
{"mtdmasa1",  XSPR(31,451,203), XSPR_MASK, PPC403,  0,    {RS}},
8187
{"mtdmacc1",  XSPR(31,451,204), XSPR_MASK, PPC403,  0,    {RS}},
8188
{"mtdmacr2",  XSPR(31,451,208), XSPR_MASK, PPC403,  0,    {RS}},
8189
{"mtdmact2",  XSPR(31,451,209), XSPR_MASK, PPC403,  0,    {RS}},
8190
{"mtdmada2",  XSPR(31,451,210), XSPR_MASK, PPC403,  0,    {RS}},
8191
{"mtdmasa2",  XSPR(31,451,211), XSPR_MASK, PPC403,  0,    {RS}},
8192
{"mtdmacc2",  XSPR(31,451,212), XSPR_MASK, PPC403,  0,    {RS}},
8193
{"mtdmacr3",  XSPR(31,451,216), XSPR_MASK, PPC403,  0,    {RS}},
8194
{"mtdmact3",  XSPR(31,451,217), XSPR_MASK, PPC403,  0,    {RS}},
8195
{"mtdmada3",  XSPR(31,451,218), XSPR_MASK, PPC403,  0,    {RS}},
8196
{"mtdmasa3",  XSPR(31,451,219), XSPR_MASK, PPC403,  0,    {RS}},
8197
{"mtdmacc3",  XSPR(31,451,220), XSPR_MASK, PPC403,  0,    {RS}},
8198
{"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403,  0,    {RS}},
8199
{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {SPR, RS}},
8200
{"mtdcr.",  XRC(31,451,1), X_MASK,       PPCA2, 0,    {SPR, RS}},
8201
8202
{"stvexwx", X(31,453),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8203
8204
{"dccci", X(31,454), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
8205
{"dci",   X(31,454),  XRARB_MASK, PPCA2|PPC476, 0,    {CT}},
8206
8207
{"divdu", XO(31,457,0,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8208
{"divdu.",  XO(31,457,0,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8209
8210
{"divwu", XO(31,459,0,0), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8211
{"divwu.",  XO(31,459,0,1), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8212
8213
{"stxvpx",  X(31,461),  XX1_MASK,    POWER10, 0,    {XSP, RA0, RB}},
8214
8215
{"mtpmr", X(31,462),  X_MASK, PPCPMR|PPCE300, 0,    {PMR, RS}},
8216
{"mttmr", X(31,494),  X_MASK,      PPCTMR,  0,    {TMR, RS}},
8217
8218
{"slbieg",  X(31,466),  XRA_MASK,    POWER9,  0,    {RS, RB}},
8219
8220
{"mtmq",  XSPR(31,467,  0), XSPR_MASK, M601,  EXT,    {RS}},
8221
{"mtxer", XSPR(31,467,  1), XSPR_MASK, COM, EXT,    {RS}},
8222
{"mtudscr", XSPR(31,467,  3), XSPR_MASK, POWER9,  EXT,    {RS}},
8223
{"mtlr",  XSPR(31,467,  8), XSPR_MASK, COM, EXT,    {RS}},
8224
{"mtctr", XSPR(31,467,  9), XSPR_MASK, COM, EXT,    {RS}},
8225
{"mtuamr",  XSPR(31,467, 13), XSPR_MASK, POWER9,  EXT,    {RS}},
8226
{"mtdscr",  XSPR(31,467, 17), XSPR_MASK, POWER6,  EXT,    {RS}},
8227
{"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, EXT,    {RS}},
8228
{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8229
{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8230
{"mtrtcu",  XSPR(31,467, 20), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8231
{"mtrtcl",  XSPR(31,467, 21), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8232
{"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, EXT,    {RS}},
8233
{"mtsdr0",  XSPR(31,467, 24), XSPR_MASK, POWER, EXT,    {RS}},
8234
{"mtsdr1",  XSPR(31,467, 25), XSPR_MASK, COM, TITAN|EXT,  {RS}},
8235
{"mtsrr0",  XSPR(31,467, 26), XSPR_MASK, COM, EXT,    {RS}},
8236
{"mtsrr1",  XSPR(31,467, 27), XSPR_MASK, COM, EXT,    {RS}},
8237
{"mtcfar",  XSPR(31,467, 28), XSPR_MASK, POWER6,  EXT,    {RS}},
8238
{"mtamr", XSPR(31,467, 29), XSPR_MASK, POWER7,  EXT,    {RS}},
8239
{"mtpidr",  XSPR(31,467, 48), XSPR_MASK, POWER10, EXT,    {RS}},
8240
{"mtpid", XSPR(31,467, 48), XSPR_MASK, BOOKE, EXT,    {RS}},
8241
{"mtdecar", XSPR(31,467, 54), XSPR_MASK, BOOKE, EXT,    {RS}},
8242
{"mtcsrr0", XSPR(31,467, 58), XSPR_MASK, BOOKE, EXT,    {RS}},
8243
{"mtcsrr1", XSPR(31,467, 59), XSPR_MASK, BOOKE, EXT,    {RS}},
8244
{"mtiamr",  XSPR(31,467, 61), XSPR_MASK, POWER10, EXT,    {RS}},
8245
{"mtdear",  XSPR(31,467, 61), XSPR_MASK, BOOKE, EXT,    {RS}},
8246
{"mtesr", XSPR(31,467, 62), XSPR_MASK, BOOKE, EXT,    {RS}},
8247
{"mtivpr",  XSPR(31,467, 63), XSPR_MASK, BOOKE, EXT,    {RS}},
8248
{"mttfhar", XSPR(31,467,128), XSPR_MASK, POWER9,  EXT,    {RS}},
8249
{"mttfiar", XSPR(31,467,129), XSPR_MASK, POWER9,  EXT,    {RS}},
8250
{"mttexasr",  XSPR(31,467,130), XSPR_MASK, POWER9,  EXT,    {RS}},
8251
{"mttexasru", XSPR(31,467,131), XSPR_MASK, POWER9,  EXT,    {RS}},
8252
{"mtcmpa",  XSPR(31,467,144), XSPR_MASK, PPC860,  EXT,    {RS}},
8253
{"mtcmpb",  XSPR(31,467,145), XSPR_MASK, PPC860,  EXT,    {RS}},
8254
{"mtcmpc",  XSPR(31,467,146), XSPR_MASK, PPC860,  EXT,    {RS}},
8255
{"mtcmpd",  XSPR(31,467,147), XSPR_MASK, PPC860,  EXT,    {RS}},
8256
{"mticr", XSPR(31,467,148), XSPR_MASK, PPC860,  EXT,    {RS}},
8257
{"mtder", XSPR(31,467,149), XSPR_MASK, PPC860,  EXT,    {RS}},
8258
{"mtcounta",  XSPR(31,467,150), XSPR_MASK, PPC860,  EXT,    {RS}},
8259
{"mtcountb",  XSPR(31,467,151), XSPR_MASK, PPC860,  EXT,    {RS}},
8260
{"mtctrl",  XSPR(31,467,152), XSPR_MASK, POWER4,  EXT,    {RS}},
8261
{"mtcmpe",  XSPR(31,467,152), XSPR_MASK, PPC860,  EXT,    {RS}},
8262
{"mtfscr",  XSPR(31,467,153), XSPR_MASK, POWER10, EXT,    {RS}},
8263
{"mtcmpf",  XSPR(31,467,153), XSPR_MASK, PPC860,  EXT,    {RS}},
8264
{"mtcmpg",  XSPR(31,467,154), XSPR_MASK, PPC860,  EXT,    {RS}},
8265
{"mtcmph",  XSPR(31,467,155), XSPR_MASK, PPC860,  EXT,    {RS}},
8266
{"mtlctrl1",  XSPR(31,467,156), XSPR_MASK, PPC860,  EXT,    {RS}},
8267
{"mtuamor", XSPR(31,467,157), XSPR_MASK, POWER7,  EXT,    {RS}},
8268
{"mtlctrl2",  XSPR(31,467,157), XSPR_MASK, PPC860,  EXT,    {RS}},
8269
{"mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860,  EXT,    {RS}},
8270
{"mtpspb",  XSPR(31,467,159), XSPR_MASK, POWER10, EXT,    {RS}},
8271
{"mtbar", XSPR(31,467,159), XSPR_MASK, PPC860,  EXT,    {RS}},
8272
{"mtdpdes", XSPR(31,467,176), XSPR_MASK, POWER10, EXT,    {RS}},
8273
{"mtdawr0", XSPR(31,467,180), XSPR_MASK, POWER10, EXT,    {RS}},
8274
{"mtdawr1", XSPR(31,467,181), XSPR_MASK, POWER10, EXT,    {RS}},
8275
{"mtrpr", XSPR(31,467,186), XSPR_MASK, POWER10, EXT,    {RS}},
8276
{"mtciabr", XSPR(31,467,187), XSPR_MASK, POWER10, EXT,    {RS}},
8277
{"mtdawrx0",  XSPR(31,467,188), XSPR_MASK, POWER10, EXT,    {RS}},
8278
{"mtdawrx1",  XSPR(31,467,189), XSPR_MASK, POWER10, EXT,    {RS}},
8279
{"mthfscr", XSPR(31,467,190), XSPR_MASK, POWER10, EXT,    {RS}},
8280
{"mtvrsave",  XSPR(31,467,256), XSPR_MASK, PPCVEC,  EXT,    {RS}},
8281
{"mtusprg0",  XSPR(31,467,256), XSPR_MASK, BOOKE, EXT,    {RS}},
8282
{"mtsprg",  XSPR(31,467,256), XSPRG_MASK, PPC,  EXT,    {SPRG, RS}},
8283
{"mtsprg0", XSPR(31,467,272), XSPR_MASK, PPC, EXT,    {RS}},
8284
{"mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, EXT,    {RS}},
8285
{"mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, EXT,    {RS}},
8286
{"mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, EXT,    {RS}},
8287
{"mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, EXT,   {RS}},
8288
{"mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, EXT,   {RS}},
8289
{"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, EXT,   {RS}},
8290
{"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, EXT,   {RS}},
8291
{"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, EXT,    {RS}},
8292
{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, TITAN|EXT,  {RS}},
8293
{"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, EXT,    {RS}},
8294
{"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, EXT,    {RS}},
8295
{"mttbu40", XSPR(31,467,286), XSPR_MASK, POWER10, EXT,    {RS}},
8296
{"mthsprg0",  XSPR(31,467,304), XSPR_MASK, POWER10, EXT,    {RS}},
8297
{"mtdbsr",  XSPR(31,467,304), XSPR_MASK, BOOKE, EXT,    {RS}},
8298
{"mthsprg1",  XSPR(31,467,305), XSPR_MASK, POWER10, EXT,    {RS}},
8299
{"mthdisr", XSPR(31,467,306), XSPR_MASK, POWER10, EXT,    {RS}},
8300
{"mthdar",  XSPR(31,467,307), XSPR_MASK, POWER10, EXT,    {RS}},
8301
{"mtspurr", XSPR(31,467,308), XSPR_MASK, POWER10, EXT,    {RS}},
8302
{"mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, EXT,    {RS}},
8303
{"mtpurr",  XSPR(31,467,309), XSPR_MASK, POWER10, EXT,    {RS}},
8304
{"mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, EXT,    {RS}},
8305
{"mthdec",  XSPR(31,467,310), XSPR_MASK, POWER10, EXT,    {RS}},
8306
{"mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, EXT,    {RS}},
8307
{"mtiac1",  XSPR(31,467,312), XSPR_MASK, BOOKE, EXT,    {RS}},
8308
{"mthrmor", XSPR(31,467,313), XSPR_MASK, POWER10, EXT,    {RS}},
8309
{"mtiac2",  XSPR(31,467,313), XSPR_MASK, BOOKE, EXT,    {RS}},
8310
{"mthsrr0", XSPR(31,467,314), XSPR_MASK, POWER10, EXT,    {RS}},
8311
{"mtiac3",  XSPR(31,467,314), XSPR_MASK, BOOKE, EXT,    {RS}},
8312
{"mthsrr1", XSPR(31,467,315), XSPR_MASK, POWER10, EXT,    {RS}},
8313
{"mtiac4",  XSPR(31,467,315), XSPR_MASK, BOOKE, EXT,    {RS}},
8314
{"mtdac1",  XSPR(31,467,316), XSPR_MASK, BOOKE, EXT,    {RS}},
8315
{"mtdac2",  XSPR(31,467,317), XSPR_MASK, BOOKE, EXT,    {RS}},
8316
{"mtlpcr",  XSPR(31,467,318), XSPR_MASK, POWER10, EXT,    {RS}},
8317
{"mtdvc1",  XSPR(31,467,318), XSPR_MASK, BOOKE, EXT,    {RS}},
8318
{"mtlpidr", XSPR(31,467,319), XSPR_MASK, POWER10, EXT,    {RS}},
8319
{"mtdvc2",  XSPR(31,467,319), XSPR_MASK, BOOKE, EXT,    {RS}},
8320
{"mthmer",  XSPR(31,467,336), XSPR_MASK, POWER7,  EXT,    {RS}},
8321
{"mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, EXT,    {RS}},
8322
{"mthmeer", XSPR(31,467,337), XSPR_MASK, POWER7,  EXT,    {RS}},
8323
{"mtpcr", XSPR(31,467,338), XSPR_MASK, POWER10, EXT,    {RS}},
8324
{"mtheir",  XSPR(31,467,339), XSPR_MASK, POWER10, EXT,    {RS}},
8325
{"mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, EXT,    {RS}},
8326
{"mtamor",  XSPR(31,467,349), XSPR_MASK, POWER7,  EXT,    {RS}},
8327
{"mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, EXT,    {RS}},
8328
{"mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, EXT,    {RS}},
8329
{"mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, EXT,    {RS}},
8330
{"mtivor3", XSPR(31,467,403), XSPR_MASK, BOOKE, EXT,    {RS}},
8331
{"mtivor4", XSPR(31,467,404), XSPR_MASK, BOOKE, EXT,    {RS}},
8332
{"mtivor5", XSPR(31,467,405), XSPR_MASK, BOOKE, EXT,    {RS}},
8333
{"mtivor6", XSPR(31,467,406), XSPR_MASK, BOOKE, EXT,    {RS}},
8334
{"mtivor7", XSPR(31,467,407), XSPR_MASK, BOOKE, EXT,    {RS}},
8335
{"mtivor8", XSPR(31,467,408), XSPR_MASK, BOOKE, EXT,    {RS}},
8336
{"mtivor9", XSPR(31,467,409), XSPR_MASK, BOOKE, EXT,    {RS}},
8337
{"mtivor10",  XSPR(31,467,410), XSPR_MASK, BOOKE, EXT,    {RS}},
8338
{"mtivor11",  XSPR(31,467,411), XSPR_MASK, BOOKE, EXT,    {RS}},
8339
{"mtivor12",  XSPR(31,467,412), XSPR_MASK, BOOKE, EXT,    {RS}},
8340
{"mtivor13",  XSPR(31,467,413), XSPR_MASK, BOOKE, EXT,    {RS}},
8341
{"mtivor14",  XSPR(31,467,414), XSPR_MASK, BOOKE, EXT,    {RS}},
8342
{"mtivor15",  XSPR(31,467,415), XSPR_MASK, BOOKE, EXT,    {RS}},
8343
{"mtptcr",  XSPR(31,467,464), XSPR_MASK, POWER10, EXT,    {RS}},
8344
{"mtusprg0",  XSPR(31,467,496), XSPR_MASK, POWER10, EXT,    {RS}},
8345
{"mtusprg1",  XSPR(31,467,497), XSPR_MASK, POWER10, EXT,    {RS}},
8346
{"mturmor", XSPR(31,467,505), XSPR_MASK, POWER10, EXT,    {RS}},
8347
{"mtusrr0", XSPR(31,467,506), XSPR_MASK, POWER10, EXT,    {RS}},
8348
{"mtusrr1", XSPR(31,467,507), XSPR_MASK, POWER10, EXT,    {RS}},
8349
{"mtsmfctrl", XSPR(31,467,511), XSPR_MASK, POWER10, EXT,    {RS}},
8350
{"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE,  EXT,    {RS}},
8351
{"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, EXT,    {RS}},
8352
{"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, EXT,    {RS}},
8353
{"mtivor32",  XSPR(31,467,528), XSPR_MASK, PPCSPE|E6500, EXT,   {RS}},
8354
{"mtivor33",  XSPR(31,467,529), XSPR_MASK, PPCSPE|E6500, EXT,   {RS}},
8355
{"mtivor34",  XSPR(31,467,530), XSPR_MASK, PPCSPE,  EXT,    {RS}},
8356
{"mtivor35",  XSPR(31,467,531), XSPR_MASK, PPCPMR,  EXT,    {RS}},
8357
{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC,  TITAN|EXT,  {SPRBAT, RS}},
8358
{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC,  TITAN|EXT,  {SPRBAT, RS}},
8359
{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC,  TITAN|EXT,  {SPRBAT, RS}},
8360
{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC,  TITAN|EXT,  {SPRBAT, RS}},
8361
{"mtmcsrr0",  XSPR(31,467,570), XSPR_MASK, PPCRFMCI,  EXT,    {RS}},
8362
{"mtmcsrr1",  XSPR(31,467,571), XSPR_MASK, PPCRFMCI,  EXT,    {RS}},
8363
{"mtmcsr",  XSPR(31,467,572), XSPR_MASK, PPCRFMCI,  EXT,    {RS}},
8364
{"mtsier2", XSPR(31,467,752), XSPR_MASK, POWER10, EXT,    {RS}},
8365
{"mtsier3", XSPR(31,467,753), XSPR_MASK, POWER10, EXT,    {RS}},
8366
{"mtmmcr3", XSPR(31,467,754), XSPR_MASK, POWER10, EXT,    {RS}},
8367
{"mtummcr2",  XSPR(31,467,769), XSPR_MASK, POWER9,  EXT,    {RS}},
8368
{"mtmmcr2", XSPR(31,467,769), XSPR_MASK, POWER9,  EXT,    {RS}},
8369
{"mtummcra",  XSPR(31,467,770), XSPR_MASK, POWER9,  EXT,    {RS}},
8370
{"mtupmc1", XSPR(31,467,771), XSPR_MASK, POWER9,  EXT,    {RS}},
8371
{"mtupmc2", XSPR(31,467,772), XSPR_MASK, POWER9,  EXT,    {RS}},
8372
{"mtupmc3", XSPR(31,467,773), XSPR_MASK, POWER9,  EXT,    {RS}},
8373
{"mtupmc4", XSPR(31,467,774), XSPR_MASK, POWER9,  EXT,    {RS}},
8374
{"mtupmc5", XSPR(31,467,775), XSPR_MASK, POWER9,  EXT,    {RS}},
8375
{"mtupmc6", XSPR(31,467,776), XSPR_MASK, POWER9,  EXT,    {RS}},
8376
{"mtummcr0",  XSPR(31,467,779), XSPR_MASK, POWER9,  EXT,    {RS}},
8377
{"mtsier",  XSPR(31,467,784), XSPR_MASK, POWER10, EXT,    {RS}},
8378
{"mtmmcra", XSPR(31,467,786), XSPR_MASK, POWER7,  EXT,    {RS}},
8379
{"mtpmc1",  XSPR(31,467,787), XSPR_MASK, POWER7,  EXT,    {RS}},
8380
{"mtpmc2",  XSPR(31,467,788), XSPR_MASK, POWER7,  EXT,    {RS}},
8381
{"mtpmc3",  XSPR(31,467,789), XSPR_MASK, POWER7,  EXT,    {RS}},
8382
{"mtpmc4",  XSPR(31,467,790), XSPR_MASK, POWER7,  EXT,    {RS}},
8383
{"mtpmc5",  XSPR(31,467,791), XSPR_MASK, POWER7,  EXT,    {RS}},
8384
{"mtpmc6",  XSPR(31,467,792), XSPR_MASK, POWER7,  EXT,    {RS}},
8385
{"mtmmcr0", XSPR(31,467,795), XSPR_MASK, POWER7,  EXT,    {RS}},
8386
{"mtsiar",  XSPR(31,467,796), XSPR_MASK, POWER10, EXT,    {RS}},
8387
{"mtsdar",  XSPR(31,467,797), XSPR_MASK, POWER10, EXT,    {RS}},
8388
{"mtmmcr1", XSPR(31,467,798), XSPR_MASK, POWER7,  EXT,    {RS}},
8389
{"mtbescrs",  XSPR(31,467,800), XSPR_MASK, POWER9,  EXT,    {RS}},
8390
{"mtbescrsu", XSPR(31,467,801), XSPR_MASK, POWER9,  EXT,    {RS}},
8391
{"mtbescrr",  XSPR(31,467,802), XSPR_MASK, POWER9,  EXT,    {RS}},
8392
{"mtbescrru", XSPR(31,467,803), XSPR_MASK, POWER9,  EXT,    {RS}},
8393
{"mtebbhr", XSPR(31,467,804), XSPR_MASK, POWER9,  EXT,    {RS}},
8394
{"mtebbrr", XSPR(31,467,805), XSPR_MASK, POWER9,  EXT,    {RS}},
8395
{"mtbescr", XSPR(31,467,806), XSPR_MASK, POWER9,  EXT,    {RS}},
8396
{"mttar", XSPR(31,467,815), XSPR_MASK, POWER9,  EXT,    {RS}},
8397
{"mtasdr",  XSPR(31,467,816), XSPR_MASK, POWER10, EXT,    {RS}},
8398
{"mtpsscr", XSPR(31,467,823), XSPR_MASK, POWER10, EXT,    {RS}},
8399
{"mtic",  XSPR(31,467,848), XSPR_MASK, POWER8,  EXT,    {RS}},
8400
{"mtvtb", XSPR(31,467,849), XSPR_MASK, POWER8,  EXT,    {RS}},
8401
{"mthpsscr",  XSPR(31,467,855), XSPR_MASK, POWER10, EXT,    {RS}},
8402
{"mtivndx", XSPR(31,467,880), XSPR_MASK, TITAN, EXT,    {RS}},
8403
{"mtdvndx", XSPR(31,467,881), XSPR_MASK, TITAN, EXT,    {RS}},
8404
{"mtivlim", XSPR(31,467,882), XSPR_MASK, TITAN, EXT,    {RS}},
8405
{"mtdvlim", XSPR(31,467,883), XSPR_MASK, TITAN, EXT,    {RS}},
8406
{"mtclcsr", XSPR(31,467,884), XSPR_MASK, TITAN, EXT,    {RS}},
8407
{"mtccr1",  XSPR(31,467,888), XSPR_MASK, TITAN, EXT,    {RS}},
8408
{"mtppr", XSPR(31,467,896), XSPR_MASK, POWER5,  EXT,    {RS}},
8409
{"mtppr32", XSPR(31,467,898), XSPR_MASK, POWER5,  EXT,    {RS}},
8410
{"mtgqr", XSPR(31,467,912), XSPRGQR_MASK, PPCPS,  EXT,    {SPRGQR, RS}},
8411
{"mthid2",  XSPR(31,467,920), XSPR_MASK, GEKKO, EXT,    {RS}},
8412
{"mtwpar",  XSPR(31,467,921), XSPR_MASK, GEKKO, EXT,    {RS}},
8413
{"mtdmau",  XSPR(31,467,922), XSPR_MASK, GEKKO, EXT,    {RS}},
8414
{"mtdmal",  XSPR(31,467,923), XSPR_MASK, GEKKO, EXT,    {RS}},
8415
{"mtummcr0",  XSPR(31,467,936), XSPR_MASK, PPC750,  EXT,    {RS}},
8416
{"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750,  EXT,    {RS}},
8417
{"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750,  EXT,    {RS}},
8418
{"mtusia",  XSPR(31,467,939), XSPR_MASK, PPC750,  EXT,    {RS}},
8419
{"mtummcr1",  XSPR(31,467,940), XSPR_MASK, PPC750,  EXT,    {RS}},
8420
{"mtupmc3", XSPR(31,467,941), XSPR_MASK, PPC750,  EXT,    {RS}},
8421
{"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750,  EXT,    {RS}},
8422
{"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403,  EXT,    {RS}},
8423
{"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403,  EXT,    {RS}},
8424
{"mtrmmucr",  XSPR(31,467,946), XSPR_MASK, TITAN, EXT,    {RS}},
8425
{"mtccr0",  XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, EXT,   {RS}},
8426
{"mtiac3",  XSPR(31,467,948), XSPR_MASK, PPC405,  EXT,    {RS}},
8427
{"mtiac4",  XSPR(31,467,949), XSPR_MASK, PPC405,  EXT,    {RS}},
8428
{"mtdvc1",  XSPR(31,467,950), XSPR_MASK, PPC405,  EXT,    {RS}},
8429
{"mtdvc2",  XSPR(31,467,951), XSPR_MASK, PPC405,  EXT,    {RS}},
8430
{"mtmmcr0", XSPR(31,467,952), XSPR_MASK, PPC750,  EXT,    {RS}},
8431
{"mtpmc1",  XSPR(31,467,953), XSPR_MASK, PPC750,  EXT,    {RS}},
8432
{"mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403,  EXT,    {RS}},
8433
{"mtdcwr",  XSPR(31,467,954), XSPR_MASK, PPC403,  EXT,    {RS}},
8434
{"mtpmc2",  XSPR(31,467,954), XSPR_MASK, PPC750,  EXT,    {RS}},
8435
{"mtsia", XSPR(31,467,955), XSPR_MASK, PPC750,  EXT,    {RS}},
8436
{"mtsler",  XSPR(31,467,955), XSPR_MASK, PPC405,  EXT,    {RS}},
8437
{"mtmmcr1", XSPR(31,467,956), XSPR_MASK, PPC750,  EXT,    {RS}},
8438
{"mtsu0r",  XSPR(31,467,956), XSPR_MASK, PPC405,  EXT,    {RS}},
8439
{"mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405,  EXT,    {RS}},
8440
{"mtpmc3",  XSPR(31,467,957), XSPR_MASK, PPC750,  EXT,    {RS}},
8441
{"mtpmc4",  XSPR(31,467,958), XSPR_MASK, PPC750,  EXT,    {RS}},
8442
{"mticdbdr",  XSPR(31,467,979), XSPR_MASK, PPC403,  EXT,    {RS}},
8443
{"mtesr", XSPR(31,467,980), XSPR_MASK, PPC403,  EXT,    {RS}},
8444
{"mtdear",  XSPR(31,467,981), XSPR_MASK, PPC403,  EXT,    {RS}},
8445
{"mtevpr",  XSPR(31,467,982), XSPR_MASK, PPC403,  EXT,    {RS}},
8446
{"mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403,  EXT,    {RS}},
8447
{"mttsr", XSPR(31,467,984), XSPR_MASK, PPC403,  EXT,    {RS}},
8448
{"mttcr", XSPR(31,467,986), XSPR_MASK, PPC403,  EXT,    {RS}},
8449
{"mtpit", XSPR(31,467,987), XSPR_MASK, PPC403,  EXT,    {RS}},
8450
{"mttbhi",  XSPR(31,467,988), XSPR_MASK, PPC403,  EXT,    {RS}},
8451
{"mttblo",  XSPR(31,467,989), XSPR_MASK, PPC403,  EXT,    {RS}},
8452
{"mtsrr2",  XSPR(31,467,990), XSPR_MASK, PPC403,  EXT,    {RS}},
8453
{"mtsrr3",  XSPR(31,467,991), XSPR_MASK, PPC403,  EXT,    {RS}},
8454
{"mtdbsr",  XSPR(31,467,1008), XSPR_MASK, PPC403, EXT,    {RS}},
8455
{"mthid0",  XSPR(31,467,1008), XSPR_MASK, GEKKO,  EXT,    {RS}},
8456
{"mthid1",  XSPR(31,467,1009), XSPR_MASK, GEKKO,  EXT,    {RS}},
8457
{"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, EXT,    {RS}},
8458
{"mtiabr",  XSPR(31,467,1010), XSPR_MASK, GEKKO,  EXT,    {RS}},
8459
{"mthid4",  XSPR(31,467,1011), XSPR_MASK, BROADWAY, EXT,    {RS}},
8460
{"mtdbdr",  XSPR(31,467,1011), XSPR_MASK, TITAN,  EXT,    {RS}},
8461
{"mtiac1",  XSPR(31,467,1012), XSPR_MASK, PPC403, EXT,    {RS}},
8462
{"mtiac2",  XSPR(31,467,1013), XSPR_MASK, PPC403, EXT,    {RS}},
8463
{"mtdabr",  XSPR(31,467,1013), XSPR_MASK, PPC750, EXT,    {RS}},
8464
{"mtdac1",  XSPR(31,467,1014), XSPR_MASK, PPC403, EXT,    {RS}},
8465
{"mtdac2",  XSPR(31,467,1015), XSPR_MASK, PPC403, EXT,    {RS}},
8466
{"mtl2cr",  XSPR(31,467,1017), XSPR_MASK, PPC750, EXT,    {RS}},
8467
{"mtdccr",  XSPR(31,467,1018), XSPR_MASK, PPC403, EXT,    {RS}},
8468
{"mticcr",  XSPR(31,467,1019), XSPR_MASK, PPC403, EXT,    {RS}},
8469
{"mtictc",  XSPR(31,467,1019), XSPR_MASK, PPC750, EXT,    {RS}},
8470
{"mtpbl1",  XSPR(31,467,1020), XSPR_MASK, PPC403, EXT,    {RS}},
8471
{"mtthrm1", XSPR(31,467,1020), XSPR_MASK, PPC750, EXT,    {RS}},
8472
{"mtpbu1",  XSPR(31,467,1021), XSPR_MASK, PPC403, EXT,    {RS}},
8473
{"mtthrm2", XSPR(31,467,1021), XSPR_MASK, PPC750, EXT,    {RS}},
8474
{"mtpbl2",  XSPR(31,467,1022), XSPR_MASK, PPC403, EXT,    {RS}},
8475
{"mtthrm3", XSPR(31,467,1022), XSPR_MASK, PPC750, EXT,    {RS}},
8476
{"mtpbu2",  XSPR(31,467,1023), XSPR_MASK, PPC403, EXT,    {RS}},
8477
{"mtspr", X(31,467),  X_MASK,      COM, 0,    {SPR, RS}},
8478
8479
{"dcbi",  X(31,470),  XRT_MASK,    PPC, 0,    {RA0, RB}},
8480
8481
{"nand",  XRC(31,476,0),  X_MASK,      COM, 0,    {RA, RS, RB}},
8482
{"nand.", XRC(31,476,1),  X_MASK,      COM, 0,    {RA, RS, RB}},
8483
8484
{"setnbcr", X(31,480),  XRB_MASK,    POWER10, 0,    {RT, BI}},
8485
8486
{"dsn",   X(31,483),  XRT_MASK,    E500MC,  0,    {RA, RB}},
8487
8488
{"dcread",  X(31,486),  X_MASK,  PPC403|PPC440, PPCA2,    {RT, RA0, RB}},
8489
8490
{"icbtls",  X(31,486),  X_MASK,  PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
8491
8492
{"stvxl", X(31,487),  X_MASK,      PPCVEC,  0,    {VS, RA0, RB}},
8493
8494
{"nabs",  XO(31,488,0,0), XORB_MASK,   M601,  0,    {RT, RA}},
8495
{"nabs.", XO(31,488,0,1), XORB_MASK,   M601,  0,    {RT, RA}},
8496
8497
{"divd",  XO(31,489,0,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8498
{"divd.", XO(31,489,0,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8499
8500
{"divw",  XO(31,491,0,0), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8501
{"divw.", XO(31,491,0,1), XO_MASK,     PPC, 0,    {RT, RA, RB}},
8502
8503
{"icbtlse", X(31,494),  X_MASK,      PPCCHLK, E500MC,   {CT, RA, RB}},
8504
8505
{"slbia", X(31,498),  0xff1fffff,  POWER6,  0,    {IH}},
8506
{"slbia", X(31,498),  0xffffffff,  PPC64, POWER6,   {0}},
8507
8508
{"cli",   X(31,502),  XRB_MASK,    POWER, 0,    {RT, RA}},
8509
8510
{"popcntd", X(31,506),  XRB_MASK, POWER7|PPCA2, 0,    {RA, RS}},
8511
8512
{"cmpb",  X(31,508),  X_MASK, POWER6|PPCA2|PPC476, 0,   {RA, RS, RB}},
8513
8514
{"mcrxr", X(31,512),  XBFRARB_MASK, COM,  POWER7,   {BF}},
8515
8516
{"lbdcbx",  X(31,514),  X_MASK,      E200Z4,  0,    {RT, RA, RB}},
8517
{"lbdx",  X(31,515),  X_MASK,  E500MC|E200Z4, 0,    {RT, RA, RB}},
8518
8519
{"bblels",  X(31,518),  X_MASK,      PPCBRLK, 0,    {0}},
8520
8521
{"lvlx",  X(31,519),  X_MASK,      CELL,  0,    {VD, RA0, RB}},
8522
{"lbfcmux", APU(31,519,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8523
8524
{"subfco",  XO(31,8,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8525
{"sfo",   XO(31,8,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8526
{"subco", XO(31,8,1,0), XO_MASK,     PPCCOM,  EXT,    {RT, RB, RA}},
8527
{"subfco.", XO(31,8,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8528
{"sfo.",  XO(31,8,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8529
{"subco.",  XO(31,8,1,1), XO_MASK,     PPCCOM,  EXT,    {RT, RB, RA}},
8530
8531
{"addco", XO(31,10,1,0),  XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8532
{"ao",    XO(31,10,1,0),  XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8533
{"addco.",  XO(31,10,1,1),  XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8534
{"ao.",   XO(31,10,1,1),  XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8535
8536
{"lxsspx",  X(31,524),  XX1_MASK,    PPCVSX2, 0,    {XT6, RA0, RB}},
8537
{"lxvrl", X(31,525),  XX1_MASK,    PPCVSXF, 0,    {XT6, RA0, RB}},
8538
8539
{"clcs",  X(31,531),  XRB_MASK,    M601,  0,    {RT, RA}},
8540
8541
{"ldbrx", X(31,532),  X_MASK, CELL|POWER7|PPCA2, 0,   {RT, RA0, RB}},
8542
8543
{"lswx",  X(31,533),  X_MASK,      PPCCOM,  E500|E500MC,  {RT, RAX, RBX}},
8544
{"lsx",   X(31,533),  X_MASK,      PWRCOM,  0,    {RT, RA, RB}},
8545
8546
{"lwbrx", X(31,534),  X_MASK,      PPCCOM,  0,    {RT, RA0, RB}},
8547
{"lbrx",  X(31,534),  X_MASK,      PWRCOM,  0,    {RT, RA, RB}},
8548
8549
{"lfsx",  X(31,535),  X_MASK,      COM, PPCEFS,   {FRT, RA0, RB}},
8550
8551
{"srw",   XRC(31,536,0),  X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
8552
{"sr",    XRC(31,536,0),  X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
8553
{"srw.",  XRC(31,536,1),  X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
8554
{"sr.",   XRC(31,536,1),  X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
8555
8556
{"rrib",  XRC(31,537,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8557
{"rrib.", XRC(31,537,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8558
8559
{"cnttzw",  XRC(31,538,0),  XRB_MASK,    POWER9,  0,    {RA, RS}},
8560
{"cnttzw.", XRC(31,538,1),  XRB_MASK,    POWER9,  0,    {RA, RS}},
8561
8562
{"srd",   XRC(31,539,0),  X_MASK,      PPC64, 0,    {RA, RS, RB}},
8563
{"srd.",  XRC(31,539,1),  X_MASK,      PPC64, 0,    {RA, RS, RB}},
8564
8565
{"maskir",  XRC(31,541,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8566
{"maskir.", XRC(31,541,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8567
8568
{"lhdcbx",  X(31,546),  X_MASK,      E200Z4,  0,    {RT, RA, RB}},
8569
{"lhdx",  X(31,547),  X_MASK,  E500MC|E200Z4, 0,    {RT, RA, RB}},
8570
8571
{"lvtrx", X(31,549),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8572
8573
{"bbelr", X(31,550),  X_MASK,      PPCBRLK, 0,    {0}},
8574
8575
{"lvrx",  X(31,551),  X_MASK,      CELL,  0,    {VD, RA0, RB}},
8576
{"lhfcmux", APU(31,551,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8577
8578
{"subfo", XO(31,40,1,0),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
8579
{"subo",  XO(31,40,1,0),  XO_MASK,     PPC, EXT,    {RT, RB, RA}},
8580
{"subfo.",  XO(31,40,1,1),  XO_MASK,     PPC, 0,    {RT, RA, RB}},
8581
{"subo.", XO(31,40,1,1),  XO_MASK,     PPC, EXT,    {RT, RB, RA}},
8582
8583
{"lxvrll",  X(31,557),  XX1_MASK,    PPCVSXF, 0,    {XT6, RA0, RB}},
8584
8585
{"tlbsync", X(31,566),  0xffffffff,  PPC, 0,    {0}},
8586
8587
{"lfsux", X(31,567),  X_MASK,      COM, PPCEFS,   {FRT, RAS, RB}},
8588
8589
{"cnttzd",  XRC(31,570,0),  XRB_MASK,    POWER9,  0,    {RA, RS}},
8590
{"cnttzd.", XRC(31,570,1),  XRB_MASK,    POWER9,  0,    {RA, RS}},
8591
8592
{"cnttzdm", X(31,571),  X_MASK,      POWER10, 0,    {RA, RS, RB}},
8593
8594
{"mcrxrx",  X(31,576),     XBFRARB_MASK, POWER9,  0,    {BF}},
8595
8596
{"lwdcbx",  X(31,578),  X_MASK,      E200Z4,  0,    {RT, RA, RB}},
8597
{"lwdx",  X(31,579),  X_MASK,  E500MC|E200Z4, 0,    {RT, RA, RB}},
8598
8599
{"lvtlx", X(31,581),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8600
8601
{"lwat",  X(31,582),  X_MASK,      POWER9,  0,    {RT, RA0, FC}},
8602
8603
{"lwfcmux", APU(31,583,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8604
8605
{"lxsdx", X(31,588),  XX1_MASK,    PPCVSX,  0,    {XT6, RA0, RB}},
8606
{"lxvprl",  X(31,589),  XX1_MASK,    PPCVSXF, 0,    {XTP, RA0, RB}},
8607
8608
{"mfsr",  X(31,595), XRB_MASK|(1<<20), COM, NON32,    {RT, SR}},
8609
8610
{"lswi",  X(31,597),  X_MASK,      PPCCOM,  E500|E500MC,  {RT, RAX, NBI}},
8611
{"lsi",   X(31,597),  X_MASK,      PWRCOM,  0,    {RT, RA0, NB}},
8612
8613
{"hwsync",  XSYNC(31,598,0), 0xffffffff, POWER4,  BOOKE|PPC476|EXT, {0}},
8614
{"lwsync",  XSYNC(31,598,1), 0xffffffff, PPC, E500|EXT,   {0}},
8615
{"ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, EXT,      {0}},
8616
{"phwsync", XSYNCLS(31,598,4,0), 0xffffffff, POWER10, EXT,      {0}},
8617
{"plwsync", XSYNCLS(31,598,5,0), 0xffffffff, POWER10, EXT,      {0}},
8618
{"stncisync", XSYNCLS(31,598,1,1), 0xffffffff, POWER10, EXT,      {0}},
8619
{"stcisync",  XSYNCLS(31,598,0,2), 0xffffffff, POWER10, EXT,      {0}},
8620
{"stsync",  XSYNCLS(31,598,0,3), 0xffffffff, POWER10, EXT,      {0}},
8621
{"sync",  X(31,598),     XSYNCLS_MASK, POWER10, BOOKE|PPC476,   {LS3, SC2}},
8622
{"sync",  X(31,598),     XSYNCLE_MASK, E6500, 0,      {LS, ESYNC}},
8623
{"sync",  X(31,598),     XSYNC_MASK,   PPCCOM,  POWER10|BOOKE|PPC476, {LS}},
8624
{"msync", X(31,598),     0xffffffff, BOOKE|PPCA2|PPC476, 0,   {0}},
8625
{"sync",  X(31,598),     0xffffffff,   BOOKE|PPC476, E6500,   {0}},
8626
{"lwsync",  X(31,598),     0xffffffff,   E500,  0,      {0}},
8627
{"dcs",   X(31,598),     0xffffffff,   PWRCOM,  0,      {0}},
8628
8629
{"lfdx",  X(31,599),  X_MASK,      COM, PPCEFS,   {FRT, RA0, RB}},
8630
8631
{"mffgpr",  XRC(31,607,0),  XRA_MASK,    POWER6,  POWER7,   {FRT, RB}},
8632
{"lfdepx",  X(31,607),  X_MASK,   E500MC|PPCA2, 0,    {FRT, RA0, RB}},
8633
8634
{"lddx",  X(31,611),  X_MASK,      E500MC,  0,    {RT, RA, RB}},
8635
8636
{"lvswx", X(31,613),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8637
8638
{"ldat",  X(31,614),  X_MASK,      POWER9,  0,    {RT, RA0, FC}},
8639
8640
{"lqfcmux", APU(31,615,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8641
8642
{"nego",  XO(31,104,1,0), XORB_MASK,   COM, 0,    {RT, RA}},
8643
{"nego.", XO(31,104,1,1), XORB_MASK,   COM, 0,    {RT, RA}},
8644
8645
{"mulo",  XO(31,107,1,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
8646
{"mulo.", XO(31,107,1,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
8647
8648
{"lxvprll", X(31,621),  XX1_MASK,    PPCVSXF, 0,    {XTP, RA0, RB}},
8649
8650
{"mfsri", X(31,627),  X_MASK,      M601,  0,    {RT, RA, RB}},
8651
8652
{"dclst", X(31,630),  XRB_MASK,    M601,  0,    {RS, RA}},
8653
8654
{"lfdux", X(31,631),  X_MASK,      COM, PPCEFS,   {FRT, RAS, RB}},
8655
8656
{"stbdcbx", X(31,642),  X_MASK,      E200Z4,  0,    {RS, RA, RB}},
8657
{"stbdx", X(31,643),  X_MASK,  E500MC|E200Z4, 0,    {RS, RA, RB}},
8658
8659
{"stvlx", X(31,647),  X_MASK,      CELL,  0,    {VS, RA0, RB}},
8660
{"stbfcmux",  APU(31,647,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8661
8662
{"stxsspx", X(31,652),  XX1_MASK,    PPCVSX2, 0,    {XS6, RA0, RB}},
8663
{"stxvrl",  X(31,653),  XX1_MASK,    PPCVSXF, 0,    {XS6, RA0, RB}},
8664
8665
{"tbegin.", XRC(31,654,1), XRTLRARB_MASK, PPCHTM, 0,    {HTM_R}},
8666
8667
{"subfeo",  XO(31,136,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8668
{"sfeo",  XO(31,136,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8669
{"subfeo.", XO(31,136,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8670
{"sfeo.", XO(31,136,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8671
8672
{"addeo", XO(31,138,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8673
{"aeo",   XO(31,138,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8674
{"addeo.",  XO(31,138,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8675
{"aeo.",  XO(31,138,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8676
8677
{"hashstp", X(31,658),  XRC_MASK,    POWER8,  0,    {RB, DW, RAS}},
8678
8679
{"mfsrin",  X(31,659),  XRA_MASK,    PPC, NON32,    {RT, RB}},
8680
8681
{"stdbrx",  X(31,660),  X_MASK, CELL|POWER7|PPCA2, 0,   {RS, RA0, RB}},
8682
8683
{"stswx", X(31,661),  X_MASK,      PPCCOM,  E500|E500MC,  {RS, RA0, RB}},
8684
{"stsx",  X(31,661),  X_MASK,      PWRCOM,  0,    {RS, RA0, RB}},
8685
8686
{"stwbrx",  X(31,662),  X_MASK,      PPCCOM,  0,    {RS, RA0, RB}},
8687
{"stbrx", X(31,662),  X_MASK,      PWRCOM,  0,    {RS, RA0, RB}},
8688
8689
{"stfsx", X(31,663),  X_MASK,      COM, PPCEFS,   {FRS, RA0, RB}},
8690
8691
{"srq",   XRC(31,664,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8692
{"srq.",  XRC(31,664,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8693
8694
{"sre",   XRC(31,665,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8695
{"sre.",  XRC(31,665,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8696
8697
{"sthdcbx", X(31,674),  X_MASK,      E200Z4,  0,    {RS, RA, RB}},
8698
{"sthdx", X(31,675),  X_MASK,  E500MC|E200Z4, 0,    {RS, RA, RB}},
8699
8700
{"stvfrx",  X(31,677),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8701
8702
{"stvrx", X(31,679),  X_MASK,      CELL,  0,    {VS, RA0, RB}},
8703
{"sthfcmux",  APU(31,679,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8704
8705
{"stxvrll", X(31,685),  XX1_MASK,    PPCVSXF, 0,    {XS6, RA0, RB}},
8706
8707
{"tendall.",  XRC(31,686,1)|(1<<25), XRTRARB_MASK, PPCHTM, 0,   {0}},
8708
{"tend.", XRC(31,686,1), XRTARARB_MASK, PPCHTM, 0,    {HTM_A}},
8709
8710
{"hashchkp",  X(31,690),  XRC_MASK,    POWER8,  0,    {RB, DW, RAS}},
8711
8712
{"stbcx.",  XRC(31,694,1),  X_MASK,   POWER8|E6500, 0,    {RS, RA0, RB}},
8713
8714
{"stfsux",  X(31,695),  X_MASK,      COM, PPCEFS,   {FRS, RAS, RB}},
8715
8716
{"sriq",  XRC(31,696,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
8717
{"sriq.", XRC(31,696,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
8718
8719
{"stwdcbx", X(31,706),  X_MASK,      E200Z4,  0,    {RS, RA, RB}},
8720
{"stwdx", X(31,707),  X_MASK,  E500MC|E200Z4, 0,    {RS, RA, RB}},
8721
8722
{"stvflx",  X(31,709),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8723
8724
{"stwat", X(31,710),  X_MASK,      POWER9,  0,    {RS, RA0, FC}},
8725
8726
{"stwfcmux",  APU(31,711,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8727
8728
{"stxsdx",  X(31,716),  XX1_MASK,    PPCVSX,  0,    {XS6, RA0, RB}},
8729
{"stxvprl", X(31,717),  XX1_MASK,    PPCVSXF, 0,    {XSP, RA0, RB}},
8730
8731
{"tcheck",  X(31,718),   XRTBFRARB_MASK, PPCHTM,  0,    {BF}},
8732
8733
{"subfzeo", XO(31,200,1,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8734
{"sfzeo", XO(31,200,1,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8735
{"subfzeo.",  XO(31,200,1,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8736
{"sfzeo.",  XO(31,200,1,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8737
8738
{"addzeo",  XO(31,202,1,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8739
{"azeo",  XO(31,202,1,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8740
{"addzeo.", XO(31,202,1,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8741
{"azeo.", XO(31,202,1,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8742
8743
{"hashst",  X(31,722),  XRC_MASK,    POWER8,  0,    {RB, DW, RAS}},
8744
8745
{"stswi", X(31,725),  X_MASK,      PPCCOM,  E500|E500MC,  {RS, RA0, NB}},
8746
{"stsi",  X(31,725),  X_MASK,      PWRCOM,  0,    {RS, RA0, NB}},
8747
8748
{"sthcx.",  XRC(31,726,1),  X_MASK,   POWER8|E6500, 0,    {RS, RA0, RB}},
8749
8750
{"stfdx", X(31,727),  X_MASK,      COM, PPCEFS,   {FRS, RA0, RB}},
8751
8752
{"srlq",  XRC(31,728,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8753
{"srlq.", XRC(31,728,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8754
8755
{"sreq",  XRC(31,729,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8756
{"sreq.", XRC(31,729,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8757
8758
{"mftgpr",  XRC(31,735,0),  XRA_MASK,    POWER6,  POWER7,   {RT, FRB}},
8759
{"stfdepx", X(31,735),  X_MASK,   E500MC|PPCA2, 0,    {FRS, RA0, RB}},
8760
8761
{"stddx", X(31,739),  X_MASK,      E500MC,  0,    {RS, RA, RB}},
8762
8763
{"stvswx",  X(31,741),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8764
8765
{"stdat", X(31,742),  X_MASK,      POWER9,  0,    {RS, RA0, FC}},
8766
8767
{"stqfcmux",  APU(31,743,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8768
8769
{"subfmeo", XO(31,232,1,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8770
{"sfmeo", XO(31,232,1,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8771
{"subfmeo.",  XO(31,232,1,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8772
{"sfmeo.",  XO(31,232,1,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8773
8774
{"mulldo",  XO(31,233,1,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8775
{"mulldo.", XO(31,233,1,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
8776
8777
{"addmeo",  XO(31,234,1,0), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8778
{"ameo",  XO(31,234,1,0), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8779
{"addmeo.", XO(31,234,1,1), XORB_MASK,   PPCCOM,  0,    {RT, RA}},
8780
{"ameo.", XO(31,234,1,1), XORB_MASK,   PWRCOM,  0,    {RT, RA}},
8781
8782
{"mullwo",  XO(31,235,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8783
{"mulso", XO(31,235,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8784
{"mullwo.", XO(31,235,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8785
{"mulso.",  XO(31,235,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8786
8787
{"stxvprll",  X(31,749),  XX1_MASK,    PPCVSXF, 0,    {XSP, RA0, RB}},
8788
8789
{"tsuspend.", XRCL(31,750,0,1), XRTRARB_MASK,PPCHTM,  EXT,    {0}},
8790
{"tresume.",  XRCL(31,750,1,1), XRTRARB_MASK,PPCHTM,  EXT,    {0}},
8791
{"tsr.",  XRC(31,750,1),    XRTLRARB_MASK,PPCHTM, 0,    {L}},
8792
8793
{"hashchk", X(31,754),  XRC_MASK,    POWER8,  0,    {RB, DW, RAS}},
8794
8795
{"darn",  X(31,755),  XLRAND_MASK, POWER9,  0,    {RT, LRAND}},
8796
8797
{"dcba",  X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
8798
{"dcbal", XOPL(31,758,1), XRT_MASK,    E500MC,  0,    {RA0, RB}},
8799
8800
{"stfdux",  X(31,759),  X_MASK,      COM, PPCEFS,   {FRS, RAS, RB}},
8801
8802
{"srliq", XRC(31,760,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
8803
{"srliq.",  XRC(31,760,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
8804
8805
{"lvsm",  X(31,773),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8806
8807
{"copy",  XOPL(31,774,1), XRT_MASK,    POWER9,  0,    {RA0, RB}},
8808
8809
{"stvepxl", X(31,775),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8810
{"lvlxl", X(31,775),  X_MASK,      CELL,  0,    {VD, RA0, RB}},
8811
{"ldfcmux", APU(31,775,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8812
8813
{"dozo",  XO(31,264,1,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
8814
{"dozo.", XO(31,264,1,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
8815
8816
{"addo",  XO(31,266,1,0), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8817
{"caxo",  XO(31,266,1,0), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8818
{"addo.", XO(31,266,1,1), XO_MASK,     PPCCOM,  0,    {RT, RA, RB}},
8819
{"caxo.", XO(31,266,1,1), XO_MASK,     PWRCOM,  0,    {RT, RA, RB}},
8820
8821
{"modsd", X(31,777),  X_MASK,      POWER9,  0,    {RT, RA, RB}},
8822
{"modsw", X(31,779),  X_MASK,      POWER9,  0,    {RT, RA, RB}},
8823
8824
{"lxvw4x",  X(31,780),  XX1_MASK,    PPCVSX,  0,    {XT6, RA0, RB}},
8825
{"lxsibzx", X(31,781),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
8826
8827
{"tabortwc.", XRC(31,782,1),  X_MASK,      PPCHTM,  0,    {TO, RA, RB}},
8828
8829
{"tlbivax", X(31,786),  XRT_MASK, BOOKE|PPCA2|PPC476, 0,  {RA0, RB}},
8830
8831
{"lwzcix",  X(31,789),  X_MASK,      POWER6,  0,    {RT, RA0, RB}},
8832
8833
{"lhbrx", X(31,790),  X_MASK,      COM, 0,    {RT, RA0, RB}},
8834
8835
{"lfdpx", X(31,791),    X_MASK|Q_MASK, POWER6,  POWER7,   {FRTp, RA0, RB}},
8836
{"lfqx",  X(31,791),  X_MASK,      POWER2,  0,    {FRT, RA, RB}},
8837
8838
{"sraw",  XRC(31,792,0),  X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
8839
{"sra",   XRC(31,792,0),  X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
8840
{"sraw.", XRC(31,792,1),  X_MASK,      PPCCOM,  0,    {RA, RS, RB}},
8841
{"sra.",  XRC(31,792,1),  X_MASK,      PWRCOM,  0,    {RA, RS, RB}},
8842
8843
{"srad",  XRC(31,794,0),  X_MASK,      PPC64, 0,    {RA, RS, RB}},
8844
{"srad.", XRC(31,794,1),  X_MASK,      PPC64, 0,    {RA, RS, RB}},
8845
8846
{"evlddepx",    VX (31, 1598),  VX_MASK,     PPCSPE,  0,    {RT, RA, RB}},
8847
{"lfddx", X(31,803),  X_MASK,      E500MC,  0,    {FRT, RA, RB}},
8848
8849
{"lvtrxl",  X(31,805),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8850
{"stvepx",  X(31,807),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8851
{"lvrxl", X(31,807),  X_MASK,      CELL,  0,    {VD, RA0, RB}},
8852
8853
{"lxvh8x",  X(31,812),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
8854
{"lxsihzx", X(31,813),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
8855
8856
{"tabortdc.", XRC(31,814,1),  X_MASK,      PPCHTM,  0,    {TO, RA, RB}},
8857
8858
{"rac",   X(31,818),  X_MASK,      M601,  0,    {RT, RA, RB}},
8859
8860
{"erativax",  X(31,819),  X_MASK,      PPCA2, 0,    {RS, RA0, RB}},
8861
8862
{"lhzcix",  X(31,821),  X_MASK,      POWER6,  0,    {RT, RA0, RB}},
8863
8864
{"dss",   XDSS(31,822,0), XDSS_MASK,   PPCVEC,  0,    {STRM}},
8865
{"dssall",  XDSS(31,822,1), XDSS_MASK,   PPCVEC,  0,    {0}},
8866
8867
{"lfqux", X(31,823),  X_MASK,      POWER2,  0,    {FRT, RA, RB}},
8868
8869
{"srawi", XRC(31,824,0),  X_MASK,      PPCCOM,  0,    {RA, RS, SH}},
8870
{"srai",  XRC(31,824,0),  X_MASK,      PWRCOM,  0,    {RA, RS, SH}},
8871
{"srawi.",  XRC(31,824,1),  X_MASK,      PPCCOM,  0,    {RA, RS, SH}},
8872
{"srai.", XRC(31,824,1),  X_MASK,      PWRCOM,  0,    {RA, RS, SH}},
8873
8874
{"sradi", XS(31,413,0), XS_MASK,     PPC64, 0,    {RA, RS, SH6}},
8875
{"sradi.",  XS(31,413,1), XS_MASK,     PPC64, 0,    {RA, RS, SH6}},
8876
8877
{"lvtlxl",  X(31,837),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8878
8879
{"cpabort", X(31,838),  XRTRARB_MASK,POWER9,  0,    {0}},
8880
8881
{"divo",  XO(31,331,1,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
8882
{"divo.", XO(31,331,1,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
8883
8884
{"lxvd2x",  X(31,844),  XX1_MASK,    PPCVSX,  0,    {XT6, RA0, RB}},
8885
{"lxvx",  X(31,844),  XX1_MASK,    POWER8,  POWER9|PPCVSX3, {XT6, RA0, RB}},
8886
8887
{"tabortwci.",  XRC(31,846,1),  X_MASK,      PPCHTM,  0,    {TO, RA, HTM_SI}},
8888
8889
{"tlbsrx.", XRC(31,850,1),  XRT_MASK,    PPCA2, 0,    {RA0, RB}},
8890
8891
{"slbiag",  X(31,850),  XRLARB_MASK, POWER10, 0,    {RS, A_L}},
8892
{"slbiag",  X(31,850),  XRARB_MASK,  POWER9,  POWER10,  {RS}},
8893
8894
{"slbmfev", X(31,851),  XRLA_MASK,   POWER9,  0,    {RT, RB, A_L}},
8895
{"slbmfev", X(31,851),  XRA_MASK,    PPC64, POWER9,   {RT, RB}},
8896
8897
{"lbzcix",  X(31,853),  X_MASK,      POWER6,  0,    {RT, RA0, RB}},
8898
8899
{"eieio", X(31,854),  0xffffffff,  PPC,   BOOKE|PPCA2|PPC476, {0}},
8900
{"mbar",  X(31,854),  X_MASK,    BOOKE|PPCA2|PPC476, 0, {MO}},
8901
{"eieio", XMBAR(31,854,1),0xffffffff,  E500,  0,    {0}},
8902
{"eieio", X(31,854),  0xffffffff, PPCA2|PPC476, 0,    {0}},
8903
8904
{"lfiwax",  X(31,855),  X_MASK, POWER6|PPCA2|PPC476, 0,   {FRT, RA0, RB}},
8905
8906
{"lvswxl",  X(31,869),  X_MASK,      E6500, 0,    {VD, RA0, RB}},
8907
8908
{"abso",  XO(31,360,1,0), XORB_MASK,   M601,  0,    {RT, RA}},
8909
{"abso.", XO(31,360,1,1), XORB_MASK,   M601,  0,    {RT, RA}},
8910
8911
{"divso", XO(31,363,1,0), XO_MASK,     M601,  0,    {RT, RA, RB}},
8912
{"divso.",  XO(31,363,1,1), XO_MASK,     M601,  0,    {RT, RA, RB}},
8913
8914
{"lxvb16x", X(31,876),  XX1_MASK,    PPCVSX3, 0,    {XT6, RA0, RB}},
8915
8916
{"tabortdci.",  XRC(31,878,1),  X_MASK,      PPCHTM,  0,    {TO, RA, HTM_SI}},
8917
8918
{"rmieg", X(31,882),  XRTRA_MASK,  POWER9,  0,    {RB}},
8919
8920
{"ldcix", X(31,885),  X_MASK,      POWER6,  0,    {RT, RA0, RB}},
8921
8922
{"msgsync", X(31,886),  0xffffffff,  POWER9,  0,    {0}},
8923
8924
{"lfiwzx",  X(31,887),  X_MASK,   POWER7|PPCA2, 0,    {FRT, RA0, RB}},
8925
8926
{"extswsli",  XS(31,445,0), XS_MASK,     POWER9,  0,    {RA, RS, SH6}},
8927
{"extswsli.", XS(31,445,1), XS_MASK,     POWER9,  0,    {RA, RS, SH6}},
8928
8929
{"paste.",  XRC(31,902,1),  XLRT_MASK,   POWER10, 0,    {RA0, RB, L1OPT}},
8930
{"paste.",  XRCL(31,902,1,1),XRT_MASK,   POWER9,  POWER10,  {RA0, RB}},
8931
8932
{"stvlxl",  X(31,903),  X_MASK,      CELL,  0,    {VS, RA0, RB}},
8933
{"stdfcmux",  APU(31,903,0),  APU_MASK,    PPC405,  0,    {FCRT, RA, RB}},
8934
8935
{"divdeuo", XO(31,393,1,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8936
{"divdeuo.",  XO(31,393,1,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8937
{"divweuo", XO(31,395,1,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8938
{"divweuo.",  XO(31,395,1,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8939
8940
{"stxvw4x", X(31,908),  XX1_MASK,    PPCVSX,  0,    {XS6, RA0, RB}},
8941
{"stxsibx", X(31,909),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
8942
8943
{"tabort.", XRC(31,910,1),  XRTRB_MASK,  PPCHTM,  0,    {RA}},
8944
8945
{"tlbsx", XRC(31,914,0),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
8946
{"tlbsx.",  XRC(31,914,1),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
8947
8948
{"slbmfee", X(31,915),  XRLA_MASK,   POWER9,  0,    {RT, RB, A_L}},
8949
{"slbmfee", X(31,915),  XRA_MASK,    PPC64, POWER9,   {RT, RB}},
8950
8951
{"stwcix",  X(31,917),  X_MASK,      POWER6,  0,    {RS, RA0, RB}},
8952
8953
{"sthbrx",  X(31,918),  X_MASK,      COM, 0,    {RS, RA0, RB}},
8954
8955
{"stfdpx",  X(31,919),    X_MASK|Q_MASK, POWER6,  POWER7,   {FRSp, RA0, RB}},
8956
{"stfqx", X(31,919),  X_MASK,      POWER2,  0,    {FRS, RA0, RB}},
8957
8958
{"sraq",  XRC(31,920,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8959
{"sraq.", XRC(31,920,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8960
8961
{"srea",  XRC(31,921,0),  X_MASK,      M601,  0,    {RA, RS, RB}},
8962
{"srea.", XRC(31,921,1),  X_MASK,      M601,  0,    {RA, RS, RB}},
8963
8964
{"extsh", XRC(31,922,0),  XRB_MASK,    PPCCOM,  0,    {RA, RS}},
8965
{"exts",  XRC(31,922,0),  XRB_MASK,    PWRCOM,  0,    {RA, RS}},
8966
{"extsh.",  XRC(31,922,1),  XRB_MASK,    PPCCOM,  0,    {RA, RS}},
8967
{"exts.", XRC(31,922,1),  XRB_MASK,    PWRCOM,  0,    {RA, RS}},
8968
8969
{"evstddepx", VX (31, 1854),  VX_MASK,     PPCSPE,  0,    {RT, RA, RB}},
8970
{"stfddx",  X(31,931),  X_MASK,      E500MC,  0,    {FRS, RA, RB}},
8971
8972
{"stvfrxl", X(31,933),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
8973
8974
{"wclrone", XOPL2(31,934,2),XRT_MASK,    PPCA2, EXT,    {RA0, RB}},
8975
{"wclrall", X(31,934),  XRARB_MASK,  PPCA2, EXT,    {L2}},
8976
{"wclr",  X(31,934),  X_MASK,      PPCA2, 0,    {L2, RA0, RB}},
8977
8978
{"stvrxl",  X(31,935),  X_MASK,      CELL,  0,    {VS, RA0, RB}},
8979
8980
{"divdeo",  XO(31,425,1,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8981
{"divdeo.", XO(31,425,1,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8982
{"divweo",  XO(31,427,1,0), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8983
{"divweo.", XO(31,427,1,1), XO_MASK,  POWER7|PPCA2, 0,    {RT, RA, RB}},
8984
8985
{"stxvh8x", X(31,940),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
8986
{"stxsihx", X(31,941),  XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
8987
8988
{"treclaim.", XRC(31,942,1),  XRTRB_MASK,  PPCHTM,  0,    {RA}},
8989
8990
{"tlbrehi", XTLB(31,946,0), XTLB_MASK,   PPC403,  PPCA2|EXT,  {RT, RA}},
8991
{"tlbrelo", XTLB(31,946,1), XTLB_MASK,   PPC403,  PPCA2|EXT,  {RT, RA}},
8992
{"tlbre", X(31,946),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
8993
8994
{"sthcix",  X(31,949),  X_MASK,      POWER6,  0,    {RS, RA0, RB}},
8995
8996
{"icswepx", XRC(31,950,0),  X_MASK,      PPCA2, 0,    {RS, RA, RB}},
8997
{"icswepx.",  XRC(31,950,1),  X_MASK,      PPCA2, 0,    {RS, RA, RB}},
8998
8999
{"stfqux",  X(31,951),  X_MASK,      POWER2,  0,    {FRS, RA, RB}},
9000
9001
{"sraiq", XRC(31,952,0),  X_MASK,      M601,  0,    {RA, RS, SH}},
9002
{"sraiq.",  XRC(31,952,1),  X_MASK,      M601,  0,    {RA, RS, SH}},
9003
9004
{"extsb", XRC(31,954,0),  XRB_MASK,    PPC, 0,    {RA, RS}},
9005
{"extsb.",  XRC(31,954,1),  XRB_MASK,    PPC, 0,    {RA, RS}},
9006
9007
{"stvflxl", X(31,965),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
9008
9009
{"iccci", X(31,966), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
9010
{"ici",   X(31,966),  XRARB_MASK,  PPCA2|PPC476, 0,   {CT}},
9011
9012
{"divduo",  XO(31,457,1,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
9013
{"divduo.", XO(31,457,1,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
9014
9015
{"divwuo",  XO(31,459,1,0), XO_MASK,     PPC, 0,    {RT, RA, RB}},
9016
{"divwuo.", XO(31,459,1,1), XO_MASK,     PPC, 0,    {RT, RA, RB}},
9017
9018
{"stxvd2x", X(31,972),  XX1_MASK,    PPCVSX,  0,    {XS6, RA0, RB}},
9019
{"stxvx", X(31,972),  XX1_MASK,    POWER8,  POWER9|PPCVSX3, {XS6, RA0, RB}},
9020
9021
{"tlbld", X(31,978),  XRTRA_MASK,  PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}},
9022
{"tlbwehi", XTLB(31,978,0), XTLB_MASK,   PPC403,  EXT,    {RT, RA}},
9023
{"tlbwelo", XTLB(31,978,1), XTLB_MASK,   PPC403,  EXT,    {RT, RA}},
9024
{"tlbwe", X(31,978),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
9025
9026
{"slbfee.", XRC(31,979,1),  XRA_MASK,    POWER6,  0,    {RT, RB}},
9027
9028
{"stbcix",  X(31,981),  X_MASK,      POWER6,  0,    {RS, RA0, RB}},
9029
9030
{"icbi",  X(31,982),  XRT_MASK,    PPC, 0,    {RA0, RB}},
9031
9032
{"stfiwx",  X(31,983),  X_MASK,      PPC, PPCEFS,   {FRS, RA0, RB}},
9033
9034
{"extsw", XRC(31,986,0),  XRB_MASK,    PPC64, 0,    {RA, RS}},
9035
{"extsw.",  XRC(31,986,1),  XRB_MASK,    PPC64, 0,    {RA, RS}},
9036
9037
{"icbiep",  XRT(31,991,0),  XRT_MASK,    E500MC|PPCA2, 0,   {RA0, RB}},
9038
9039
{"stvswxl", X(31,997),  X_MASK,      E6500, 0,    {VS, RA0, RB}},
9040
9041
{"icread",  X(31,998),     XRT_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA0, RB}},
9042
9043
{"nabso", XO(31,488,1,0), XORB_MASK,   M601,  0,    {RT, RA}},
9044
{"nabso.",  XO(31,488,1,1), XORB_MASK,   M601,  0,    {RT, RA}},
9045
9046
{"divdo", XO(31,489,1,0), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
9047
{"divdo.",  XO(31,489,1,1), XO_MASK,     PPC64, 0,    {RT, RA, RB}},
9048
9049
{"divwo", XO(31,491,1,0), XO_MASK,     PPC, 0,    {RT, RA, RB}},
9050
{"divwo.",  XO(31,491,1,1), XO_MASK,     PPC, 0,    {RT, RA, RB}},
9051
9052
{"stxvb16x",  X(31,1004), XX1_MASK,    PPCVSX3, 0,    {XS6, RA0, RB}},
9053
9054
{"trechkpt.", XRC(31,1006,1), XRTRARB_MASK,PPCHTM,  0,    {0}},
9055
9056
{"tlbli", X(31,1010), XRTRA_MASK,  PPC, TITAN,    {RB}},
9057
9058
{"stdcix",  X(31,1013), X_MASK,      POWER6,  0,    {RS, RA0, RB}},
9059
9060
{"dcbz",  X(31,1014), XRT_MASK,    PPC, 0,    {RA0, RB}},
9061
{"dclz",  X(31,1014), XRT_MASK,    PPC, 0,    {RA0, RB}},
9062
{"dcbzl", XOPL(31,1014,1), XRT_MASK,   POWER4|E500MC, PPC476, {RA0, RB}},
9063
9064
{"dcbzep",  XRT(31,1023,0), XRT_MASK,    E500MC|PPCA2, 0,   {RA0, RB}},
9065
9066
{"lwz",   OP(32),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, D, RA0}},
9067
{"l",   OP(32),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, D, RA0}},
9068
9069
{"lwzu",  OP(33),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, D, RAL}},
9070
{"lu",    OP(33),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, D, RA0}},
9071
9072
{"lbz",   OP(34),   OP_MASK,     COM, PPCVLE,   {RT, D, RA0}},
9073
9074
{"lbzu",  OP(35),   OP_MASK,     COM, PPCVLE,   {RT, D, RAL}},
9075
9076
{"stw",   OP(36),   OP_MASK,     PPCCOM,  PPCVLE,   {RS, D, RA0}},
9077
{"st",    OP(36),   OP_MASK,     PWRCOM,  PPCVLE,   {RS, D, RA0}},
9078
9079
{"stwu",  OP(37),   OP_MASK,     PPCCOM,  PPCVLE,   {RS, D, RAS}},
9080
{"stu",   OP(37),   OP_MASK,     PWRCOM,  PPCVLE,   {RS, D, RA0}},
9081
9082
{"stb",   OP(38),   OP_MASK,     COM, PPCVLE,   {RS, D, RA0}},
9083
9084
{"stbu",  OP(39),   OP_MASK,     COM, PPCVLE,   {RS, D, RAS}},
9085
9086
{"lhz",   OP(40),   OP_MASK,     COM, PPCVLE,   {RT, D, RA0}},
9087
9088
{"lhzu",  OP(41),   OP_MASK,     COM, PPCVLE,   {RT, D, RAL}},
9089
9090
{"lha",   OP(42),   OP_MASK,     COM, PPCVLE,   {RT, D, RA0}},
9091
9092
{"lhau",  OP(43),   OP_MASK,     COM, PPCVLE,   {RT, D, RAL}},
9093
9094
{"sth",   OP(44),   OP_MASK,     COM, PPCVLE,   {RS, D, RA0}},
9095
9096
{"sthu",  OP(45),   OP_MASK,     COM, PPCVLE,   {RS, D, RAS}},
9097
9098
{"lmw",   OP(46),   OP_MASK,     PPCCOM,  PPCVLE,   {RT, D, RAM}},
9099
{"lm",    OP(46),   OP_MASK,     PWRCOM,  PPCVLE,   {RT, D, RA0}},
9100
9101
{"stmw",  OP(47),   OP_MASK,     PPCCOM,  PPCVLE,   {RS, D, RA0}},
9102
{"stm",   OP(47),   OP_MASK,     PWRCOM,  PPCVLE,   {RS, D, RA0}},
9103
9104
{"lfs",   OP(48),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRT, D, RA0}},
9105
9106
{"lfsu",  OP(49),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRT, D, RAS}},
9107
9108
{"lfd",   OP(50),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRT, D, RA0}},
9109
9110
{"lfdu",  OP(51),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRT, D, RAS}},
9111
9112
{"stfs",  OP(52),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRS, D, RA0}},
9113
9114
{"stfsu", OP(53),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRS, D, RAS}},
9115
9116
{"stfd",  OP(54),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRS, D, RA0}},
9117
9118
{"stfdu", OP(55),   OP_MASK,     COM, PPCEFS|PPCVLE,  {FRS, D, RAS}},
9119
9120
{"lq",    OP(56),      OP_MASK|Q_MASK, POWER4,  PPC476|PPCVLE,  {RTQ, DQ, RAQ}},
9121
{"psq_l", OP(56),   OP_MASK,     PPCPS, PPCVLE,   {FRT,PSD,RA,PSW,PSQ}},
9122
{"lfq",   OP(56),   OP_MASK,     POWER2,  PPCVLE,   {FRT, D, RA0}},
9123
9124
{"lxsd",  DSO(57,2),  DS_MASK,     PPCVSX3, PPCVLE,   {VD, DS, RA0}},
9125
{"lxssp", DSO(57,3),  DS_MASK,     PPCVSX3, PPCVLE,   {VD, DS, RA0}},
9126
{"lfdp",  OP(57),      OP_MASK|Q_MASK, POWER6,  POWER7|PPCVLE,  {FRTp, DS, RA0}},
9127
{"psq_lu",  OP(57),   OP_MASK,     PPCPS, PPCVLE,   {FRT,PSD,RA,PSW,PSQ}},
9128
{"lfqu",  OP(57),   OP_MASK,     POWER2,  PPCVLE,   {FRT, D, RA0}},
9129
9130
{"ld",    DSO(58,0),  DS_MASK,     PPC64, PPCVLE,   {RT, DS, RA0}},
9131
{"ldu",   DSO(58,1),  DS_MASK,     PPC64, PPCVLE,   {RT, DS, RAL}},
9132
{"lwa",   DSO(58,2),  DS_MASK,     PPC64, PPCVLE,   {RT, DS, RA0}},
9133
9134
{"dadd",  XRC(59,2,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9135
{"dadd.", XRC(59,2,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9136
9137
{"dqua",  ZRC(59,3,0),  Z2_MASK,     POWER6,  PPCVLE,   {FRT,FRA,FRB,RMC}},
9138
{"dqua.", ZRC(59,3,1),  Z2_MASK,     POWER6,  PPCVLE,   {FRT,FRA,FRB,RMC}},
9139
9140
{"dmxvi8ger4pp",XX3(59,2),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9141
{"xvi8ger4pp",  XX3(59,2),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9142
{"dmxvi8ger4",  XX3(59,3),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9143
{"xvi8ger4",  XX3(59,3),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9144
9145
{"fdivs", A(59,18,0), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9146
{"fdivs.",  A(59,18,1), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9147
9148
{"fsubs", A(59,20,0), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9149
{"fsubs.",  A(59,20,1), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9150
9151
{"fadds", A(59,21,0), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9152
{"fadds.",  A(59,21,1), AFRC_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9153
9154
{"fsqrts",  A(59,22,0),    AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
9155
{"fsqrts.", A(59,22,1),    AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
9156
9157
{"fres",  A(59,24,0),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9158
{"fres",  A(59,24,0),   AFRALFRC_MASK, PPC, POWER7|PPCVLE,  {FRT, FRB, A_L}},
9159
{"fres.", A(59,24,1),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9160
{"fres.", A(59,24,1),   AFRALFRC_MASK, PPC, POWER7|PPCVLE,  {FRT, FRB, A_L}},
9161
9162
{"fmuls", A(59,25,0), AFRB_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
9163
{"fmuls.",  A(59,25,1), AFRB_MASK,   PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
9164
9165
{"frsqrtes",  A(59,26,0),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9166
{"frsqrtes",  A(59,26,0),   AFRALFRC_MASK, POWER5,  POWER7|PPCVLE,  {FRT, FRB, A_L}},
9167
{"frsqrtes.", A(59,26,1),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9168
{"frsqrtes.", A(59,26,1),   AFRALFRC_MASK, POWER5,  POWER7|PPCVLE,  {FRT, FRB, A_L}},
9169
9170
{"fmsubs",  A(59,28,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9171
{"fmsubs.", A(59,28,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9172
9173
{"fmadds",  A(59,29,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9174
{"fmadds.", A(59,29,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9175
9176
{"fnmsubs", A(59,30,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9177
{"fnmsubs.",  A(59,30,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9178
9179
{"fnmadds", A(59,31,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9180
{"fnmadds.",  A(59,31,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9181
9182
{"dmul",  XRC(59,34,0), X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9183
{"dmul.", XRC(59,34,1), X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9184
9185
{"drrnd", ZRC(59,35,0), Z2_MASK,     POWER6,  PPCVLE,   {FRT, FRA, FRB, RMC}},
9186
{"drrnd.",  ZRC(59,35,1), Z2_MASK,     POWER6,  PPCVLE,   {FRT, FRA, FRB, RMC}},
9187
9188
{"dmxvi8gerx4pp", XX3(59,10), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9189
{"dmxvi8gerx4",   XX3(59,11), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9190
9191
{"dscli", ZRC(59,66,0), Z_MASK,      POWER6,  PPCVLE,   {FRT, FRA, SH16}},
9192
{"dscli.",  ZRC(59,66,1), Z_MASK,      POWER6,  PPCVLE,   {FRT, FRA, SH16}},
9193
9194
{"dquai", ZRC(59,67,0), Z2_MASK,     POWER6,  PPCVLE,   {TE, FRT,FRB,RMC}},
9195
{"dquai.",  ZRC(59,67,1), Z2_MASK,     POWER6,  PPCVLE,   {TE, FRT,FRB,RMC}},
9196
9197
{"dmxvf16ger2pp",XX3(59,18),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9198
{"xvf16ger2pp",  XX3(59,18),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9199
{"dmxvf16ger2",  XX3(59,19),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9200
{"xvf16ger2",  XX3(59,19),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9201
9202
{"dscri", ZRC(59,98,0), Z_MASK,      POWER6,  PPCVLE,   {FRT, FRA, SH16}},
9203
{"dscri.",  ZRC(59,98,1), Z_MASK,      POWER6,  PPCVLE,   {FRT, FRA, SH16}},
9204
9205
{"drintx",  ZRC(59,99,0), Z2_MASK,     POWER6,  PPCVLE,   {R, FRT, FRB, RMC}},
9206
{"drintx.", ZRC(59,99,1), Z2_MASK,     POWER6,  PPCVLE,   {R, FRT, FRB, RMC}},
9207
9208
{"dmxvf32gerpp",XX3(59,26), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9209
{"xvf32gerpp",  XX3(59,26), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9210
{"dmxvf32ger",  XX3(59,27), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9211
{"xvf32ger",  XX3(59,27), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9212
9213
{"dcmpo", X(59,130),  X_MASK,      POWER6,  PPCVLE,   {BF,  FRA, FRB}},
9214
9215
{"dmxvi4ger8pp",XX3(59,34), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9216
{"xvi4ger8pp",  XX3(59,34), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9217
{"dmxvi4ger8",  XX3(59,35), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9218
{"xvi4ger8",  XX3(59,35), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9219
9220
{"dtstex",  X(59,162),  X_MASK,      POWER6,  PPCVLE,   {BF,  FRA, FRB}},
9221
9222
{"dmxvi16ger2spp",XX3(59,42), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9223
{"xvi16ger2spp",  XX3(59,42), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9224
{"dmxvi16ger2s",  XX3(59,43), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9225
{"xvi16ger2s",    XX3(59,43), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9226
9227
{"dtstdc",  Z(59,194),  Z_MASK,      POWER6,  PPCVLE,   {BF,  FRA, DCM}},
9228
9229
{"dmxvbf16ger2pp",XX3(59,50), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9230
{"xvbf16ger2pp",  XX3(59,50), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9231
{"dmxvbf16ger2",  XX3(59,51), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9232
{"xvbf16ger2",    XX3(59,51), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9233
9234
{"dtstdg",  Z(59,226),  Z_MASK,      POWER6,  PPCVLE,   {BF,  FRA, DGM}},
9235
9236
{"drintn",  ZRC(59,227,0),  Z2_MASK,     POWER6,  PPCVLE,   {R, FRT, FRB, RMC}},
9237
{"drintn.", ZRC(59,227,1),  Z2_MASK,     POWER6,  PPCVLE,   {R, FRT, FRB, RMC}},
9238
9239
{"dmxvf64gerpp",XX3(59,58), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9240
{"xvf64gerpp",  XX3(59,58), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9241
{"dmxvf64ger",  XX3(59,59), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9242
{"xvf64ger",  XX3(59,59), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9243
9244
{"dctdp", XRC(59,258,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9245
{"dctdp.",  XRC(59,258,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9246
9247
{"dmxvf16gerx2pp", XX3(59,66),  XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9248
{"dmxvf16gerx2",   XX3(59,67),  XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9249
9250
{"dctfix",  XRC(59,290,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9251
{"dctfix.", XRC(59,290,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9252
9253
{"ddedpd",  XRC(59,322,0),  X_MASK,      POWER6,  PPCVLE,   {SP, FRT, FRB}},
9254
{"ddedpd.", XRC(59,322,1),  X_MASK,      POWER6,  PPCVLE,   {SP, FRT, FRB}},
9255
9256
{"dmxvbf16gerx2pp", XX3(59,74), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9257
{"dmxvi16ger2", XX3(59,75), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9258
{"xvi16ger2", XX3(59,75), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9259
9260
{"dmxvf16ger2np", XX3(59,82), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9261
{"xvf16ger2np",   XX3(59,82), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9262
{"dmxvf16gerx2np",XX3(59,83), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9263
9264
{"dxex",  XRC(59,354,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9265
{"dxex.", XRC(59,354,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9266
9267
{"dmxvf32gernp",  XX3(59,90), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9268
{"xvf32gernp",    XX3(59,90), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9269
{"dmxvbf16gerx2", XX3(59,91), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9270
9271
{"dmxvi8gerx4spp",XX3(59,98), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9272
{"dmxvi8ger4spp", XX3(59,99), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9273
{"xvi8ger4spp",   XX3(59,99), XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9274
9275
{"dmxvi16ger2pp", XX3(59,107),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9276
{"xvi16ger2pp",   XX3(59,107),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9277
9278
{"dmxvbf16ger2np",XX3(59,114),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9279
{"xvbf16ger2np",  XX3(59,114),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9280
{"dmxvbf16gerx2np",XX3(59,115), XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9281
9282
{"dmxvf64gernp",  XX3(59,122),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9283
{"xvf64gernp",    XX3(59,122),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9284
9285
{"dsub",  XRC(59,514,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9286
{"dsub.", XRC(59,514,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9287
9288
{"ddiv",  XRC(59,546,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9289
{"ddiv.", XRC(59,546,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9290
9291
{"dmxvf16ger2pn", XX3(59,146),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9292
{"xvf16ger2pn",   XX3(59,146),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9293
{"dmxvf16gerx2pn",XX3(59,147),  XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9294
9295
{"dmxvf32gerpn",XX3(59,154),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9296
{"xvf32gerpn",  XX3(59,154),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9297
9298
{"dcmpu", X(59,642),  X_MASK,      POWER6,  PPCVLE,   {BF,  FRA, FRB}},
9299
9300
{"dtstsf",  X(59,674),  X_MASK,      POWER6,  PPCVLE,   {BF,  FRA, FRB}},
9301
{"dtstsfi", X(59,675),  X_MASK|1<<22,POWER9,  PPCVLE,   {BF, UIM6, FRB}},
9302
9303
{"dmxvbf16ger2pn",XX3(59,178),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9304
{"xvbf16ger2pn",  XX3(59,178),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9305
{"dmxvbf16gerx2pn", XX3(59,179),XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9306
9307
{"dmxvf64gerpn",XX3(59,186),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9308
{"xvf64gerpn",  XX3(59,186),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9309
9310
{"drsp",  XRC(59,770,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9311
{"drsp.", XRC(59,770,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRB}},
9312
9313
{"dcffix",  XRC(59,802,0), X_MASK|FRA_MASK, POWER7, PPCVLE,   {FRT, FRB}},
9314
{"dcffix.", XRC(59,802,1), X_MASK|FRA_MASK, POWER7, PPCVLE,   {FRT, FRB}},
9315
9316
{"dmxvf16gerx2nn", XX3(59,202), XX3GERX_MASK,  FUTURE,  PPCVLE,   {DMR, XA5p, XB6}},
9317
9318
{"denbcd",  XRC(59,834,0),  X_MASK,      POWER6,  PPCVLE,   {S, FRT, FRB}},
9319
{"denbcd.", XRC(59,834,1),  X_MASK,      POWER6,  PPCVLE,   {S, FRT, FRB}},
9320
9321
{"dmxvf16ger2nn", XX3(59,210),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9322
{"xvf16ger2nn",   XX3(59,210),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9323
9324
{"fcfids",  XRC(59,846,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9325
{"fcfids.", XRC(59,846,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9326
9327
{"diex",  XRC(59,866,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9328
{"diex.", XRC(59,866,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRA, FRB}},
9329
9330
{"dmxvf32gernn",XX3(59,218),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9331
{"xvf32gernn",  XX3(59,218),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9332
9333
{"dmxvbf16gerx2nn", XX3(59,234),XX3GERX_MASK, FUTURE, PPCVLE,   {DMR, XA5p, XB6}},
9334
9335
{"dmxvbf16ger2nn",XX3(59,242),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9336
{"xvbf16ger2nn",  XX3(59,242),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6a, XB6a}},
9337
9338
{"fcfidus", XRC(59,974,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9339
{"fcfidus.",  XRC(59,974,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9340
9341
{"dmxvf64gernn",XX3(59,250),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9342
{"xvf64gernn",  XX3(59,250),  XX3ACC_MASK, POWER10, PPCVLE,   {ACC, XA6ap, XB6a}},
9343
9344
{"xsaddsp", XX3(60,0),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9345
{"xsmaddasp", XX3(60,1),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9346
{"xxsldwi", XX3(60,2),  XX3SHW_MASK, PPCVSX,  PPCVLE,   {XT6, XA6, XB6, SHW}},
9347
{"xscmpeqdp", XX3(60,3),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9348
{"xsrsqrtesp",  XX2(60,10), XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9349
{"xssqrtsp",  XX2(60,11), XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9350
{"xxsel", XX4(60,3),  XX4_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6, XC6}},
9351
{"xssubsp", XX3(60,8),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9352
{"xsmaddmsp", XX3(60,9),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9353
{"xxspltd", XX3(60,10), XX3DM_MASK,  PPCVSX,  PPCVLE|EXT, {XT6, XAB6, DMEX}},
9354
{"xxmrghd", XX3(60,10), XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XA6, XB6}},
9355
{"xxswapd", XX3(60,10)|(2<<8), XX3_MASK, PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9356
{"xxmrgld", XX3(60,10)|(3<<8), XX3_MASK, PPCVSX,  PPCVLE|EXT, {XT6, XA6, XB6}},
9357
{"xxpermdi",  XX3(60,10), XX3DM_MASK,  PPCVSX,  PPCVLE,   {XT6, XA6, XB6, DM}},
9358
{"xscmpgtdp", XX3(60,11), XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9359
{"xsresp",  XX2(60,26), XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9360
{"xsmulsp", XX3(60,16), XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9361
{"xsmsubasp", XX3(60,17), XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9362
{"xxmrghw", XX3(60,18), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9363
{"xscmpgedp", XX3(60,19), XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9364
{"xsdivsp", XX3(60,24), XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9365
{"xsmsubmsp", XX3(60,25), XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9366
{"xxperm",  XX3(60,26), XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9367
{"xsadddp", XX3(60,32), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9368
{"xsmaddadp", XX3(60,33), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9369
{"xscmpudp",  XX3(60,35), XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9370
{"xscvdpuxws",  XX2(60,72), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9371
{"xsrdpi",  XX2(60,73), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9372
{"xsrsqrtedp",  XX2(60,74), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9373
{"xssqrtdp",  XX2(60,75), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9374
{"xssubdp", XX3(60,40), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9375
{"xsmaddmdp", XX3(60,41), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9376
{"xscmpodp",  XX3(60,43), XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9377
{"xscvdpsxws",  XX2(60,88), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9378
{"xsrdpiz", XX2(60,89), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9379
{"xsredp",  XX2(60,90), XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9380
{"xsmuldp", XX3(60,48), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9381
{"xsmsubadp", XX3(60,49), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9382
{"xxmrglw", XX3(60,50), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9383
{"xsrdpip", XX2(60,105),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9384
{"xstsqrtdp", XX2(60,106),  XX2BF_MASK,  PPCVSX,  PPCVLE,   {BF, XB6}},
9385
{"xsrdpic", XX2(60,107),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9386
{"xsdivdp", XX3(60,56), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9387
{"xsmsubmdp", XX3(60,57), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9388
{"xxpermr", XX3(60,58), XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9389
{"xscmpexpdp",  XX3(60,59), XX3BF_MASK,  PPCVSX3, PPCVLE,   {BF, XA6, XB6}},
9390
{"xsrdpim", XX2(60,121),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9391
{"xstdivdp",  XX3(60,61), XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9392
{"xvaddsp", XX3(60,64), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9393
{"xvmaddasp", XX3(60,65), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9394
{"xvcmpeqsp", XX3RC(60,67,0), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9395
{"xvcmpeqsp.",  XX3RC(60,67,1), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9396
{"xvcvspuxws",  XX2(60,136),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9397
{"xvrspi",  XX2(60,137),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9398
{"xvrsqrtesp",  XX2(60,138),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9399
{"xvsqrtsp",  XX2(60,139),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9400
{"xvsubsp", XX3(60,72), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9401
{"xvmaddmsp", XX3(60,73), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9402
{"xvcmpgtsp", XX3RC(60,75,0), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9403
{"xvcmpgtsp.",  XX3RC(60,75,1), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9404
{"xvcvspsxws",  XX2(60,152),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9405
{"xvrspiz", XX2(60,153),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9406
{"xvresp",  XX2(60,154),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9407
{"xvmulsp", XX3(60,80), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9408
{"xvmsubasp", XX3(60,81), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9409
{"xxspltw", XX2(60,164),  XX2UIM_MASK, PPCVSX,  PPCVLE,   {XT6, XB6, UIM}},
9410
{"xxextractuw", XX2(60,165),   XX2UIM4_MASK, PPCVSX3, PPCVLE,   {XT6, XB6, UIMM4}},
9411
{"xvcmpgesp", XX3RC(60,83,0), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9412
{"xvcmpgesp.",  XX3RC(60,83,1), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9413
{"xvcvuxwsp", XX2(60,168),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9414
{"xvrspip", XX2(60,169),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9415
{"xvtsqrtsp", XX2(60,170),  XX2BF_MASK,  PPCVSX,  PPCVLE,   {BF, XB6}},
9416
{"xvrspic", XX2(60,171),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9417
{"xvdivsp", XX3(60,88), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9418
{"xvmsubmsp", XX3(60,89), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9419
{"xxspltib",  X(60,360),   XX1_MASK|3<<19, PPCVSX3, PPCVLE,   {XT6, IMM8}},
9420
{"lxvkq", XVA(60,360,31), XVA_MASK&~1, POWER10, PPCVLE,   {XT6, UIM5}},
9421
{"xxinsertw", XX2(60,181),   XX2UIM4_MASK, PPCVSX3, PPCVLE,   {XT6, XB6, UIMM4}},
9422
{"xvcvsxwsp", XX2(60,184),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9423
{"xvrspim", XX2(60,185),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9424
{"xvtdivsp",  XX3(60,93), XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9425
{"xvadddp", XX3(60,96), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9426
{"xvmaddadp", XX3(60,97), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9427
{"xvcmpeqdp", XX3RC(60,99,0), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9428
{"xvcmpeqdp.",  XX3RC(60,99,1), XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9429
{"xvcvdpuxws",  XX2(60,200),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9430
{"xvrdpi",  XX2(60,201),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9431
{"xvrsqrtedp",  XX2(60,202),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9432
{"xvsqrtdp",  XX2(60,203),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9433
{"xvsubdp", XX3(60,104),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9434
{"xvmaddmdp", XX3(60,105),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9435
{"xvcmpgtdp", XX3RC(60,107,0), XX3_MASK,   PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9436
{"xvcmpgtdp.",  XX3RC(60,107,1), XX3_MASK,   PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9437
{"xvcvdpsxws",  XX2(60,216),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9438
{"xvrdpiz", XX2(60,217),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9439
{"xvredp",  XX2(60,218),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9440
{"xvmuldp", XX3(60,112),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9441
{"xvmsubadp", XX3(60,113),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9442
{"xvmulhuw",  XX3(60,114),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9443
{"xvcmpgedp", XX3RC(60,115,0), XX3_MASK,   PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9444
{"xvcmpgedp.",  XX3RC(60,115,1), XX3_MASK,   PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9445
{"xvcvuxwdp", XX2(60,232),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9446
{"xvrdpip", XX2(60,233),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9447
{"xvtsqrtdp", XX2(60,234),  XX2BF_MASK,  PPCVSX,  PPCVLE,   {BF, XB6}},
9448
{"xvrdpic", XX2(60,235),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9449
{"xvdivdp", XX3(60,120),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9450
{"xvmsubmdp", XX3(60,121),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9451
{"xvmulhuh",  XX3(60,122),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9452
{"xvcvsxwdp", XX2(60,248),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9453
{"xvrdpim", XX2(60,249),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9454
{"xvtdivdp",  XX3(60,125),  XX3BF_MASK,  PPCVSX,  PPCVLE,   {BF, XA6, XB6}},
9455
{"xsmaxcdp",  XX3(60,128),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9456
{"xsnmaddasp",  XX3(60,129),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9457
{"xxland",  XX3(60,130),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9458
{"xvadduwm",  XX3(60,131),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9459
{"xscvdpsp",  XX2(60,265),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9460
{"xscvdpspn", XX2(60,267),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9461
{"xsmincdp",  XX3(60,136),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9462
{"xsnmaddmsp",  XX3(60,137),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9463
{"xxlandc", XX3(60,138),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9464
{"xvadduhm",  XX3(60,139),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9465
{"xsrsp", XX2(60,281),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9466
{"xsmaxjdp",  XX3(60,144),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9467
{"xsnmsubasp",  XX3(60,145),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9468
{"xxmr",  XX3(60,146),  XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9469
{"xxlor", XX3(60,146),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9470
{"xvsubuwm",  XX3(60,147),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9471
{"xscvuxdsp", XX2(60,296),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9472
{"xststdcsp", XX2(60,298),  XX2BFD_MASK, PPCVSX3, PPCVLE,   {BF, XB6, DCMX}},
9473
{"xsminjdp",  XX3(60,152),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9474
{"xsnmsubmsp",  XX3(60,153),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9475
{"xxlxor",  XX3(60,154),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9476
{"xvsubuhm",  XX3(60,155),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9477
{"xscvsxdsp", XX2(60,312),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9478
{"xsmaxdp", XX3(60,160),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9479
{"xsnmaddadp",  XX3(60,161),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9480
{"xxlnot",  XX3(60,162),  XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9481
{"xxlnor",  XX3(60,162),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9482
{"xvmuluwm",  XX3(60,163),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9483
{"xscvdpuxds",  XX2(60,328),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9484
{"xscvspdp",  XX2(60,329),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9485
{"xscvspdpn", XX2(60,331),  XX2_MASK,    PPCVSX2, PPCVLE,   {XT6, XB6}},
9486
{"xsmindp", XX3(60,168),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9487
{"xsnmaddmdp",  XX3(60,169),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9488
{"xxlorc",  XX3(60,170),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9489
{"xvmuluhm",  XX3(60,171),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9490
{"xscvdpsxds",  XX2(60,344),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9491
{"xsabsdp", XX2(60,345),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9492
{"xsxexpdp",  XX2VA(60,347,0),XX2_MASK|1,  PPCVSX3, PPCVLE,   {RT, XB6}},
9493
{"xsxsigdp",  XX2VA(60,347,1),XX2_MASK|1,  PPCVSX3, PPCVLE,   {RT, XB6}},
9494
{"xscvhpdp",  XX2VA(60,347,16),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9495
{"xscvdphp",  XX2VA(60,347,17),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9496
{"xscpsgndp", XX3(60,176),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9497
{"xsnmsubadp",  XX3(60,177),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9498
{"xxlnand", XX3(60,178),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9499
{"xvmulhsw",  XX3(60,179),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9500
{"xscvuxddp", XX2(60,360),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9501
{"xsnabsdp",  XX2(60,361),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9502
{"xststdcdp", XX2(60,362),  XX2BFD_MASK, PPCVSX3, PPCVLE,   {BF, XB6, DCMX}},
9503
{"xvrlw", XX3(60,184),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9504
{"xsnmsubmdp",  XX3(60,185),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9505
{"xxleqv",  XX3(60,186),  XX3_MASK,    PPCVSX2, PPCVLE,   {XT6, XA6, XB6}},
9506
{"xvmulhsh",  XX3(60,187),  XX3_MASK,    PPCVSXF, PPCVLE,   {XT6, XA6, XB6}},
9507
{"xscvsxddp", XX2(60,376),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9508
{"xsnegdp", XX2(60,377),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9509
{"xvmaxsp", XX3(60,192),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9510
{"xvnmaddasp",  XX3(60,193),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9511
9512
{"xxaes128encp",XX3M(60,194,0),XX3AESM_MASK,  PPCVSXF, PPCVLE|EXT,  {XTP, XA5p, XB5p}},
9513
{"xxaes192encp",XX3M(60,194,1),XX3AESM_MASK,  PPCVSXF, PPCVLE|EXT,  {XTP, XA5p, XB5p}},
9514
{"xxaes256encp",XX3M(60,194,2),XX3AESM_MASK,  PPCVSXF, PPCVLE|EXT,  {XTP, XA5p, XB5p}},
9515
{"xxaesencp", XX3M(60,194,0),XX3AES_MASK,   PPCVSXF, PPCVLE,    {XTP, XA5p, XB5p, AESM}},
9516
{"xxaes128decp",XX3M(60,202,0),XX3AESM_MASK,  PPCVSXF, PPCVLE|EXT,  {XTP, XA5p, XB5p}},
9517
{"xxaes192decp",XX3M(60,202,1),XX3AESM_MASK,  PPCVSXF, PPCVLE|EXT,  {XTP, XA5p, XB5p}},
9518
{"xxaes256decp",XX3M(60,202,2),XX3AESM_MASK,  PPCVSXF, PPCVLE|EXT,  {XTP, XA5p, XB5p}},
9519
{"xxaesdecp", XX3M(60,202,0),XX3AES_MASK,   PPCVSXF, PPCVLE,    {XTP, XA5p, XB5p, AESM}},
9520
9521
{"xvcvspuxds",  XX2(60,392),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9522
{"xvcvdpsp",  XX2(60,393),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9523
{"xvminsp", XX3(60,200),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9524
{"xvnmaddmsp",  XX3(60,201),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9525
{"xvcvspsxds",  XX2(60,408),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9526
{"xvabssp", XX2(60,409),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9527
{"xvmovsp", XX3(60,208),  XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9528
{"xvcpsgnsp", XX3(60,208),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9529
{"xvnmsubasp",  XX3(60,209),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9530
9531
{"xxaes128genlkp",XX2M(60,420,0),XX2AESM_MASK, PPCVSXF, PPCVLE|EXT, {XTP, XB5p}},
9532
{"xxaes192genlkp",XX2M(60,420,1),XX2AESM_MASK, PPCVSXF, PPCVLE|EXT, {XTP, XB5p}},
9533
{"xxaes256genlkp",XX2M(60,420,2),XX2AESM_MASK, PPCVSXF, PPCVLE|EXT, {XTP, XB5p}},
9534
{"xxaesgenlkp",   XX2M(60,420,0),XX2AES_MASK,  PPCVSXF, PPCVLE,   {XTP, XB5p, AESM}},
9535
9536
{"xvcvuxdsp", XX2(60,424),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9537
{"xvnabssp",  XX2(60,425),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9538
{"xvtstdcsp", XX2(60,426),  XX2DCMXS_MASK, PPCVSX3, PPCVLE,   {XT6, XB6, DCMXS}},
9539
{"xviexpsp",  XX3(60,216),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9540
{"xvnmsubmsp",  XX3(60,217),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9541
9542
{"xxgfmul128gcm",XX3GF(60,26,3,0),  XX3_MASK, PPCVSXF, PPCVLE|EXT,  {XT6, XA6, XB6}},
9543
{"xxgfmul128xts",XX3GF(60,26,3,1),  XX3_MASK, PPCVSXF, PPCVLE|EXT,  {XT6, XA6, XB6}},
9544
{"xxgfmul128",   XX3GF(60,26,3,0),  XX3GF_MASK, PPCVSXF, PPCVLE,  {XT6, XA6, XB6, PGF1}},
9545
9546
{"xvcvsxdsp", XX2(60,440),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9547
{"xvnegsp", XX2(60,441),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9548
{"xvmaxdp", XX3(60,224),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9549
{"xvnmaddadp",  XX3(60,225),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9550
{"dmxxextfdmr512",XX3(60,226),  XX3DMR_MASK, FUTURE,  PPCVLE,   {XA5p, XB5p, DMR, P1}},
9551
{"xvcvdpuxds",  XX2(60,456),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9552
{"xvcvspdp",  XX2(60,457),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9553
{"xxgenpcvbm",  X(60,916),  XX1_MASK,    POWER10, PPCVLE,   {XT6, VB, UIMM}},
9554
{"xxgenpcvhm",  X(60,917),  XX1_MASK,    POWER10, PPCVLE,   {XT6, VB, UIMM}},
9555
{"xsiexpdp",  X(60,918),  XX1_MASK,    PPCVSX3, PPCVLE,   {XT6, RA, RB}},
9556
{"xvmindp", XX3(60,232),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9557
{"xvnmaddmdp",  XX3(60,233),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9558
{"dmxxinstdmr512",XX3(60,234),  XX3DMR_MASK, FUTURE,  PPCVLE,   {DMR, XA5p, XB5p,P1}},
9559
{"xvcvdpsxds",  XX2(60,472),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9560
{"xvabsdp", XX2(60,473),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9561
{"xxgenpcvwm",  X(60,948),  XX1_MASK,    POWER10, PPCVLE,   {XT6, VB, UIMM}},
9562
{"xxgenpcvdm",  X(60,949),  XX1_MASK,    POWER10, PPCVLE,   {XT6, VB, UIMM}},
9563
{"xvxexpdp",  XX2VA(60,475,0),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9564
{"xvxsigdp",  XX2VA(60,475,1),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9565
{"xvtlsbb", XX2VA(60,475,2),XX2BF_MASK,  POWER10, PPCVLE,   {BF, XB6}},
9566
{"xxbrh", XX2VA(60,475,7),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9567
{"xvxexpsp",  XX2VA(60,475,8),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9568
{"xvxsigsp",  XX2VA(60,475,9),XX2_MASK,    PPCVSX3, PPCVLE,   {XT6, XB6}},
9569
{"xxbrw", XX2VA(60,475,15),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9570
{"xvcvbf16spn", XX2VA(60,475,16),XX2_MASK,   PPCVSX4, PPCVLE,   {XT6, XB6}},
9571
{"xvcvspbf16",  XX2VA(60,475,17),XX2_MASK,   PPCVSX4, PPCVLE,   {XT6, XB6}},
9572
{"xxbrd", XX2VA(60,475,23),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9573
{"xvcvhpsp",  XX2VA(60,475,24),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9574
{"xvcvsphp",  XX2VA(60,475,25),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9575
{"xxbrq", XX2VA(60,475,31),XX2_MASK,   PPCVSX3, PPCVLE,   {XT6, XB6}},
9576
{"xvmovdp", XX3(60,240),  XX3_MASK,    PPCVSX,  PPCVLE|EXT, {XT6, XAB6}},
9577
{"xvcpsgndp", XX3(60,240),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9578
{"xvnmsubadp",  XX3(60,241),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9579
{"dmxxextfdmr256",XX2(60,484),  XX2DMR_MASK, FUTURE,  PPCVLE,   {XB5p, DMR, P2}},
9580
{"dmxxinstdmr256",XX2(60,485),  XX2DMR_MASK, FUTURE,  PPCVLE,   {DMR, XB5p, P2}},
9581
{"xvcvuxddp", XX2(60,488),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9582
{"xvnabsdp",  XX2(60,489),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9583
{"xvtstdcdp", XX2(60,490),  XX2DCMXS_MASK, PPCVSX3, PPCVLE,   {XT6, XB6, DCMXS}},
9584
{"xviexpdp",  XX3(60,248),  XX3_MASK,    PPCVSX3, PPCVLE,   {XT6, XA6, XB6}},
9585
{"xvnmsubmdp",  XX3(60,249),  XX3_MASK,    PPCVSX,  PPCVLE,   {XT6, XA6, XB6}},
9586
{"xvcvsxddp", XX2(60,504),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9587
{"xvnegdp", XX2(60,505),  XX2_MASK,    PPCVSX,  PPCVLE,   {XT6, XB6}},
9588
9589
{"psq_st",  OP(60),   OP_MASK,     PPCPS, PPCVLE,   {FRS,PSD,RA,PSW,PSQ}},
9590
{"stfq",  OP(60),   OP_MASK,     POWER2,  PPCVLE,   {FRS, D, RA}},
9591
9592
{"lxv",   DQX(61,1),  DQX_MASK,    PPCVSX3, PPCVLE,   {XTQ6, DQ, RA0}},
9593
{"stxv",  DQX(61,5),  DQX_MASK,    PPCVSX3, PPCVLE,   {XSQ6, DQ, RA0}},
9594
{"stxsd", DSO(61,2),  DS_MASK,     PPCVSX3, PPCVLE,   {VS, DS, RA0}},
9595
{"stxssp",  DSO(61,3),  DS_MASK,     PPCVSX3, PPCVLE,   {VS, DS, RA0}},
9596
{"stfdp", OP(61),      OP_MASK|Q_MASK, POWER6,  POWER7|PPCVLE,  {FRSp, DS, RA0}},
9597
{"psq_stu", OP(61),   OP_MASK,     PPCPS, PPCVLE,   {FRS,PSD,RA,PSW,PSQ}},
9598
{"stfqu", OP(61),   OP_MASK,     POWER2,  PPCVLE,   {FRS, D, RA}},
9599
9600
{"std",   DSO(62,0),  DS_MASK,     PPC64, PPCVLE,   {RS, DS, RA0}},
9601
{"stdu",  DSO(62,1),  DS_MASK,     PPC64, PPCVLE,   {RS, DS, RAS}},
9602
{"stq",   DSO(62,2),   DS_MASK|Q_MASK, POWER4,  PPC476|PPCVLE,  {RSQ, DS, RA0}},
9603
9604
{"fcmpu", X(63,0),  XBF_MASK,    COM, PPCEFS|PPCVLE,  {BF, FRA, FRB}},
9605
9606
{"daddq", XRC(63,2,0),  X_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp}},
9607
{"daddq.",  XRC(63,2,1),  X_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp}},
9608
9609
{"dquaq", ZRC(63,3,0), Z2_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp, RMC}},
9610
{"dquaq.",  ZRC(63,3,1), Z2_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp, RMC}},
9611
9612
{"xsaddqp", XRC(63,4,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9613
{"xsaddqpo",  XRC(63,4,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9614
9615
{"xsrqpi",  ZRC(63,5,0),  Z2_MASK,     PPCVSX3, PPCVLE,   {R, VD, VB, RMC}},
9616
{"xsrqpix", ZRC(63,5,1),  Z2_MASK,     PPCVSX3, PPCVLE,   {R, VD, VB, RMC}},
9617
9618
{"fcpsgn",  XRC(63,8,0),  X_MASK, POWER6|PPCA2|PPC476, PPCVLE,  {FRT, FRA, FRB}},
9619
{"fcpsgn.", XRC(63,8,1),  X_MASK, POWER6|PPCA2|PPC476, PPCVLE,  {FRT, FRA, FRB}},
9620
9621
{"frsp",  XRC(63,12,0), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9622
{"frsp.", XRC(63,12,1), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9623
9624
{"fctiw", XRC(63,14,0), XRA_MASK,    PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRB}},
9625
{"fcir",  XRC(63,14,0), XRA_MASK,    PWR2COM, PPCVLE,   {FRT, FRB}},
9626
{"fctiw.",  XRC(63,14,1), XRA_MASK,    PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRB}},
9627
{"fcir.", XRC(63,14,1), XRA_MASK,    PWR2COM, PPCVLE,   {FRT, FRB}},
9628
9629
{"fctiwz",  XRC(63,15,0), XRA_MASK,    PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRB}},
9630
{"fcirz", XRC(63,15,0), XRA_MASK,    PWR2COM, PPCVLE,   {FRT, FRB}},
9631
{"fctiwz.", XRC(63,15,1), XRA_MASK,    PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRB}},
9632
{"fcirz.",  XRC(63,15,1), XRA_MASK,    PWR2COM, PPCVLE,   {FRT, FRB}},
9633
9634
{"fdiv",  A(63,18,0), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9635
{"fd",    A(63,18,0), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9636
{"fdiv.", A(63,18,1), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9637
{"fd.",   A(63,18,1), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9638
9639
{"fsub",  A(63,20,0), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9640
{"fs",    A(63,20,0), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9641
{"fsub.", A(63,20,1), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9642
{"fs.",   A(63,20,1), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9643
9644
{"fadd",  A(63,21,0), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9645
{"fa",    A(63,21,0), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9646
{"fadd.", A(63,21,1), AFRC_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRB}},
9647
{"fa.",   A(63,21,1), AFRC_MASK,   PWRCOM,  PPCVLE,   {FRT, FRA, FRB}},
9648
9649
{"fsqrt", A(63,22,0),    AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
9650
{"fsqrt.",  A(63,22,1),    AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
9651
9652
{"fsel",  A(63,23,0), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9653
{"fsel.", A(63,23,1), A_MASK,      PPC, PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9654
9655
{"fre",   A(63,24,0),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9656
{"fre",   A(63,24,0),   AFRALFRC_MASK, POWER5,  POWER7|PPCVLE,  {FRT, FRB, A_L}},
9657
{"fre.",  A(63,24,1),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9658
{"fre.",  A(63,24,1),   AFRALFRC_MASK, POWER5,  POWER7|PPCVLE,  {FRT, FRB, A_L}},
9659
9660
{"fmul",  A(63,25,0), AFRB_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
9661
{"fm",    A(63,25,0), AFRB_MASK,   PWRCOM,  PPCVLE|PPCVLE,  {FRT, FRA, FRC}},
9662
{"fmul.", A(63,25,1), AFRB_MASK,   PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC}},
9663
{"fm.",   A(63,25,1), AFRB_MASK,   PWRCOM,  PPCVLE|PPCVLE,  {FRT, FRA, FRC}},
9664
9665
{"frsqrte", A(63,26,0),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9666
{"frsqrte", A(63,26,0),   AFRALFRC_MASK, PPC, POWER7|PPCVLE,  {FRT, FRB, A_L}},
9667
{"frsqrte.",  A(63,26,1),   AFRAFRC_MASK,  POWER7,  PPCVLE,   {FRT, FRB}},
9668
{"frsqrte.",  A(63,26,1),   AFRALFRC_MASK, PPC, POWER7|PPCVLE,  {FRT, FRB, A_L}},
9669
9670
{"fmsub", A(63,28,0), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9671
{"fms",   A(63,28,0), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9672
{"fmsub.",  A(63,28,1), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9673
{"fms.",  A(63,28,1), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9674
9675
{"fmadd", A(63,29,0), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9676
{"fma",   A(63,29,0), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9677
{"fmadd.",  A(63,29,1), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9678
{"fma.",  A(63,29,1), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9679
9680
{"fnmsub",  A(63,30,0), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9681
{"fnms",  A(63,30,0), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9682
{"fnmsub.", A(63,30,1), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9683
{"fnms.", A(63,30,1), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9684
9685
{"fnmadd",  A(63,31,0), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9686
{"fnma",  A(63,31,0), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9687
{"fnmadd.", A(63,31,1), A_MASK,      PPCCOM,  PPCEFS|PPCVLE,  {FRT, FRA, FRC, FRB}},
9688
{"fnma.", A(63,31,1), A_MASK,      PWRCOM,  PPCVLE,   {FRT, FRA, FRC, FRB}},
9689
9690
{"fcmpo", X(63,32), XBF_MASK,    COM, PPCEFS|PPCVLE,  {BF, FRA, FRB}},
9691
9692
{"dmulq", XRC(63,34,0), X_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp}},
9693
{"dmulq.",  XRC(63,34,1), X_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, FRBp}},
9694
9695
{"drrndq",  ZRC(63,35,0), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRA, FRBp, RMC}},
9696
{"drrndq.", ZRC(63,35,1), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRA, FRBp, RMC}},
9697
9698
{"xsmulqp", XRC(63,36,0), X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9699
{"xsmulqpo",  XRC(63,36,1), X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9700
9701
{"xsrqpxp", Z(63,37), Z2_MASK,     PPCVSX3, PPCVLE,   {R, VD, VB, RMC}},
9702
9703
{"mtfsb1",  XRC(63,38,0), XRARB_MASK,  COM, PPCVLE,   {BTF}},
9704
{"mtfsb1.", XRC(63,38,1), XRARB_MASK,  COM, PPCVLE,   {BTF}},
9705
9706
{"fneg",  XRC(63,40,0), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9707
{"fneg.", XRC(63,40,1), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9708
9709
{"mcrfs",      X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, PPCVLE,   {BF, BFA}},
9710
9711
{"dscliq",  ZRC(63,66,0), Z_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, SH16}},
9712
{"dscliq.", ZRC(63,66,1), Z_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, SH16}},
9713
9714
{"dquaiq",  ZRC(63,67,0), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {TE, FRTp, FRBp, RMC}},
9715
{"dquaiq.", ZRC(63,67,1), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {TE, FRTp, FRBp, RMC}},
9716
9717
{"xscmpeqqp", X(63,68), X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
9718
9719
{"mtfsb0",  XRC(63,70,0), XRARB_MASK,  COM, PPCVLE,   {BTF}},
9720
{"mtfsb0.", XRC(63,70,1), XRARB_MASK,  COM, PPCVLE,   {BTF}},
9721
9722
{"fmr",   XRC(63,72,0), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9723
{"fmr.",  XRC(63,72,1), XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9724
9725
{"dscriq",  ZRC(63,98,0), Z_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, SH16}},
9726
{"dscriq.", ZRC(63,98,1), Z_MASK|Q_MASK, POWER6,  PPCVLE,   {FRTp, FRAp, SH16}},
9727
9728
{"drintxq", ZRC(63,99,0), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {R, FRTp, FRBp, RMC}},
9729
{"drintxq.",  ZRC(63,99,1), Z2_MASK|Q_MASK, POWER6, PPCVLE,   {R, FRTp, FRBp, RMC}},
9730
9731
{"xscpsgnqp", X(63,100),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9732
9733
{"ftdiv", X(63,128),  XBF_MASK,    POWER7,  PPCVLE,   {BF, FRA, FRB}},
9734
9735
{"dcmpoq",  X(63,130),  X_MASK,      POWER6,  PPCVLE,   {BF, FRAp, FRBp}},
9736
9737
{"xscmpoqp",  X(63,132),  XBF_MASK,    PPCVSX3, PPCVLE,   {BF, VA, VB}},
9738
9739
{"mtfsfi",  XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
9740
{"mtfsfi",  XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
9741
{"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
9742
{"mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
9743
9744
{"fnabs", XRC(63,136,0),  XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9745
{"fnabs.",  XRC(63,136,1),  XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9746
9747
{"fctiwu",  XRC(63,142,0),  XRA_MASK,    POWER7,  PPCVLE,   {FRT, FRB}},
9748
{"fctiwu.", XRC(63,142,1),  XRA_MASK,    POWER7,  PPCVLE,   {FRT, FRB}},
9749
{"fctiwuz", XRC(63,143,0),  XRA_MASK,    POWER7,  PPCVLE,   {FRT, FRB}},
9750
{"fctiwuz.",  XRC(63,143,1),  XRA_MASK,    POWER7,  PPCVLE,   {FRT, FRB}},
9751
9752
{"ftsqrt",  X(63,160),  XBF_MASK|FRA_MASK, POWER7, PPCVLE,  {BF, FRB}},
9753
9754
{"dtstexq", X(63,162),  X_MASK,      POWER6,  PPCVLE,   {BF, FRAp, FRBp}},
9755
9756
{"xscmpexpqp",  X(63,164),  XBF_MASK,    PPCVSX3, PPCVLE,   {BF, VA, VB}},
9757
9758
{"dtstdcq", Z(63,194),  Z_MASK,      POWER6,  PPCVLE,   {BF, FRAp, DCM}},
9759
9760
{"xscmpgeqp", X(63,196),  X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
9761
9762
{"dtstdgq", Z(63,226),  Z_MASK,      POWER6,  PPCVLE,   {BF, FRAp, DGM}},
9763
9764
{"drintnq", ZRC(63,227,0), Z2_MASK|Q_MASK, POWER6,  PPCVLE,   {R, FRTp, FRBp, RMC}},
9765
{"drintnq.",  ZRC(63,227,1), Z2_MASK|Q_MASK, POWER6,  PPCVLE,   {R, FRTp, FRBp, RMC}},
9766
9767
{"xscmpgtqp", X(63,228),  X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
9768
9769
{"dctqpq",  XRC(63,258,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRB}},
9770
{"dctqpq.", XRC(63,258,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRB}},
9771
9772
{"fabs",  XRC(63,264,0),  XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9773
{"fabs.", XRC(63,264,1),  XRA_MASK,    COM, PPCEFS|PPCVLE,  {FRT, FRB}},
9774
9775
{"dctfixq", XRC(63,290,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRBp}},
9776
{"dctfixq.",  XRC(63,290,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRBp}},
9777
9778
{"ddedpdq", XRC(63,322,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {SP, FRTp, FRBp}},
9779
{"ddedpdq.",  XRC(63,322,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {SP, FRTp, FRBp}},
9780
9781
{"dxexq", XRC(63,354,0),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRBp}},
9782
{"dxexq.",  XRC(63,354,1),  X_MASK,      POWER6,  PPCVLE,   {FRT, FRBp}},
9783
9784
{"xsmaddqp",  XRC(63,388,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9785
{"xsmaddqpo", XRC(63,388,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9786
9787
{"frin",  XRC(63,392,0),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9788
{"frin.", XRC(63,392,1),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9789
9790
{"xsmsubqp",  XRC(63,420,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9791
{"xsmsubqpo", XRC(63,420,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9792
9793
{"friz",  XRC(63,424,0),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9794
{"friz.", XRC(63,424,1),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9795
9796
{"xsnmaddqp", XRC(63,452,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9797
{"xsnmaddqpo",  XRC(63,452,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9798
9799
{"frip",  XRC(63,456,0),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9800
{"frip.", XRC(63,456,1),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9801
9802
{"xsnmsubqp", XRC(63,484,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9803
{"xsnmsubqpo",  XRC(63,484,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9804
9805
{"frim",  XRC(63,488,0),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9806
{"frim.", XRC(63,488,1),  XRA_MASK,    POWER5,  PPCVLE,   {FRT, FRB}},
9807
9808
{"dsubq", XRC(63,514,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRAp, FRBp}},
9809
{"dsubq.",  XRC(63,514,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRAp, FRBp}},
9810
9811
{"xssubqp", XRC(63,516,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9812
{"xssubqpo",  XRC(63,516,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9813
9814
{"ddivq", XRC(63,546,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRAp, FRBp}},
9815
{"ddivq.",  XRC(63,546,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRAp, FRBp}},
9816
9817
{"xsdivqp", XRC(63,548,0),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9818
{"xsdivqpo",  XRC(63,548,1),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9819
9820
{"mffs",  XRC(63,583,0),  XRARB_MASK,  COM, PPCEFS|PPCVLE,  {FRT}},
9821
{"mffs.", XRC(63,583,1),  XRARB_MASK,  COM, PPCEFS|PPCVLE,  {FRT}},
9822
9823
{"mffsce",  XMMF(63,583,0,1), XMMF_MASK|RB_MASK, POWER9, PPCVLE,  {FRT}},
9824
{"mffscdrn",  XMMF(63,583,2,4), XMMF_MASK,         POWER9, PPCVLE,  {FRT, FRB}},
9825
{"mffscdrni", XMMF(63,583,2,5), XMMF_MASK|(3<<14), POWER9, PPCVLE,  {FRT, DRM}},
9826
{"mffscrn", XMMF(63,583,2,6), XMMF_MASK,         POWER9, PPCVLE,  {FRT, FRB}},
9827
{"mffscrni",  XMMF(63,583,2,7), XMMF_MASK|(7<<13), POWER9, PPCVLE,  {FRT, RM}},
9828
{"mffsl", XMMF(63,583,3,0), XMMF_MASK|RB_MASK, POWER9, PPCVLE,  {FRT}},
9829
9830
{"dcmpuq",  X(63,642),  X_MASK,      POWER6,  PPCVLE,   {BF, FRAp, FRBp}},
9831
9832
{"xscmpuqp",  X(63,644),  XBF_MASK,    PPCVSX3, PPCVLE,   {BF, VA, VB}},
9833
9834
{"dtstsfq", X(63,674),  X_MASK,      POWER6,  PPCVLE,   {BF, FRA, FRBp}},
9835
{"dtstsfiq",  X(63,675),  X_MASK|1<<22,POWER9,  PPCVLE,   {BF, UIM6, FRBp}},
9836
9837
{"xsmaxcqp",  X(63,676),  X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
9838
9839
{"xststdcqp", X(63,708),  X_MASK,      PPCVSX3, PPCVLE,   {BF, VB, DCMX}},
9840
9841
{"mtfsf", XFL(63,711,0),  XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE,  {FLM, FRB, XFL_L, W}},
9842
{"mtfsf", XFL(63,711,0),  XFL_MASK,    COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
9843
{"mtfsf.",  XFL(63,711,1),  XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE,  {FLM, FRB, XFL_L, W}},
9844
{"mtfsf.",  XFL(63,711,1),  XFL_MASK,    COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
9845
9846
{"xsmincqp",  X(63,740),  X_MASK,      POWER10, PPCVLE,   {VD, VA, VB}},
9847
9848
{"drdpq", XRC(63,770,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRBp}},
9849
{"drdpq.",  XRC(63,770,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRBp}},
9850
9851
{"dcffixq", XRC(63,802,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRB}},
9852
{"dcffixq.",  XRC(63,802,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRB}},
9853
9854
{"xsabsqp", XVA(63,804,0),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9855
{"xsxexpqp",  XVA(63,804,2),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9856
{"xsnabsqp",  XVA(63,804,8),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9857
{"xsnegqp", XVA(63,804,16), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9858
{"xsxsigqp",  XVA(63,804,18), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9859
{"xssqrtqp",  XVARC(63,804,27,0), XVA_MASK, PPCVSX3,  PPCVLE,   {VD, VB}},
9860
{"xssqrtqpo", XVARC(63,804,27,1), XVA_MASK, PPCVSX3,  PPCVLE,   {VD, VB}},
9861
9862
{"fctid", XRC(63,814,0),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
9863
{"fctid", XRC(63,814,0),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
9864
{"fctid.",  XRC(63,814,1),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
9865
{"fctid.",  XRC(63,814,1),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
9866
9867
{"fctidz",  XRC(63,815,0),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
9868
{"fctidz",  XRC(63,815,0),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
9869
{"fctidz.", XRC(63,815,1),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
9870
{"fctidz.", XRC(63,815,1),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
9871
9872
{"denbcdq", XRC(63,834,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {S, FRTp, FRBp}},
9873
{"denbcdq.",  XRC(63,834,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {S, FRTp, FRBp}},
9874
9875
{"xscvqpuqz", XVA(63,836,0),  XVA_MASK,    POWER10, PPCVLE,   {VD, VB}},
9876
{"xscvqpuwz", XVA(63,836,1),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9877
{"xscvudqp",  XVA(63,836,2),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9878
{"xscvuqqp",  XVA(63,836,3),  XVA_MASK,    POWER10, PPCVLE,   {VD, VB}},
9879
{"xscvqpsqz", XVA(63,836,8),  XVA_MASK,    POWER10, PPCVLE,   {VD, VB}},
9880
{"xscvqpswz", XVA(63,836,9),  XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9881
{"xscvsdqp",  XVA(63,836,10), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9882
{"xscvsqqp",  XVA(63,836,11), XVA_MASK,    POWER10, PPCVLE,   {VD, VB}},
9883
{"xscvqpudz", XVA(63,836,17), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9884
{"xscvqpdp",  XVARC(63,836,20,0), XVA_MASK, PPCVSX3,  PPCVLE,   {VD, VB}},
9885
{"xscvqpdpo", XVARC(63,836,20,1), XVA_MASK, PPCVSX3,  PPCVLE,   {VD, VB}},
9886
{"xscvdpqp",  XVA(63,836,22), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9887
{"xscvqpsdz", XVA(63,836,25), XVA_MASK,    PPCVSX3, PPCVLE,   {VD, VB}},
9888
9889
{"fmrgow",  X(63,838),  X_MASK,      PPCVSX2, PPCVLE,   {FRT, FRA, FRB}},
9890
9891
{"fcfid", XRC(63,846,0),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
9892
{"fcfid", XRC(63,846,0),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
9893
{"fcfid.",  XRC(63,846,1),  XRA_MASK,    PPC64, PPCVLE,   {FRT, FRB}},
9894
{"fcfid.",  XRC(63,846,1),  XRA_MASK,    PPC476,  PPCVLE,   {FRT, FRB}},
9895
9896
{"diexq", XRC(63,866,0), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRA, FRBp}},
9897
{"diexq.",  XRC(63,866,1), X_MASK|Q_MASK, POWER6, PPCVLE,   {FRTp, FRA, FRBp}},
9898
9899
{"xsiexpqp",  X(63,868),  X_MASK,      PPCVSX3, PPCVLE,   {VD, VA, VB}},
9900
9901
{"fctidu",  XRC(63,942,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9902
{"fctidu.", XRC(63,942,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9903
9904
{"fctiduz", XRC(63,943,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9905
{"fctiduz.",  XRC(63,943,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9906
9907
{"fmrgew",  X(63,966),  X_MASK,      PPCVSX2, PPCVLE,   {FRT, FRA, FRB}},
9908
9909
{"fcfidu",  XRC(63,974,0),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9910
{"fcfidu.", XRC(63,974,1),  XRA_MASK, POWER7|PPCA2, PPCVLE,   {FRT, FRB}},
9911
9912
{"dcffixqq",  XVA(63,994,0),  XVA_MASK,    POWER10, PPCVLE,   {FRTp, VB}},
9913
{"dctfixqq",  XVA(63,994,1),  XVA_MASK,    POWER10, PPCVLE,   {VD, FRBp}},
9914
};
9915
9916
const unsigned int powerpc_num_opcodes = ARRAY_SIZE (powerpc_opcodes);
9917

9918
/* The opcode table for 8-byte prefix instructions.
9919
9920
   The format of this opcode table is the same as the main opcode table.  */
9921
9922
const struct powerpc_opcode prefix_opcodes[] = {
9923
{"pnop",    PMRR,          PREFIX_MASK, POWER10, 0, {0}},
9924
{"pli",     PMLS|OP(14),         P_DRAPCREL_MASK, POWER10, EXT, {RT, SI34}},
9925
{"pla",     PMLS|OP(14),         P_D_MASK,  POWER10, EXT, {RT, D34, PRA0, PCREL1}},
9926
{"paddi",   PMLS|OP(14),         P_D_MASK,  POWER10, 0, {RT, RA0, SI34, PCREL}},
9927
{"psubi",   PMLS|OP(14),         P_D_MASK,  POWER10, EXT, {RT, RA0, NSI34, PCREL}},
9928
{"plis",    PMLS|OP(15),         P_DRAPCREL_SI32_MASK,  FUTURE,  EXT, {RT, SI32}},
9929
{"paddis",    PMLS|OP(15),         P_D_SI32_MASK,   FUTURE,  0, {RT, RA0, SI32, PCREL}},
9930
{"psubis",    PMLS|OP(15),         P_D_SI32_MASK,   FUTURE,  EXT, {RT, RA0, NSI32, PCREL}},
9931
{"xxsplti32dx",   P8RR|VSOP(32,0),     P_VSI_MASK,  POWER10, 0, {XTS, IX, IMM32}},
9932
{"xxspltidp",   P8RR|VSOP(32,2),     P_VS_MASK, POWER10, 0, {XTS, IMM32}},
9933
{"xxspltiw",    P8RR|VSOP(32,3),     P_VS_MASK, POWER10, 0, {XTS, IMM32}},
9934
{"plwz",    PMLS|OP(32),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
9935
{"xxblendvb",   P8RR|XX4(33,0),      P_XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6}},
9936
{"xxblendvh",   P8RR|XX4(33,1),      P_XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6}},
9937
{"xxblendvw",   P8RR|XX4(33,2),      P_XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6}},
9938
{"xxblendvd",   P8RR|XX4(33,3),      P_XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6}},
9939
{"xxpermx",   P8RR|XX4(34,0),      P_UXX4_MASK, POWER10, 0, {XT6, XA6, XB6, XC6, UIM3}},
9940
{"xxeval",    P8RR|XX4(34,1),      P_U8XX4_MASK,  POWER10, 0, {XT6, XA6, XB6, XC6, UIM8}},
9941
{"plbz",    PMLS|OP(34),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
9942
{"pstw",    PMLS|OP(36),         P_D_MASK,  POWER10, 0, {RS, D34, PRA0, PCREL}},
9943
{"pstb",    PMLS|OP(38),         P_D_MASK,  POWER10, 0, {RS, D34, PRA0, PCREL}},
9944
{"plhz",    PMLS|OP(40),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
9945
{"plwa",    P8LS|OP(41),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
9946
{"plxsd",   P8LS|OP(42),         P_D_MASK,  POWER10, 0, {VD, D34, PRA0, PCREL}},
9947
{"plha",    PMLS|OP(42),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
9948
{"plxssp",    P8LS|OP(43),         P_D_MASK,  POWER10, 0, {VD, D34, PRA0, PCREL}},
9949
{"psth",    PMLS|OP(44),         P_D_MASK,  POWER10, 0, {RS, D34, PRA0, PCREL}},
9950
{"pstxsd",    P8LS|OP(46),         P_D_MASK,  POWER10, 0, {VS, D34, PRA0, PCREL}},
9951
{"pstxssp",   P8LS|OP(47),         P_D_MASK,  POWER10, 0, {VS, D34, PRA0, PCREL}},
9952
{"plfs",    PMLS|OP(48),         P_D_MASK,  POWER10, 0, {FRT, D34, PRA0, PCREL}},
9953
{"plxv",    P8LS|OP(50),         P_D_MASK&~OP(1), POWER10, 0, {XTOP, D34, PRA0, PCREL}},
9954
{"plfd",    PMLS|OP(50),         P_D_MASK,  POWER10, 0, {FRT, D34, PRA0, PCREL}},
9955
{"pstfs",   PMLS|OP(52),         P_D_MASK,  POWER10, 0, {FRS, D34, PRA0, PCREL}},
9956
{"pstxv",   P8LS|OP(54),         P_D_MASK&~OP(1), POWER10, 0, {XTOP, D34, PRA0, PCREL}},
9957
{"pstfd",   PMLS|OP(54),         P_D_MASK,  POWER10, 0, {FRS, D34, PRA0, PCREL}},
9958
{"plq",     P8LS|OP(56),         P_D_MASK,  POWER10, 0, {RTQ, D34, PRAQ, PCREL}},
9959
{"pld",     P8LS|OP(57),         P_D_MASK,  POWER10, 0, {RT, D34, PRA0, PCREL}},
9960
{"plxvp",   P8LS|OP(58),         P_D_MASK,  POWER10, 0, {XTP, D34, PRA0, PCREL}},
9961
{"pmdmxvi8ger4pp",PMMIRR|XX3(59,2),    P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
9962
{"pmxvi8ger4pp",  PMMIRR|XX3(59,2),    P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
9963
{"pmdmxvi8ger4",  PMMIRR|XX3(59,3),    P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
9964
{"pmxvi8ger4",    PMMIRR|XX3(59,3),    P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
9965
{"pmdmxvi8gerx4pp",PMMIRR|XX3(59,10),  P_GERX4_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK4}},
9966
{"pmdmxvi8gerx4", PMMIRR|XX3(59,11),   P_GERX4_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK4}},
9967
{"pmdmxvf16ger2pp",PMMIRR|XX3(59,18),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9968
{"pmxvf16ger2pp", PMMIRR|XX3(59,18),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9969
{"pmdmxvf16ger2", PMMIRR|XX3(59,19),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9970
{"pmxvf16ger2",   PMMIRR|XX3(59,19),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9971
{"pmdmxvf32gerpp",PMMIRR|XX3(59,26),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9972
{"pmxvf32gerpp",  PMMIRR|XX3(59,26),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9973
{"pmdmxvf32ger",  PMMIRR|XX3(59,27),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9974
{"pmxvf32ger",    PMMIRR|XX3(59,27),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
9975
{"pmdmxvi4ger8pp",PMMIRR|XX3(59,34),   P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
9976
{"pmxvi4ger8pp",  PMMIRR|XX3(59,34),   P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
9977
{"pmdmxvi4ger8",  PMMIRR|XX3(59,35),   P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
9978
{"pmxvi4ger8",    PMMIRR|XX3(59,35),   P_GER8_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK8}},
9979
{"pmdmxvi16ger2spp",PMMIRR|XX3(59,42), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9980
{"pmxvi16ger2spp",PMMIRR|XX3(59,42),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9981
{"pmdmxvi16ger2s",PMMIRR|XX3(59,43),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9982
{"pmxvi16ger2s",  PMMIRR|XX3(59,43),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9983
{"pmdmxvbf16ger2pp",PMMIRR|XX3(59,50), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9984
{"pmxvbf16ger2pp",PMMIRR|XX3(59,50),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9985
{"pmdmxvbf16ger2",PMMIRR|XX3(59,51),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9986
{"pmxvbf16ger2",  PMMIRR|XX3(59,51),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9987
{"pmdmxvf64gerpp",PMMIRR|XX3(59,58),   P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9988
{"pmxvf64gerpp",  PMMIRR|XX3(59,58),   P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9989
{"pmdmxvf64ger",  PMMIRR|XX3(59,59),   P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9990
{"pmxvf64ger",    PMMIRR|XX3(59,59),   P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
9991
{"pmdmxvf16gerx2pp",PMMIRR|XX3(59,66), P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
9992
{"pmdmxvf16gerx2",PMMIRR|XX3(59,67),   P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
9993
{"pmdmxvbf16gerx2pp",PMMIRR|XX3(59,74),P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
9994
{"pmdmxvi16ger2", PMMIRR|XX3(59,75),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9995
{"pmxvi16ger2",   PMMIRR|XX3(59,75),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9996
{"pmdmxvf16ger2np",PMMIRR|XX3(59,82),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9997
{"pmxvf16ger2np", PMMIRR|XX3(59,82),   P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
9998
{"pmdmxvf16gerx2np",PMMIRR|XX3(59,83), P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
9999
{"pmdmxvf32gernp",PMMIRR|XX3(59,90),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10000
{"pmxvf32gernp",  PMMIRR|XX3(59,90),   P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10001
{"pmdmxvbf16gerx2",PMMIRR|XX3(59,91),  P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10002
{"pmdmxvi8gerx4spp",PMMIRR|XX3(59,98), P_GERX4_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK4}},
10003
{"pmdmxvi8ger4spp",PMMIRR|XX3(59,99),  P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
10004
{"pmxvi8ger4spp", PMMIRR|XX3(59,99),   P_GER4_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK4}},
10005
{"pmdmxvi16ger2pp",PMMIRR|XX3(59,107), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10006
{"pmxvi16ger2pp", PMMIRR|XX3(59,107),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10007
{"pmdmxvbf16ger2np",PMMIRR|XX3(59,114),P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10008
{"pmxvbf16ger2np",PMMIRR|XX3(59,114),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10009
{"pmdmxvbf16gerx2np",PMMIRR|XX3(59,115),P_GERX2_MASK, FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10010
{"pmdmxvf64gernp",PMMIRR|XX3(59,122),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10011
{"pmxvf64gernp",  PMMIRR|XX3(59,122),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10012
{"pmdmxvf16ger2pn",PMMIRR|XX3(59,146), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10013
{"pmxvf16ger2pn", PMMIRR|XX3(59,146),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10014
{"pmdmxvf16gerx2pn",PMMIRR|XX3(59,147),P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10015
{"pmdmxvf32gerpn",PMMIRR|XX3(59,154),  P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10016
{"pmxvf32gerpn",  PMMIRR|XX3(59,154),  P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10017
{"pmdmxvbf16ger2pn",PMMIRR|XX3(59,178),P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10018
{"pmxvbf16ger2pn",PMMIRR|XX3(59,178),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10019
{"pmdmxvbf16gerx2pn",PMMIRR|XX3(59,179),P_GERX2_MASK, FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10020
{"pmdmxvf64gerpn",PMMIRR|XX3(59,186),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10021
{"pmxvf64gerpn",  PMMIRR|XX3(59,186),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10022
{"pmdmxvf16gerx2nn",PMMIRR|XX3(59,202),P_GERX2_MASK,  FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10023
{"pmdmxvf16ger2nn",PMMIRR|XX3(59,210), P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10024
{"pmxvf16ger2nn", PMMIRR|XX3(59,210),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10025
{"pmdmxvf32gernn",PMMIRR|XX3(59,218),  P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10026
{"pmxvf32gernn",  PMMIRR|XX3(59,218),  P_GER_MASK,  POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK}},
10027
{"pmdmxvbf16gerx2nn",PMMIRR|XX3(59,234),P_GERX2_MASK, FUTURE,  0, {DMR, XA5p, XB6, XMSK8, YMSK, PMSK2}},
10028
{"pmdmxvbf16ger2nn",PMMIRR|XX3(59,242),P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10029
{"pmxvbf16ger2nn",PMMIRR|XX3(59,242),  P_GER2_MASK, POWER10, 0, {ACC, XA6a, XB6a, XMSK, YMSK, PMSK2}},
10030
{"pmdmxvf64gernn",PMMIRR|XX3(59,250),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10031
{"pmxvf64gernn",  PMMIRR|XX3(59,250),  P_GER64_MASK,  POWER10, 0, {ACC, XA6ap, XB6a, XMSK, YMSK2}},
10032
{"pstq",    P8LS|OP(60),         P_D_MASK,  POWER10, 0, {RSQ, D34, PRA0, PCREL}},
10033
{"pstd",    P8LS|OP(61),         P_D_MASK,  POWER10, 0, {RS, D34, PRA0, PCREL}},
10034
{"pstxvp",    P8LS|OP(62),         P_D_MASK,  POWER10, 0, {XSP, D34, PRA0, PCREL}},
10035
};
10036
10037
const unsigned int prefix_num_opcodes = ARRAY_SIZE (prefix_opcodes);
10038

10039
/* The VLE opcode table.
10040
10041
   The format of this opcode table is the same as the main opcode table.  */
10042
10043
const struct powerpc_opcode vle_opcodes[] = {
10044
{"se_illegal",  C(0),   C_MASK,   PPCVLE, 0,    {}},
10045
{"se_isync",  C(1),   C_MASK,   PPCVLE, 0,    {}},
10046
{"se_sc", C(2),   C_MASK,   PPCVLE, 0,    {}},
10047
{"se_blr",  C_LK(2,0),  C_LK_MASK,  PPCVLE, 0,    {}},
10048
{"se_blrl", C_LK(2,1),  C_LK_MASK,  PPCVLE, 0,    {}},
10049
{"se_bctr", C_LK(3,0),  C_LK_MASK,  PPCVLE, 0,    {}},
10050
{"se_bctrl",  C_LK(3,1),  C_LK_MASK,  PPCVLE, 0,    {}},
10051
{"se_rfi",  C(8),   C_MASK,   PPCVLE, 0,    {}},
10052
{"se_rfci", C(9),   C_MASK,   PPCVLE, 0,    {}},
10053
{"se_rfdi", C(10),    C_MASK,   PPCVLE, 0,    {}},
10054
/* PPCRFMCI in the following does not enable the instruction for any
10055
   PPC_OPCODE_RFMCI supporting cpu as vle_opcodes are all added to the
10056
   assembler hash table or searched by the disassembler under control
10057
   of PPC_OPCODE_VLE.  It's there to set apuinfo.  */
10058
{"se_rfmci",  C(11),    C_MASK, PPCRFMCI|PPCVLE, 0,   {}},
10059
{"se_rfgi", C(12),    C_MASK,   PPCVLE, 0,    {}},
10060
{"se_not",  SE_R(0,2),  SE_R_MASK,  PPCVLE, 0,    {RX}},
10061
{"se_neg",  SE_R(0,3),  SE_R_MASK,  PPCVLE, 0,    {RX}},
10062
{"se_mflr", SE_R(0,8),  SE_R_MASK,  PPCVLE, 0,    {RX}},
10063
{"se_mtlr", SE_R(0,9),  SE_R_MASK,  PPCVLE, 0,    {RX}},
10064
{"se_mfctr",  SE_R(0,10), SE_R_MASK,  PPCVLE, 0,    {RX}},
10065
{"se_mtctr",  SE_R(0,11), SE_R_MASK,  PPCVLE, 0,    {RX}},
10066
{"se_extzb",  SE_R(0,12), SE_R_MASK,  PPCVLE, 0,    {RX}},
10067
{"se_extsb",  SE_R(0,13), SE_R_MASK,  PPCVLE, 0,    {RX}},
10068
{"se_extzh",  SE_R(0,14), SE_R_MASK,  PPCVLE, 0,    {RX}},
10069
{"se_extsh",  SE_R(0,15), SE_R_MASK,  PPCVLE, 0,    {RX}},
10070
{"se_mr", SE_RR(0,1), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10071
{"se_mtar", SE_RR(0,2), SE_RR_MASK, PPCVLE, 0,    {ARX, RY}},
10072
{"se_mfar", SE_RR(0,3), SE_RR_MASK, PPCVLE, 0,    {RX, ARY}},
10073
{"se_add",  SE_RR(1,0), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10074
{"se_mullw",  SE_RR(1,1), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10075
{"se_sub",  SE_RR(1,2), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10076
{"se_subf", SE_RR(1,3), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10077
{"se_cmp",  SE_RR(3,0), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10078
{"se_cmpl", SE_RR(3,1), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10079
{"se_cmph", SE_RR(3,2), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10080
{"se_cmphl",  SE_RR(3,3), SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10081
10082
/* by major opcode */
10083
{"e_cmpi",  SCI8BF(6,0,21), SCI8BF_MASK,  PPCVLE, 0,    {CRD32, RA, SCLSCI8}},
10084
{"e_cmpwi", SCI8BF(6,0,21), SCI8BF_MASK,  PPCVLE, 0,    {CRD32, RA, SCLSCI8}},
10085
{"e_cmpli", SCI8BF(6,1,21), SCI8BF_MASK,  PPCVLE, 0,    {CRD32, RA, SCLSCI8}},
10086
{"e_cmplwi",  SCI8BF(6,1,21), SCI8BF_MASK,  PPCVLE, 0,    {CRD32, RA, SCLSCI8}},
10087
{"e_addi",  SCI8(6,16), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
10088
{"e_subi",  SCI8(6,16), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8N}},
10089
{"e_addi.", SCI8(6,17), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
10090
{"e_addic", SCI8(6,18), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
10091
{"e_subic", SCI8(6,18), SCI8_MASK,  PPCVLE, EXT,    {RT, RA, SCLSCI8N}},
10092
{"e_addic.",  SCI8(6,19), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
10093
{"e_subic.",  SCI8(6,19), SCI8_MASK,  PPCVLE, EXT,    {RT, RA, SCLSCI8N}},
10094
{"e_mulli", SCI8(6,20), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
10095
{"e_subfic",  SCI8(6,22), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
10096
{"e_subfic.", SCI8(6,23), SCI8_MASK,  PPCVLE, 0,    {RT, RA, SCLSCI8}},
10097
{"e_andi",  SCI8(6,24), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
10098
{"e_andi.", SCI8(6,25), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
10099
{"e_nop", SCI8(6,26), 0xffffffff, PPCVLE, EXT,    {0}},
10100
{"e_ori", SCI8(6,26), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
10101
{"e_ori.",  SCI8(6,27), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
10102
{"e_xori",  SCI8(6,28), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
10103
{"e_xori.", SCI8(6,29), SCI8_MASK,  PPCVLE, 0,    {RA, RS, SCLSCI8}},
10104
{"e_lbzu",  OPVUP(6,0), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10105
{"e_lhau",  OPVUP(6,3), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10106
{"e_lhzu",  OPVUP(6,1), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10107
{"e_lmw", OPVUP(6,8), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10108
{"e_lwzu",  OPVUP(6,2), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10109
{"e_stbu",  OPVUP(6,4), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10110
{"e_sthu",  OPVUP(6,5), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10111
{"e_stwu",  OPVUP(6,6), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10112
{"e_stmw",  OPVUP(6,9), OPVUP_MASK, PPCVLE, 0,    {RT, D8, RA0}},
10113
{"e_lmvgprw", OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10114
{"e_ldmvgprw",  OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10115
{"e_stmvgprw",  OPVUPRT(6,17,0),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10116
{"e_lmvsprw", OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10117
{"e_ldmvsprw",  OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10118
{"e_stmvsprw",  OPVUPRT(6,17,1),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10119
{"e_lmvsrrw", OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10120
{"e_ldmvsrrw",  OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10121
{"e_stmvsrrw",  OPVUPRT(6,17,4),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10122
{"e_lmvcsrrw",  OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10123
{"e_ldmvcsrrw", OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10124
{"e_stmvcsrrw", OPVUPRT(6,17,5),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10125
{"e_lmvdsrrw",  OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10126
{"e_ldmvdsrrw", OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10127
{"e_stmvdsrrw", OPVUPRT(6,17,6),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10128
{"e_lmvmcsrrw", OPVUPRT(6,16,7),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10129
{"e_stmvmcsrrw",OPVUPRT(6,17,7),OPVUPRT_MASK, PPCVLE, 0,    {D8, RA0}},
10130
{"e_add16i",  OP(7),    OP_MASK,  PPCVLE, 0,    {RT, RA, SI}},
10131
{"e_la",  OP(7),    OP_MASK,  PPCVLE, EXT,    {RT, D, RA0}},
10132
{"e_sub16i",  OP(7),    OP_MASK,  PPCVLE, EXT,    {RT, RA, NSI}},
10133
10134
{"se_addi", SE_IM5(8,0),  SE_IM5_MASK,  PPCVLE, 0,    {RX, OIMM5}},
10135
{"se_cmpli",  SE_IM5(8,1),  SE_IM5_MASK,  PPCVLE, 0,    {RX, OIMM5}},
10136
{"se_subi", SE_IM5(9,0),  SE_IM5_MASK,  PPCVLE, 0,    {RX, OIMM5}},
10137
{"se_subi.",  SE_IM5(9,1),  SE_IM5_MASK,  PPCVLE, 0,    {RX, OIMM5}},
10138
{"se_cmpi", SE_IM5(10,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10139
{"se_bmaski", SE_IM5(11,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10140
{"se_andi", SE_IM5(11,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10141
10142
{"e_lbz", OP(12),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10143
{"e_stb", OP(13),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10144
{"e_lha", OP(14),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10145
10146
{"se_srw",  SE_RR(16,0),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10147
{"se_sraw", SE_RR(16,1),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10148
{"se_slw",  SE_RR(16,2),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10149
{"se_nop",  SE_RR(17,0),  0xffff,   PPCVLE, EXT,    {0}},
10150
{"se_or", SE_RR(17,0),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10151
{"se_andc", SE_RR(17,1),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10152
{"se_and",  SE_RR(17,2),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10153
{"se_and.", SE_RR(17,3),  SE_RR_MASK, PPCVLE, 0,    {RX, RY}},
10154
{"se_li", IM7(9),   IM7_MASK, PPCVLE, 0,    {RX, UI7}},
10155
10156
{"e_lwz", OP(20),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10157
{"e_stw", OP(21),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10158
{"e_lhz", OP(22),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10159
{"e_sth", OP(23),   OP_MASK,  PPCVLE, 0,    {RT, D, RA0}},
10160
10161
{"se_bclri",  SE_IM5(24,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10162
{"se_bgeni",  SE_IM5(24,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10163
{"se_bseti",  SE_IM5(25,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10164
{"se_btsti",  SE_IM5(25,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10165
{"se_srwi", SE_IM5(26,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10166
{"se_srawi",  SE_IM5(26,1), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10167
{"se_slwi", SE_IM5(27,0), SE_IM5_MASK,  PPCVLE, 0,    {RX, UI5}},
10168
10169
{"e_lis", I16L(28,28),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10170
{"e_and2is.", I16L(28,29),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10171
{"e_or2is", I16L(28,26),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10172
{"e_and2i.",  I16L(28,25),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10173
{"e_or2i",  I16L(28,24),  I16L_MASK,  PPCVLE, 0,    {RD, VLEUIMML}},
10174
{"e_cmphl16i",  IA16(28,23),  IA16_MASK,  PPCVLE, 0,    {RA, VLEUIMM}},
10175
{"e_cmph16i", IA16(28,22),  IA16_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10176
{"e_cmpl16i", I16A(28,21),  I16A_MASK,  PPCVLE, 0,    {RA, VLEUIMM}},
10177
{"e_mull2i",  I16A(28,20),  I16A_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10178
{"e_cmp16i",  IA16(28,19),  IA16_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10179
{"e_sub2is",  I16A(28,18),  I16A_MASK,  PPCVLE, EXT,    {RA, VLENSIMM}},
10180
{"e_add2is",  I16A(28,18),  I16A_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10181
{"e_sub2i.",  I16A(28,17),  I16A_MASK,  PPCVLE, EXT,    {RA, VLENSIMM}},
10182
{"e_add2i.",  I16A(28,17),  I16A_MASK,  PPCVLE, 0,    {RA, VLESIMM}},
10183
{"e_li",  LI20(28,0), LI20_MASK,  PPCVLE, 0,    {RT, IMM20}},
10184
{"e_rlwimi",  M(29,0),  M_MASK,   PPCVLE, 0,    {RA, RS, SH, MB, ME}},
10185
{"e_inslwi",  M(29,0),  M_MASK,   PPCVLE, EXT,    {RA, RS, ILWn, ILWb}},
10186
{"e_insrwi",  M(29,0),  M_MASK,   PPCVLE, EXT,    {RA, RS, IRWn, IRWb}},
10187
{"e_rotlwi",  MME(29,31,1), MMBME_MASK, PPCVLE, EXT,    {RA, RS, SH}},
10188
{"e_rotrwi",  MME(29,31,1), MMBME_MASK, PPCVLE, EXT,    {RA, RS, RRWn}},
10189
{"e_clrlwi",  MME(29,31,1), MSHME_MASK, PPCVLE, EXT,    {RA, RS, MB}},
10190
{"e_clrrwi",  M(29,1),  MSHMB_MASK, PPCVLE, EXT,    {RA, RS, CRWn}},
10191
{"e_rlwinm",  M(29,1),  M_MASK,   PPCVLE, 0,    {RA, RS, SH, MBE, ME}},
10192
{"e_extlwi",  M(29,1),  MMB_MASK, PPCVLE, EXT,    {RA, RS, ELWn, SH}},
10193
{"e_extrwi",  MME(29,31,1), MME_MASK, PPCVLE, EXT,    {RA, RS, ERWn, ERWb}},
10194
{"e_clrlslwi",  M(29,1),  M_MASK,   PPCVLE, EXT,    {RA, RS, CSLWb, CSLWn}},
10195
{"e_b",   BD24(30,0,0), BD24_MASK,  PPCVLE, 0,    {B24}},
10196
{"e_bl",  BD24(30,0,1), BD24_MASK,  PPCVLE, 0,    {B24}},
10197
{"e_bdnz",  EBD15(30,8,BO32DNZ,0),  EBD15_MASK, PPCVLE, EXT,  {B15}},
10198
{"e_bdnzl", EBD15(30,8,BO32DNZ,1),  EBD15_MASK, PPCVLE, EXT,  {B15}},
10199
{"e_bdz", EBD15(30,8,BO32DZ,0), EBD15_MASK, PPCVLE, EXT,  {B15}},
10200
{"e_bdzl",  EBD15(30,8,BO32DZ,1), EBD15_MASK, PPCVLE, EXT,  {B15}},
10201
{"e_bge", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10202
{"e_bgel",  EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10203
{"e_bnl", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10204
{"e_bnll",  EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10205
{"e_blt", EBD15BI(30,8,BO32T,CBLT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10206
{"e_bltl",  EBD15BI(30,8,BO32T,CBLT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10207
{"e_bgt", EBD15BI(30,8,BO32T,CBGT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10208
{"e_bgtl",  EBD15BI(30,8,BO32T,CBGT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10209
{"e_ble", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10210
{"e_blel",  EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10211
{"e_bng", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10212
{"e_bngl",  EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10213
{"e_bne", EBD15BI(30,8,BO32F,CBEQ,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10214
{"e_bnel",  EBD15BI(30,8,BO32F,CBEQ,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10215
{"e_beq", EBD15BI(30,8,BO32T,CBEQ,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10216
{"e_beql",  EBD15BI(30,8,BO32T,CBEQ,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10217
{"e_bso", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10218
{"e_bsol",  EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10219
{"e_bun", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10220
{"e_bunl",  EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10221
{"e_bns", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10222
{"e_bnsl",  EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10223
{"e_bnu", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10224
{"e_bnul",  EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, EXT,  {CRS,B15}},
10225
{"e_bc",  BD15(30,8,0), BD15_MASK,  PPCVLE, 0,    {BO32, BI32, B15}},
10226
{"e_bcl", BD15(30,8,1), BD15_MASK,  PPCVLE, 0,    {BO32, BI32, B15}},
10227
10228
{"e_bf",  EBD15(30,8,BO32F,0), EBD15_MASK, PPCVLE, EXT,   {BI32,B15}},
10229
{"e_bfl", EBD15(30,8,BO32F,1), EBD15_MASK, PPCVLE, EXT,   {BI32,B15}},
10230
{"e_bt",  EBD15(30,8,BO32T,0), EBD15_MASK, PPCVLE, EXT,   {BI32,B15}},
10231
{"e_btl", EBD15(30,8,BO32T,1), EBD15_MASK, PPCVLE, EXT,   {BI32,B15}},
10232
10233
{"e_cmph",  X(31,14), X_MASK,   PPCVLE, 0,    {CRD, RA, RB}},
10234
{"e_sc",  X(31,36), XRTRA_MASK, PPCVLE, 0,    {ELEV}},
10235
{"e_cmphl", X(31,46), X_MASK,   PPCVLE, 0,    {CRD, RA, RB}},
10236
{"e_crandc",  XL(31,129), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10237
{"e_crnand",  XL(31,225), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10238
{"e_crnot", XL(31,33),  XL_MASK,  PPCVLE, EXT,    {BT, BAB}},
10239
{"e_crnor", XL(31,33),  XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10240
{"e_crclr", XL(31,193), XL_MASK,  PPCVLE, EXT,    {BTAB}},
10241
{"e_crxor", XL(31,193), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10242
{"e_mcrf",  XL(31,16),  XL_MASK,  PPCVLE, 0,    {CRD, CR}},
10243
{"e_slwi",  EX(31,112), EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10244
{"e_slwi.", EX(31,113), EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10245
10246
{"e_crand", XL(31,257), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10247
10248
{"e_rlw", EX(31,560), EX_MASK,  PPCVLE, 0,    {RA, RS, RB}},
10249
{"e_rlw.",  EX(31,561), EX_MASK,  PPCVLE, 0,    {RA, RS, RB}},
10250
10251
{"e_crset", XL(31,289), XL_MASK,  PPCVLE, EXT,    {BTAB}},
10252
{"e_creqv", XL(31,289), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10253
10254
{"e_rlwi",  EX(31,624), EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10255
{"e_rlwi.", EX(31,625), EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10256
10257
{"e_crorc", XL(31,417), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10258
10259
{"e_crmove",  XL(31,449), XL_MASK,  PPCVLE, EXT,    {BT, BAB}},
10260
{"e_cror",  XL(31,449), XL_MASK,  PPCVLE, 0,    {BT, BA, BB}},
10261
10262
{"mtmas1",  XSPR(31,467,625), XSPR_MASK,  PPCVLE, EXT,    {RS}},
10263
10264
{"e_srwi",  EX(31,1136),  EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10265
{"e_srwi.", EX(31,1137),  EX_MASK,  PPCVLE, 0,    {RA, RS, SH}},
10266
10267
{"se_lbz",  SD4(8),   SD4_MASK, PPCVLE, 0,    {RZ, SE_SD, RX}},
10268
10269
{"se_stb",  SD4(9),   SD4_MASK, PPCVLE, 0,    {RZ, SE_SD, RX}},
10270
10271
{"se_lhz",  SD4(10),  SD4_MASK, PPCVLE, 0,    {RZ, SE_SDH, RX}},
10272
10273
{"se_sth",  SD4(11),  SD4_MASK, PPCVLE, 0,    {RZ, SE_SDH, RX}},
10274
10275
{"se_lwz",  SD4(12),  SD4_MASK, PPCVLE, 0,    {RZ, SE_SDW, RX}},
10276
10277
{"se_stw",  SD4(13),  SD4_MASK, PPCVLE, 0,    {RZ, SE_SDW, RX}},
10278
10279
{"se_bge",  EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10280
{"se_bnl",  EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10281
{"se_ble",  EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10282
{"se_bng",  EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10283
{"se_bne",  EBD8IO(28,0,2), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10284
{"se_bns",  EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10285
{"se_bnu",  EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10286
{"se_bf", EBD8IO(28,0,0), EBD8IO2_MASK, PPCVLE, EXT,    {BI16, B8}},
10287
{"se_blt",  EBD8IO(28,1,0), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10288
{"se_bgt",  EBD8IO(28,1,1), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10289
{"se_beq",  EBD8IO(28,1,2), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10290
{"se_bso",  EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10291
{"se_bun",  EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, EXT,    {B8}},
10292
{"se_bt", EBD8IO(28,1,0), EBD8IO2_MASK, PPCVLE, EXT,    {BI16, B8}},
10293
{"se_bc", BD8IO(28),  BD8IO_MASK, PPCVLE, 0,    {BO16, BI16, B8}},
10294
{"se_b",  BD8(58,0,0),  BD8_MASK, PPCVLE, 0,    {B8}},
10295
{"se_bl", BD8(58,0,1),  BD8_MASK, PPCVLE, 0,    {B8}},
10296
};
10297
10298
const unsigned int vle_num_opcodes = ARRAY_SIZE (vle_opcodes);
10299
10300
const struct powerpc_opcode lsp_opcodes[] = {
10301
{"zvaddih",       VX(4, 0x200), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM}},
10302
{"zvsubifh",        VX(4, 0x201), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM}},
10303
{"zvaddh",        VX(4, 0x204), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10304
{"zvsubfh",       VX(4, 0x205), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10305
{"zvaddsubfh",        VX(4, 0x206), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10306
{"zvsubfaddh",        VX(4, 0x207), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10307
{"zvaddhx",       VX(4, 0x20C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10308
{"zvsubfhx",        VX(4, 0x20D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10309
{"zvaddsubfhx",       VX(4, 0x20E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10310
{"zvsubfaddhx",       VX(4, 0x20F), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10311
{"zaddwus",       VX(4, 0x210), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10312
{"zsubfwus",        VX(4, 0x211), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10313
{"zaddwss",       VX(4, 0x212), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10314
{"zsubfwss",        VX(4, 0x213), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10315
{"zvaddhus",        VX(4, 0x214), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10316
{"zvsubfhus",       VX(4, 0x215), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10317
{"zvaddhss",        VX(4, 0x216), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10318
{"zvsubfhss",       VX(4, 0x217), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10319
{"zvaddsubfhss",      VX(4, 0x21A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10320
{"zvsubfaddhss",      VX(4, 0x21B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10321
{"zvaddhxss",       VX(4, 0x21C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10322
{"zvsubfhxss",        VX(4, 0x21D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10323
{"zvaddsubfhxss",     VX(4, 0x21E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10324
{"zvsubfaddhxss",     VX(4, 0x21F), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10325
{"zaddheuw",        VX(4, 0x220), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10326
{"zsubfheuw",       VX(4, 0x221), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10327
{"zaddhesw",        VX(4, 0x222), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10328
{"zsubfhesw",       VX(4, 0x223), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10329
{"zaddhouw",        VX(4, 0x224), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10330
{"zsubfhouw",       VX(4, 0x225), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10331
{"zaddhosw",        VX(4, 0x226), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10332
{"zsubfhosw",       VX(4, 0x227), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10333
{"zvmergehih",        VX(4, 0x22C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10334
{"zvmergeloh",        VX(4, 0x22D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10335
{"zvmergehiloh",      VX(4, 0x22E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10336
{"zvmergelohih",      VX(4, 0x22F), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10337
{"zvcmpgthu",       VX(4, 0x230), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10338
{"zvcmpgths",       VX(4, 0x230), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10339
{"zvcmplthu",       VX(4, 0x231), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10340
{"zvcmplths",       VX(4, 0x231), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10341
{"zvcmpeqh",        VX(4, 0x232), VX_MASK,  PPCLSP, 0,    {CRFD, RA, RB}},
10342
{"zpkswgshfrs",       VX(4, 0x238), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10343
{"zpkswgswfrs",       VX(4, 0x239), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10344
{"zvpkshgwshfrs",     VX(4, 0x23A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10345
{"zvpkswshfrs",       VX(4, 0x23B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10346
{"zvpkswuhs",       VX(4, 0x23C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10347
{"zvpkswshs",       VX(4, 0x23D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10348
{"zvpkuwuhs",       VX(4, 0x23E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10349
{"zvsplatih",       VX_LSP(4, 0x23F), VX_LSP_MASK, PPCLSP, 0,   {RD, SIMM}},
10350
{"zvsplatfih",        VX_LSP(4, 0xA3F), VX_LSP_MASK, PPCLSP, 0,   {RD, SIMM}},
10351
{"zcntlsw",       VX_LSP(4, 0x2A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10352
{"zvcntlzh",        VX_LSP(4, 0x323F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10353
{"zvcntlsh",        VX_LSP(4, 0x3A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10354
{"znegws",        VX_LSP(4, 0x4A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10355
{"zvnegh",        VX_LSP(4, 0x523F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10356
{"zvneghs",       VX_LSP(4, 0x5A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10357
{"zvnegho",       VX_LSP(4, 0x623F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10358
{"zvneghos",        VX_LSP(4, 0x6A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10359
{"zrndwh",        VX_LSP(4, 0x823F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10360
{"zrndwhss",        VX_LSP(4, 0x8A3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10361
{"zvabsh",        VX_LSP(4, 0xA23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10362
{"zvabshs",       VX_LSP(4, 0xAA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10363
{"zabsw",       VX_LSP(4, 0xB23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10364
{"zabsws",        VX_LSP(4, 0xBA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10365
{"zsatswuw",        VX_LSP(4, 0xC23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10366
{"zsatuwsw",        VX_LSP(4, 0xCA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10367
{"zsatswuh",        VX_LSP(4, 0xD23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10368
{"zsatswsh",        VX_LSP(4, 0xDA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10369
{"zvsatshuh",       VX_LSP(4, 0xE23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10370
{"zvsatuhsh",       VX_LSP(4, 0xEA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10371
{"zsatuwuh",        VX_LSP(4, 0xF23F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10372
{"zsatuwsh",        VX_LSP(4, 0xFA3F), VX_LSP_MASK, PPCLSP, 0,  {RD, RA}},
10373
{"zsatsduw",        VX(4, 0x260), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10374
{"zsatsdsw",        VX(4, 0x261), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10375
{"zsatuduw",        VX(4, 0x262), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10376
{"zvselh",        VX(4, 0x264), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10377
{"zxtrw",       VX(4, 0x264), VX_LSP_OFF_MASK, PPCLSP, 0,   {RD, RA, RB, VX_OFF}},
10378
{"zbrminc",       VX(4, 0x268), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10379
{"zcircinc",        VX(4, 0x269), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10380
{"zdivwsf",       VX(4, 0x26B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10381
{"zvsrhu",        VX(4, 0x270), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10382
{"zvsrhs",        VX(4, 0x271), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10383
{"zvsrhiu",       VX(4, 0x272), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10384
{"zvsrhis",       VX(4, 0x273), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10385
{"zvslh",       VX(4, 0x274), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10386
{"zvrlh",       VX(4, 0x275), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10387
{"zvslhi",        VX(4, 0x276), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10388
{"zvrlhi",        VX(4, 0x277), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10389
{"zvslhus",       VX(4, 0x278), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10390
{"zvslhss",       VX(4, 0x279), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10391
{"zvslhius",        VX(4, 0x27A), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10392
{"zvslhiss",        VX(4, 0x27B), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM_LT16}},
10393
{"zslwus",        VX(4, 0x27C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10394
{"zslwss",        VX(4, 0x27D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10395
{"zslwius",       VX(4, 0x27E), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM}},
10396
{"zslwiss",       VX(4, 0x27F), VX_MASK,  PPCLSP, 0,    {RD, RA, EVUIMM}},
10397
{"zlddx",       VX(4, 0x300), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10398
{"zldd",        VX(4, 0x301), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8, RA}},
10399
{"zldwx",       VX(4, 0x302), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10400
{"zldw",        VX(4, 0x303), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8, RA}},
10401
{"zldhx",       VX(4, 0x304), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10402
{"zldh",        VX(4, 0x305), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8, RA}},
10403
{"zlwgsfdx",        VX(4, 0x308), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10404
{"zlwgsfd",       VX(4, 0x309), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10405
{"zlwwosdx",        VX(4, 0x30A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10406
{"zlwwosd",       VX(4, 0x30B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10407
{"zlwhsplatwdx",      VX(4, 0x30C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10408
{"zlwhsplatwd",       VX(4, 0x30D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10409
{"zlwhsplatdx",       VX(4, 0x30E), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10410
{"zlwhsplatd",        VX(4, 0x30F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10411
{"zlwhgwsfdx",        VX(4, 0x310), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10412
{"zlwhgwsfd",       VX(4, 0x311), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10413
{"zlwhedx",       VX(4, 0x312), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10414
{"zlwhed",        VX(4, 0x313), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10415
{"zlwhosdx",        VX(4, 0x314), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10416
{"zlwhosd",       VX(4, 0x315), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10417
{"zlwhoudx",        VX(4, 0x316), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10418
{"zlwhoud",       VX(4, 0x317), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4, RA}},
10419
{"zlwhx",       VX(4, 0x318), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10420
{"zlwh",        VX(4, 0x319), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_4, RA}},
10421
{"zlwwx",       VX(4, 0x31A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10422
{"zlww",        VX(4, 0x31B), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_4, RA}},
10423
{"zlhgwsfx",        VX(4, 0x31C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10424
{"zlhgwsf",       VX(4, 0x31D), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10425
{"zlhhsplatx",        VX(4, 0x31E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10426
{"zlhhsplat",       VX(4, 0x31F), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10427
{"zstddx",        VX(4, 0x320), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10428
{"zstdd",       VX(4, 0x321), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8, RA}},
10429
{"zstdwx",        VX(4, 0x322), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10430
{"zstdw",       VX(4, 0x323), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8, RA}},
10431
{"zstdhx",        VX(4, 0x324), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10432
{"zstdh",       VX(4, 0x325), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8, RA}},
10433
{"zstwhedx",        VX(4, 0x328), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10434
{"zstwhed",       VX(4, 0x329), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_4, RA}},
10435
{"zstwhodx",        VX(4, 0x32A), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10436
{"zstwhod",       VX(4, 0x32B), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_4, RA}},
10437
{"zlhhex",        VX(4, 0x330), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10438
{"zlhhe",       VX(4, 0x331), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10439
{"zlhhosx",       VX(4, 0x332), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10440
{"zlhhos",        VX(4, 0x333), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10441
{"zlhhoux",       VX(4, 0x334), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10442
{"zlhhou",        VX(4, 0x335), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2, RA}},
10443
{"zsthex",        VX(4, 0x338), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10444
{"zsthe",       VX(4, 0x339), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_2, RA}},
10445
{"zsthox",        VX(4, 0x33A), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10446
{"zstho",       VX(4, 0x33B), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_2, RA}},
10447
{"zstwhx",        VX(4, 0x33C), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10448
{"zstwh",       VX(4, 0x33D), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_4, RA}},
10449
{"zstwwx",        VX(4, 0x33E), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10450
{"zstww",       VX(4, 0x33F), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_4, RA}},
10451
{"zlddmx",        VX(4, 0x340), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10452
{"zlddu",       VX(4, 0x341), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8_EX0, RA}},
10453
{"zldwmx",        VX(4, 0x342), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10454
{"zldwu",       VX(4, 0x343), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8_EX0, RA}},
10455
{"zldhmx",        VX(4, 0x344), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10456
{"zldhu",       VX(4, 0x345), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_8_EX0, RA}},
10457
{"zlwgsfdmx",       VX(4, 0x348), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10458
{"zlwgsfdu",        VX(4, 0x349), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10459
{"zlwwosdmx",       VX(4, 0x34A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10460
{"zlwwosdu",        VX(4, 0x34B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10461
{"zlwhsplatwdmx",     VX(4, 0x34C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10462
{"zlwhsplatwdu",      VX(4, 0x34D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10463
{"zlwhsplatdmx",      VX(4, 0x34E), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10464
{"zlwhsplatdu",       VX(4, 0x34F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10465
{"zlwhgwsfdmx",       VX(4, 0x350), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10466
{"zlwhgwsfdu",        VX(4, 0x351), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10467
{"zlwhedmx",        VX(4, 0x352), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10468
{"zlwhedu",       VX(4, 0x353), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10469
{"zlwhosdmx",       VX(4, 0x354), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10470
{"zlwhosdu",        VX(4, 0x355), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10471
{"zlwhoudmx",       VX(4, 0x356), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10472
{"zlwhoudu",        VX(4, 0x357), VX_MASK,  PPCLSP, 0,    {RD_EVEN, EVUIMM_4_EX0, RA}},
10473
{"zlwhmx",        VX(4, 0x358), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10474
{"zlwhu",       VX(4, 0x359), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_4_EX0, RA}},
10475
{"zlwwmx",        VX(4, 0x35A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10476
{"zlwwu",       VX(4, 0x35B), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_4_EX0, RA}},
10477
{"zlhgwsfmx",       VX(4, 0x35C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10478
{"zlhgwsfu",        VX(4, 0x35D), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10479
{"zlhhsplatmx",       VX(4, 0x35E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10480
{"zlhhsplatu",        VX(4, 0x35F), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10481
{"zstddmx",       VX(4, 0x360), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10482
{"zstddu",        VX(4, 0x361), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_8_EX0, RA}},
10483
{"zstdwmx",       VX(4, 0x362), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10484
{"zstdwu",        VX(4, 0x363), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8_EX0, RA}},
10485
{"zstdhmx",       VX(4, 0x364), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10486
{"zstdhu",        VX(4, 0x365), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_8_EX0, RA}},
10487
{"zstwhedmx",       VX(4, 0x368), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10488
{"zstwhedu",        VX(4, 0x369), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_4_EX0, RA}},
10489
{"zstwhodmx",       VX(4, 0x36A), VX_MASK,  PPCLSP, 0,    {RS_EVEN, RA, RB}},
10490
{"zstwhodu",        VX(4, 0x36B), VX_MASK,  PPCLSP, 0,    {RS_EVEN, EVUIMM_4_EX0, RA}},
10491
{"zlhhemx",       VX(4, 0x370), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10492
{"zlhheu",        VX(4, 0x371), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10493
{"zlhhosmx",        VX(4, 0x372), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10494
{"zlhhosu",       VX(4, 0x373), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10495
{"zlhhoumx",        VX(4, 0x374), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10496
{"zlhhouu",       VX(4, 0x375), VX_MASK,  PPCLSP, 0,    {RD, EVUIMM_2_EX0, RA}},
10497
{"zsthemx",       VX(4, 0x378), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10498
{"zstheu",        VX(4, 0x379), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_2_EX0, RA}},
10499
{"zsthomx",       VX(4, 0x37A), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10500
{"zsthou",        VX(4, 0x37B), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_2_EX0, RA}},
10501
{"zstwhmx",       VX(4, 0x37C), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10502
{"zstwhu",        VX(4, 0x37D), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_4_EX0, RA}},
10503
{"zstwwmx",       VX(4, 0x37E), VX_MASK,  PPCLSP, 0,    {RS, RA, RB}},
10504
{"zstwwu",        VX(4, 0x37F), VX_MASK,  PPCLSP, 0,    {RS, EVUIMM_4_EX0, RA}},
10505
{"zaddwgui",        VX(4, 0x460), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10506
{"zsubfwgui",       VX(4, 0x461), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10507
{"zaddd",       VX(4, 0x462), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10508
{"zsubfd",        VX(4, 0x463), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10509
{"zvaddsubfw",        VX(4, 0x464), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10510
{"zvsubfaddw",        VX(4, 0x465), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10511
{"zvaddw",        VX(4, 0x466), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10512
{"zvsubfw",       VX(4, 0x467), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10513
{"zaddwgsi",        VX(4, 0x468), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10514
{"zsubfwgsi",       VX(4, 0x469), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10515
{"zadddss",       VX(4, 0x46A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10516
{"zsubfdss",        VX(4, 0x46B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10517
{"zvaddsubfwss",      VX(4, 0x46C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10518
{"zvsubfaddwss",      VX(4, 0x46D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10519
{"zvaddwss",        VX(4, 0x46E), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10520
{"zvsubfwss",       VX(4, 0x46F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10521
{"zaddwgsf",        VX(4, 0x470), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10522
{"zsubfwgsf",       VX(4, 0x471), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10523
{"zadddus",       VX(4, 0x472), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10524
{"zsubfdus",        VX(4, 0x473), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10525
{"zvaddwus",        VX(4, 0x476), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10526
{"zvsubfwus",       VX(4, 0x477), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10527
{"zvunpkhgwsf",       VX_LSP(4, 0x478), VX_LSP_MASK, PPCLSP, 0,   {RD_EVEN, RA}},
10528
{"zvunpkhsf",       VX_LSP(4, 0xC78), VX_LSP_MASK, PPCLSP, 0,   {RD_EVEN, RA}},
10529
{"zvunpkhui",       VX_LSP(4, 0x1478), VX_LSP_MASK, PPCLSP, 0,  {RD_EVEN, RA}},
10530
{"zvunpkhsi",       VX_LSP(4, 0x1C78), VX_LSP_MASK, PPCLSP, 0,  {RD_EVEN, RA}},
10531
{"zunpkwgsf",       VX_LSP(4, 0x2478), VX_LSP_MASK, PPCLSP, 0,  {RD_EVEN, RA}},
10532
{"zvdotphgwasmf",     VX(4, 0x488), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10533
{"zvdotphgwasmfr",    VX(4, 0x489), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10534
{"zvdotphgwasmfaa",   VX(4, 0x48A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10535
{"zvdotphgwasmfraa",  VX(4, 0x48B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10536
{"zvdotphgwasmfan",   VX(4, 0x48C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10537
{"zvdotphgwasmfran",  VX(4, 0x48D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10538
{"zvmhulgwsmf",       VX(4, 0x490), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10539
{"zvmhulgwsmfr",      VX(4, 0x491), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10540
{"zvmhulgwsmfaa",     VX(4, 0x492), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10541
{"zvmhulgwsmfraa",    VX(4, 0x493), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10542
{"zvmhulgwsmfan",     VX(4, 0x494), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10543
{"zvmhulgwsmfran",    VX(4, 0x495), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10544
{"zvmhulgwsmfanp",    VX(4, 0x496), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10545
{"zvmhulgwsmfranp",   VX(4, 0x497), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10546
{"zmhegwsmf",       VX(4, 0x498), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10547
{"zmhegwsmfr",        VX(4, 0x499), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10548
{"zmhegwsmfaa",       VX(4, 0x49A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10549
{"zmhegwsmfraa",      VX(4, 0x49B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10550
{"zmhegwsmfan",       VX(4, 0x49C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10551
{"zmhegwsmfran",      VX(4, 0x49D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10552
{"zvdotphxgwasmf",    VX(4, 0x4A8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10553
{"zvdotphxgwasmfr",   VX(4, 0x4A9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10554
{"zvdotphxgwasmfaa",  VX(4, 0x4AA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10555
{"zvdotphxgwasmfraa", VX(4, 0x4AB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10556
{"zvdotphxgwasmfan",  VX(4, 0x4AC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10557
{"zvdotphxgwasmfran", VX(4, 0x4AD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10558
{"zvmhllgwsmf",       VX(4, 0x4B0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10559
{"zvmhllgwsmfr",      VX(4, 0x4B1), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10560
{"zvmhllgwsmfaa",     VX(4, 0x4B2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10561
{"zvmhllgwsmfraa",    VX(4, 0x4B3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10562
{"zvmhllgwsmfan",     VX(4, 0x4B4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10563
{"zvmhllgwsmfran",    VX(4, 0x4B5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10564
{"zvmhllgwsmfanp",    VX(4, 0x4B6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10565
{"zvmhllgwsmfranp",   VX(4, 0x4B7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10566
{"zmheogwsmf",        VX(4, 0x4B8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10567
{"zmheogwsmfr",       VX(4, 0x4B9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10568
{"zmheogwsmfaa",      VX(4, 0x4BA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10569
{"zmheogwsmfraa",     VX(4, 0x4BB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10570
{"zmheogwsmfan",      VX(4, 0x4BC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10571
{"zmheogwsmfran",     VX(4, 0x4BD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10572
{"zvdotphgwssmf",     VX(4, 0x4C8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10573
{"zvdotphgwssmfr",    VX(4, 0x4C9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10574
{"zvdotphgwssmfaa",   VX(4, 0x4CA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10575
{"zvdotphgwssmfraa",  VX(4, 0x4CB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10576
{"zvdotphgwssmfan",   VX(4, 0x4CC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10577
{"zvdotphgwssmfran",  VX(4, 0x4CD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10578
{"zvmhuugwsmf",       VX(4, 0x4D0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10579
{"zvmhuugwsmfr",      VX(4, 0x4D1), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10580
{"zvmhuugwsmfaa",     VX(4, 0x4D2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10581
{"zvmhuugwsmfraa",    VX(4, 0x4D3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10582
{"zvmhuugwsmfan",     VX(4, 0x4D4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10583
{"zvmhuugwsmfran",    VX(4, 0x4D5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10584
{"zvmhuugwsmfanp",    VX(4, 0x4D6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10585
{"zvmhuugwsmfranp",   VX(4, 0x4D7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10586
{"zmhogwsmf",       VX(4, 0x4D8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10587
{"zmhogwsmfr",        VX(4, 0x4D9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10588
{"zmhogwsmfaa",       VX(4, 0x4DA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10589
{"zmhogwsmfraa",      VX(4, 0x4DB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10590
{"zmhogwsmfan",       VX(4, 0x4DC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10591
{"zmhogwsmfran",      VX(4, 0x4DD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10592
{"zvmhxlgwsmf",       VX(4, 0x4F0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10593
{"zvmhxlgwsmfr",      VX(4, 0x4F1), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10594
{"zvmhxlgwsmfaa",     VX(4, 0x4F2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10595
{"zvmhxlgwsmfraa",    VX(4, 0x4F3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10596
{"zvmhxlgwsmfan",     VX(4, 0x4F4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10597
{"zvmhxlgwsmfran",    VX(4, 0x4F5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10598
{"zvmhxlgwsmfanp",    VX(4, 0x4F6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10599
{"zvmhxlgwsmfranp",   VX(4, 0x4F7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10600
{"zmhegui",       VX(4, 0x500), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10601
{"zvdotphgaui",       VX(4, 0x501), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10602
{"zmheguiaa",       VX(4, 0x502), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10603
{"zvdotphgauiaa",     VX(4, 0x503), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10604
{"zmheguian",       VX(4, 0x504), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10605
{"zvdotphgauian",     VX(4, 0x505), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10606
{"zmhegsi",       VX(4, 0x508), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10607
{"zvdotphgasi",       VX(4, 0x509), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10608
{"zmhegsiaa",       VX(4, 0x50A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10609
{"zvdotphgasiaa",     VX(4, 0x50B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10610
{"zmhegsian",       VX(4, 0x50C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10611
{"zvdotphgasian",     VX(4, 0x50D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10612
{"zmhegsui",        VX(4, 0x510), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10613
{"zvdotphgasui",      VX(4, 0x511), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10614
{"zmhegsuiaa",        VX(4, 0x512), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10615
{"zvdotphgasuiaa",    VX(4, 0x513), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10616
{"zmhegsuian",        VX(4, 0x514), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10617
{"zvdotphgasuian",    VX(4, 0x515), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10618
{"zmhegsmf",        VX(4, 0x518), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10619
{"zvdotphgasmf",      VX(4, 0x519), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10620
{"zmhegsmfaa",        VX(4, 0x51A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10621
{"zvdotphgasmfaa",    VX(4, 0x51B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10622
{"zmhegsmfan",        VX(4, 0x51C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10623
{"zvdotphgasmfan",    VX(4, 0x51D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10624
{"zmheogui",        VX(4, 0x520), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10625
{"zvdotphxgaui",      VX(4, 0x521), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10626
{"zmheoguiaa",        VX(4, 0x522), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10627
{"zvdotphxgauiaa",    VX(4, 0x523), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10628
{"zmheoguian",        VX(4, 0x524), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10629
{"zvdotphxgauian",    VX(4, 0x525), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10630
{"zmheogsi",        VX(4, 0x528), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10631
{"zvdotphxgasi",      VX(4, 0x529), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10632
{"zmheogsiaa",        VX(4, 0x52A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10633
{"zvdotphxgasiaa",    VX(4, 0x52B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10634
{"zmheogsian",        VX(4, 0x52C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10635
{"zvdotphxgasian",    VX(4, 0x52D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10636
{"zmheogsui",       VX(4, 0x530), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10637
{"zvdotphxgasui",     VX(4, 0x531), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10638
{"zmheogsuiaa",       VX(4, 0x532), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10639
{"zvdotphxgasuiaa",   VX(4, 0x533), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10640
{"zmheogsuian",       VX(4, 0x534), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10641
{"zvdotphxgasuian",   VX(4, 0x535), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10642
{"zmheogsmf",       VX(4, 0x538), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10643
{"zvdotphxgasmf",     VX(4, 0x539), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10644
{"zmheogsmfaa",       VX(4, 0x53A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10645
{"zvdotphxgasmfaa",   VX(4, 0x53B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10646
{"zmheogsmfan",       VX(4, 0x53C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10647
{"zvdotphxgasmfan",   VX(4, 0x53D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10648
{"zmhogui",       VX(4, 0x540), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10649
{"zvdotphgsui",       VX(4, 0x541), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10650
{"zmhoguiaa",       VX(4, 0x542), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10651
{"zvdotphgsuiaa",     VX(4, 0x543), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10652
{"zmhoguian",       VX(4, 0x544), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10653
{"zvdotphgsuian",     VX(4, 0x545), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10654
{"zmhogsi",       VX(4, 0x548), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10655
{"zvdotphgssi",       VX(4, 0x549), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10656
{"zmhogsiaa",       VX(4, 0x54A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10657
{"zvdotphgssiaa",     VX(4, 0x54B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10658
{"zmhogsian",       VX(4, 0x54C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10659
{"zvdotphgssian",     VX(4, 0x54D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10660
{"zmhogsui",        VX(4, 0x550), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10661
{"zvdotphgssui",      VX(4, 0x551), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10662
{"zmhogsuiaa",        VX(4, 0x552), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10663
{"zvdotphgssuiaa",    VX(4, 0x553), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10664
{"zmhogsuian",        VX(4, 0x554), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10665
{"zvdotphgssuian",    VX(4, 0x555), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10666
{"zmhogsmf",        VX(4, 0x558), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10667
{"zvdotphgssmf",      VX(4, 0x559), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10668
{"zmhogsmfaa",        VX(4, 0x55A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10669
{"zvdotphgssmfaa",    VX(4, 0x55B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10670
{"zmhogsmfan",        VX(4, 0x55C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10671
{"zvdotphgssmfan",    VX(4, 0x55D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10672
{"zmwgui",        VX(4, 0x560), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10673
{"zmwguiaa",        VX(4, 0x562), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10674
{"zmwguiaas",       VX(4, 0x563), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10675
{"zmwguian",        VX(4, 0x564), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10676
{"zmwguians",       VX(4, 0x565), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10677
{"zmwgsi",        VX(4, 0x568), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10678
{"zmwgsiaa",        VX(4, 0x56A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10679
{"zmwgsiaas",       VX(4, 0x56B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10680
{"zmwgsian",        VX(4, 0x56C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10681
{"zmwgsians",       VX(4, 0x56D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10682
{"zmwgsui",       VX(4, 0x570), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10683
{"zmwgsuiaa",       VX(4, 0x572), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10684
{"zmwgsuiaas",        VX(4, 0x573), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10685
{"zmwgsuian",       VX(4, 0x574), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10686
{"zmwgsuians",        VX(4, 0x575), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10687
{"zmwgsmf",       VX(4, 0x578), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10688
{"zmwgsmfr",        VX(4, 0x579), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10689
{"zmwgsmfaa",       VX(4, 0x57A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10690
{"zmwgsmfraa",        VX(4, 0x57B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10691
{"zmwgsmfan",       VX(4, 0x57C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10692
{"zmwgsmfran",        VX(4, 0x57D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10693
{"zvmhului",        VX(4, 0x580), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10694
{"zvmhuluiaa",        VX(4, 0x582), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10695
{"zvmhuluiaas",       VX(4, 0x583), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10696
{"zvmhuluian",        VX(4, 0x584), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10697
{"zvmhuluians",       VX(4, 0x585), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10698
{"zvmhuluianp",       VX(4, 0x586), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10699
{"zvmhuluianps",      VX(4, 0x587), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10700
{"zvmhulsi",        VX(4, 0x588), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10701
{"zvmhulsiaa",        VX(4, 0x58A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10702
{"zvmhulsiaas",       VX(4, 0x58B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10703
{"zvmhulsian",        VX(4, 0x58C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10704
{"zvmhulsians",       VX(4, 0x58D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10705
{"zvmhulsianp",       VX(4, 0x58E), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10706
{"zvmhulsianps",      VX(4, 0x58F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10707
{"zvmhulsui",       VX(4, 0x590), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10708
{"zvmhulsuiaa",       VX(4, 0x592), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10709
{"zvmhulsuiaas",      VX(4, 0x593), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10710
{"zvmhulsuian",       VX(4, 0x594), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10711
{"zvmhulsuians",      VX(4, 0x595), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10712
{"zvmhulsuianp",      VX(4, 0x596), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10713
{"zvmhulsuianps",     VX(4, 0x597), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10714
{"zvmhulsf",        VX(4, 0x598), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10715
{"zvmhulsfr",       VX(4, 0x599), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10716
{"zvmhulsfaas",       VX(4, 0x59A), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10717
{"zvmhulsfraas",      VX(4, 0x59B), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10718
{"zvmhulsfans",       VX(4, 0x59C), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10719
{"zvmhulsfrans",      VX(4, 0x59D), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10720
{"zvmhulsfanps",      VX(4, 0x59E), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10721
{"zvmhulsfranps",     VX(4, 0x59F), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10722
{"zvmhllui",        VX(4, 0x5A0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10723
{"zvmhlluiaa",        VX(4, 0x5A2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10724
{"zvmhlluiaas",       VX(4, 0x5A3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10725
{"zvmhlluian",        VX(4, 0x5A4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10726
{"zvmhlluians",       VX(4, 0x5A5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10727
{"zvmhlluianp",       VX(4, 0x5A6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10728
{"zvmhlluianps",      VX(4, 0x5A7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10729
{"zvmhllsi",        VX(4, 0x5A8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10730
{"zvmhllsiaa",        VX(4, 0x5AA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10731
{"zvmhllsiaas",       VX(4, 0x5AB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10732
{"zvmhllsian",        VX(4, 0x5AC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10733
{"zvmhllsians",       VX(4, 0x5AD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10734
{"zvmhllsianp",       VX(4, 0x5AE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10735
{"zvmhllsianps",      VX(4, 0x5AF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10736
{"zvmhllsui",       VX(4, 0x5B0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10737
{"zvmhllsuiaa",       VX(4, 0x5B2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10738
{"zvmhllsuiaas",      VX(4, 0x5B3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10739
{"zvmhllsuian",       VX(4, 0x5B4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10740
{"zvmhllsuians",      VX(4, 0x5B5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10741
{"zvmhllsuianp",      VX(4, 0x5B6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10742
{"zvmhllsuianps",     VX(4, 0x5B7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10743
{"zvmhllsf",        VX(4, 0x5B8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10744
{"zvmhllsfr",       VX(4, 0x5B9), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10745
{"zvmhllsfaas",       VX(4, 0x5BA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10746
{"zvmhllsfraas",      VX(4, 0x5BB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10747
{"zvmhllsfans",       VX(4, 0x5BC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10748
{"zvmhllsfrans",      VX(4, 0x5BD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10749
{"zvmhllsfanps",      VX(4, 0x5BE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10750
{"zvmhllsfranps",     VX(4, 0x5BF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10751
{"zvmhuuui",        VX(4, 0x5C0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10752
{"zvmhuuuiaa",        VX(4, 0x5C2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10753
{"zvmhuuuiaas",       VX(4, 0x5C3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10754
{"zvmhuuuian",        VX(4, 0x5C4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10755
{"zvmhuuuians",       VX(4, 0x5C5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10756
{"zvmhuuuianp",       VX(4, 0x5C6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10757
{"zvmhuuuianps",      VX(4, 0x5C7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10758
{"zvmhuusi",        VX(4, 0x5C8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10759
{"zvmhuusiaa",        VX(4, 0x5CA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10760
{"zvmhuusiaas",       VX(4, 0x5CB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10761
{"zvmhuusian",        VX(4, 0x5CC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10762
{"zvmhuusians",       VX(4, 0x5CD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10763
{"zvmhuusianp",       VX(4, 0x5CE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10764
{"zvmhuusianps",      VX(4, 0x5CF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10765
{"zvmhuusui",       VX(4, 0x5D0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10766
{"zvmhuusuiaa",       VX(4, 0x5D2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10767
{"zvmhuusuiaas",      VX(4, 0x5D3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10768
{"zvmhuusuian",       VX(4, 0x5D4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10769
{"zvmhuusuians",      VX(4, 0x5D5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10770
{"zvmhuusuianp",      VX(4, 0x5D6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10771
{"zvmhuusuianps",     VX(4, 0x5D7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10772
{"zvmhuusf",        VX(4, 0x5D8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10773
{"zvmhuusfr",       VX(4, 0x5D9), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10774
{"zvmhuusfaas",       VX(4, 0x5DA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10775
{"zvmhuusfraas",      VX(4, 0x5DB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10776
{"zvmhuusfans",       VX(4, 0x5DC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10777
{"zvmhuusfrans",      VX(4, 0x5DD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10778
{"zvmhuusfanps",      VX(4, 0x5DE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10779
{"zvmhuusfranps",     VX(4, 0x5DF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10780
{"zvmhxlui",        VX(4, 0x5E0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10781
{"zvmhxluiaa",        VX(4, 0x5E2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10782
{"zvmhxluiaas",       VX(4, 0x5E3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10783
{"zvmhxluian",        VX(4, 0x5E4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10784
{"zvmhxluians",       VX(4, 0x5E5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10785
{"zvmhxluianp",       VX(4, 0x5E6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10786
{"zvmhxluianps",      VX(4, 0x5E7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10787
{"zvmhxlsi",        VX(4, 0x5E8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10788
{"zvmhxlsiaa",        VX(4, 0x5EA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10789
{"zvmhxlsiaas",       VX(4, 0x5EB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10790
{"zvmhxlsian",        VX(4, 0x5EC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10791
{"zvmhxlsians",       VX(4, 0x5ED), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10792
{"zvmhxlsianp",       VX(4, 0x5EE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10793
{"zvmhxlsianps",      VX(4, 0x5EF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10794
{"zvmhxlsui",       VX(4, 0x5F0), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10795
{"zvmhxlsuiaa",       VX(4, 0x5F2), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10796
{"zvmhxlsuiaas",      VX(4, 0x5F3), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10797
{"zvmhxlsuian",       VX(4, 0x5F4), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10798
{"zvmhxlsuians",      VX(4, 0x5F5), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10799
{"zvmhxlsuianp",      VX(4, 0x5F6), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10800
{"zvmhxlsuianps",     VX(4, 0x5F7), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10801
{"zvmhxlsf",        VX(4, 0x5F8), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10802
{"zvmhxlsfr",       VX(4, 0x5F9), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10803
{"zvmhxlsfaas",       VX(4, 0x5FA), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10804
{"zvmhxlsfraas",      VX(4, 0x5FB), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10805
{"zvmhxlsfans",       VX(4, 0x5FC), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10806
{"zvmhxlsfrans",      VX(4, 0x5FD), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10807
{"zvmhxlsfanps",      VX(4, 0x5FE), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10808
{"zvmhxlsfranps",     VX(4, 0x5FF), VX_MASK,  PPCLSP, 0,    {RD_EVEN, RA, RB}},
10809
{"zmheui",        VX(4, 0x600), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10810
{"zmheuiaa",        VX(4, 0x602), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10811
{"zmheuiaas",       VX(4, 0x603), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10812
{"zmheuian",        VX(4, 0x604), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10813
{"zmheuians",       VX(4, 0x605), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10814
{"zmhesi",        VX(4, 0x608), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10815
{"zmhesiaa",        VX(4, 0x60A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10816
{"zmhesiaas",       VX(4, 0x60B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10817
{"zmhesian",        VX(4, 0x60C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10818
{"zmhesians",       VX(4, 0x60D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10819
{"zmhesui",       VX(4, 0x610), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10820
{"zmhesuiaa",       VX(4, 0x612), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10821
{"zmhesuiaas",        VX(4, 0x613), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10822
{"zmhesuian",       VX(4, 0x614), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10823
{"zmhesuians",        VX(4, 0x615), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10824
{"zmhesf",        VX(4, 0x618), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10825
{"zmhesfr",       VX(4, 0x619), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10826
{"zmhesfaas",       VX(4, 0x61A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10827
{"zmhesfraas",        VX(4, 0x61B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10828
{"zmhesfans",       VX(4, 0x61C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10829
{"zmhesfrans",        VX(4, 0x61D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10830
{"zmheoui",       VX(4, 0x620), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10831
{"zmheouiaa",       VX(4, 0x622), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10832
{"zmheouiaas",        VX(4, 0x623), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10833
{"zmheouian",       VX(4, 0x624), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10834
{"zmheouians",        VX(4, 0x625), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10835
{"zmheosi",       VX(4, 0x628), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10836
{"zmheosiaa",       VX(4, 0x62A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10837
{"zmheosiaas",        VX(4, 0x62B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10838
{"zmheosian",       VX(4, 0x62C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10839
{"zmheosians",        VX(4, 0x62D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10840
{"zmheosui",        VX(4, 0x630), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10841
{"zmheosuiaa",        VX(4, 0x632), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10842
{"zmheosuiaas",       VX(4, 0x633), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10843
{"zmheosuian",        VX(4, 0x634), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10844
{"zmheosuians",       VX(4, 0x635), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10845
{"zmheosf",       VX(4, 0x638), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10846
{"zmheosfr",        VX(4, 0x639), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10847
{"zmheosfaas",        VX(4, 0x63A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10848
{"zmheosfraas",       VX(4, 0x63B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10849
{"zmheosfans",        VX(4, 0x63C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10850
{"zmheosfrans",       VX(4, 0x63D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10851
{"zmhoui",        VX(4, 0x640), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10852
{"zmhouiaa",        VX(4, 0x642), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10853
{"zmhouiaas",       VX(4, 0x643), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10854
{"zmhouian",        VX(4, 0x644), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10855
{"zmhouians",       VX(4, 0x645), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10856
{"zmhosi",        VX(4, 0x648), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10857
{"zmhosiaa",        VX(4, 0x64A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10858
{"zmhosiaas",       VX(4, 0x64B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10859
{"zmhosian",        VX(4, 0x64C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10860
{"zmhosians",       VX(4, 0x64D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10861
{"zmhosui",       VX(4, 0x650), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10862
{"zmhosuiaa",       VX(4, 0x652), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10863
{"zmhosuiaas",        VX(4, 0x653), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10864
{"zmhosuian",       VX(4, 0x654), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10865
{"zmhosuians",        VX(4, 0x655), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10866
{"zmhosf",        VX(4, 0x658), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10867
{"zmhosfr",       VX(4, 0x659), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10868
{"zmhosfaas",       VX(4, 0x65A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10869
{"zmhosfraas",        VX(4, 0x65B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10870
{"zmhosfans",       VX(4, 0x65C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10871
{"zmhosfrans",        VX(4, 0x65D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10872
{"zvmhuih",       VX(4, 0x660), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10873
{"zvmhuihs",        VX(4, 0x661), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10874
{"zvmhuiaah",       VX(4, 0x662), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10875
{"zvmhuiaahs",        VX(4, 0x663), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10876
{"zvmhuianh",       VX(4, 0x664), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10877
{"zvmhuianhs",        VX(4, 0x665), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10878
{"zvmhsihs",        VX(4, 0x669), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10879
{"zvmhsiaahs",        VX(4, 0x66B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10880
{"zvmhsianhs",        VX(4, 0x66D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10881
{"zvmhsuihs",       VX(4, 0x671), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10882
{"zvmhsuiaahs",       VX(4, 0x673), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10883
{"zvmhsuianhs",       VX(4, 0x675), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10884
{"zvmhsfh",       VX(4, 0x678), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10885
{"zvmhsfrh",        VX(4, 0x679), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10886
{"zvmhsfaahs",        VX(4, 0x67A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10887
{"zvmhsfraahs",       VX(4, 0x67B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10888
{"zvmhsfanhs",        VX(4, 0x67C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10889
{"zvmhsfranhs",       VX(4, 0x67D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10890
{"zvdotphaui",        VX(4, 0x680), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10891
{"zvdotphauis",       VX(4, 0x681), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10892
{"zvdotphauiaa",      VX(4, 0x682), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10893
{"zvdotphauiaas",     VX(4, 0x683), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10894
{"zvdotphauian",      VX(4, 0x684), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10895
{"zvdotphauians",     VX(4, 0x685), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10896
{"zvdotphasi",        VX(4, 0x688), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10897
{"zvdotphasis",       VX(4, 0x689), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10898
{"zvdotphasiaa",      VX(4, 0x68A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10899
{"zvdotphasiaas",     VX(4, 0x68B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10900
{"zvdotphasian",      VX(4, 0x68C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10901
{"zvdotphasians",     VX(4, 0x68D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10902
{"zvdotphasui",       VX(4, 0x690), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10903
{"zvdotphasuis",      VX(4, 0x691), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10904
{"zvdotphasuiaa",     VX(4, 0x692), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10905
{"zvdotphasuiaas",    VX(4, 0x693), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10906
{"zvdotphasuian",     VX(4, 0x694), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10907
{"zvdotphasuians",    VX(4, 0x695), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10908
{"zvdotphasfs",       VX(4, 0x698), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10909
{"zvdotphasfrs",      VX(4, 0x699), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10910
{"zvdotphasfaas",     VX(4, 0x69A), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10911
{"zvdotphasfraas",    VX(4, 0x69B), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10912
{"zvdotphasfans",     VX(4, 0x69C), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10913
{"zvdotphasfrans",    VX(4, 0x69D), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10914
{"zvdotphxaui",       VX(4, 0x6A0), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10915
{"zvdotphxauis",      VX(4, 0x6A1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10916
{"zvdotphxauiaa",     VX(4, 0x6A2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10917
{"zvdotphxauiaas",    VX(4, 0x6A3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10918
{"zvdotphxauian",     VX(4, 0x6A4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10919
{"zvdotphxauians",    VX(4, 0x6A5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10920
{"zvdotphxasi",       VX(4, 0x6A8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10921
{"zvdotphxasis",      VX(4, 0x6A9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10922
{"zvdotphxasiaa",     VX(4, 0x6AA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10923
{"zvdotphxasiaas",    VX(4, 0x6AB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10924
{"zvdotphxasian",     VX(4, 0x6AC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10925
{"zvdotphxasians",    VX(4, 0x6AD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10926
{"zvdotphxasui",      VX(4, 0x6B0), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10927
{"zvdotphxasuis",     VX(4, 0x6B1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10928
{"zvdotphxasuiaa",    VX(4, 0x6B2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10929
{"zvdotphxasuiaas",   VX(4, 0x6B3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10930
{"zvdotphxasuian",    VX(4, 0x6B4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10931
{"zvdotphxasuians",   VX(4, 0x6B5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10932
{"zvdotphxasfs",      VX(4, 0x6B8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10933
{"zvdotphxasfrs",     VX(4, 0x6B9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10934
{"zvdotphxasfaas",    VX(4, 0x6BA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10935
{"zvdotphxasfraas",   VX(4, 0x6BB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10936
{"zvdotphxasfans",    VX(4, 0x6BC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10937
{"zvdotphxasfrans",   VX(4, 0x6BD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10938
{"zvdotphsui",        VX(4, 0x6C0), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10939
{"zvdotphsuis",       VX(4, 0x6C1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10940
{"zvdotphsuiaa",      VX(4, 0x6C2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10941
{"zvdotphsuiaas",     VX(4, 0x6C3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10942
{"zvdotphsuian",      VX(4, 0x6C4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10943
{"zvdotphsuians",     VX(4, 0x6C5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10944
{"zvdotphssi",        VX(4, 0x6C8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10945
{"zvdotphssis",       VX(4, 0x6C9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10946
{"zvdotphssiaa",      VX(4, 0x6CA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10947
{"zvdotphssiaas",     VX(4, 0x6CB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10948
{"zvdotphssian",      VX(4, 0x6CC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10949
{"zvdotphssians",     VX(4, 0x6CD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10950
{"zvdotphssui",       VX(4, 0x6D0), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10951
{"zvdotphssuis",      VX(4, 0x6D1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10952
{"zvdotphssuiaa",     VX(4, 0x6D2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10953
{"zvdotphssuiaas",    VX(4, 0x6D3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10954
{"zvdotphssuian",     VX(4, 0x6D4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10955
{"zvdotphssuians",    VX(4, 0x6D5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10956
{"zvdotphssfs",       VX(4, 0x6D8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10957
{"zvdotphssfrs",      VX(4, 0x6D9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10958
{"zvdotphssfaas",     VX(4, 0x6DA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10959
{"zvdotphssfraas",    VX(4, 0x6DB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10960
{"zvdotphssfans",     VX(4, 0x6DC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10961
{"zvdotphssfrans",    VX(4, 0x6DD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10962
{"zmwluis",       VX(4, 0x6E1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10963
{"zmwluiaa",        VX(4, 0x6E2), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10964
{"zmwluiaas",       VX(4, 0x6E3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10965
{"zmwluian",        VX(4, 0x6E4), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10966
{"zmwluians",       VX(4, 0x6E5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10967
{"zmwlsis",       VX(4, 0x6E9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10968
{"zmwlsiaas",       VX(4, 0x6EB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10969
{"zmwlsians",       VX(4, 0x6ED), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10970
{"zmwlsuis",        VX(4, 0x6F1), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10971
{"zmwlsuiaas",        VX(4, 0x6F3), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10972
{"zmwlsuians",        VX(4, 0x6F5), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10973
{"zmwsf",       VX(4, 0x6F8), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10974
{"zmwsfr",        VX(4, 0x6F9), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10975
{"zmwsfaas",        VX(4, 0x6FA), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10976
{"zmwsfraas",       VX(4, 0x6FB), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10977
{"zmwsfans",        VX(4, 0x6FC), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10978
{"zmwsfrans",       VX(4, 0x6FD), VX_MASK,  PPCLSP, 0,    {RD, RA, RB}},
10979
};
10980
10981
const unsigned int lsp_num_opcodes = ARRAY_SIZE (lsp_opcodes);
10982
10983
/* SPE v2 instruction set from SPE2PIM Rev. 2 08/2011 */
10984
const struct powerpc_opcode spe2_opcodes[] = {
10985
{"evdotpwcssi",     VX (4, 128),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10986
{"evdotpwcsmi",     VX (4, 129),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10987
{"evdotpwcssfr",    VX (4, 130),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10988
{"evdotpwcssf",     VX (4, 131),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10989
{"evdotpwgasmf",    VX (4, 136),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10990
{"evdotpwxgasmf",   VX (4, 137),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10991
{"evdotpwgasmfr",   VX (4, 138),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10992
{"evdotpwxgasmfr",    VX (4, 139),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10993
{"evdotpwgssmf",    VX (4, 140),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10994
{"evdotpwxgssmf",   VX (4, 141),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10995
{"evdotpwgssmfr",   VX (4, 142),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10996
{"evdotpwxgssmfr",    VX (4, 143),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10997
{"evdotpwcssiaaw3",   VX (4, 144),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10998
{"evdotpwcsmiaaw3",   VX (4, 145),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
10999
{"evdotpwcssfraaw3",    VX (4, 146),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11000
{"evdotpwcssfaaw3",   VX (4, 147),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11001
{"evdotpwgasmfaa3",   VX (4, 152),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11002
{"evdotpwxgasmfaa3",    VX (4, 153),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11003
{"evdotpwgasmfraa3",    VX (4, 154),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11004
{"evdotpwxgasmfraa3",   VX (4, 155),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11005
{"evdotpwgssmfaa3",   VX (4, 156),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11006
{"evdotpwxgssmfaa3",    VX (4, 157),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11007
{"evdotpwgssmfraa3",    VX (4, 158),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11008
{"evdotpwxgssmfraa3",   VX (4, 159),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11009
{"evdotpwcssia",    VX (4, 160),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11010
{"evdotpwcsmia",    VX (4, 161),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11011
{"evdotpwcssfra",   VX (4, 162),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11012
{"evdotpwcssfa",    VX (4, 163),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11013
{"evdotpwgasmfa",   VX (4, 168),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11014
{"evdotpwxgasmfa",    VX (4, 169),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11015
{"evdotpwgasmfra",    VX (4, 170),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11016
{"evdotpwxgasmfra",   VX (4, 171),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11017
{"evdotpwgssmfa",   VX (4, 172),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11018
{"evdotpwxgssmfa",    VX (4, 173),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11019
{"evdotpwgssmfra",    VX (4, 174),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11020
{"evdotpwxgssmfra",   VX (4, 175),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11021
{"evdotpwcssiaaw",    VX (4, 176),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11022
{"evdotpwcsmiaaw",    VX (4, 177),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11023
{"evdotpwcssfraaw",   VX (4, 178),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11024
{"evdotpwcssfaaw",    VX (4, 179),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11025
{"evdotpwgasmfaa",    VX (4, 184),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11026
{"evdotpwxgasmfaa",   VX (4, 185),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11027
{"evdotpwgasmfraa",   VX (4, 186),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11028
{"evdotpwxgasmfraa",    VX (4, 187),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11029
{"evdotpwgssmfaa",    VX (4, 188),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11030
{"evdotpwxgssmfaa",   VX (4, 189),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11031
{"evdotpwgssmfraa",   VX (4, 190),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11032
{"evdotpwxgssmfraa",    VX (4, 191),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11033
{"evdotphihcssi",   VX (4, 256),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11034
{"evdotplohcssi",   VX (4, 257),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11035
{"evdotphihcssf",   VX (4, 258),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11036
{"evdotplohcssf",   VX (4, 259),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11037
{"evdotphihcsmi",   VX (4, 264),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11038
{"evdotplohcsmi",   VX (4, 265),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11039
{"evdotphihcssfr",    VX (4, 266),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11040
{"evdotplohcssfr",    VX (4, 267),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11041
{"evdotphihcssiaaw3",   VX (4, 272),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11042
{"evdotplohcssiaaw3",   VX (4, 273),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11043
{"evdotphihcssfaaw3",   VX (4, 274),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11044
{"evdotplohcssfaaw3",   VX (4, 275),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11045
{"evdotphihcsmiaaw3",   VX (4, 280),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11046
{"evdotplohcsmiaaw3",   VX (4, 281),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11047
{"evdotphihcssfraaw3",    VX (4, 282),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11048
{"evdotplohcssfraaw3",    VX (4, 283),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11049
{"evdotphihcssia",    VX (4, 288),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11050
{"evdotplohcssia",    VX (4, 289),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11051
{"evdotphihcssfa",    VX (4, 290),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11052
{"evdotplohcssfa",    VX (4, 291),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11053
{"evdotphihcsmia",    VX (4, 296),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11054
{"evdotplohcsmia",    VX (4, 297),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11055
{"evdotphihcssfra",   VX (4, 298),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11056
{"evdotplohcssfra",   VX (4, 299),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11057
{"evdotphihcssiaaw",    VX (4, 304),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11058
{"evdotplohcssiaaw",    VX (4, 305),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11059
{"evdotphihcssfaaw",    VX (4, 306),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11060
{"evdotplohcssfaaw",    VX (4, 307),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11061
{"evdotphihcsmiaaw",    VX (4, 312),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11062
{"evdotplohcsmiaaw",    VX (4, 313),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11063
{"evdotphihcssfraaw",   VX (4, 314),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11064
{"evdotplohcssfraaw",   VX (4, 315),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11065
{"evdotphausi",     VX (4, 320),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11066
{"evdotphassi",     VX (4, 321),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11067
{"evdotphasusi",    VX (4, 322),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11068
{"evdotphassf",     VX (4, 323),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11069
{"evdotphsssf",     VX (4, 327),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11070
{"evdotphaumi",     VX (4, 328),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11071
{"evdotphasmi",     VX (4, 329),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11072
{"evdotphasumi",    VX (4, 330),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11073
{"evdotphassfr",    VX (4, 331),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11074
{"evdotphssmi",     VX (4, 333),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11075
{"evdotphsssi",     VX (4, 333),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11076
{"evdotphsssfr",    VX (4, 335),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11077
{"evdotphausiaaw3",   VX (4, 336),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11078
{"evdotphassiaaw3",   VX (4, 337),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11079
{"evdotphasusiaaw3",    VX (4, 338),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11080
{"evdotphassfaaw3",   VX (4, 339),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11081
{"evdotphsssiaaw3",   VX (4, 341),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11082
{"evdotphsssfaaw3",   VX (4, 343),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11083
{"evdotphaumiaaw3",   VX (4, 344),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11084
{"evdotphasmiaaw3",   VX (4, 345),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11085
{"evdotphasumiaaw3",    VX (4, 346),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11086
{"evdotphassfraaw3",    VX (4, 347),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11087
{"evdotphssmiaaw3",   VX (4, 349),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11088
{"evdotphsssfraaw3",    VX (4, 351),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11089
{"evdotphausia",    VX (4, 352),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11090
{"evdotphassia",    VX (4, 353),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11091
{"evdotphasusia",   VX (4, 354),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11092
{"evdotphassfa",    VX (4, 355),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11093
{"evdotphsssfa",    VX (4, 359),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11094
{"evdotphaumia",    VX (4, 360),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11095
{"evdotphasmia",    VX (4, 361),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11096
{"evdotphasumia",   VX (4, 362),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11097
{"evdotphassfra",   VX (4, 363),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11098
{"evdotphssmia",    VX (4, 365),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11099
{"evdotphsssia",    VX (4, 365),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11100
{"evdotphsssfra",   VX (4, 367),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11101
{"evdotphausiaaw",    VX (4, 368),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11102
{"evdotphassiaaw",    VX (4, 369),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11103
{"evdotphasusiaaw",   VX (4, 370),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11104
{"evdotphassfaaw",    VX (4, 371),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11105
{"evdotphsssiaaw",    VX (4, 373),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11106
{"evdotphsssfaaw",    VX (4, 375),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11107
{"evdotphaumiaaw",    VX (4, 376),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11108
{"evdotphasmiaaw",    VX (4, 377),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11109
{"evdotphasumiaaw",   VX (4, 378),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11110
{"evdotphassfraaw",   VX (4, 379),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11111
{"evdotphssmiaaw",    VX (4, 381),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11112
{"evdotphsssfraaw",   VX (4, 383),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11113
{"evdotp4hgaumi",   VX (4, 384),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11114
{"evdotp4hgasmi",   VX (4, 385),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11115
{"evdotp4hgasumi",    VX (4, 386),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11116
{"evdotp4hgasmf",   VX (4, 387),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11117
{"evdotp4hgssmi",   VX (4, 388),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11118
{"evdotp4hgssmf",   VX (4, 389),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11119
{"evdotp4hxgasmi",    VX (4, 390),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11120
{"evdotp4hxgasmf",    VX (4, 391),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11121
{"evdotpbaumi",     VX (4, 392),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11122
{"evdotpbasmi",     VX (4, 393),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11123
{"evdotpbasumi",    VX (4, 394),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11124
{"evdotp4hxgssmi",    VX (4, 398),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11125
{"evdotp4hxgssmf",    VX (4, 399),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11126
{"evdotp4hgaumiaa3",    VX (4, 400),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11127
{"evdotp4hgasmiaa3",    VX (4, 401),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11128
{"evdotp4hgasumiaa3",   VX (4, 402),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11129
{"evdotp4hgasmfaa3",    VX (4, 403),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11130
{"evdotp4hgssmiaa3",    VX (4, 404),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11131
{"evdotp4hgssmfaa3",    VX (4, 405),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11132
{"evdotp4hxgasmiaa3",   VX (4, 406),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11133
{"evdotp4hxgasmfaa3",   VX (4, 407),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11134
{"evdotpbaumiaaw3",   VX (4, 408),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11135
{"evdotpbasmiaaw3",   VX (4, 409),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11136
{"evdotpbasumiaaw3",    VX (4, 410),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11137
{"evdotp4hxgssmiaa3",   VX (4, 414),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11138
{"evdotp4hxgssmfaa3",   VX (4, 415),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11139
{"evdotp4hgaumia",    VX (4, 416),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11140
{"evdotp4hgasmia",    VX (4, 417),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11141
{"evdotp4hgasumia",   VX (4, 418),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11142
{"evdotp4hgasmfa",    VX (4, 419),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11143
{"evdotp4hgssmia",    VX (4, 420),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11144
{"evdotp4hgssmfa",    VX (4, 421),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11145
{"evdotp4hxgasmia",   VX (4, 422),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11146
{"evdotp4hxgasmfa",   VX (4, 423),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11147
{"evdotpbaumia",    VX (4, 424),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11148
{"evdotpbasmia",    VX (4, 425),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11149
{"evdotpbasumia",   VX (4, 426),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11150
{"evdotp4hxgssmia",   VX (4, 430),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11151
{"evdotp4hxgssmfa",   VX (4, 431),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11152
{"evdotp4hgaumiaa",   VX (4, 432),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11153
{"evdotp4hgasmiaa",   VX (4, 433),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11154
{"evdotp4hgasumiaa",    VX (4, 434),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11155
{"evdotp4hgasmfaa",   VX (4, 435),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11156
{"evdotp4hgssmiaa",   VX (4, 436),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11157
{"evdotp4hgssmfaa",   VX (4, 437),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11158
{"evdotp4hxgasmiaa",    VX (4, 438),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11159
{"evdotp4hxgasmfaa",    VX (4, 439),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11160
{"evdotpbaumiaaw",    VX (4, 440),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11161
{"evdotpbasmiaaw",    VX (4, 441),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11162
{"evdotpbasumiaaw",   VX (4, 442),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11163
{"evdotp4hxgssmiaa",    VX (4, 446),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11164
{"evdotp4hxgssmfaa",    VX (4, 447),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11165
{"evdotpwausi",     VX (4, 448),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11166
{"evdotpwassi",     VX (4, 449),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11167
{"evdotpwasusi",    VX (4, 450),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11168
{"evdotpwaumi",     VX (4, 456),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11169
{"evdotpwasmi",     VX (4, 457),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11170
{"evdotpwasumi",    VX (4, 458),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11171
{"evdotpwssmi",     VX (4, 461),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11172
{"evdotpwsssi",     VX (4, 461),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11173
{"evdotpwausiaa3",    VX (4, 464),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11174
{"evdotpwassiaa3",    VX (4, 465),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11175
{"evdotpwasusiaa3",   VX (4, 466),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11176
{"evdotpwsssiaa3",    VX (4, 469),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11177
{"evdotpwaumiaa3",    VX (4, 472),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11178
{"evdotpwasmiaa3",    VX (4, 473),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11179
{"evdotpwasumiaa3",   VX (4, 474),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11180
{"evdotpwssmiaa3",    VX (4, 477),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11181
{"evdotpwausia",    VX (4, 480),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11182
{"evdotpwassia",    VX (4, 481),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11183
{"evdotpwasusia",   VX (4, 482),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11184
{"evdotpwaumia",    VX (4, 488),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11185
{"evdotpwasmia",    VX (4, 489),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11186
{"evdotpwasumia",   VX (4, 490),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11187
{"evdotpwssmia",    VX (4, 493),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11188
{"evdotpwsssia",    VX (4, 493),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11189
{"evdotpwausiaa",   VX (4, 496),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11190
{"evdotpwassiaa",   VX (4, 497),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11191
{"evdotpwasusiaa",    VX (4, 498),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11192
{"evdotpwsssiaa",   VX (4, 501),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11193
{"evdotpwaumiaa",   VX (4, 504),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11194
{"evdotpwasmiaa",   VX (4, 505),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11195
{"evdotpwasumiaa",    VX (4, 506),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11196
{"evdotpwssmiaa",   VX (4, 509),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11197
{"evaddib",     VX (4, 515),    VX_MASK,    PPCSPE2, 0, {RD, RB, UIMM}},
11198
{"evaddih",     VX (4, 513),    VX_MASK,    PPCSPE2, 0, {RD, RB, UIMM}},
11199
{"evsubifh",      VX (4, 517),    VX_MASK,    PPCSPE2, 0, {RD, UIMM, RB}},
11200
{"evsubifb",      VX (4, 519),    VX_MASK,    PPCSPE2, 0, {RD, UIMM, RB}},
11201
{"evabsb",      VX_RB_CONST(4, 520, 2),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11202
{"evabsh",      VX_RB_CONST(4, 520, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11203
{"evabsd",      VX_RB_CONST(4, 520, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11204
{"evabss",      VX_RB_CONST(4, 520, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11205
{"evabsbs",     VX_RB_CONST(4, 520, 10), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11206
{"evabshs",     VX_RB_CONST(4, 520, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11207
{"evabsds",     VX_RB_CONST(4, 520, 14), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11208
{"evnegwo",     VX_RB_CONST(4, 521, 1),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11209
{"evnegb",      VX_RB_CONST(4, 521, 2),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11210
{"evnegbo",     VX_RB_CONST(4, 521, 3),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11211
{"evnegh",      VX_RB_CONST(4, 521, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11212
{"evnegho",     VX_RB_CONST(4, 521, 5),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11213
{"evnegd",      VX_RB_CONST(4, 521, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11214
{"evnegs",      VX_RB_CONST(4, 521, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11215
{"evnegwos",      VX_RB_CONST(4, 521, 9),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11216
{"evnegbs",     VX_RB_CONST(4, 521, 10), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11217
{"evnegbos",      VX_RB_CONST(4, 521, 11), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11218
{"evneghs",     VX_RB_CONST(4, 521, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11219
{"evneghos",      VX_RB_CONST(4, 521, 13), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11220
{"evnegds",     VX_RB_CONST(4, 521, 14), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11221
{"evextzb",     VX_RB_CONST(4, 522, 1),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11222
{"evextsbh",      VX_RB_CONST(4, 522, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11223
{"evextsw",     VX_RB_CONST(4, 523, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11224
{"evrndwh",     VX_RB_CONST(4, 524, 0),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11225
{"evrndhb",     VX_RB_CONST(4, 524, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11226
{"evrnddw",     VX_RB_CONST(4, 524, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11227
{"evrndwhus",     VX_RB_CONST(4, 524, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11228
{"evrndwhss",     VX_RB_CONST(4, 524, 9),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11229
{"evrndhbus",     VX_RB_CONST(4, 524, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11230
{"evrndhbss",     VX_RB_CONST(4, 524, 13), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11231
{"evrnddwus",     VX_RB_CONST(4, 524, 14), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11232
{"evrnddwss",     VX_RB_CONST(4, 524, 15), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11233
{"evrndwnh",      VX_RB_CONST(4, 524, 16), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11234
{"evrndhnb",      VX_RB_CONST(4, 524, 20), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11235
{"evrnddnw",      VX_RB_CONST(4, 524, 22), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11236
{"evrndwnhus",      VX_RB_CONST(4, 524, 24), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11237
{"evrndwnhss",      VX_RB_CONST(4, 524, 25), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11238
{"evrndhnbus",      VX_RB_CONST(4, 524, 28), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11239
{"evrndhnbss",      VX_RB_CONST(4, 524, 29), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11240
{"evrnddnwus",      VX_RB_CONST(4, 524, 30), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11241
{"evrnddnwss",      VX_RB_CONST(4, 524, 31), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11242
{"evcntlzh",      VX_RB_CONST(4, 525, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11243
{"evcntlsh",      VX_RB_CONST(4, 526, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11244
{"evpopcntb",     VX_RB_CONST(4, 526, 26), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11245
{"circinc",     VX (4, 528),       VX_MASK,   PPCSPE2, 0, {RD, RA, RB}},
11246
{"evunpkhibui",     VX_RB_CONST(4, 540, 0),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11247
{"evunpkhibsi",     VX_RB_CONST(4, 540, 1),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11248
{"evunpkhihui",     VX_RB_CONST(4, 540, 2),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11249
{"evunpkhihsi",     VX_RB_CONST(4, 540, 3),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11250
{"evunpklobui",     VX_RB_CONST(4, 540, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11251
{"evunpklobsi",     VX_RB_CONST(4, 540, 5),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11252
{"evunpklohui",     VX_RB_CONST(4, 540, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11253
{"evunpklohsi",     VX_RB_CONST(4, 540, 7),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11254
{"evunpklohf",      VX_RB_CONST(4, 540, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11255
{"evunpkhihf",      VX_RB_CONST(4, 540, 9),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11256
{"evunpklowgsf",    VX_RB_CONST(4, 540, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11257
{"evunpkhiwgsf",    VX_RB_CONST(4, 540, 13), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11258
{"evsatsduw",     VX_RB_CONST(4, 540, 16), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11259
{"evsatsdsw",     VX_RB_CONST(4, 540, 17), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11260
{"evsatshub",     VX_RB_CONST(4, 540, 18), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11261
{"evsatshsb",     VX_RB_CONST(4, 540, 19), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11262
{"evsatuwuh",     VX_RB_CONST(4, 540, 20), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11263
{"evsatswsh",     VX_RB_CONST(4, 540, 21), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11264
{"evsatswuh",     VX_RB_CONST(4, 540, 22), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11265
{"evsatuhub",     VX_RB_CONST(4, 540, 23), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11266
{"evsatuduw",     VX_RB_CONST(4, 540, 24), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11267
{"evsatuwsw",     VX_RB_CONST(4, 540, 25), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11268
{"evsatshuh",     VX_RB_CONST(4, 540, 26), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11269
{"evsatuhsh",     VX_RB_CONST(4, 540, 27), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11270
{"evsatswuw",     VX_RB_CONST(4, 540, 28), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11271
{"evsatswgsdf",     VX_RB_CONST(4, 540, 29), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11272
{"evsatsbub",     VX_RB_CONST(4, 540, 30), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11273
{"evsatubsb",     VX_RB_CONST(4, 540, 31), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11274
{"evmaxhpuw",     VX_RB_CONST(4, 541, 0),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11275
{"evmaxhpsw",     VX_RB_CONST(4, 541, 1),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11276
{"evmaxbpuh",     VX_RB_CONST(4, 541, 4),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11277
{"evmaxbpsh",     VX_RB_CONST(4, 541, 5),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11278
{"evmaxwpud",     VX_RB_CONST(4, 541, 6),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11279
{"evmaxwpsd",     VX_RB_CONST(4, 541, 7),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11280
{"evminhpuw",     VX_RB_CONST(4, 541, 8),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11281
{"evminhpsw",     VX_RB_CONST(4, 541, 9),  VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11282
{"evminbpuh",     VX_RB_CONST(4, 541, 12), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11283
{"evminbpsh",     VX_RB_CONST(4, 541, 13), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11284
{"evminwpud",     VX_RB_CONST(4, 541, 14), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11285
{"evminwpsd",     VX_RB_CONST(4, 541, 15), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11286
{"evmaxmagws",      VX (4, 543),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11287
{"evsl",      VX (4, 549),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11288
{"evsli",     VX (4, 551),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM}},
11289
{"evsplatie",     VX_RB_CONST (4, 553, 1),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11290
{"evsplatib",     VX_RB_CONST (4, 553, 2),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11291
{"evsplatibe",      VX_RB_CONST (4, 553, 3),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11292
{"evsplatih",     VX_RB_CONST (4, 553, 4),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11293
{"evsplatihe",      VX_RB_CONST (4, 553, 5),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11294
{"evsplatid",     VX_RB_CONST (4, 553, 6),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11295
{"evsplatia",     VX_RB_CONST (4, 553, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11296
{"evsplatiea",      VX_RB_CONST (4, 553, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11297
{"evsplatiba",      VX_RB_CONST (4, 553, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11298
{"evsplatibea",     VX_RB_CONST (4, 553, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11299
{"evsplatiha",      VX_RB_CONST (4, 553, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11300
{"evsplatihea",     VX_RB_CONST (4, 553, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11301
{"evsplatida",      VX_RB_CONST (4, 553, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11302
{"evsplatfio",      VX_RB_CONST (4, 555, 1),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11303
{"evsplatfib",      VX_RB_CONST (4, 555, 2),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11304
{"evsplatfibo",     VX_RB_CONST (4, 555, 3),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11305
{"evsplatfih",      VX_RB_CONST (4, 555, 4),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11306
{"evsplatfiho",     VX_RB_CONST (4, 555, 5),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11307
{"evsplatfid",      VX_RB_CONST (4, 555, 6),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11308
{"evsplatfia",      VX_RB_CONST (4, 555, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11309
{"evsplatfioa",     VX_RB_CONST (4, 555, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11310
{"evsplatfiba",     VX_RB_CONST (4, 555, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11311
{"evsplatfiboa",    VX_RB_CONST (4, 555, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11312
{"evsplatfiha",     VX_RB_CONST (4, 555, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11313
{"evsplatfihoa",    VX_RB_CONST (4, 555, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11314
{"evsplatfida",     VX_RB_CONST (4, 555, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, SIMM}},
11315
{"evcmpgtdu",     VX_SPE_CRFD (4, 560, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11316
{"evcmpgtds",     VX_SPE_CRFD (4, 561, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11317
{"evcmpltdu",     VX_SPE_CRFD (4, 562, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11318
{"evcmpltds",     VX_SPE_CRFD (4, 563, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11319
{"evcmpeqd",      VX_SPE_CRFD (4, 564, 1), VX_SPE_CRFD_MASK,  PPCSPE2, 0, {CRFD, RA, RB}},
11320
{"evswapbhilo",     VX (4, 568),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11321
{"evswapblohi",     VX (4, 569),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11322
{"evswaphhilo",     VX (4, 570),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11323
{"evswaphlohi",     VX (4, 571),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11324
{"evswaphe",      VX (4, 572),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11325
{"evswaphhi",     VX (4, 573),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11326
{"evswaphlo",     VX (4, 574),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11327
{"evswapho",      VX (4, 575),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11328
{"evinsb",      VX (4, 584),    VX_MASK_DDD,    PPCSPE2, 0, {RD, RA, DDD, BBB}},
11329
{"evxtrb",      VX (4, 586),    VX_MASK_DDD,    PPCSPE2, 0, {RD, RA, DDD, BBB}},
11330
{"evsplath",      VX_SPE2_HH (4, 588, 0, 0), VX_SPE2_HH_MASK, PPCSPE2, 0, {RD, RA, HH}},
11331
{"evsplatb",      VX_SPE2_SPLATB (4, 588, 2), VX_SPE2_SPLATB_MASK, PPCSPE2, 0, {RD, RA, BBB}},
11332
{"evinsh",      VX_SPE2_DDHH (4, 589, 0), VX_SPE2_DDHH_MASK,  PPCSPE2, 0, {RD, RA, DD, HH}},
11333
{"evclrbe",     VX_SPE2_CLR (4, 590, 0), VX_SPE2_CLR_MASK,  PPCSPE2, 0, {RD, RA, MMMM}},
11334
{"evclrbo",     VX_SPE2_CLR (4, 590, 1), VX_SPE2_CLR_MASK,  PPCSPE2, 0, {RD, RA, MMMM}},
11335
{"evclrh",      VX_SPE2_CLR (4, 591, 1), VX_SPE2_CLR_MASK,  PPCSPE2, 0, {RD, RA, MMMM}},
11336
{"evxtrh",      VX_SPE2_DDHH (4, 591, 0), VX_SPE2_DDHH_MASK,  PPCSPE2, 0, {RD, RA, DD, HH}},
11337
{"evselbitm0",      VX (4, 592),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11338
{"evselbitm1",      VX (4, 593),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11339
{"evselbit",      VX (4, 594),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11340
{"evperm",      VX (4, 596),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11341
{"evperm2",     VX (4, 597),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11342
{"evperm3",     VX (4, 598),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11343
{"evxtrd",      VX (4, 600),    VX_OFF_SPE2_MASK, PPCSPE2, 0, {RD, RA, RB, VX_OFF_SPE2}},
11344
{"evsrbu",      VX (4, 608),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11345
{"evsrbs",      VX (4, 609),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11346
{"evsrbiu",     VX (4, 610),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11347
{"evsrbis",     VX (4, 611),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11348
{"evslb",     VX (4, 612),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11349
{"evrlb",     VX (4, 613),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11350
{"evslbi",      VX (4, 614),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11351
{"evrlbi",      VX (4, 615),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT8}},
11352
{"evsrhu",      VX (4, 616),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11353
{"evsrhs",      VX (4, 617),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11354
{"evsrhiu",     VX (4, 618),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11355
{"evsrhis",     VX (4, 619),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11356
{"evslh",     VX (4, 620),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11357
{"evrlh",     VX (4, 621),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11358
{"evslhi",      VX (4, 622),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11359
{"evrlhi",      VX (4, 623),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM_LT16}},
11360
{"evsru",     VX (4, 624),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11361
{"evsrs",     VX (4, 625),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11362
{"evsriu",      VX (4, 626),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM}},
11363
{"evsris",      VX (4, 627),    VX_MASK,    PPCSPE2, 0, {RD, RA, EVUIMM}},
11364
{"evlvsl",      VX (4, 628),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11365
{"evlvsr",      VX (4, 629),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11366
{"evsroiu",     VX_SPE2_OCTET (4, 631, 0), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
11367
{"evsrois",     VX_SPE2_OCTET (4, 631, 1), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
11368
{"evsloi",      VX_SPE2_OCTET (4, 631, 2), VX_SPE2_OCTET_MASK, PPCSPE2, 0, {RD, RA, NNN}},
11369
{"evldbx",      VX (4, 774),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11370
{"evldb",     VX (4, 775),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8, RA}},
11371
{"evlhhsplathx",    VX (4, 778),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11372
{"evlhhsplath",     VX (4, 779),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2, RA}},
11373
{"evlwbsplatwx",    VX (4, 786),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11374
{"evlwbsplatw",     VX (4, 787),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11375
{"evlwhsplatwx",    VX (4, 794),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11376
{"evlwhsplatw",     VX (4, 795),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11377
{"evlbbsplatbx",    VX (4, 798),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11378
{"evlbbsplatb",     VX (4, 799),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_1, RA}},
11379
{"evstdbx",     VX (4, 806),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11380
{"evstdb",      VX (4, 807),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8, RA}},
11381
{"evlwbex",     VX (4, 810),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11382
{"evlwbe",      VX (4, 811),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11383
{"evlwboux",      VX (4, 812),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11384
{"evlwbou",     VX (4, 813),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11385
{"evlwbosx",      VX (4, 814),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11386
{"evlwbos",     VX (4, 815),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4, RA}},
11387
{"evstwbex",      VX (4, 818),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11388
{"evstwbe",     VX (4, 819),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4, RA}},
11389
{"evstwbox",      VX (4, 822),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11390
{"evstwbo",     VX (4, 823),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4, RA}},
11391
{"evstwbx",     VX (4, 826),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11392
{"evstwb",      VX (4, 827),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4, RA}},
11393
{"evsthbx",     VX (4, 830),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11394
{"evsthb",      VX (4, 831),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_2, RA}},
11395
{"evlddmx",     VX (4, 832),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11396
{"evlddu",      VX (4, 833),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11397
{"evldwmx",     VX (4, 834),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11398
{"evldwu",      VX (4, 835),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11399
{"evldhmx",     VX (4, 836),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11400
{"evldhu",      VX (4, 837),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11401
{"evldbmx",     VX (4, 838),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11402
{"evldbu",      VX (4, 839),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_8_EX0, RA}},
11403
{"evlhhesplatmx",   VX (4, 840),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11404
{"evlhhesplatu",    VX (4, 841),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11405
{"evlhhsplathmx",   VX (4, 842),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11406
{"evlhhsplathu",    VX (4, 843),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11407
{"evlhhousplatmx",    VX (4, 844),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11408
{"evlhhousplatu",   VX (4, 845),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11409
{"evlhhossplatmx",    VX (4, 846),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11410
{"evlhhossplatu",   VX (4, 847),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_2_EX0, RA}},
11411
{"evlwhemx",      VX (4, 848),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11412
{"evlwheu",     VX (4, 849),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11413
{"evlwbsplatwmx",   VX (4, 850),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11414
{"evlwbsplatwu",    VX (4, 851),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11415
{"evlwhoumx",     VX (4, 852),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11416
{"evlwhouu",      VX (4, 853),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11417
{"evlwhosmx",     VX (4, 854),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11418
{"evlwhosu",      VX (4, 855),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11419
{"evlwwsplatmx",    VX (4, 856),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11420
{"evlwwsplatu",     VX (4, 857),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11421
{"evlwhsplatwmx",   VX (4, 858),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11422
{"evlwhsplatwu",    VX (4, 859),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11423
{"evlwhsplatmx",    VX (4, 860),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11424
{"evlwhsplatu",     VX (4, 861),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11425
{"evlbbsplatbmx",   VX (4, 862),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11426
{"evlbbsplatbu",    VX (4, 863),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_1_EX0, RA}},
11427
{"evstddmx",      VX (4, 864),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11428
{"evstddu",     VX (4, 865),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11429
{"evstdwmx",      VX (4, 866),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11430
{"evstdwu",     VX (4, 867),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11431
{"evstdhmx",      VX (4, 868),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11432
{"evstdhu",     VX (4, 869),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11433
{"evstdbmx",      VX (4, 870),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11434
{"evstdbu",     VX (4, 871),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_8_EX0, RA}},
11435
{"evlwbemx",      VX (4, 874),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11436
{"evlwbeu",     VX (4, 875),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11437
{"evlwboumx",     VX (4, 876),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11438
{"evlwbouu",      VX (4, 877),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11439
{"evlwbosmx",     VX (4, 878),    VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11440
{"evlwbosu",      VX (4, 879),    VX_MASK,    PPCSPE2, 0, {RD, EVUIMM_4_EX0, RA}},
11441
{"evstwhemx",     VX (4, 880),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11442
{"evstwheu",      VX (4, 881),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11443
{"evstwbemx",     VX (4, 882),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11444
{"evstwbeu",      VX (4, 883),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11445
{"evstwhomx",     VX (4, 884),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11446
{"evstwhou",      VX (4, 885),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11447
{"evstwbomx",     VX (4, 886),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11448
{"evstwbou",      VX (4, 887),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11449
{"evstwwemx",     VX (4, 888),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11450
{"evstwweu",      VX (4, 889),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11451
{"evstwbmx",      VX (4, 890),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11452
{"evstwbu",     VX (4, 891),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11453
{"evstwwomx",     VX (4, 892),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11454
{"evstwwou",      VX (4, 893),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_4_EX0, RA}},
11455
{"evsthbmx",      VX (4, 894),    VX_MASK,    PPCSPE2, 0, {RS, RA, RB}},
11456
{"evsthbu",     VX (4, 895),    VX_MASK,    PPCSPE2, 0, {RS, EVUIMM_2_EX0, RA}},
11457
{"evmhusi",     VX (4, 1024),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11458
{"evmhssi",     VX (4, 1025),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11459
{"evmhsusi",      VX (4, 1026),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11460
{"evmhssf",     VX (4, 1028),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11461
{"evmhumi",     VX (4, 1029),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11462
{"evmhssfr",      VX (4, 1030),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11463
{"evmhesumi",     VX (4, 1034),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11464
{"evmhosumi",     VX (4, 1038),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11465
{"evmbeumi",      VX (4, 1048),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11466
{"evmbesmi",      VX (4, 1049),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11467
{"evmbesumi",     VX (4, 1050),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11468
{"evmboumi",      VX (4, 1052),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11469
{"evmbosmi",      VX (4, 1053),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11470
{"evmbosumi",     VX (4, 1054),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11471
{"evmhesumia",      VX (4, 1066),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11472
{"evmhosumia",      VX (4, 1070),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11473
{"evmbeumia",     VX (4, 1080),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11474
{"evmbesmia",     VX (4, 1081),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11475
{"evmbesumia",      VX (4, 1082),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11476
{"evmboumia",     VX (4, 1084),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11477
{"evmbosmia",     VX (4, 1085),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11478
{"evmbosumia",      VX (4, 1086),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11479
{"evmwusiw",      VX (4, 1088),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11480
{"evmwssiw",      VX (4, 1089),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11481
{"evmwhssfr",     VX (4, 1094),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11482
{"evmwehgsmfr",     VX (4, 1110),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11483
{"evmwehgsmf",      VX (4, 1111),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11484
{"evmwohgsmfr",     VX (4, 1118),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11485
{"evmwohgsmf",      VX (4, 1119),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11486
{"evmwhssfra",      VX (4, 1126),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11487
{"evmwehgsmfra",    VX (4, 1142),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11488
{"evmwehgsmfa",     VX (4, 1143),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11489
{"evmwohgsmfra",    VX (4, 1150),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11490
{"evmwohgsmfa",     VX (4, 1151),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11491
{"evaddusiaa",      VX_RB_CONST(4, 1152, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11492
{"evaddssiaa",      VX_RB_CONST(4, 1153, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11493
{"evsubfusiaa",     VX_RB_CONST(4, 1154, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11494
{"evsubfssiaa",     VX_RB_CONST(4, 1155, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11495
{"evaddsmiaa",      VX_RB_CONST(4, 1156, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11496
{"evsubfsmiaa",     VX_RB_CONST(4, 1158, 0), VX_RB_CONST_MASK,  PPCSPE2, 0, {RD, RA}},
11497
{"evaddh",      VX (4, 1160),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11498
{"evaddhss",      VX (4, 1161),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11499
{"evsubfh",     VX (4, 1162),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11500
{"evsubfhss",     VX (4, 1163),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11501
{"evaddhx",     VX (4, 1164),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11502
{"evaddhxss",     VX (4, 1165),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11503
{"evsubfhx",      VX (4, 1166),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11504
{"evsubfhxss",      VX (4, 1167),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11505
{"evaddd",      VX (4, 1168),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11506
{"evadddss",      VX (4, 1169),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11507
{"evsubfd",     VX (4, 1170),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11508
{"evsubfdss",     VX (4, 1171),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11509
{"evaddb",      VX (4, 1172),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11510
{"evaddbss",      VX (4, 1173),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11511
{"evsubfb",     VX (4, 1174),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11512
{"evsubfbss",     VX (4, 1175),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11513
{"evaddsubfh",      VX (4, 1176),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11514
{"evaddsubfhss",    VX (4, 1177),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11515
{"evsubfaddh",      VX (4, 1178),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11516
{"evsubfaddhss",    VX (4, 1179),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11517
{"evaddsubfhx",     VX (4, 1180),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11518
{"evaddsubfhxss",   VX (4, 1181),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11519
{"evsubfaddhx",     VX (4, 1182),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11520
{"evsubfaddhxss",   VX (4, 1183),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11521
{"evadddus",      VX (4, 1184),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11522
{"evaddbus",      VX (4, 1185),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11523
{"evsubfdus",     VX (4, 1186),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11524
{"evsubfbus",     VX (4, 1187),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11525
{"evaddwus",      VX (4, 1188),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11526
{"evaddwxus",     VX (4, 1189),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11527
{"evsubfwus",     VX (4, 1190),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11528
{"evsubfwxus",      VX (4, 1191),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11529
{"evadd2subf2h",    VX (4, 1192),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11530
{"evadd2subf2hss",    VX (4, 1193),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11531
{"evsubf2add2h",    VX (4, 1194),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11532
{"evsubf2add2hss",    VX (4, 1195),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11533
{"evaddhus",      VX (4, 1196),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11534
{"evaddhxus",     VX (4, 1197),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11535
{"evsubfhus",     VX (4, 1198),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11536
{"evsubfhxus",      VX (4, 1199),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11537
{"evaddwss",      VX (4, 1201),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11538
{"evsubfwss",     VX (4, 1203),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11539
{"evaddwx",     VX (4, 1204),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11540
{"evaddwxss",     VX (4, 1205),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11541
{"evsubfwx",      VX (4, 1206),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11542
{"evsubfwxss",      VX (4, 1207),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11543
{"evaddsubfw",      VX (4, 1208),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11544
{"evaddsubfwss",    VX (4, 1209),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11545
{"evsubfaddw",      VX (4, 1210),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11546
{"evsubfaddwss",    VX (4, 1211),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11547
{"evaddsubfwx",     VX (4, 1212),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11548
{"evaddsubfwxss",   VX (4, 1213),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11549
{"evsubfaddwx",     VX (4, 1214),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11550
{"evsubfaddwxss",   VX (4, 1215),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11551
{"evmar",     VX_SPE2_EVMAR (4, 1220),  VX_SPE2_EVMAR_MASK, PPCSPE2, 0, {RD}},
11552
{"evsumwu",     VX_RB_CONST(4, 1221, 0),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11553
{"evsumws",     VX_RB_CONST(4, 1221, 1),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11554
{"evsum4bu",      VX_RB_CONST(4, 1221, 2),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11555
{"evsum4bs",      VX_RB_CONST(4, 1221, 3),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11556
{"evsum2hu",      VX_RB_CONST(4, 1221, 4),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11557
{"evsum2hs",      VX_RB_CONST(4, 1221, 5),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11558
{"evdiff2his",      VX_RB_CONST(4, 1221, 6),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11559
{"evsum2his",     VX_RB_CONST(4, 1221, 7),  VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11560
{"evsumwua",      VX_RB_CONST(4, 1221, 16), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11561
{"evsumwsa",      VX_RB_CONST(4, 1221, 17), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11562
{"evsum4bua",     VX_RB_CONST(4, 1221, 18), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11563
{"evsum4bsa",     VX_RB_CONST(4, 1221, 19), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11564
{"evsum2hua",     VX_RB_CONST(4, 1221, 20), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11565
{"evsum2hsa",     VX_RB_CONST(4, 1221, 21), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11566
{"evdiff2hisa",     VX_RB_CONST(4, 1221, 22), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11567
{"evsum2hisa",      VX_RB_CONST(4, 1221, 23), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11568
{"evsumwuaa",     VX_RB_CONST(4, 1221, 24), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11569
{"evsumwsaa",     VX_RB_CONST(4, 1221, 25), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11570
{"evsum4buaaw",     VX_RB_CONST(4, 1221, 26), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11571
{"evsum4bsaaw",     VX_RB_CONST(4, 1221, 27), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11572
{"evsum2huaaw",     VX_RB_CONST(4, 1221, 28), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11573
{"evsum2hsaaw",     VX_RB_CONST(4, 1221, 29), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11574
{"evdiff2hisaaw",   VX_RB_CONST(4, 1221, 30), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11575
{"evsum2hisaaw",    VX_RB_CONST(4, 1221, 31), VX_RB_CONST_MASK, PPCSPE2, 0, {RD, RA}},
11576
{"evdivwsf",      VX (4, 1228),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11577
{"evdivwuf",      VX (4, 1229),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11578
{"evdivs",      VX (4, 1230),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11579
{"evdivu",      VX (4, 1231),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11580
{"evaddwegsi",      VX (4, 1232),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11581
{"evaddwegsf",      VX (4, 1233),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11582
{"evsubfwegsi",     VX (4, 1234),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11583
{"evsubfwegsf",     VX (4, 1235),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11584
{"evaddwogsi",      VX (4, 1236),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11585
{"evaddwogsf",      VX (4, 1237),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11586
{"evsubfwogsi",     VX (4, 1238),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11587
{"evsubfwogsf",     VX (4, 1239),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11588
{"evaddhhiuw",      VX (4, 1240),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11589
{"evaddhhisw",      VX (4, 1241),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11590
{"evsubfhhiuw",     VX (4, 1242),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11591
{"evsubfhhisw",     VX (4, 1243),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11592
{"evaddhlouw",      VX (4, 1244),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11593
{"evaddhlosw",      VX (4, 1245),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11594
{"evsubfhlouw",     VX (4, 1246),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11595
{"evsubfhlosw",     VX (4, 1247),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11596
{"evmhesusiaaw",    VX (4, 1282),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11597
{"evmhosusiaaw",    VX (4, 1286),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11598
{"evmhesumiaaw",    VX (4, 1290),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11599
{"evmhosumiaaw",    VX (4, 1294),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11600
{"evmbeusiaah",     VX (4, 1296),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11601
{"evmbessiaah",     VX (4, 1297),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11602
{"evmbesusiaah",    VX (4, 1298),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11603
{"evmbousiaah",     VX (4, 1300),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11604
{"evmbossiaah",     VX (4, 1301),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11605
{"evmbosusiaah",    VX (4, 1302),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11606
{"evmbeumiaah",     VX (4, 1304),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11607
{"evmbesmiaah",     VX (4, 1305),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11608
{"evmbesumiaah",    VX (4, 1306),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11609
{"evmboumiaah",     VX (4, 1308),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11610
{"evmbosmiaah",     VX (4, 1309),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11611
{"evmbosumiaah",    VX (4, 1310),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11612
{"evmwlusiaaw3",    VX (4, 1346),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11613
{"evmwlssiaaw3",    VX (4, 1347),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11614
{"evmwhssfraaw3",   VX (4, 1348),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11615
{"evmwhssfaaw3",    VX (4, 1349),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11616
{"evmwhssfraaw",    VX (4, 1350),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11617
{"evmwhssfaaw",     VX (4, 1351),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11618
{"evmwlumiaaw3",    VX (4, 1354),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11619
{"evmwlsmiaaw3",    VX (4, 1355),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11620
{"evmwusiaa",     VX (4, 1360),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11621
{"evmwssiaa",     VX (4, 1361),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11622
{"evmwehgsmfraa",   VX (4, 1366),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11623
{"evmwehgsmfaa",    VX (4, 1367),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11624
{"evmwohgsmfraa",   VX (4, 1374),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11625
{"evmwohgsmfaa",    VX (4, 1375),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11626
{"evmhesusianw",    VX (4, 1410),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11627
{"evmhosusianw",    VX (4, 1414),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11628
{"evmhesumianw",    VX (4, 1418),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11629
{"evmhosumianw",    VX (4, 1422),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11630
{"evmbeusianh",     VX (4, 1424),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11631
{"evmbessianh",     VX (4, 1425),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11632
{"evmbesusianh",    VX (4, 1426),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11633
{"evmbousianh",     VX (4, 1428),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11634
{"evmbossianh",     VX (4, 1429),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11635
{"evmbosusianh",    VX (4, 1430),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11636
{"evmbeumianh",     VX (4, 1432),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11637
{"evmbesmianh",     VX (4, 1433),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11638
{"evmbesumianh",    VX (4, 1434),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11639
{"evmboumianh",     VX (4, 1436),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11640
{"evmbosmianh",     VX (4, 1437),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11641
{"evmbosumianh",    VX (4, 1438),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11642
{"evmwlusianw3",    VX (4, 1474),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11643
{"evmwlssianw3",    VX (4, 1475),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11644
{"evmwhssfranw3",   VX (4, 1476),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11645
{"evmwhssfanw3",    VX (4, 1477),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11646
{"evmwhssfranw",    VX (4, 1478),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11647
{"evmwhssfanw",     VX (4, 1479),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11648
{"evmwlumianw3",    VX (4, 1482),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11649
{"evmwlsmianw3",    VX (4, 1483),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11650
{"evmwusian",     VX (4, 1488),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11651
{"evmwssian",     VX (4, 1489),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11652
{"evmwehgsmfran",   VX (4, 1494),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11653
{"evmwehgsmfan",    VX (4, 1495),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11654
{"evmwohgsmfran",   VX (4, 1502),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11655
{"evmwohgsmfan",    VX (4, 1503),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11656
{"evseteqb",      VX (4, 1536),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11657
{"evseteqb.",     VX (4, 1537),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11658
{"evseteqh",      VX (4, 1538),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11659
{"evseteqh.",     VX (4, 1539),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11660
{"evseteqw",      VX (4, 1540),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11661
{"evseteqw.",     VX (4, 1541),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11662
{"evsetgthu",     VX (4, 1544),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11663
{"evsetgthu.",      VX (4, 1545),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11664
{"evsetgths",     VX (4, 1546),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11665
{"evsetgths.",      VX (4, 1547),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11666
{"evsetgtwu",     VX (4, 1548),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11667
{"evsetgtwu.",      VX (4, 1549),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11668
{"evsetgtws",     VX (4, 1550),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11669
{"evsetgtws.",      VX (4, 1551),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11670
{"evsetgtbu",     VX (4, 1552),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11671
{"evsetgtbu.",      VX (4, 1553),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11672
{"evsetgtbs",     VX (4, 1554),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11673
{"evsetgtbs.",      VX (4, 1555),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11674
{"evsetltbu",     VX (4, 1556),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11675
{"evsetltbu.",      VX (4, 1557),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11676
{"evsetltbs",     VX (4, 1558),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11677
{"evsetltbs.",      VX (4, 1559),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11678
{"evsetlthu",     VX (4, 1560),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11679
{"evsetlthu.",      VX (4, 1561),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11680
{"evsetlths",     VX (4, 1562),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11681
{"evsetlths.",      VX (4, 1563),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11682
{"evsetltwu",     VX (4, 1564),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11683
{"evsetltwu.",      VX (4, 1565),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11684
{"evsetltws",     VX (4, 1566),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11685
{"evsetltws.",      VX (4, 1567),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11686
{"evsaduw",     VX (4, 1568),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11687
{"evsadsw",     VX (4, 1569),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11688
{"evsad4ub",      VX (4, 1570),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11689
{"evsad4sb",      VX (4, 1571),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11690
{"evsad2uh",      VX (4, 1572),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11691
{"evsad2sh",      VX (4, 1573),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11692
{"evsaduwa",      VX (4, 1576),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11693
{"evsadswa",      VX (4, 1577),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11694
{"evsad4uba",     VX (4, 1578),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11695
{"evsad4sba",     VX (4, 1579),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11696
{"evsad2uha",     VX (4, 1580),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11697
{"evsad2sha",     VX (4, 1581),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11698
{"evabsdifuw",      VX (4, 1584),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11699
{"evabsdifsw",      VX (4, 1585),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11700
{"evabsdifub",      VX (4, 1586),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11701
{"evabsdifsb",      VX (4, 1587),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11702
{"evabsdifuh",      VX (4, 1588),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11703
{"evabsdifsh",      VX (4, 1589),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11704
{"evsaduwaa",     VX (4, 1592),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11705
{"evsadswaa",     VX (4, 1593),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11706
{"evsad4ubaaw",     VX (4, 1594),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11707
{"evsad4sbaaw",     VX (4, 1595),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11708
{"evsad2uhaaw",     VX (4, 1596),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11709
{"evsad2shaaw",     VX (4, 1597),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11710
{"evpkshubs",     VX (4, 1600),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11711
{"evpkshsbs",     VX (4, 1601),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11712
{"evpkswuhs",     VX (4, 1602),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11713
{"evpkswshs",     VX (4, 1603),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11714
{"evpkuhubs",     VX (4, 1604),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11715
{"evpkuwuhs",     VX (4, 1605),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11716
{"evpkswshilvs",    VX (4, 1606),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11717
{"evpkswgshefrs",   VX (4, 1607),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11718
{"evpkswshfrs",     VX (4, 1608),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11719
{"evpkswshilvfrs",    VX (4, 1609),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11720
{"evpksdswfrs",     VX (4, 1610),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11721
{"evpksdshefrs",    VX (4, 1611),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11722
{"evpkuduws",     VX (4, 1612),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11723
{"evpksdsws",     VX (4, 1613),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11724
{"evpkswgswfrs",    VX (4, 1614),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11725
{"evilveh",     VX (4, 1616),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11726
{"evilveoh",      VX (4, 1617),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11727
{"evilvhih",      VX (4, 1618),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11728
{"evilvhiloh",      VX (4, 1619),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11729
{"evilvloh",      VX (4, 1620),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11730
{"evilvlohih",      VX (4, 1621),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11731
{"evilvoeh",      VX (4, 1622),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11732
{"evilvoh",     VX (4, 1623),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11733
{"evdlveb",     VX (4, 1624),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11734
{"evdlveh",     VX (4, 1625),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11735
{"evdlveob",      VX (4, 1626),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11736
{"evdlveoh",      VX (4, 1627),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11737
{"evdlvob",     VX (4, 1628),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11738
{"evdlvoh",     VX (4, 1629),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11739
{"evdlvoeb",      VX (4, 1630),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11740
{"evdlvoeh",      VX (4, 1631),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11741
{"evmaxbu",     VX (4, 1632),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11742
{"evmaxbs",     VX (4, 1633),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11743
{"evmaxhu",     VX (4, 1634),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11744
{"evmaxhs",     VX (4, 1635),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11745
{"evmaxwu",     VX (4, 1636),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11746
{"evmaxws",     VX (4, 1637),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11747
{"evmaxdu",     VX (4, 1638),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11748
{"evmaxds",     VX (4, 1639),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11749
{"evminbu",     VX (4, 1640),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11750
{"evminbs",     VX (4, 1641),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11751
{"evminhu",     VX (4, 1642),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11752
{"evminhs",     VX (4, 1643),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11753
{"evminwu",     VX (4, 1644),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11754
{"evminws",     VX (4, 1645),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11755
{"evmindu",     VX (4, 1646),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11756
{"evminds",     VX (4, 1647),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11757
{"evavgwu",     VX (4, 1648),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11758
{"evavgws",     VX (4, 1649),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11759
{"evavgbu",     VX (4, 1650),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11760
{"evavgbs",     VX (4, 1651),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11761
{"evavghu",     VX (4, 1652),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11762
{"evavghs",     VX (4, 1653),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11763
{"evavgdu",     VX (4, 1654),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11764
{"evavgds",     VX (4, 1655),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11765
{"evavgwur",      VX (4, 1656),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11766
{"evavgwsr",      VX (4, 1657),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11767
{"evavgbur",      VX (4, 1658),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11768
{"evavgbsr",      VX (4, 1659),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11769
{"evavghur",      VX (4, 1660),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11770
{"evavghsr",      VX (4, 1661),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11771
{"evavgdur",      VX (4, 1662),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11772
{"evavgdsr",      VX (4, 1663),   VX_MASK,    PPCSPE2, 0, {RD, RA, RB}},
11773
};
11774
11775
const unsigned int spe2_num_opcodes = ARRAY_SIZE (spe2_opcodes);