PR21990, Integer overflow in process_version_sections
[deliverable/binutils-gdb.git] / opcodes / ppc-opc.c
1 /* ppc-opc.c -- PowerPC opcode list
2 Copyright (C) 1994-2017 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
27 /* This file holds the PowerPC opcode table. The opcode table
28 includes almost all of the extended instruction mnemonics. This
29 permits the disassembler to use them, and simplifies the assembler
30 logic, at the cost of increasing the table size. The table is
31 strictly constant data, so the compiler should be able to put it in
32 the .text section.
33
34 This file also holds the operand table. All knowledge about
35 inserting operands into instructions and vice-versa is kept in this
36 file. */
37 \f
38 /* Local insertion and extraction functions. */
39
40 static unsigned long insert_arx (unsigned long, long, ppc_cpu_t, const char **);
41 static long extract_arx (unsigned long, ppc_cpu_t, int *);
42 static unsigned long insert_ary (unsigned long, long, ppc_cpu_t, const char **);
43 static long extract_ary (unsigned long, ppc_cpu_t, int *);
44 static unsigned long insert_bat (unsigned long, long, ppc_cpu_t, const char **);
45 static long extract_bat (unsigned long, ppc_cpu_t, int *);
46 static unsigned long insert_bba (unsigned long, long, ppc_cpu_t, const char **);
47 static long extract_bba (unsigned long, ppc_cpu_t, int *);
48 static unsigned long insert_bdm (unsigned long, long, ppc_cpu_t, const char **);
49 static long extract_bdm (unsigned long, ppc_cpu_t, int *);
50 static unsigned long insert_bdp (unsigned long, long, ppc_cpu_t, const char **);
51 static long extract_bdp (unsigned long, ppc_cpu_t, int *);
52 static unsigned long insert_bo (unsigned long, long, ppc_cpu_t, const char **);
53 static long extract_bo (unsigned long, ppc_cpu_t, int *);
54 static unsigned long insert_boe (unsigned long, long, ppc_cpu_t, const char **);
55 static long extract_boe (unsigned long, ppc_cpu_t, int *);
56 static unsigned long insert_esync (unsigned long, long, ppc_cpu_t, const char **);
57 static long extract_esync (unsigned long, ppc_cpu_t, int *);
58 static unsigned long insert_dcmxs (unsigned long, long, ppc_cpu_t, const char **);
59 static long extract_dcmxs (unsigned long, ppc_cpu_t, int *);
60 static unsigned long insert_dxd (unsigned long, long, ppc_cpu_t, const char **);
61 static long extract_dxd (unsigned long, ppc_cpu_t, int *);
62 static unsigned long insert_dxdn (unsigned long, long, ppc_cpu_t, const char **);
63 static long extract_dxdn (unsigned long, ppc_cpu_t, int *);
64 static unsigned long insert_fxm (unsigned long, long, ppc_cpu_t, const char **);
65 static long extract_fxm (unsigned long, ppc_cpu_t, int *);
66 static unsigned long insert_li20 (unsigned long, long, ppc_cpu_t, const char **);
67 static long extract_li20 (unsigned long, ppc_cpu_t, int *);
68 static unsigned long insert_ls (unsigned long, long, ppc_cpu_t, const char **);
69 static long extract_ls (unsigned long, ppc_cpu_t, int *);
70 static unsigned long insert_mbe (unsigned long, long, ppc_cpu_t, const char **);
71 static long extract_mbe (unsigned long, ppc_cpu_t, int *);
72 static unsigned long insert_mb6 (unsigned long, long, ppc_cpu_t, const char **);
73 static long extract_mb6 (unsigned long, ppc_cpu_t, int *);
74 static long extract_nb (unsigned long, ppc_cpu_t, int *);
75 static unsigned long insert_nbi (unsigned long, long, ppc_cpu_t, const char **);
76 static unsigned long insert_nsi (unsigned long, long, ppc_cpu_t, const char **);
77 static long extract_nsi (unsigned long, ppc_cpu_t, int *);
78 static unsigned long insert_oimm (unsigned long, long, ppc_cpu_t, const char **);
79 static long extract_oimm (unsigned long, ppc_cpu_t, int *);
80 static unsigned long insert_ral (unsigned long, long, ppc_cpu_t, const char **);
81 static long extract_ral (unsigned long, ppc_cpu_t, int *);
82 static unsigned long insert_ram (unsigned long, long, ppc_cpu_t, const char **);
83 static long extract_ram (unsigned long, ppc_cpu_t, int *);
84 static unsigned long insert_raq (unsigned long, long, ppc_cpu_t, const char **);
85 static long extract_raq (unsigned long, ppc_cpu_t, int *);
86 static unsigned long insert_ras (unsigned long, long, ppc_cpu_t, const char **);
87 static long extract_ras (unsigned long, ppc_cpu_t, int *);
88 static unsigned long insert_rbs (unsigned long, long, ppc_cpu_t, const char **);
89 static long extract_rbs (unsigned long, ppc_cpu_t, int *);
90 static unsigned long insert_rbx (unsigned long, long, ppc_cpu_t, const char **);
91 static long extract_rbx (unsigned long, ppc_cpu_t, int *);
92 static unsigned long insert_rx (unsigned long, long, ppc_cpu_t, const char **);
93 static long extract_rx (unsigned long, ppc_cpu_t, int *);
94 static unsigned long insert_ry (unsigned long, long, ppc_cpu_t, const char **);
95 static long extract_ry (unsigned long, ppc_cpu_t, int *);
96 static unsigned long insert_sh6 (unsigned long, long, ppc_cpu_t, const char **);
97 static long extract_sh6 (unsigned long, ppc_cpu_t, int *);
98 static unsigned long insert_sci8 (unsigned long, long, ppc_cpu_t, const char **);
99 static long extract_sci8 (unsigned long, ppc_cpu_t, int *);
100 static unsigned long insert_sci8n (unsigned long, long, ppc_cpu_t, const char **);
101 static long extract_sci8n (unsigned long, ppc_cpu_t, int *);
102 static unsigned long insert_sd4h (unsigned long, long, ppc_cpu_t, const char **);
103 static long extract_sd4h (unsigned long, ppc_cpu_t, int *);
104 static unsigned long insert_sd4w (unsigned long, long, ppc_cpu_t, const char **);
105 static long extract_sd4w (unsigned long, ppc_cpu_t, int *);
106 static unsigned long insert_spr (unsigned long, long, ppc_cpu_t, const char **);
107 static long extract_spr (unsigned long, ppc_cpu_t, int *);
108 static unsigned long insert_sprg (unsigned long, long, ppc_cpu_t, const char **);
109 static long extract_sprg (unsigned long, ppc_cpu_t, int *);
110 static unsigned long insert_tbr (unsigned long, long, ppc_cpu_t, const char **);
111 static long extract_tbr (unsigned long, ppc_cpu_t, int *);
112 static unsigned long insert_xt6 (unsigned long, long, ppc_cpu_t, const char **);
113 static long extract_xt6 (unsigned long, ppc_cpu_t, int *);
114 static unsigned long insert_xtq6 (unsigned long, long, ppc_cpu_t, const char **);
115 static long extract_xtq6 (unsigned long, ppc_cpu_t, int *);
116 static unsigned long insert_xa6 (unsigned long, long, ppc_cpu_t, const char **);
117 static long extract_xa6 (unsigned long, ppc_cpu_t, int *);
118 static unsigned long insert_xb6 (unsigned long, long, ppc_cpu_t, const char **);
119 static long extract_xb6 (unsigned long, ppc_cpu_t, int *);
120 static unsigned long insert_xb6s (unsigned long, long, ppc_cpu_t, const char **);
121 static long extract_xb6s (unsigned long, ppc_cpu_t, int *);
122 static unsigned long insert_xc6 (unsigned long, long, ppc_cpu_t, const char **);
123 static long extract_xc6 (unsigned long, ppc_cpu_t, int *);
124 static unsigned long insert_dm (unsigned long, long, ppc_cpu_t, const char **);
125 static long extract_dm (unsigned long, ppc_cpu_t, int *);
126 static unsigned long insert_vlesi (unsigned long, long, ppc_cpu_t, const char **);
127 static long extract_vlesi (unsigned long, ppc_cpu_t, int *);
128 static unsigned long insert_vlensi (unsigned long, long, ppc_cpu_t, const char **);
129 static long extract_vlensi (unsigned long, ppc_cpu_t, int *);
130 static unsigned long insert_vleui (unsigned long, long, ppc_cpu_t, const char **);
131 static long extract_vleui (unsigned long, ppc_cpu_t, int *);
132 static unsigned long insert_vleil (unsigned long, long, ppc_cpu_t, const char **);
133 static long extract_vleil (unsigned long, ppc_cpu_t, int *);
134 static unsigned long insert_evuimm2_ex0 (unsigned long, long, ppc_cpu_t, const char **);
135 static long extract_evuimm2_ex0 (unsigned long, ppc_cpu_t, int *);
136 static unsigned long insert_evuimm4_ex0 (unsigned long, long, ppc_cpu_t, const char **);
137 static long extract_evuimm4_ex0 (unsigned long, ppc_cpu_t, int *);
138 static unsigned long insert_evuimm8_ex0 (unsigned long, long, ppc_cpu_t, const char **);
139 static long extract_evuimm8_ex0 (unsigned long, ppc_cpu_t, int *);
140 static unsigned long insert_evuimm_lt16 (unsigned long, long, ppc_cpu_t, const char **);
141 static long extract_evuimm_lt16 (unsigned long, ppc_cpu_t, int *);
142 static unsigned long insert_rD_rS_even (unsigned long, long, ppc_cpu_t, const char **);
143 static long extract_rD_rS_even (unsigned long, ppc_cpu_t, int *);
144 static unsigned long insert_off_lsp (unsigned long, long, ppc_cpu_t, const char **);
145 static long extract_off_lsp (unsigned long, ppc_cpu_t, int *);
146 \f
147 /* The operands table.
148
149 The fields are bitm, shift, insert, extract, flags.
150
151 We used to put parens around the various additions, like the one
152 for BA just below. However, that caused trouble with feeble
153 compilers with a limit on depth of a parenthesized expression, like
154 (reportedly) the compiler in Microsoft Developer Studio 5. So we
155 omit the parens, since the macros are never used in a context where
156 the addition will be ambiguous. */
157
158 const struct powerpc_operand powerpc_operands[] =
159 {
160 /* The zero index is used to indicate the end of the list of
161 operands. */
162 #define UNUSED 0
163 { 0, 0, NULL, NULL, 0 },
164
165 /* The BA field in an XL form instruction. */
166 #define BA UNUSED + 1
167 /* The BI field in a B form or XL form instruction. */
168 #define BI BA
169 #define BI_MASK (0x1f << 16)
170 { 0x1f, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
171
172 /* The BA field in an XL form instruction when it must be the same
173 as the BT field in the same instruction. */
174 #define BAT BA + 1
175 { 0x1f, 16, insert_bat, extract_bat, PPC_OPERAND_FAKE },
176
177 /* The BB field in an XL form instruction. */
178 #define BB BAT + 1
179 #define BB_MASK (0x1f << 11)
180 { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR_BIT },
181
182 /* The BB field in an XL form instruction when it must be the same
183 as the BA field in the same instruction. */
184 #define BBA BB + 1
185 /* The VB field in a VX form instruction when it must be the same
186 as the VA field in the same instruction. */
187 #define VBA BBA
188 { 0x1f, 11, insert_bba, extract_bba, PPC_OPERAND_FAKE },
189
190 /* The BD field in a B form instruction. The lower two bits are
191 forced to zero. */
192 #define BD BBA + 1
193 { 0xfffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
194
195 /* The BD field in a B form instruction when absolute addressing is
196 used. */
197 #define BDA BD + 1
198 { 0xfffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
199
200 /* The BD field in a B form instruction when the - modifier is used.
201 This sets the y bit of the BO field appropriately. */
202 #define BDM BDA + 1
203 { 0xfffc, 0, insert_bdm, extract_bdm,
204 PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
205
206 /* The BD field in a B form instruction when the - modifier is used
207 and absolute address is used. */
208 #define BDMA BDM + 1
209 { 0xfffc, 0, insert_bdm, extract_bdm,
210 PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
211
212 /* The BD field in a B form instruction when the + modifier is used.
213 This sets the y bit of the BO field appropriately. */
214 #define BDP BDMA + 1
215 { 0xfffc, 0, insert_bdp, extract_bdp,
216 PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
217
218 /* The BD field in a B form instruction when the + modifier is used
219 and absolute addressing is used. */
220 #define BDPA BDP + 1
221 { 0xfffc, 0, insert_bdp, extract_bdp,
222 PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
223
224 /* The BF field in an X or XL form instruction. */
225 #define BF BDPA + 1
226 /* The CRFD field in an X form instruction. */
227 #define CRFD BF
228 /* The CRD field in an XL form instruction. */
229 #define CRD BF
230 { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG },
231
232 /* The BF field in an X or XL form instruction. */
233 #define BFF BF + 1
234 { 0x7, 23, NULL, NULL, 0 },
235
236 /* An optional BF field. This is used for comparison instructions,
237 in which an omitted BF field is taken as zero. */
238 #define OBF BFF + 1
239 { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
240
241 /* The BFA field in an X or XL form instruction. */
242 #define BFA OBF + 1
243 { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG },
244
245 /* The BO field in a B form instruction. Certain values are
246 illegal. */
247 #define BO BFA + 1
248 #define BO_MASK (0x1f << 21)
249 { 0x1f, 21, insert_bo, extract_bo, 0 },
250
251 /* The BO field in a B form instruction when the + or - modifier is
252 used. This is like the BO field, but it must be even. */
253 #define BOE BO + 1
254 { 0x1e, 21, insert_boe, extract_boe, 0 },
255
256 /* The RM field in an X form instruction. */
257 #define RM BOE + 1
258 { 0x3, 11, NULL, NULL, 0 },
259
260 #define BH RM + 1
261 { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
262
263 /* The BT field in an X or XL form instruction. */
264 #define BT BH + 1
265 { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT },
266
267 /* The BI16 field in a BD8 form instruction. */
268 #define BI16 BT + 1
269 { 0x3, 8, NULL, NULL, PPC_OPERAND_CR_BIT },
270
271 /* The BI32 field in a BD15 form instruction. */
272 #define BI32 BI16 + 1
273 { 0xf, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
274
275 /* The BO32 field in a BD15 form instruction. */
276 #define BO32 BI32 + 1
277 { 0x3, 20, NULL, NULL, 0 },
278
279 /* The B8 field in a BD8 form instruction. */
280 #define B8 BO32 + 1
281 { 0x1fe, -1, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
282
283 /* The B15 field in a BD15 form instruction. The lowest bit is
284 forced to zero. */
285 #define B15 B8 + 1
286 { 0xfffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
287
288 /* The B24 field in a BD24 form instruction. The lowest bit is
289 forced to zero. */
290 #define B24 B15 + 1
291 { 0x1fffffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
292
293 /* The condition register number portion of the BI field in a B form
294 or XL form instruction. This is used for the extended
295 conditional branch mnemonics, which set the lower two bits of the
296 BI field. This field is optional. */
297 #define CR B24 + 1
298 { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
299
300 /* The CRB field in an X form instruction. */
301 #define CRB CR + 1
302 /* The MB field in an M form instruction. */
303 #define MB CRB
304 #define MB_MASK (0x1f << 6)
305 { 0x1f, 6, NULL, NULL, 0 },
306
307 /* The CRD32 field in an XL form instruction. */
308 #define CRD32 CRB + 1
309 { 0x3, 21, NULL, NULL, PPC_OPERAND_CR_REG },
310
311 /* The CRFS field in an X form instruction. */
312 #define CRFS CRD32 + 1
313 { 0x7, 0, NULL, NULL, PPC_OPERAND_CR_REG },
314
315 #define CRS CRFS + 1
316 { 0x3, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
317
318 /* The CT field in an X form instruction. */
319 #define CT CRS + 1
320 /* The MO field in an mbar instruction. */
321 #define MO CT
322 { 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
323
324 /* The D field in a D form instruction. This is a displacement off
325 a register, and implies that the next operand is a register in
326 parentheses. */
327 #define D CT + 1
328 { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
329
330 /* The D8 field in a D form instruction. This is a displacement off
331 a register, and implies that the next operand is a register in
332 parentheses. */
333 #define D8 D + 1
334 { 0xff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
335
336 /* The DCMX field in an X form instruction. */
337 #define DCMX D8 + 1
338 { 0x7f, 16, NULL, NULL, 0 },
339
340 /* The split DCMX field in an X form instruction. */
341 #define DCMXS DCMX + 1
342 { 0x7f, PPC_OPSHIFT_INV, insert_dcmxs, extract_dcmxs, 0 },
343
344 /* The DQ field in a DQ form instruction. This is like D, but the
345 lower four bits are forced to zero. */
346 #define DQ DCMXS + 1
347 { 0xfff0, 0, NULL, NULL,
348 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
349
350 /* The DS field in a DS form instruction. This is like D, but the
351 lower two bits are forced to zero. */
352 #define DS DQ + 1
353 { 0xfffc, 0, NULL, NULL,
354 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS },
355
356 /* The DUIS or BHRBE fields in a XFX form instruction, 10 bits
357 unsigned imediate */
358 #define DUIS DS + 1
359 #define BHRBE DUIS
360 { 0x3ff, 11, NULL, NULL, 0 },
361
362 /* The split D field in a DX form instruction. */
363 #define DXD DUIS + 1
364 { 0xffff, PPC_OPSHIFT_INV, insert_dxd, extract_dxd,
365 PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
366
367 /* The split ND field in a DX form instruction.
368 This is the same as the DX field, only negated. */
369 #define NDXD DXD + 1
370 { 0xffff, PPC_OPSHIFT_INV, insert_dxdn, extract_dxdn,
371 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
372
373 /* The E field in a wrteei instruction. */
374 /* And the W bit in the pair singles instructions. */
375 /* And the ST field in a VX form instruction. */
376 #define E NDXD + 1
377 #define PSW E
378 #define ST E
379 { 0x1, 15, NULL, NULL, 0 },
380
381 /* The FL1 field in a POWER SC form instruction. */
382 #define FL1 E + 1
383 /* The U field in an X form instruction. */
384 #define U FL1
385 { 0xf, 12, NULL, NULL, 0 },
386
387 /* The FL2 field in a POWER SC form instruction. */
388 #define FL2 FL1 + 1
389 { 0x7, 2, NULL, NULL, 0 },
390
391 /* The FLM field in an XFL form instruction. */
392 #define FLM FL2 + 1
393 { 0xff, 17, NULL, NULL, 0 },
394
395 /* The FRA field in an X or A form instruction. */
396 #define FRA FLM + 1
397 #define FRA_MASK (0x1f << 16)
398 { 0x1f, 16, NULL, NULL, PPC_OPERAND_FPR },
399
400 /* The FRAp field of DFP instructions. */
401 #define FRAp FRA + 1
402 { 0x1e, 16, NULL, NULL, PPC_OPERAND_FPR },
403
404 /* The FRB field in an X or A form instruction. */
405 #define FRB FRAp + 1
406 #define FRB_MASK (0x1f << 11)
407 { 0x1f, 11, NULL, NULL, PPC_OPERAND_FPR },
408
409 /* The FRBp field of DFP instructions. */
410 #define FRBp FRB + 1
411 { 0x1e, 11, NULL, NULL, PPC_OPERAND_FPR },
412
413 /* The FRC field in an A form instruction. */
414 #define FRC FRBp + 1
415 #define FRC_MASK (0x1f << 6)
416 { 0x1f, 6, NULL, NULL, PPC_OPERAND_FPR },
417
418 /* The FRS field in an X form instruction or the FRT field in a D, X
419 or A form instruction. */
420 #define FRS FRC + 1
421 #define FRT FRS
422 { 0x1f, 21, NULL, NULL, PPC_OPERAND_FPR },
423
424 /* The FRSp field of stfdp or the FRTp field of lfdp and DFP
425 instructions. */
426 #define FRSp FRS + 1
427 #define FRTp FRSp
428 { 0x1e, 21, NULL, NULL, PPC_OPERAND_FPR },
429
430 /* The FXM field in an XFX instruction. */
431 #define FXM FRSp + 1
432 { 0xff, 12, insert_fxm, extract_fxm, 0 },
433
434 /* Power4 version for mfcr. */
435 #define FXM4 FXM + 1
436 { 0xff, 12, insert_fxm, extract_fxm,
437 PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE},
438 /* If the FXM4 operand is ommitted, use the sentinel value -1. */
439 { -1, -1, NULL, NULL, 0},
440
441 /* The IMM20 field in an LI instruction. */
442 #define IMM20 FXM4 + 2
443 { 0xfffff, PPC_OPSHIFT_INV, insert_li20, extract_li20, PPC_OPERAND_SIGNED},
444
445 /* The L field in a D or X form instruction. */
446 #define L IMM20 + 1
447 { 0x1, 21, NULL, NULL, 0 },
448
449 /* The optional L field in tlbie and tlbiel instructions. */
450 #define LOPT L + 1
451 /* The R field in a HTM X form instruction. */
452 #define HTM_R LOPT
453 { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
454
455 /* The optional (for 32-bit) L field in cmp[l][i] instructions. */
456 #define L32OPT LOPT + 1
457 { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL32 },
458
459 /* The L field in dcbf instruction. */
460 #define L2OPT L32OPT + 1
461 { 0x3, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
462
463 /* The LEV field in a POWER SVC / POWER9 SCV form instruction. */
464 #define SVC_LEV L2OPT + 1
465 { 0x7f, 5, NULL, NULL, 0 },
466
467 /* The LEV field in an SC form instruction. */
468 #define LEV SVC_LEV + 1
469 { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL },
470
471 /* The LI field in an I form instruction. The lower two bits are
472 forced to zero. */
473 #define LI LEV + 1
474 { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
475
476 /* The LI field in an I form instruction when used as an absolute
477 address. */
478 #define LIA LI + 1
479 { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
480
481 /* The LS or WC field in an X (sync or wait) form instruction. */
482 #define LS LIA + 1
483 #define WC LS
484 { 0x3, 21, insert_ls, extract_ls, PPC_OPERAND_OPTIONAL },
485
486 /* The ME field in an M form instruction. */
487 #define ME LS + 1
488 #define ME_MASK (0x1f << 1)
489 { 0x1f, 1, NULL, NULL, 0 },
490
491 /* The MB and ME fields in an M form instruction expressed a single
492 operand which is a bitmask indicating which bits to select. This
493 is a two operand form using PPC_OPERAND_NEXT. See the
494 description in opcode/ppc.h for what this means. */
495 #define MBE ME + 1
496 { 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT },
497 { -1, 0, insert_mbe, extract_mbe, 0 },
498
499 /* The MB or ME field in an MD or MDS form instruction. The high
500 bit is wrapped to the low end. */
501 #define MB6 MBE + 2
502 #define ME6 MB6
503 #define MB6_MASK (0x3f << 5)
504 { 0x3f, 5, insert_mb6, extract_mb6, 0 },
505
506 /* The NB field in an X form instruction. The value 32 is stored as
507 0. */
508 #define NB MB6 + 1
509 { 0x1f, 11, NULL, extract_nb, PPC_OPERAND_PLUS1 },
510
511 /* The NBI field in an lswi instruction, which has special value
512 restrictions. The value 32 is stored as 0. */
513 #define NBI NB + 1
514 { 0x1f, 11, insert_nbi, extract_nb, PPC_OPERAND_PLUS1 },
515
516 /* The NSI field in a D form instruction. This is the same as the
517 SI field, only negated. */
518 #define NSI NBI + 1
519 { 0xffff, 0, insert_nsi, extract_nsi,
520 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
521
522 /* The NSI field in a D form instruction when we accept a wide range
523 of positive values. */
524 #define NSISIGNOPT NSI + 1
525 { 0xffff, 0, insert_nsi, extract_nsi,
526 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
527
528 /* The RA field in an D, DS, DQ, X, XO, M, or MDS form instruction. */
529 #define RA NSISIGNOPT + 1
530 #define RA_MASK (0x1f << 16)
531 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR },
532
533 /* As above, but 0 in the RA field means zero, not r0. */
534 #define RA0 RA + 1
535 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 },
536
537 /* The RA field in the DQ form lq or an lswx instruction, which have special
538 value restrictions. */
539 #define RAQ RA0 + 1
540 #define RAX RAQ
541 { 0x1f, 16, insert_raq, extract_raq, PPC_OPERAND_GPR_0 },
542
543 /* The RA field in a D or X form instruction which is an updating
544 load, which means that the RA field may not be zero and may not
545 equal the RT field. */
546 #define RAL RAQ + 1
547 { 0x1f, 16, insert_ral, extract_ral, PPC_OPERAND_GPR_0 },
548
549 /* The RA field in an lmw instruction, which has special value
550 restrictions. */
551 #define RAM RAL + 1
552 { 0x1f, 16, insert_ram, extract_ram, PPC_OPERAND_GPR_0 },
553
554 /* The RA field in a D or X form instruction which is an updating
555 store or an updating floating point load, which means that the RA
556 field may not be zero. */
557 #define RAS RAM + 1
558 { 0x1f, 16, insert_ras, extract_ras, PPC_OPERAND_GPR_0 },
559
560 /* The RA field of the tlbwe, dccci and iccci instructions,
561 which are optional. */
562 #define RAOPT RAS + 1
563 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
564
565 /* The RB field in an X, XO, M, or MDS form instruction. */
566 #define RB RAOPT + 1
567 #define RB_MASK (0x1f << 11)
568 { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR },
569
570 /* The RB field in an X form instruction when it must be the same as
571 the RS field in the instruction. This is used for extended
572 mnemonics like mr. */
573 #define RBS RB + 1
574 { 0x1f, 11, insert_rbs, extract_rbs, PPC_OPERAND_FAKE },
575
576 /* The RB field in an lswx instruction, which has special value
577 restrictions. */
578 #define RBX RBS + 1
579 { 0x1f, 11, insert_rbx, extract_rbx, PPC_OPERAND_GPR },
580
581 /* The RB field of the dccci and iccci instructions, which are optional. */
582 #define RBOPT RBX + 1
583 { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
584
585 /* The RC register field in an maddld, maddhd or maddhdu instruction. */
586 #define RC RBOPT + 1
587 { 0x1f, 6, NULL, NULL, PPC_OPERAND_GPR },
588
589 /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
590 instruction or the RT field in a D, DS, X, XFX or XO form
591 instruction. */
592 #define RS RC + 1
593 #define RT RS
594 #define RT_MASK (0x1f << 21)
595 #define RD RS
596 { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR },
597
598 #define RD_EVEN RS + 1
599 #define RS_EVEN RD_EVEN
600 { 0x1f, 21, insert_rD_rS_even, extract_rD_rS_even, PPC_OPERAND_GPR },
601
602 /* The RS and RT fields of the DS form stq and DQ form lq instructions,
603 which have special value restrictions. */
604 #define RSQ RS_EVEN + 1
605 #define RTQ RSQ
606 #define Q_MASK (1 << 21)
607 { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR },
608
609 /* The RS field of the tlbwe instruction, which is optional. */
610 #define RSO RSQ + 1
611 #define RTO RSO
612 { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
613
614 /* The RX field of the SE_RR form instruction. */
615 #define RX RSO + 1
616 { 0x1f, PPC_OPSHIFT_INV, insert_rx, extract_rx, PPC_OPERAND_GPR },
617
618 /* The ARX field of the SE_RR form instruction. */
619 #define ARX RX + 1
620 { 0x1f, PPC_OPSHIFT_INV, insert_arx, extract_arx, PPC_OPERAND_GPR },
621
622 /* The RY field of the SE_RR form instruction. */
623 #define RY ARX + 1
624 #define RZ RY
625 { 0x1f, PPC_OPSHIFT_INV, insert_ry, extract_ry, PPC_OPERAND_GPR },
626
627 /* The ARY field of the SE_RR form instruction. */
628 #define ARY RY + 1
629 { 0x1f, PPC_OPSHIFT_INV, insert_ary, extract_ary, PPC_OPERAND_GPR },
630
631 /* The SCLSCI8 field in a D form instruction. */
632 #define SCLSCI8 ARY + 1
633 { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8, extract_sci8, 0 },
634
635 /* The SCLSCI8N field in a D form instruction. This is the same as the
636 SCLSCI8 field, only negated. */
637 #define SCLSCI8N SCLSCI8 + 1
638 { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8n, extract_sci8n,
639 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
640
641 /* The SD field of the SD4 form instruction. */
642 #define SE_SD SCLSCI8N + 1
643 { 0xf, 8, NULL, NULL, PPC_OPERAND_PARENS },
644
645 /* The SD field of the SD4 form instruction, for halfword. */
646 #define SE_SDH SE_SD + 1
647 { 0x1e, PPC_OPSHIFT_INV, insert_sd4h, extract_sd4h, PPC_OPERAND_PARENS },
648
649 /* The SD field of the SD4 form instruction, for word. */
650 #define SE_SDW SE_SDH + 1
651 { 0x3c, PPC_OPSHIFT_INV, insert_sd4w, extract_sd4w, PPC_OPERAND_PARENS },
652
653 /* The SH field in an X or M form instruction. */
654 #define SH SE_SDW + 1
655 #define SH_MASK (0x1f << 11)
656 /* The other UIMM field in a EVX form instruction. */
657 #define EVUIMM SH
658 /* The FC field in an atomic X form instruction. */
659 #define FC SH
660 { 0x1f, 11, NULL, NULL, 0 },
661
662 #define EVUIMM_LT16 SH + 1
663 { 0x1f, 11, insert_evuimm_lt16, extract_evuimm_lt16, 0 },
664
665 /* The SI field in a HTM X form instruction. */
666 #define HTM_SI EVUIMM_LT16 + 1
667 { 0x1f, 11, NULL, NULL, PPC_OPERAND_SIGNED },
668
669 /* The SH field in an MD form instruction. This is split. */
670 #define SH6 HTM_SI + 1
671 #define SH6_MASK ((0x1f << 11) | (1 << 1))
672 { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_sh6, 0 },
673
674 /* The SH field of some variants of the tlbre and tlbwe
675 instructions, and the ELEV field of the e_sc instruction. */
676 #define SHO SH6 + 1
677 #define ELEV SHO
678 { 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
679
680 /* The SI field in a D form instruction. */
681 #define SI SHO + 1
682 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
683
684 /* The SI field in a D form instruction when we accept a wide range
685 of positive values. */
686 #define SISIGNOPT SI + 1
687 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
688
689 /* The SI8 field in a D form instruction. */
690 #define SI8 SISIGNOPT + 1
691 { 0xff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
692
693 /* The SPR field in an XFX form instruction. This is flipped--the
694 lower 5 bits are stored in the upper 5 and vice- versa. */
695 #define SPR SI8 + 1
696 #define PMR SPR
697 #define TMR SPR
698 #define SPR_MASK (0x3ff << 11)
699 { 0x3ff, 11, insert_spr, extract_spr, PPC_OPERAND_SPR },
700
701 /* The BAT index number in an XFX form m[ft]ibat[lu] instruction. */
702 #define SPRBAT SPR + 1
703 #define SPRBAT_MASK (0x3 << 17)
704 { 0x3, 17, NULL, NULL, 0 },
705
706 /* The SPRG register number in an XFX form m[ft]sprg instruction. */
707 #define SPRG SPRBAT + 1
708 { 0x1f, 16, insert_sprg, extract_sprg, PPC_OPERAND_SPR },
709
710 /* The SR field in an X form instruction. */
711 #define SR SPRG + 1
712 /* The 4-bit UIMM field in a VX form instruction. */
713 #define UIMM4 SR
714 { 0xf, 16, NULL, NULL, 0 },
715
716 /* The STRM field in an X AltiVec form instruction. */
717 #define STRM SR + 1
718 /* The T field in a tlbilx form instruction. */
719 #define T STRM
720 /* The L field in wclr instructions. */
721 #define L2 STRM
722 { 0x3, 21, NULL, NULL, 0 },
723
724 /* The ESYNC field in an X (sync) form instruction. */
725 #define ESYNC STRM + 1
726 { 0xf, 16, insert_esync, extract_esync, PPC_OPERAND_OPTIONAL },
727
728 /* The SV field in a POWER SC form instruction. */
729 #define SV ESYNC + 1
730 { 0x3fff, 2, NULL, NULL, 0 },
731
732 /* The TBR field in an XFX form instruction. This is like the SPR
733 field, but it is optional. */
734 #define TBR SV + 1
735 { 0x3ff, 11, insert_tbr, extract_tbr,
736 PPC_OPERAND_SPR | PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE},
737 /* If the TBR operand is ommitted, use the value 268. */
738 { -1, 268, NULL, NULL, 0},
739
740 /* The TO field in a D or X form instruction. */
741 #define TO TBR + 2
742 #define DUI TO
743 #define TO_MASK (0x1f << 21)
744 { 0x1f, 21, NULL, NULL, 0 },
745
746 /* The UI field in a D form instruction. */
747 #define UI TO + 1
748 { 0xffff, 0, NULL, NULL, 0 },
749
750 #define UISIGNOPT UI + 1
751 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNOPT },
752
753 /* The IMM field in an SE_IM5 instruction. */
754 #define UI5 UISIGNOPT + 1
755 { 0x1f, 4, NULL, NULL, 0 },
756
757 /* The OIMM field in an SE_OIM5 instruction. */
758 #define OIMM5 UI5 + 1
759 { 0x1f, PPC_OPSHIFT_INV, insert_oimm, extract_oimm, PPC_OPERAND_PLUS1 },
760
761 /* The UI7 field in an SE_LI instruction. */
762 #define UI7 OIMM5 + 1
763 { 0x7f, 4, NULL, NULL, 0 },
764
765 /* The VA field in a VA, VX or VXR form instruction. */
766 #define VA UI7 + 1
767 { 0x1f, 16, NULL, NULL, PPC_OPERAND_VR },
768
769 /* The VB field in a VA, VX or VXR form instruction. */
770 #define VB VA + 1
771 { 0x1f, 11, NULL, NULL, PPC_OPERAND_VR },
772
773 /* The VC field in a VA form instruction. */
774 #define VC VB + 1
775 { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR },
776
777 /* The VD or VS field in a VA, VX, VXR or X form instruction. */
778 #define VD VC + 1
779 #define VS VD
780 { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR },
781
782 /* The SIMM field in a VX form instruction, and TE in Z form. */
783 #define SIMM VD + 1
784 #define TE SIMM
785 { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED},
786
787 /* The UIMM field in a VX form instruction. */
788 #define UIMM SIMM + 1
789 #define DCTL UIMM
790 { 0x1f, 16, NULL, NULL, 0 },
791
792 /* The 3-bit UIMM field in a VX form instruction. */
793 #define UIMM3 UIMM + 1
794 { 0x7, 16, NULL, NULL, 0 },
795
796 /* The 6-bit UIM field in a X form instruction. */
797 #define UIM6 UIMM3 + 1
798 { 0x3f, 16, NULL, NULL, 0 },
799
800 /* The SIX field in a VX form instruction. */
801 #define SIX UIM6 + 1
802 { 0xf, 11, NULL, NULL, 0 },
803
804 /* The PS field in a VX form instruction. */
805 #define PS SIX + 1
806 { 0x1, 9, NULL, NULL, 0 },
807
808 /* The SHB field in a VA form instruction. */
809 #define SHB PS + 1
810 { 0xf, 6, NULL, NULL, 0 },
811
812 /* The other UIMM field in a half word EVX form instruction. */
813 #define EVUIMM_2 SHB + 1
814 { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
815
816 #define EVUIMM_2_EX0 EVUIMM_2 + 1
817 { 0x3e, 10, insert_evuimm2_ex0, extract_evuimm2_ex0, PPC_OPERAND_PARENS },
818
819 /* The other UIMM field in a word EVX form instruction. */
820 #define EVUIMM_4 EVUIMM_2_EX0 + 1
821 { 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS },
822
823 #define EVUIMM_4_EX0 EVUIMM_4 + 1
824 { 0x7c, 9, insert_evuimm4_ex0, extract_evuimm4_ex0, PPC_OPERAND_PARENS },
825
826 /* The other UIMM field in a double EVX form instruction. */
827 #define EVUIMM_8 EVUIMM_4_EX0 + 1
828 { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS },
829
830 #define EVUIMM_8_EX0 EVUIMM_8 + 1
831 { 0xf8, 8, insert_evuimm8_ex0, extract_evuimm8_ex0, PPC_OPERAND_PARENS },
832
833 /* The WS or DRM field in an X form instruction. */
834 #define WS EVUIMM_8_EX0 + 1
835 #define DRM WS
836 { 0x7, 11, NULL, NULL, 0 },
837
838 /* PowerPC paired singles extensions. */
839 /* W bit in the pair singles instructions for x type instructions. */
840 #define PSWM WS + 1
841 /* The BO16 field in a BD8 form instruction. */
842 #define BO16 PSWM
843 { 0x1, 10, 0, 0, 0 },
844
845 /* IDX bits for quantization in the pair singles instructions. */
846 #define PSQ PSWM + 1
847 { 0x7, 12, 0, 0, PPC_OPERAND_GQR },
848
849 /* IDX bits for quantization in the pair singles x-type instructions. */
850 #define PSQM PSQ + 1
851 { 0x7, 7, 0, 0, PPC_OPERAND_GQR },
852
853 /* Smaller D field for quantization in the pair singles instructions. */
854 #define PSD PSQM + 1
855 { 0xfff, 0, 0, 0, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
856
857 /* The L field in an mtmsrd or A form instruction or R or W in an X form. */
858 #define A_L PSD + 1
859 #define W A_L
860 #define X_R A_L
861 { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
862
863 /* The RMC or CY field in a Z23 form instruction. */
864 #define RMC A_L + 1
865 #define CY RMC
866 { 0x3, 9, NULL, NULL, 0 },
867
868 #define R RMC + 1
869 { 0x1, 16, NULL, NULL, 0 },
870
871 #define RIC R + 1
872 { 0x3, 18, NULL, NULL, PPC_OPERAND_OPTIONAL },
873
874 #define PRS RIC + 1
875 { 0x1, 17, NULL, NULL, PPC_OPERAND_OPTIONAL },
876
877 #define SP PRS + 1
878 { 0x3, 19, NULL, NULL, 0 },
879
880 #define S SP + 1
881 { 0x1, 20, NULL, NULL, 0 },
882
883 /* The S field in a XL form instruction. */
884 #define SXL S + 1
885 { 0x1, 11, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE},
886 /* If the SXL operand is ommitted, use the value 1. */
887 { -1, 1, NULL, NULL, 0},
888
889 /* SH field starting at bit position 16. */
890 #define SH16 SXL + 2
891 /* The DCM and DGM fields in a Z form instruction. */
892 #define DCM SH16
893 #define DGM DCM
894 { 0x3f, 10, NULL, NULL, 0 },
895
896 /* The EH field in larx instruction. */
897 #define EH SH16 + 1
898 { 0x1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL },
899
900 /* The L field in an mtfsf or XFL form instruction. */
901 /* The A field in a HTM X form instruction. */
902 #define XFL_L EH + 1
903 #define HTM_A XFL_L
904 { 0x1, 25, NULL, NULL, PPC_OPERAND_OPTIONAL},
905
906 /* Xilinx APU related masks and macros */
907 #define FCRT XFL_L + 1
908 #define FCRT_MASK (0x1f << 21)
909 { 0x1f, 21, 0, 0, PPC_OPERAND_FCR },
910
911 /* Xilinx FSL related masks and macros */
912 #define FSL FCRT + 1
913 #define FSL_MASK (0x1f << 11)
914 { 0x1f, 11, 0, 0, PPC_OPERAND_FSL },
915
916 /* Xilinx UDI related masks and macros */
917 #define URT FSL + 1
918 { 0x1f, 21, 0, 0, PPC_OPERAND_UDI },
919
920 #define URA URT + 1
921 { 0x1f, 16, 0, 0, PPC_OPERAND_UDI },
922
923 #define URB URA + 1
924 { 0x1f, 11, 0, 0, PPC_OPERAND_UDI },
925
926 #define URC URB + 1
927 { 0x1f, 6, 0, 0, PPC_OPERAND_UDI },
928
929 /* The VLESIMM field in a D form instruction. */
930 #define VLESIMM URC + 1
931 { 0xffff, PPC_OPSHIFT_INV, insert_vlesi, extract_vlesi,
932 PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
933
934 /* The VLENSIMM field in a D form instruction. */
935 #define VLENSIMM VLESIMM + 1
936 { 0xffff, PPC_OPSHIFT_INV, insert_vlensi, extract_vlensi,
937 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
938
939 /* The VLEUIMM field in a D form instruction. */
940 #define VLEUIMM VLENSIMM + 1
941 { 0xffff, PPC_OPSHIFT_INV, insert_vleui, extract_vleui, 0 },
942
943 /* The VLEUIMML field in a D form instruction. */
944 #define VLEUIMML VLEUIMM + 1
945 { 0xffff, PPC_OPSHIFT_INV, insert_vleil, extract_vleil, 0 },
946
947 /* The XT and XS fields in an XX1 or XX3 form instruction. This is split. */
948 #define XS6 VLEUIMML + 1
949 #define XT6 XS6
950 { 0x3f, PPC_OPSHIFT_INV, insert_xt6, extract_xt6, PPC_OPERAND_VSR },
951
952 /* The XT and XS fields in an DQ form VSX instruction. This is split. */
953 #define XSQ6 XT6 + 1
954 #define XTQ6 XSQ6
955 { 0x3f, PPC_OPSHIFT_INV, insert_xtq6, extract_xtq6, PPC_OPERAND_VSR },
956
957 /* The XA field in an XX3 form instruction. This is split. */
958 #define XA6 XTQ6 + 1
959 { 0x3f, PPC_OPSHIFT_INV, insert_xa6, extract_xa6, PPC_OPERAND_VSR },
960
961 /* The XB field in an XX2 or XX3 form instruction. This is split. */
962 #define XB6 XA6 + 1
963 { 0x3f, PPC_OPSHIFT_INV, insert_xb6, extract_xb6, PPC_OPERAND_VSR },
964
965 /* The XB field in an XX3 form instruction when it must be the same as
966 the XA field in the instruction. This is used in extended mnemonics
967 like xvmovdp. This is split. */
968 #define XB6S XB6 + 1
969 { 0x3f, PPC_OPSHIFT_INV, insert_xb6s, extract_xb6s, PPC_OPERAND_FAKE },
970
971 /* The XC field in an XX4 form instruction. This is split. */
972 #define XC6 XB6S + 1
973 { 0x3f, PPC_OPSHIFT_INV, insert_xc6, extract_xc6, PPC_OPERAND_VSR },
974
975 /* The DM or SHW field in an XX3 form instruction. */
976 #define DM XC6 + 1
977 #define SHW DM
978 { 0x3, 8, NULL, NULL, 0 },
979
980 /* The DM field in an extended mnemonic XX3 form instruction. */
981 #define DMEX DM + 1
982 { 0x3, 8, insert_dm, extract_dm, 0 },
983
984 /* The UIM field in an XX2 form instruction. */
985 #define UIM DMEX + 1
986 /* The 2-bit UIMM field in a VX form instruction. */
987 #define UIMM2 UIM
988 /* The 2-bit L field in a darn instruction. */
989 #define LRAND UIM
990 { 0x3, 16, NULL, NULL, 0 },
991
992 #define ERAT_T UIM + 1
993 { 0x7, 21, NULL, NULL, 0 },
994
995 #define IH ERAT_T + 1
996 { 0x7, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
997
998 /* The 8-bit IMM8 field in a XX1 form instruction. */
999 #define IMM8 IH + 1
1000 { 0xff, 11, NULL, NULL, PPC_OPERAND_SIGNOPT },
1001
1002 #define VX_OFF IMM8 + 1
1003 { 0x3, 0, insert_off_lsp, extract_off_lsp, 0 },
1004 };
1005
1006 const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
1007 / sizeof (powerpc_operands[0]));
1008
1009 /* The functions used to insert and extract complicated operands. */
1010
1011 /* The ARX, ARY, RX and RY operands are alternate encodings of GPRs. */
1012
1013 static unsigned long
1014 insert_arx (unsigned long insn,
1015 long value,
1016 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1017 const char **errmsg ATTRIBUTE_UNUSED)
1018 {
1019 if (value >= 8 && value < 24)
1020 return insn | ((value - 8) & 0xf);
1021 else
1022 {
1023 *errmsg = _("invalid register");
1024 return 0;
1025 }
1026 }
1027
1028 static long
1029 extract_arx (unsigned long insn,
1030 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1031 int *invalid ATTRIBUTE_UNUSED)
1032 {
1033 return (insn & 0xf) + 8;
1034 }
1035
1036 static unsigned long
1037 insert_ary (unsigned long insn,
1038 long value,
1039 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1040 const char **errmsg ATTRIBUTE_UNUSED)
1041 {
1042 if (value >= 8 && value < 24)
1043 return insn | (((value - 8) & 0xf) << 4);
1044 else
1045 {
1046 *errmsg = _("invalid register");
1047 return 0;
1048 }
1049 }
1050
1051 static long
1052 extract_ary (unsigned long insn,
1053 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1054 int *invalid ATTRIBUTE_UNUSED)
1055 {
1056 return ((insn >> 4) & 0xf) + 8;
1057 }
1058
1059 static unsigned long
1060 insert_rx (unsigned long insn,
1061 long value,
1062 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1063 const char **errmsg)
1064 {
1065 if (value >= 0 && value < 8)
1066 return insn | value;
1067 else if (value >= 24 && value <= 31)
1068 return insn | (value - 16);
1069 else
1070 {
1071 *errmsg = _("invalid register");
1072 return 0;
1073 }
1074 }
1075
1076 static long
1077 extract_rx (unsigned long insn,
1078 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1079 int *invalid ATTRIBUTE_UNUSED)
1080 {
1081 int value = insn & 0xf;
1082 if (value >= 0 && value < 8)
1083 return value;
1084 else
1085 return value + 16;
1086 }
1087
1088 static unsigned long
1089 insert_ry (unsigned long insn,
1090 long value,
1091 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1092 const char **errmsg)
1093 {
1094 if (value >= 0 && value < 8)
1095 return insn | (value << 4);
1096 else if (value >= 24 && value <= 31)
1097 return insn | ((value - 16) << 4);
1098 else
1099 {
1100 *errmsg = _("invalid register");
1101 return 0;
1102 }
1103 }
1104
1105 static long
1106 extract_ry (unsigned long insn,
1107 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1108 int *invalid ATTRIBUTE_UNUSED)
1109 {
1110 int value = (insn >> 4) & 0xf;
1111 if (value >= 0 && value < 8)
1112 return value;
1113 else
1114 return value + 16;
1115 }
1116
1117 /* The BA field in an XL form instruction when it must be the same as
1118 the BT field in the same instruction. This operand is marked FAKE.
1119 The insertion function just copies the BT field into the BA field,
1120 and the extraction function just checks that the fields are the
1121 same. */
1122
1123 static unsigned long
1124 insert_bat (unsigned long insn,
1125 long value ATTRIBUTE_UNUSED,
1126 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1127 const char **errmsg ATTRIBUTE_UNUSED)
1128 {
1129 return insn | (((insn >> 21) & 0x1f) << 16);
1130 }
1131
1132 static long
1133 extract_bat (unsigned long insn,
1134 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1135 int *invalid)
1136 {
1137 if (((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f))
1138 *invalid = 1;
1139 return 0;
1140 }
1141
1142 /* The BB field in an XL form instruction when it must be the same as
1143 the BA field in the same instruction. This operand is marked FAKE.
1144 The insertion function just copies the BA field into the BB field,
1145 and the extraction function just checks that the fields are the
1146 same. */
1147
1148 static unsigned long
1149 insert_bba (unsigned long insn,
1150 long value ATTRIBUTE_UNUSED,
1151 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1152 const char **errmsg ATTRIBUTE_UNUSED)
1153 {
1154 return insn | (((insn >> 16) & 0x1f) << 11);
1155 }
1156
1157 static long
1158 extract_bba (unsigned long insn,
1159 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1160 int *invalid)
1161 {
1162 if (((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
1163 *invalid = 1;
1164 return 0;
1165 }
1166
1167 /* The BD field in a B form instruction when the - modifier is used.
1168 This modifier means that the branch is not expected to be taken.
1169 For chips built to versions of the architecture prior to version 2
1170 (ie. not Power4 compatible), we set the y bit of the BO field to 1
1171 if the offset is negative. When extracting, we require that the y
1172 bit be 1 and that the offset be positive, since if the y bit is 0
1173 we just want to print the normal form of the instruction.
1174 Power4 compatible targets use two bits, "a", and "t", instead of
1175 the "y" bit. "at" == 00 => no hint, "at" == 01 => unpredictable,
1176 "at" == 10 => not taken, "at" == 11 => taken. The "t" bit is 00001
1177 in BO field, the "a" bit is 00010 for branch on CR(BI) and 01000
1178 for branch on CTR. We only handle the taken/not-taken hint here.
1179 Note that we don't relax the conditions tested here when
1180 disassembling with -Many because insns using extract_bdm and
1181 extract_bdp always occur in pairs. One or the other will always
1182 be valid. */
1183
1184 #define ISA_V2 (PPC_OPCODE_POWER4 | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
1185
1186 static unsigned long
1187 insert_bdm (unsigned long insn,
1188 long value,
1189 ppc_cpu_t dialect,
1190 const char **errmsg ATTRIBUTE_UNUSED)
1191 {
1192 if ((dialect & ISA_V2) == 0)
1193 {
1194 if ((value & 0x8000) != 0)
1195 insn |= 1 << 21;
1196 }
1197 else
1198 {
1199 if ((insn & (0x14 << 21)) == (0x04 << 21))
1200 insn |= 0x02 << 21;
1201 else if ((insn & (0x14 << 21)) == (0x10 << 21))
1202 insn |= 0x08 << 21;
1203 }
1204 return insn | (value & 0xfffc);
1205 }
1206
1207 static long
1208 extract_bdm (unsigned long insn,
1209 ppc_cpu_t dialect,
1210 int *invalid)
1211 {
1212 if ((dialect & ISA_V2) == 0)
1213 {
1214 if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
1215 *invalid = 1;
1216 }
1217 else
1218 {
1219 if ((insn & (0x17 << 21)) != (0x06 << 21)
1220 && (insn & (0x1d << 21)) != (0x18 << 21))
1221 *invalid = 1;
1222 }
1223
1224 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
1225 }
1226
1227 /* The BD field in a B form instruction when the + modifier is used.
1228 This is like BDM, above, except that the branch is expected to be
1229 taken. */
1230
1231 static unsigned long
1232 insert_bdp (unsigned long insn,
1233 long value,
1234 ppc_cpu_t dialect,
1235 const char **errmsg ATTRIBUTE_UNUSED)
1236 {
1237 if ((dialect & ISA_V2) == 0)
1238 {
1239 if ((value & 0x8000) == 0)
1240 insn |= 1 << 21;
1241 }
1242 else
1243 {
1244 if ((insn & (0x14 << 21)) == (0x04 << 21))
1245 insn |= 0x03 << 21;
1246 else if ((insn & (0x14 << 21)) == (0x10 << 21))
1247 insn |= 0x09 << 21;
1248 }
1249 return insn | (value & 0xfffc);
1250 }
1251
1252 static long
1253 extract_bdp (unsigned long insn,
1254 ppc_cpu_t dialect,
1255 int *invalid)
1256 {
1257 if ((dialect & ISA_V2) == 0)
1258 {
1259 if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
1260 *invalid = 1;
1261 }
1262 else
1263 {
1264 if ((insn & (0x17 << 21)) != (0x07 << 21)
1265 && (insn & (0x1d << 21)) != (0x19 << 21))
1266 *invalid = 1;
1267 }
1268
1269 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
1270 }
1271
1272 static inline int
1273 valid_bo_pre_v2 (long value)
1274 {
1275 /* Certain encodings have bits that are required to be zero.
1276 These are (z must be zero, y may be anything):
1277 0000y
1278 0001y
1279 001zy
1280 0100y
1281 0101y
1282 011zy
1283 1z00y
1284 1z01y
1285 1z1zz
1286 */
1287 if ((value & 0x14) == 0)
1288 return 1;
1289 else if ((value & 0x14) == 0x4)
1290 return (value & 0x2) == 0;
1291 else if ((value & 0x14) == 0x10)
1292 return (value & 0x8) == 0;
1293 else
1294 return value == 0x14;
1295 }
1296
1297 static inline int
1298 valid_bo_post_v2 (long value)
1299 {
1300 /* Certain encodings have bits that are required to be zero.
1301 These are (z must be zero, a & t may be anything):
1302 0000z
1303 0001z
1304 001at
1305 0100z
1306 0101z
1307 011at
1308 1a00t
1309 1a01t
1310 1z1zz
1311 */
1312 if ((value & 0x14) == 0)
1313 return (value & 0x1) == 0;
1314 else if ((value & 0x14) == 0x14)
1315 return value == 0x14;
1316 else
1317 return 1;
1318 }
1319
1320 /* Check for legal values of a BO field. */
1321
1322 static int
1323 valid_bo (long value, ppc_cpu_t dialect, int extract)
1324 {
1325 int valid_y = valid_bo_pre_v2 (value);
1326 int valid_at = valid_bo_post_v2 (value);
1327
1328 /* When disassembling with -Many, accept either encoding on the
1329 second pass through opcodes. */
1330 if (extract && dialect == ~(ppc_cpu_t) PPC_OPCODE_ANY)
1331 return valid_y || valid_at;
1332 if ((dialect & ISA_V2) == 0)
1333 return valid_y;
1334 else
1335 return valid_at;
1336 }
1337
1338 /* The BO field in a B form instruction. Warn about attempts to set
1339 the field to an illegal value. */
1340
1341 static unsigned long
1342 insert_bo (unsigned long insn,
1343 long value,
1344 ppc_cpu_t dialect,
1345 const char **errmsg)
1346 {
1347 if (!valid_bo (value, dialect, 0))
1348 *errmsg = _("invalid conditional option");
1349 else if (PPC_OP (insn) == 19 && (insn & 0x400) && ! (value & 4))
1350 *errmsg = _("invalid counter access");
1351 return insn | ((value & 0x1f) << 21);
1352 }
1353
1354 static long
1355 extract_bo (unsigned long insn,
1356 ppc_cpu_t dialect,
1357 int *invalid)
1358 {
1359 long value;
1360
1361 value = (insn >> 21) & 0x1f;
1362 if (!valid_bo (value, dialect, 1))
1363 *invalid = 1;
1364 return value;
1365 }
1366
1367 /* The BO field in a B form instruction when the + or - modifier is
1368 used. This is like the BO field, but it must be even. When
1369 extracting it, we force it to be even. */
1370
1371 static unsigned long
1372 insert_boe (unsigned long insn,
1373 long value,
1374 ppc_cpu_t dialect,
1375 const char **errmsg)
1376 {
1377 if (!valid_bo (value, dialect, 0))
1378 *errmsg = _("invalid conditional option");
1379 else if (PPC_OP (insn) == 19 && (insn & 0x400) && ! (value & 4))
1380 *errmsg = _("invalid counter access");
1381 else if ((value & 1) != 0)
1382 *errmsg = _("attempt to set y bit when using + or - modifier");
1383
1384 return insn | ((value & 0x1f) << 21);
1385 }
1386
1387 static long
1388 extract_boe (unsigned long insn,
1389 ppc_cpu_t dialect,
1390 int *invalid)
1391 {
1392 long value;
1393
1394 value = (insn >> 21) & 0x1f;
1395 if (!valid_bo (value, dialect, 1))
1396 *invalid = 1;
1397 return value & 0x1e;
1398 }
1399
1400 /* The DCMX field in a X form instruction when the field is split
1401 into separate DC, DM and DX fields. */
1402
1403 static unsigned long
1404 insert_dcmxs (unsigned long insn,
1405 long value,
1406 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1407 const char **errmsg ATTRIBUTE_UNUSED)
1408 {
1409 return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3) | (value & 0x40);
1410 }
1411
1412 static long
1413 extract_dcmxs (unsigned long insn,
1414 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1415 int *invalid ATTRIBUTE_UNUSED)
1416 {
1417 return (insn & 0x40) | ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
1418 }
1419
1420 /* The D field in a DX form instruction when the field is split
1421 into separate D0, D1 and D2 fields. */
1422
1423 static unsigned long
1424 insert_dxd (unsigned long insn,
1425 long value,
1426 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1427 const char **errmsg ATTRIBUTE_UNUSED)
1428 {
1429 return insn | (value & 0xffc1) | ((value & 0x3e) << 15);
1430 }
1431
1432 static long
1433 extract_dxd (unsigned long insn,
1434 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1435 int *invalid ATTRIBUTE_UNUSED)
1436 {
1437 unsigned long dxd = (insn & 0xffc1) | ((insn >> 15) & 0x3e);
1438 return (dxd ^ 0x8000) - 0x8000;
1439 }
1440
1441 static unsigned long
1442 insert_dxdn (unsigned long insn,
1443 long value,
1444 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1445 const char **errmsg ATTRIBUTE_UNUSED)
1446 {
1447 return insert_dxd (insn, -value, dialect, errmsg);
1448 }
1449
1450 static long
1451 extract_dxdn (unsigned long insn,
1452 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1453 int *invalid ATTRIBUTE_UNUSED)
1454 {
1455 return -extract_dxd (insn, dialect, invalid);
1456 }
1457
1458 /* FXM mask in mfcr and mtcrf instructions. */
1459
1460 static unsigned long
1461 insert_fxm (unsigned long insn,
1462 long value,
1463 ppc_cpu_t dialect,
1464 const char **errmsg)
1465 {
1466 /* If we're handling the mfocrf and mtocrf insns ensure that exactly
1467 one bit of the mask field is set. */
1468 if ((insn & (1 << 20)) != 0)
1469 {
1470 if (value == 0 || (value & -value) != value)
1471 {
1472 *errmsg = _("invalid mask field");
1473 value = 0;
1474 }
1475 }
1476
1477 /* If only one bit of the FXM field is set, we can use the new form
1478 of the instruction, which is faster. Unlike the Power4 branch hint
1479 encoding, this is not backward compatible. Do not generate the
1480 new form unless -mpower4 has been given, or -many and the two
1481 operand form of mfcr was used. */
1482 else if (value > 0
1483 && (value & -value) == value
1484 && ((dialect & PPC_OPCODE_POWER4) != 0
1485 || ((dialect & PPC_OPCODE_ANY) != 0
1486 && (insn & (0x3ff << 1)) == 19 << 1)))
1487 insn |= 1 << 20;
1488
1489 /* Any other value on mfcr is an error. */
1490 else if ((insn & (0x3ff << 1)) == 19 << 1)
1491 {
1492 /* A value of -1 means we used the one operand form of
1493 mfcr which is valid. */
1494 if (value != -1)
1495 *errmsg = _("invalid mfcr mask");
1496 value = 0;
1497 }
1498
1499 return insn | ((value & 0xff) << 12);
1500 }
1501
1502 static long
1503 extract_fxm (unsigned long insn,
1504 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1505 int *invalid)
1506 {
1507 long mask = (insn >> 12) & 0xff;
1508
1509 /* Is this a Power4 insn? */
1510 if ((insn & (1 << 20)) != 0)
1511 {
1512 /* Exactly one bit of MASK should be set. */
1513 if (mask == 0 || (mask & -mask) != mask)
1514 *invalid = 1;
1515 }
1516
1517 /* Check that non-power4 form of mfcr has a zero MASK. */
1518 else if ((insn & (0x3ff << 1)) == 19 << 1)
1519 {
1520 if (mask != 0)
1521 *invalid = 1;
1522 else
1523 mask = -1;
1524 }
1525
1526 return mask;
1527 }
1528
1529 static unsigned long
1530 insert_li20 (unsigned long insn,
1531 long value,
1532 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1533 const char **errmsg ATTRIBUTE_UNUSED)
1534 {
1535 return insn | ((value & 0xf0000) >> 5) | ((value & 0x0f800) << 5) | (value & 0x7ff);
1536 }
1537
1538 static long
1539 extract_li20 (unsigned long insn,
1540 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1541 int *invalid ATTRIBUTE_UNUSED)
1542 {
1543 long ext = ((insn & 0x4000) == 0x4000) ? 0xfff00000 : 0x00000000;
1544
1545 return ext
1546 | (((insn >> 11) & 0xf) << 16)
1547 | (((insn >> 17) & 0xf) << 12)
1548 | (((insn >> 16) & 0x1) << 11)
1549 | (insn & 0x7ff);
1550 }
1551
1552 /* The 2-bit L field in a SYNC or WC field in a WAIT instruction.
1553 For SYNC, some L values are reserved:
1554 * Value 3 is reserved on newer server cpus.
1555 * Values 2 and 3 are reserved on all other cpus. */
1556
1557 static unsigned long
1558 insert_ls (unsigned long insn,
1559 long value,
1560 ppc_cpu_t dialect,
1561 const char **errmsg)
1562 {
1563 /* For SYNC, some L values are illegal. */
1564 if (((insn >> 1) & 0x3ff) == 598)
1565 {
1566 long max_lvalue = (dialect & PPC_OPCODE_POWER4) ? 2 : 1;
1567 if (value > max_lvalue)
1568 {
1569 *errmsg = _("illegal L operand value");
1570 return insn;
1571 }
1572 }
1573
1574 return insn | ((value & 0x3) << 21);
1575 }
1576
1577 static long
1578 extract_ls (unsigned long insn,
1579 ppc_cpu_t dialect,
1580 int *invalid)
1581 {
1582 unsigned long lvalue = (insn >> 21) & 3;
1583
1584 if (((insn >> 1) & 0x3ff) == 598)
1585 {
1586 unsigned long max_lvalue = (dialect & PPC_OPCODE_POWER4) ? 2 : 1;
1587 if (lvalue > max_lvalue)
1588 *invalid = 1;
1589 }
1590 return lvalue;
1591 }
1592
1593 /* The 4-bit E field in a sync instruction that accepts 2 operands.
1594 If ESYNC is non-zero, then the L field must be either 0 or 1 and
1595 the complement of ESYNC-bit2. */
1596
1597 static unsigned long
1598 insert_esync (unsigned long insn,
1599 long value,
1600 ppc_cpu_t dialect,
1601 const char **errmsg)
1602 {
1603 unsigned long ls = (insn >> 21) & 0x03;
1604
1605 if (value == 0)
1606 {
1607 if (((dialect & PPC_OPCODE_E6500) != 0 && ls > 1)
1608 || ((dialect & PPC_OPCODE_POWER9) != 0 && ls > 2))
1609 *errmsg = _("illegal L operand value");
1610 return insn;
1611 }
1612
1613 if ((ls & ~0x1)
1614 || (((value >> 1) & 0x1) ^ ls) == 0)
1615 *errmsg = _("incompatible L operand value");
1616
1617 return insn | ((value & 0xf) << 16);
1618 }
1619
1620 static long
1621 extract_esync (unsigned long insn,
1622 ppc_cpu_t dialect,
1623 int *invalid)
1624 {
1625 unsigned long ls = (insn >> 21) & 0x3;
1626 unsigned long lvalue = (insn >> 16) & 0xf;
1627
1628 if (lvalue == 0)
1629 {
1630 if (((dialect & PPC_OPCODE_E6500) != 0 && ls > 1)
1631 || ((dialect & PPC_OPCODE_POWER9) != 0 && ls > 2))
1632 *invalid = 1;
1633 }
1634 else if ((ls & ~0x1)
1635 || (((lvalue >> 1) & 0x1) ^ ls) == 0)
1636 *invalid = 1;
1637
1638 return lvalue;
1639 }
1640
1641 /* The MB and ME fields in an M form instruction expressed as a single
1642 operand which is itself a bitmask. The extraction function always
1643 marks it as invalid, since we never want to recognize an
1644 instruction which uses a field of this type. */
1645
1646 static unsigned long
1647 insert_mbe (unsigned long insn,
1648 long value,
1649 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1650 const char **errmsg)
1651 {
1652 unsigned long uval, mask;
1653 int mb, me, mx, count, last;
1654
1655 uval = value;
1656
1657 if (uval == 0)
1658 {
1659 *errmsg = _("illegal bitmask");
1660 return insn;
1661 }
1662
1663 mb = 0;
1664 me = 32;
1665 if ((uval & 1) != 0)
1666 last = 1;
1667 else
1668 last = 0;
1669 count = 0;
1670
1671 /* mb: location of last 0->1 transition */
1672 /* me: location of last 1->0 transition */
1673 /* count: # transitions */
1674
1675 for (mx = 0, mask = 1L << 31; mx < 32; ++mx, mask >>= 1)
1676 {
1677 if ((uval & mask) && !last)
1678 {
1679 ++count;
1680 mb = mx;
1681 last = 1;
1682 }
1683 else if (!(uval & mask) && last)
1684 {
1685 ++count;
1686 me = mx;
1687 last = 0;
1688 }
1689 }
1690 if (me == 0)
1691 me = 32;
1692
1693 if (count != 2 && (count != 0 || ! last))
1694 *errmsg = _("illegal bitmask");
1695
1696 return insn | (mb << 6) | ((me - 1) << 1);
1697 }
1698
1699 static long
1700 extract_mbe (unsigned long insn,
1701 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1702 int *invalid)
1703 {
1704 long ret;
1705 int mb, me;
1706 int i;
1707
1708 *invalid = 1;
1709
1710 mb = (insn >> 6) & 0x1f;
1711 me = (insn >> 1) & 0x1f;
1712 if (mb < me + 1)
1713 {
1714 ret = 0;
1715 for (i = mb; i <= me; i++)
1716 ret |= 1L << (31 - i);
1717 }
1718 else if (mb == me + 1)
1719 ret = ~0;
1720 else /* (mb > me + 1) */
1721 {
1722 ret = ~0;
1723 for (i = me + 1; i < mb; i++)
1724 ret &= ~(1L << (31 - i));
1725 }
1726 return ret;
1727 }
1728
1729 /* The MB or ME field in an MD or MDS form instruction. The high bit
1730 is wrapped to the low end. */
1731
1732 static unsigned long
1733 insert_mb6 (unsigned long insn,
1734 long value,
1735 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1736 const char **errmsg ATTRIBUTE_UNUSED)
1737 {
1738 return insn | ((value & 0x1f) << 6) | (value & 0x20);
1739 }
1740
1741 static long
1742 extract_mb6 (unsigned long insn,
1743 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1744 int *invalid ATTRIBUTE_UNUSED)
1745 {
1746 return ((insn >> 6) & 0x1f) | (insn & 0x20);
1747 }
1748
1749 /* The NB field in an X form instruction. The value 32 is stored as
1750 0. */
1751
1752 static long
1753 extract_nb (unsigned long insn,
1754 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1755 int *invalid ATTRIBUTE_UNUSED)
1756 {
1757 long ret;
1758
1759 ret = (insn >> 11) & 0x1f;
1760 if (ret == 0)
1761 ret = 32;
1762 return ret;
1763 }
1764
1765 /* The NB field in an lswi instruction, which has special value
1766 restrictions. The value 32 is stored as 0. */
1767
1768 static unsigned long
1769 insert_nbi (unsigned long insn,
1770 long value,
1771 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1772 const char **errmsg ATTRIBUTE_UNUSED)
1773 {
1774 long rtvalue = (insn & RT_MASK) >> 21;
1775 long ravalue = (insn & RA_MASK) >> 16;
1776
1777 if (value == 0)
1778 value = 32;
1779 if (rtvalue + (value + 3) / 4 > (rtvalue > ravalue ? ravalue + 32
1780 : ravalue))
1781 *errmsg = _("address register in load range");
1782 return insn | ((value & 0x1f) << 11);
1783 }
1784
1785 /* The NSI field in a D form instruction. This is the same as the SI
1786 field, only negated. The extraction function always marks it as
1787 invalid, since we never want to recognize an instruction which uses
1788 a field of this type. */
1789
1790 static unsigned long
1791 insert_nsi (unsigned long insn,
1792 long value,
1793 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1794 const char **errmsg ATTRIBUTE_UNUSED)
1795 {
1796 return insn | (-value & 0xffff);
1797 }
1798
1799 static long
1800 extract_nsi (unsigned long insn,
1801 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1802 int *invalid)
1803 {
1804 *invalid = 1;
1805 return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
1806 }
1807
1808 /* The RA field in a D or X form instruction which is an updating
1809 load, which means that the RA field may not be zero and may not
1810 equal the RT field. */
1811
1812 static unsigned long
1813 insert_ral (unsigned long insn,
1814 long value,
1815 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1816 const char **errmsg)
1817 {
1818 if (value == 0
1819 || (unsigned long) value == ((insn >> 21) & 0x1f))
1820 *errmsg = "invalid register operand when updating";
1821 return insn | ((value & 0x1f) << 16);
1822 }
1823
1824 static long
1825 extract_ral (unsigned long insn,
1826 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1827 int *invalid)
1828 {
1829 long rtvalue = (insn >> 21) & 0x1f;
1830 long ravalue = (insn >> 16) & 0x1f;
1831
1832 if (rtvalue == ravalue || ravalue == 0)
1833 *invalid = 1;
1834 return ravalue;
1835 }
1836
1837 /* The RA field in an lmw instruction, which has special value
1838 restrictions. */
1839
1840 static unsigned long
1841 insert_ram (unsigned long insn,
1842 long value,
1843 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1844 const char **errmsg)
1845 {
1846 if ((unsigned long) value >= ((insn >> 21) & 0x1f))
1847 *errmsg = _("index register in load range");
1848 return insn | ((value & 0x1f) << 16);
1849 }
1850
1851 static long
1852 extract_ram (unsigned long insn,
1853 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1854 int *invalid)
1855 {
1856 unsigned long rtvalue = (insn >> 21) & 0x1f;
1857 unsigned long ravalue = (insn >> 16) & 0x1f;
1858
1859 if (ravalue >= rtvalue)
1860 *invalid = 1;
1861 return ravalue;
1862 }
1863
1864 /* The RA field in the DQ form lq or an lswx instruction, which have special
1865 value restrictions. */
1866
1867 static unsigned long
1868 insert_raq (unsigned long insn,
1869 long value,
1870 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1871 const char **errmsg)
1872 {
1873 long rtvalue = (insn & RT_MASK) >> 21;
1874
1875 if (value == rtvalue)
1876 *errmsg = _("source and target register operands must be different");
1877 return insn | ((value & 0x1f) << 16);
1878 }
1879
1880 static long
1881 extract_raq (unsigned long insn,
1882 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1883 int *invalid)
1884 {
1885 unsigned long rtvalue = (insn >> 21) & 0x1f;
1886 unsigned long ravalue = (insn >> 16) & 0x1f;
1887
1888 if (ravalue == rtvalue)
1889 *invalid = 1;
1890 return ravalue;
1891 }
1892
1893 /* The RA field in a D or X form instruction which is an updating
1894 store or an updating floating point load, which means that the RA
1895 field may not be zero. */
1896
1897 static unsigned long
1898 insert_ras (unsigned long insn,
1899 long value,
1900 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1901 const char **errmsg)
1902 {
1903 if (value == 0)
1904 *errmsg = _("invalid register operand when updating");
1905 return insn | ((value & 0x1f) << 16);
1906 }
1907
1908 static long
1909 extract_ras (unsigned long insn,
1910 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1911 int *invalid)
1912 {
1913 unsigned long ravalue = (insn >> 16) & 0x1f;
1914
1915 if (ravalue == 0)
1916 *invalid = 1;
1917 return ravalue;
1918 }
1919
1920 /* The RB field in an X form instruction when it must be the same as
1921 the RS field in the instruction. This is used for extended
1922 mnemonics like mr. This operand is marked FAKE. The insertion
1923 function just copies the BT field into the BA field, and the
1924 extraction function just checks that the fields are the same. */
1925
1926 static unsigned long
1927 insert_rbs (unsigned long insn,
1928 long value ATTRIBUTE_UNUSED,
1929 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1930 const char **errmsg ATTRIBUTE_UNUSED)
1931 {
1932 return insn | (((insn >> 21) & 0x1f) << 11);
1933 }
1934
1935 static long
1936 extract_rbs (unsigned long insn,
1937 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1938 int *invalid)
1939 {
1940 if (((insn >> 21) & 0x1f) != ((insn >> 11) & 0x1f))
1941 *invalid = 1;
1942 return 0;
1943 }
1944
1945 /* The RB field in an lswx instruction, which has special value
1946 restrictions. */
1947
1948 static unsigned long
1949 insert_rbx (unsigned long insn,
1950 long value,
1951 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1952 const char **errmsg)
1953 {
1954 long rtvalue = (insn & RT_MASK) >> 21;
1955
1956 if (value == rtvalue)
1957 *errmsg = _("source and target register operands must be different");
1958 return insn | ((value & 0x1f) << 11);
1959 }
1960
1961 static long
1962 extract_rbx (unsigned long insn,
1963 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1964 int *invalid)
1965 {
1966 unsigned long rtvalue = (insn >> 21) & 0x1f;
1967 unsigned long rbvalue = (insn >> 11) & 0x1f;
1968
1969 if (rbvalue == rtvalue)
1970 *invalid = 1;
1971 return rbvalue;
1972 }
1973
1974 /* The SCI8 field is made up of SCL and {U,N}I8 fields. */
1975 static unsigned long
1976 insert_sci8 (unsigned long insn,
1977 long value,
1978 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1979 const char **errmsg)
1980 {
1981 unsigned int fill_scale = 0;
1982 unsigned long ui8 = value;
1983
1984 if ((ui8 & 0xffffff00) == 0)
1985 ;
1986 else if ((ui8 & 0xffffff00) == 0xffffff00)
1987 fill_scale = 0x400;
1988 else if ((ui8 & 0xffff00ff) == 0)
1989 {
1990 fill_scale = 1 << 8;
1991 ui8 >>= 8;
1992 }
1993 else if ((ui8 & 0xffff00ff) == 0xffff00ff)
1994 {
1995 fill_scale = 0x400 | (1 << 8);
1996 ui8 >>= 8;
1997 }
1998 else if ((ui8 & 0xff00ffff) == 0)
1999 {
2000 fill_scale = 2 << 8;
2001 ui8 >>= 16;
2002 }
2003 else if ((ui8 & 0xff00ffff) == 0xff00ffff)
2004 {
2005 fill_scale = 0x400 | (2 << 8);
2006 ui8 >>= 16;
2007 }
2008 else if ((ui8 & 0x00ffffff) == 0)
2009 {
2010 fill_scale = 3 << 8;
2011 ui8 >>= 24;
2012 }
2013 else if ((ui8 & 0x00ffffff) == 0x00ffffff)
2014 {
2015 fill_scale = 0x400 | (3 << 8);
2016 ui8 >>= 24;
2017 }
2018 else
2019 {
2020 *errmsg = _("illegal immediate value");
2021 ui8 = 0;
2022 }
2023
2024 return insn | fill_scale | (ui8 & 0xff);
2025 }
2026
2027 static long
2028 extract_sci8 (unsigned long insn,
2029 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2030 int *invalid ATTRIBUTE_UNUSED)
2031 {
2032 int fill = insn & 0x400;
2033 int scale_factor = (insn & 0x300) >> 5;
2034 long value = (insn & 0xff) << scale_factor;
2035
2036 if (fill != 0)
2037 value |= ~((long) 0xff << scale_factor);
2038 return value;
2039 }
2040
2041 static unsigned long
2042 insert_sci8n (unsigned long insn,
2043 long value,
2044 ppc_cpu_t dialect,
2045 const char **errmsg)
2046 {
2047 return insert_sci8 (insn, -value, dialect, errmsg);
2048 }
2049
2050 static long
2051 extract_sci8n (unsigned long insn,
2052 ppc_cpu_t dialect,
2053 int *invalid)
2054 {
2055 return -extract_sci8 (insn, dialect, invalid);
2056 }
2057
2058 static unsigned long
2059 insert_sd4h (unsigned long insn,
2060 long value,
2061 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2062 const char **errmsg ATTRIBUTE_UNUSED)
2063 {
2064 return insn | ((value & 0x1e) << 7);
2065 }
2066
2067 static long
2068 extract_sd4h (unsigned long insn,
2069 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2070 int *invalid ATTRIBUTE_UNUSED)
2071 {
2072 return ((insn >> 8) & 0xf) << 1;
2073 }
2074
2075 static unsigned long
2076 insert_sd4w (unsigned long insn,
2077 long value,
2078 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2079 const char **errmsg ATTRIBUTE_UNUSED)
2080 {
2081 return insn | ((value & 0x3c) << 6);
2082 }
2083
2084 static long
2085 extract_sd4w (unsigned long insn,
2086 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2087 int *invalid ATTRIBUTE_UNUSED)
2088 {
2089 return ((insn >> 8) & 0xf) << 2;
2090 }
2091
2092 static unsigned long
2093 insert_oimm (unsigned long insn,
2094 long value,
2095 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2096 const char **errmsg ATTRIBUTE_UNUSED)
2097 {
2098 return insn | (((value - 1) & 0x1f) << 4);
2099 }
2100
2101 static long
2102 extract_oimm (unsigned long insn,
2103 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2104 int *invalid ATTRIBUTE_UNUSED)
2105 {
2106 return ((insn >> 4) & 0x1f) + 1;
2107 }
2108
2109 /* The SH field in an MD form instruction. This is split. */
2110
2111 static unsigned long
2112 insert_sh6 (unsigned long insn,
2113 long value,
2114 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2115 const char **errmsg ATTRIBUTE_UNUSED)
2116 {
2117 /* SH6 operand in the rldixor instructions. */
2118 if (PPC_OP (insn) == 4)
2119 return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 5);
2120 else
2121 return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
2122 }
2123
2124 static long
2125 extract_sh6 (unsigned long insn,
2126 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2127 int *invalid ATTRIBUTE_UNUSED)
2128 {
2129 /* SH6 operand in the rldixor instructions. */
2130 if (PPC_OP (insn) == 4)
2131 return ((insn >> 6) & 0x1f) | ((insn << 5) & 0x20);
2132 else
2133 return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
2134 }
2135
2136 /* The SPR field in an XFX form instruction. This is flipped--the
2137 lower 5 bits are stored in the upper 5 and vice- versa. */
2138
2139 static unsigned long
2140 insert_spr (unsigned long insn,
2141 long value,
2142 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2143 const char **errmsg ATTRIBUTE_UNUSED)
2144 {
2145 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
2146 }
2147
2148 static long
2149 extract_spr (unsigned long insn,
2150 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2151 int *invalid ATTRIBUTE_UNUSED)
2152 {
2153 return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
2154 }
2155
2156 /* Some dialects have 8 SPRG registers instead of the standard 4. */
2157 #define ALLOW8_SPRG (PPC_OPCODE_BOOKE | PPC_OPCODE_405)
2158
2159 static unsigned long
2160 insert_sprg (unsigned long insn,
2161 long value,
2162 ppc_cpu_t dialect,
2163 const char **errmsg)
2164 {
2165 if (value > 7
2166 || (value > 3 && (dialect & ALLOW8_SPRG) == 0))
2167 *errmsg = _("invalid sprg number");
2168
2169 /* If this is mfsprg4..7 then use spr 260..263 which can be read in
2170 user mode. Anything else must use spr 272..279. */
2171 if (value <= 3 || (insn & 0x100) != 0)
2172 value |= 0x10;
2173
2174 return insn | ((value & 0x17) << 16);
2175 }
2176
2177 static long
2178 extract_sprg (unsigned long insn,
2179 ppc_cpu_t dialect,
2180 int *invalid)
2181 {
2182 unsigned long val = (insn >> 16) & 0x1f;
2183
2184 /* mfsprg can use 260..263 and 272..279. mtsprg only uses spr 272..279
2185 If not BOOKE, 405 or VLE, then both use only 272..275. */
2186 if ((val - 0x10 > 3 && (dialect & ALLOW8_SPRG) == 0)
2187 || (val - 0x10 > 7 && (insn & 0x100) != 0)
2188 || val <= 3
2189 || (val & 8) != 0)
2190 *invalid = 1;
2191 return val & 7;
2192 }
2193
2194 /* The TBR field in an XFX instruction. This is just like SPR, but it
2195 is optional. */
2196
2197 static unsigned long
2198 insert_tbr (unsigned long insn,
2199 long value,
2200 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2201 const char **errmsg)
2202 {
2203 if (value != 268 && value != 269)
2204 *errmsg = _("invalid tbr number");
2205 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
2206 }
2207
2208 static long
2209 extract_tbr (unsigned long insn,
2210 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2211 int *invalid)
2212 {
2213 long ret;
2214
2215 ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
2216 if (ret != 268 && ret != 269)
2217 *invalid = 1;
2218 return ret;
2219 }
2220
2221 /* The XT and XS fields in an XX1 or XX3 form instruction. This is split. */
2222
2223 static unsigned long
2224 insert_xt6 (unsigned long insn,
2225 long value,
2226 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2227 const char **errmsg ATTRIBUTE_UNUSED)
2228 {
2229 return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 5);
2230 }
2231
2232 static long
2233 extract_xt6 (unsigned long insn,
2234 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2235 int *invalid ATTRIBUTE_UNUSED)
2236 {
2237 return ((insn << 5) & 0x20) | ((insn >> 21) & 0x1f);
2238 }
2239
2240 /* The XT and XS fields in an DQ form VSX instruction. This is split. */
2241 static unsigned long
2242 insert_xtq6 (unsigned long insn,
2243 long value,
2244 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2245 const char **errmsg ATTRIBUTE_UNUSED)
2246 {
2247 return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 2);
2248 }
2249
2250 static long
2251 extract_xtq6 (unsigned long insn,
2252 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2253 int *invalid ATTRIBUTE_UNUSED)
2254 {
2255 return ((insn << 2) & 0x20) | ((insn >> 21) & 0x1f);
2256 }
2257
2258 /* The XA field in an XX3 form instruction. This is split. */
2259
2260 static unsigned long
2261 insert_xa6 (unsigned long insn,
2262 long value,
2263 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2264 const char **errmsg ATTRIBUTE_UNUSED)
2265 {
2266 return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3);
2267 }
2268
2269 static long
2270 extract_xa6 (unsigned long insn,
2271 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2272 int *invalid ATTRIBUTE_UNUSED)
2273 {
2274 return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
2275 }
2276
2277 /* The XB field in an XX3 form instruction. This is split. */
2278
2279 static unsigned long
2280 insert_xb6 (unsigned long insn,
2281 long value,
2282 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2283 const char **errmsg ATTRIBUTE_UNUSED)
2284 {
2285 return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
2286 }
2287
2288 static long
2289 extract_xb6 (unsigned long insn,
2290 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2291 int *invalid ATTRIBUTE_UNUSED)
2292 {
2293 return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1f);
2294 }
2295
2296 /* The XB field in an XX3 form instruction when it must be the same as
2297 the XA field in the instruction. This is used for extended
2298 mnemonics like xvmovdp. This operand is marked FAKE. The insertion
2299 function just copies the XA field into the XB field, and the
2300 extraction function just checks that the fields are the same. */
2301
2302 static unsigned long
2303 insert_xb6s (unsigned long insn,
2304 long value ATTRIBUTE_UNUSED,
2305 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2306 const char **errmsg ATTRIBUTE_UNUSED)
2307 {
2308 return insn | (((insn >> 16) & 0x1f) << 11) | (((insn >> 2) & 0x1) << 1);
2309 }
2310
2311 static long
2312 extract_xb6s (unsigned long insn,
2313 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2314 int *invalid)
2315 {
2316 if ((((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
2317 || (((insn >> 2) & 0x1) != ((insn >> 1) & 0x1)))
2318 *invalid = 1;
2319 return 0;
2320 }
2321
2322 /* The XC field in an XX4 form instruction. This is split. */
2323
2324 static unsigned long
2325 insert_xc6 (unsigned long insn,
2326 long value,
2327 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2328 const char **errmsg ATTRIBUTE_UNUSED)
2329 {
2330 return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 2);
2331 }
2332
2333 static long
2334 extract_xc6 (unsigned long insn,
2335 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2336 int *invalid ATTRIBUTE_UNUSED)
2337 {
2338 return ((insn << 2) & 0x20) | ((insn >> 6) & 0x1f);
2339 }
2340
2341 static unsigned long
2342 insert_dm (unsigned long insn,
2343 long value,
2344 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2345 const char **errmsg)
2346 {
2347 if (value != 0 && value != 1)
2348 *errmsg = _("invalid constant");
2349 return insn | (((value) ? 3 : 0) << 8);
2350 }
2351
2352 static long
2353 extract_dm (unsigned long insn,
2354 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2355 int *invalid)
2356 {
2357 long value;
2358
2359 value = (insn >> 8) & 3;
2360 if (value != 0 && value != 3)
2361 *invalid = 1;
2362 return (value) ? 1 : 0;
2363 }
2364
2365 /* The VLESIMM field in an I16A form instruction. This is split. */
2366
2367 static unsigned long
2368 insert_vlesi (unsigned long insn,
2369 long value,
2370 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2371 const char **errmsg ATTRIBUTE_UNUSED)
2372 {
2373 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2374 }
2375
2376 static long
2377 extract_vlesi (unsigned long insn,
2378 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2379 int *invalid ATTRIBUTE_UNUSED)
2380 {
2381 long value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2382 value = (value ^ 0x8000) - 0x8000;
2383 return value;
2384 }
2385
2386 static unsigned long
2387 insert_vlensi (unsigned long insn,
2388 long value,
2389 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2390 const char **errmsg ATTRIBUTE_UNUSED)
2391 {
2392 value = -value;
2393 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2394 }
2395 static long
2396 extract_vlensi (unsigned long insn,
2397 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2398 int *invalid ATTRIBUTE_UNUSED)
2399 {
2400 long value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2401 value = (value ^ 0x8000) - 0x8000;
2402 /* Don't use for disassembly. */
2403 *invalid = 1;
2404 return -value;
2405 }
2406
2407 /* The VLEUIMM field in an I16A form instruction. This is split. */
2408
2409 static unsigned long
2410 insert_vleui (unsigned long insn,
2411 long value,
2412 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2413 const char **errmsg ATTRIBUTE_UNUSED)
2414 {
2415 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2416 }
2417
2418 static long
2419 extract_vleui (unsigned long insn,
2420 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2421 int *invalid ATTRIBUTE_UNUSED)
2422 {
2423 return ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2424 }
2425
2426 /* The VLEUIMML field in an I16L form instruction. This is split. */
2427
2428 static unsigned long
2429 insert_vleil (unsigned long insn,
2430 long value,
2431 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2432 const char **errmsg ATTRIBUTE_UNUSED)
2433 {
2434 return insn | ((value & 0xf800) << 5) | (value & 0x7ff);
2435 }
2436
2437 static long
2438 extract_vleil (unsigned long insn,
2439 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2440 int *invalid ATTRIBUTE_UNUSED)
2441 {
2442 return ((insn >> 5) & 0xf800) | (insn & 0x7ff);
2443 }
2444
2445 static unsigned long
2446 insert_evuimm2_ex0 (unsigned long insn,
2447 long value,
2448 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2449 const char **errmsg)
2450 {
2451 if (value > 0 && value <= 0x3e)
2452 return insn | ((value & 0x3e) << 10);
2453 else
2454 {
2455 *errmsg = _("UIMM = 00000 is illegal");
2456 return 0;
2457 }
2458 }
2459
2460 static long
2461 extract_evuimm2_ex0 (unsigned long insn,
2462 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2463 int *invalid)
2464 {
2465 long value = ((insn >> 10) & 0x3e);
2466 if (value == 0)
2467 *invalid = 1;
2468
2469 return value;
2470 }
2471
2472 static unsigned long
2473 insert_evuimm4_ex0 (unsigned long insn,
2474 long value,
2475 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2476 const char **errmsg)
2477 {
2478 if (value > 0 && value <= 0x7c)
2479 return insn | ((value & 0x7c) << 9);
2480 else
2481 {
2482 *errmsg = _("UIMM = 00000 is illegal");
2483 return 0;
2484 }
2485 }
2486
2487 static long
2488 extract_evuimm4_ex0 (unsigned long insn,
2489 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2490 int *invalid)
2491 {
2492 long value = ((insn >> 9) & 0x7c);
2493 if (value == 0)
2494 *invalid = 1;
2495
2496 return value;
2497 }
2498
2499 static unsigned long
2500 insert_evuimm8_ex0 (unsigned long insn,
2501 long value,
2502 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2503 const char **errmsg)
2504 {
2505 if (value > 0 && value <= 0xf8)
2506 return insn | ((value & 0xf8) << 8);
2507 else
2508 {
2509 *errmsg = _("UIMM = 00000 is illegal");
2510 return 0;
2511 }
2512 }
2513
2514 static long
2515 extract_evuimm8_ex0 (unsigned long insn,
2516 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2517 int *invalid)
2518 {
2519 long value = ((insn >> 8) & 0xf8);
2520 if (value == 0)
2521 *invalid = 1;
2522
2523 return value;
2524 }
2525
2526 static unsigned long
2527 insert_evuimm_lt16 (unsigned long insn,
2528 long value,
2529 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2530 const char **errmsg)
2531 {
2532 if (value >= 0 && value <= 15)
2533 return insn | ((value & 0xf) << 11);
2534 else
2535 {
2536 *errmsg = _("UIMM values >15 are illegal");
2537 return 0;
2538 }
2539 }
2540
2541 static long
2542 extract_evuimm_lt16 (unsigned long insn,
2543 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2544 int *invalid)
2545 {
2546 long value = ((insn >> 11) & 0x1f);
2547 if (value > 15)
2548 *invalid = 1;
2549
2550 return value;
2551 }
2552
2553 static unsigned long
2554 insert_rD_rS_even (unsigned long insn,
2555 long value,
2556 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2557 const char **errmsg)
2558 {
2559 if ((value & 0x1) == 0)
2560 return insn | ((value & 0x1e) << 21);
2561 else
2562 {
2563 *errmsg = _("GPR odd is illegal");
2564 return 0;
2565 }
2566 }
2567
2568 static long
2569 extract_rD_rS_even (unsigned long insn,
2570 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2571 int *invalid)
2572 {
2573 long value = ((insn >> 21) & 0x1f);
2574 if ((value & 0x1) != 0)
2575 *invalid = 1;
2576
2577 return value;
2578 }
2579
2580 static unsigned long
2581 insert_off_lsp (unsigned long insn,
2582 long value,
2583 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2584 const char **errmsg)
2585 {
2586 if (value > 0 && value <= 0x3)
2587 return insn | (value & 0x3);
2588 else
2589 {
2590 *errmsg = _("invalid offset");
2591 return 0;
2592 }
2593 }
2594
2595 static long
2596 extract_off_lsp (unsigned long insn,
2597 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2598 int *invalid)
2599 {
2600 long value = (insn & 0x3);
2601 if (value == 0)
2602 *invalid = 1;
2603
2604 return value;
2605 }
2606 \f
2607 /* Macros used to form opcodes. */
2608
2609 /* The main opcode. */
2610 #define OP(x) ((((unsigned long)(x)) & 0x3f) << 26)
2611 #define OP_MASK OP (0x3f)
2612
2613 /* The main opcode combined with a trap code in the TO field of a D
2614 form instruction. Used for extended mnemonics for the trap
2615 instructions. */
2616 #define OPTO(x,to) (OP (x) | ((((unsigned long)(to)) & 0x1f) << 21))
2617 #define OPTO_MASK (OP_MASK | TO_MASK)
2618
2619 /* The main opcode combined with a comparison size bit in the L field
2620 of a D form or X form instruction. Used for extended mnemonics for
2621 the comparison instructions. */
2622 #define OPL(x,l) (OP (x) | ((((unsigned long)(l)) & 1) << 21))
2623 #define OPL_MASK OPL (0x3f,1)
2624
2625 /* The main opcode combined with an update code in D form instruction.
2626 Used for extended mnemonics for VLE memory instructions. */
2627 #define OPVUP(x,vup) (OP (x) | ((((unsigned long)(vup)) & 0xff) << 8))
2628 #define OPVUP_MASK OPVUP (0x3f, 0xff)
2629
2630 /* The main opcode combined with an update code and the RT fields specified in
2631 D form instruction. Used for VLE volatile context save/restore
2632 instructions. */
2633 #define OPVUPRT(x,vup,rt) (OPVUP (x, vup) | ((((unsigned long)(rt)) & 0x1f) << 21))
2634 #define OPVUPRT_MASK OPVUPRT (0x3f, 0xff, 0x1f)
2635
2636 /* An A form instruction. */
2637 #define A(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1) | (((unsigned long)(rc)) & 1))
2638 #define A_MASK A (0x3f, 0x1f, 1)
2639
2640 /* An A_MASK with the FRB field fixed. */
2641 #define AFRB_MASK (A_MASK | FRB_MASK)
2642
2643 /* An A_MASK with the FRC field fixed. */
2644 #define AFRC_MASK (A_MASK | FRC_MASK)
2645
2646 /* An A_MASK with the FRA and FRC fields fixed. */
2647 #define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
2648
2649 /* An AFRAFRC_MASK, but with L bit clear. */
2650 #define AFRALFRC_MASK (AFRAFRC_MASK & ~((unsigned long) 1 << 16))
2651
2652 /* A B form instruction. */
2653 #define B(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 1) | ((lk) & 1))
2654 #define B_MASK B (0x3f, 1, 1)
2655
2656 /* A BD8 form instruction. This is a 16-bit instruction. */
2657 #define BD8(op, aa, lk) (((((unsigned long)(op)) & 0x3f) << 10) | (((aa) & 1) << 9) | (((lk) & 1) << 8))
2658 #define BD8_MASK BD8 (0x3f, 1, 1)
2659
2660 /* Another BD8 form instruction. This is a 16-bit instruction. */
2661 #define BD8IO(op) ((((unsigned long)(op)) & 0x1f) << 11)
2662 #define BD8IO_MASK BD8IO (0x1f)
2663
2664 /* A BD8 form instruction for simplified mnemonics. */
2665 #define EBD8IO(op, bo, bi) (BD8IO ((op)) | ((bo) << 10) | ((bi) << 8))
2666 /* A mask that excludes BO32 and BI32. */
2667 #define EBD8IO1_MASK 0xf800
2668 /* A mask that includes BO32 and excludes BI32. */
2669 #define EBD8IO2_MASK 0xfc00
2670 /* A mask that include BO32 AND BI32. */
2671 #define EBD8IO3_MASK 0xff00
2672
2673 /* A BD15 form instruction. */
2674 #define BD15(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 0xf) << 22) | ((lk) & 1))
2675 #define BD15_MASK BD15 (0x3f, 0xf, 1)
2676
2677 /* A BD15 form instruction for extended conditional branch mnemonics. */
2678 #define EBD15(op, aa, bo, lk) (((op) & 0x3f) << 26) | (((aa) & 0xf) << 22) | (((bo) & 0x3) << 20) | ((lk) & 1)
2679 #define EBD15_MASK 0xfff00001
2680
2681 /* A BD15 form instruction for extended conditional branch mnemonics with BI. */
2682 #define EBD15BI(op, aa, bo, bi, lk) (((op) & 0x3f) << 26) \
2683 | (((aa) & 0xf) << 22) \
2684 | (((bo) & 0x3) << 20) \
2685 | (((bi) & 0x3) << 16) \
2686 | ((lk) & 1)
2687 #define EBD15BI_MASK 0xfff30001
2688
2689 /* A BD24 form instruction. */
2690 #define BD24(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 25) | ((lk) & 1))
2691 #define BD24_MASK BD24 (0x3f, 1, 1)
2692
2693 /* A B form instruction setting the BO field. */
2694 #define BBO(op, bo, aa, lk) (B ((op), (aa), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
2695 #define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
2696
2697 /* A BBO_MASK with the y bit of the BO field removed. This permits
2698 matching a conditional branch regardless of the setting of the y
2699 bit. Similarly for the 'at' bits used for power4 branch hints. */
2700 #define Y_MASK (((unsigned long) 1) << 21)
2701 #define AT1_MASK (((unsigned long) 3) << 21)
2702 #define AT2_MASK (((unsigned long) 9) << 21)
2703 #define BBOY_MASK (BBO_MASK &~ Y_MASK)
2704 #define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
2705
2706 /* A B form instruction setting the BO field and the condition bits of
2707 the BI field. */
2708 #define BBOCB(op, bo, cb, aa, lk) \
2709 (BBO ((op), (bo), (aa), (lk)) | ((((unsigned long)(cb)) & 0x3) << 16))
2710 #define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
2711
2712 /* A BBOCB_MASK with the y bit of the BO field removed. */
2713 #define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
2714 #define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
2715 #define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
2716
2717 /* A BBOYCB_MASK in which the BI field is fixed. */
2718 #define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
2719 #define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
2720
2721 /* A VLE C form instruction. */
2722 #define C_LK(x, lk) (((((unsigned long)(x)) & 0x7fff) << 1) | ((lk) & 1))
2723 #define C_LK_MASK C_LK(0x7fff, 1)
2724 #define C(x) ((((unsigned long)(x)) & 0xffff))
2725 #define C_MASK C(0xffff)
2726
2727 /* An Context form instruction. */
2728 #define CTX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7))
2729 #define CTX_MASK CTX(0x3f, 0x7)
2730
2731 /* An User Context form instruction. */
2732 #define UCTX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f))
2733 #define UCTX_MASK UCTX(0x3f, 0x1f)
2734
2735 /* The main opcode mask with the RA field clear. */
2736 #define DRA_MASK (OP_MASK | RA_MASK)
2737
2738 /* A DQ form VSX instruction. */
2739 #define DQX(op, xop) (OP (op) | ((xop) & 0x7))
2740 #define DQX_MASK DQX (0x3f, 7)
2741
2742 /* A DS form instruction. */
2743 #define DSO(op, xop) (OP (op) | ((xop) & 0x3))
2744 #define DS_MASK DSO (0x3f, 3)
2745
2746 /* An DX form instruction. */
2747 #define DX(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
2748 #define DX_MASK DX (0x3f, 0x1f)
2749 /* An DX form instruction with the D bits specified. */
2750 #define NODX_MASK (DX_MASK | 0x1fffc1)
2751
2752 /* An EVSEL form instruction. */
2753 #define EVSEL(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xff) << 3)
2754 #define EVSEL_MASK EVSEL(0x3f, 0xff)
2755
2756 /* An IA16 form instruction. */
2757 #define IA16(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11)
2758 #define IA16_MASK IA16(0x3f, 0x1f)
2759
2760 /* An I16A form instruction. */
2761 #define I16A(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11)
2762 #define I16A_MASK I16A(0x3f, 0x1f)
2763
2764 /* An I16L form instruction. */
2765 #define I16L(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11)
2766 #define I16L_MASK I16L(0x3f, 0x1f)
2767
2768 /* An IM7 form instruction. */
2769 #define IM7(op) ((((unsigned long)(op)) & 0x1f) << 11)
2770 #define IM7_MASK IM7(0x1f)
2771
2772 /* An M form instruction. */
2773 #define M(op, rc) (OP (op) | ((rc) & 1))
2774 #define M_MASK M (0x3f, 1)
2775
2776 /* An LI20 form instruction. */
2777 #define LI20(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1) << 15)
2778 #define LI20_MASK LI20(0x3f, 0x1)
2779
2780 /* An M form instruction with the ME field specified. */
2781 #define MME(op, me, rc) (M ((op), (rc)) | ((((unsigned long)(me)) & 0x1f) << 1))
2782
2783 /* An M_MASK with the MB and ME fields fixed. */
2784 #define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
2785
2786 /* An M_MASK with the SH and ME fields fixed. */
2787 #define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
2788
2789 /* An MD form instruction. */
2790 #define MD(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x7) << 2) | ((rc) & 1))
2791 #define MD_MASK MD (0x3f, 0x7, 1)
2792
2793 /* An MD_MASK with the MB field fixed. */
2794 #define MDMB_MASK (MD_MASK | MB6_MASK)
2795
2796 /* An MD_MASK with the SH field fixed. */
2797 #define MDSH_MASK (MD_MASK | SH6_MASK)
2798
2799 /* An MDS form instruction. */
2800 #define MDS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0xf) << 1) | ((rc) & 1))
2801 #define MDS_MASK MDS (0x3f, 0xf, 1)
2802
2803 /* An MDS_MASK with the MB field fixed. */
2804 #define MDSMB_MASK (MDS_MASK | MB6_MASK)
2805
2806 /* An SC form instruction. */
2807 #define SC(op, sa, lk) (OP (op) | ((((unsigned long)(sa)) & 1) << 1) | ((lk) & 1))
2808 #define SC_MASK (OP_MASK | (((unsigned long)0x3ff) << 16) | (((unsigned long)1) << 1) | 1)
2809
2810 /* An SCI8 form instruction. */
2811 #define SCI8(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 11))
2812 #define SCI8_MASK SCI8(0x3f, 0x1f)
2813
2814 /* An SCI8 form instruction. */
2815 #define SCI8BF(op, fop, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 11) | (((fop) & 7) << 23))
2816 #define SCI8BF_MASK SCI8BF(0x3f, 7, 0x1f)
2817
2818 /* An SD4 form instruction. This is a 16-bit instruction. */
2819 #define SD4(op) ((((unsigned long)(op)) & 0xf) << 12)
2820 #define SD4_MASK SD4(0xf)
2821
2822 /* An SE_IM5 form instruction. This is a 16-bit instruction. */
2823 #define SE_IM5(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x1) << 9))
2824 #define SE_IM5_MASK SE_IM5(0x3f, 1)
2825
2826 /* An SE_R form instruction. This is a 16-bit instruction. */
2827 #define SE_R(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x3f) << 4))
2828 #define SE_R_MASK SE_R(0x3f, 0x3f)
2829
2830 /* An SE_RR form instruction. This is a 16-bit instruction. */
2831 #define SE_RR(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x3) << 8))
2832 #define SE_RR_MASK SE_RR(0x3f, 3)
2833
2834 /* A VX form instruction. */
2835 #define VX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
2836
2837 /* The mask for an VX form instruction. */
2838 #define VX_MASK VX(0x3f, 0x7ff)
2839
2840 /* A VX LSP form instruction. */
2841 #define VX_LSP(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xffff))
2842
2843 /* The mask for an VX LSP form instruction. */
2844 #define VX_LSP_MASK VX_LSP(0x3f, 0xffff)
2845 #define VX_LSP_OFF_MASK VX_LSP(0x3f, 0x7fc)
2846
2847 /* A VX_MASK with the VA field fixed. */
2848 #define VXVA_MASK (VX_MASK | (0x1f << 16))
2849
2850 /* A VX_MASK with the VB field fixed. */
2851 #define VXVB_MASK (VX_MASK | (0x1f << 11))
2852
2853 /* A VX_MASK with the VA and VB fields fixed. */
2854 #define VXVAVB_MASK (VX_MASK | (0x1f << 16) | (0x1f << 11))
2855
2856 /* A VX_MASK with the VD and VA fields fixed. */
2857 #define VXVDVA_MASK (VX_MASK | (0x1f << 21) | (0x1f << 16))
2858
2859 /* A VX_MASK with a UIMM4 field. */
2860 #define VXUIMM4_MASK (VX_MASK | (0x1 << 20))
2861
2862 /* A VX_MASK with a UIMM3 field. */
2863 #define VXUIMM3_MASK (VX_MASK | (0x3 << 19))
2864
2865 /* A VX_MASK with a UIMM2 field. */
2866 #define VXUIMM2_MASK (VX_MASK | (0x7 << 18))
2867
2868 /* A VX_MASK with a PS field. */
2869 #define VXPS_MASK (VX_MASK & ~(0x1 << 9))
2870
2871 /* A VX_MASK with the VA field fixed with a PS field. */
2872 #define VXVAPS_MASK ((VX_MASK | (0x1f << 16)) & ~(0x1 << 9))
2873
2874 /* A VA form instruction. */
2875 #define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x03f))
2876
2877 /* The mask for an VA form instruction. */
2878 #define VXA_MASK VXA(0x3f, 0x3f)
2879
2880 /* A VXA_MASK with a SHB field. */
2881 #define VXASHB_MASK (VXA_MASK | (1 << 10))
2882
2883 /* A VXR form instruction. */
2884 #define VXR(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | (((unsigned long)(xop)) & 0x3ff))
2885
2886 /* The mask for a VXR form instruction. */
2887 #define VXR_MASK VXR(0x3f, 0x3ff, 1)
2888
2889 /* A VX form instruction with a VA tertiary opcode. */
2890 #define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16))
2891
2892 #define VXASH(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
2893 #define VXASH_MASK VXASH (0x3f, 0x1f)
2894
2895 /* An X form instruction. */
2896 #define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
2897
2898 /* A X form instruction for Quad-Precision FP Instructions. */
2899 #define XVA(op, xop, vaop) (X(op,xop) | (((vaop) & 0x1f) << 16))
2900
2901 /* An EX form instruction. */
2902 #define EX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
2903
2904 /* The mask for an EX form instruction. */
2905 #define EX_MASK EX (0x3f, 0x7ff)
2906
2907 /* An XX2 form instruction. */
2908 #define XX2(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2))
2909
2910 /* A XX2 form instruction with the VA bits specified. */
2911 #define XX2VA(op, xop, vaop) (XX2(op,xop) | (((vaop) & 0x1f) << 16))
2912
2913 /* An XX3 form instruction. */
2914 #define XX3(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0xff) << 3))
2915
2916 /* An XX3 form instruction with the RC bit specified. */
2917 #define XX3RC(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | ((((unsigned long)(xop)) & 0x7f) << 3))
2918
2919 /* An XX4 form instruction. */
2920 #define XX4(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3) << 4))
2921
2922 /* A Z form instruction. */
2923 #define Z(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1))
2924
2925 /* An X form instruction with the RC bit specified. */
2926 #define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
2927
2928 /* A X form instruction for Quad-Precision FP Instructions with RC bit. */
2929 #define XVARC(op, xop, vaop, rc) (XVA ((op), (xop), (vaop)) | ((rc) & 1))
2930
2931 /* An X form instruction with the RA bits specified as two ops. */
2932 #define XMMF(op, xop, mop0, mop1) (X ((op), (xop)) | ((mop0) & 3) << 19 | ((mop1) & 7) << 16)
2933
2934 /* A Z form instruction with the RC bit specified. */
2935 #define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
2936
2937 /* The mask for an X form instruction. */
2938 #define X_MASK XRC (0x3f, 0x3ff, 1)
2939
2940 /* The mask for an X form instruction with the BF bits specified. */
2941 #define XBF_MASK (X_MASK | (3 << 21))
2942
2943 /* An X form wait instruction with everything filled in except the WC field. */
2944 #define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
2945
2946 /* The mask for an XX1 form instruction. */
2947 #define XX1_MASK X (0x3f, 0x3ff)
2948
2949 /* An XX1_MASK with the RB field fixed. */
2950 #define XX1RB_MASK (XX1_MASK | RB_MASK)
2951
2952 /* The mask for an XX2 form instruction. */
2953 #define XX2_MASK (XX2 (0x3f, 0x1ff) | (0x1f << 16))
2954
2955 /* The mask for an XX2 form instruction with the UIM bits specified. */
2956 #define XX2UIM_MASK (XX2 (0x3f, 0x1ff) | (7 << 18))
2957
2958 /* The mask for an XX2 form instruction with the 4 UIM bits specified. */
2959 #define XX2UIM4_MASK (XX2 (0x3f, 0x1ff) | (1 << 20))
2960
2961 /* The mask for an XX2 form instruction with the BF bits specified. */
2962 #define XX2BF_MASK (XX2_MASK | (3 << 21) | (1))
2963
2964 /* The mask for an XX2 form instruction with the BF and DCMX bits specified. */
2965 #define XX2BFD_MASK (XX2 (0x3f, 0x1ff) | 1)
2966
2967 /* The mask for an XX2 form instruction with a split DCMX bits specified. */
2968 #define XX2DCMXS_MASK XX2 (0x3f, 0x1ee)
2969
2970 /* The mask for an XX3 form instruction. */
2971 #define XX3_MASK XX3 (0x3f, 0xff)
2972
2973 /* The mask for an XX3 form instruction with the BF bits specified. */
2974 #define XX3BF_MASK (XX3 (0x3f, 0xff) | (3 << 21) | (1))
2975
2976 /* The mask for an XX3 form instruction with the DM or SHW bits specified. */
2977 #define XX3DM_MASK (XX3 (0x3f, 0x1f) | (1 << 10))
2978 #define XX3SHW_MASK XX3DM_MASK
2979
2980 /* The mask for an XX4 form instruction. */
2981 #define XX4_MASK XX4 (0x3f, 0x3)
2982
2983 /* An X form wait instruction with everything filled in except the WC field. */
2984 #define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
2985
2986 /* The mask for an XMMF form instruction. */
2987 #define XMMF_MASK (XMMF (0x3f, 0x3ff, 3, 7) | (1))
2988
2989 /* The mask for a Z form instruction. */
2990 #define Z_MASK ZRC (0x3f, 0x1ff, 1)
2991 #define Z2_MASK ZRC (0x3f, 0xff, 1)
2992
2993 /* An X_MASK with the RA/VA field fixed. */
2994 #define XRA_MASK (X_MASK | RA_MASK)
2995 #define XVA_MASK XRA_MASK
2996
2997 /* An XRA_MASK with the A_L/W field clear. */
2998 #define XWRA_MASK (XRA_MASK & ~((unsigned long) 1 << 16))
2999 #define XRLA_MASK XWRA_MASK
3000
3001 /* An X_MASK with the RB field fixed. */
3002 #define XRB_MASK (X_MASK | RB_MASK)
3003
3004 /* An X_MASK with the RT field fixed. */
3005 #define XRT_MASK (X_MASK | RT_MASK)
3006
3007 /* An XRT_MASK mask with the L bits clear. */
3008 #define XLRT_MASK (XRT_MASK & ~((unsigned long) 0x3 << 21))
3009
3010 /* An X_MASK with the RA and RB fields fixed. */
3011 #define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
3012
3013 /* An XBF_MASK with the RA and RB fields fixed. */
3014 #define XBFRARB_MASK (XBF_MASK | RA_MASK | RB_MASK)
3015
3016 /* An XRARB_MASK, but with the L bit clear. */
3017 #define XRLARB_MASK (XRARB_MASK & ~((unsigned long) 1 << 16))
3018
3019 /* An XRARB_MASK, but with the L bits in a darn instruction clear. */
3020 #define XLRAND_MASK (XRARB_MASK & ~((unsigned long) 3 << 16))
3021
3022 /* An X_MASK with the RT and RA fields fixed. */
3023 #define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
3024
3025 /* An X_MASK with the RT and RB fields fixed. */
3026 #define XRTRB_MASK (X_MASK | RT_MASK | RB_MASK)
3027
3028 /* An XRTRA_MASK, but with L bit clear. */
3029 #define XRTLRA_MASK (XRTRA_MASK & ~((unsigned long) 1 << 21))
3030
3031 /* An X_MASK with the RT, RA and RB fields fixed. */
3032 #define XRTRARB_MASK (X_MASK | RT_MASK | RA_MASK | RB_MASK)
3033
3034 /* An XRTRARB_MASK, but with L bit clear. */
3035 #define XRTLRARB_MASK (XRTRARB_MASK & ~((unsigned long) 1 << 21))
3036
3037 /* An XRTRARB_MASK, but with A bit clear. */
3038 #define XRTARARB_MASK (XRTRARB_MASK & ~((unsigned long) 1 << 25))
3039
3040 /* An XRTRARB_MASK, but with BF bits clear. */
3041 #define XRTBFRARB_MASK (XRTRARB_MASK & ~((unsigned long) 7 << 23))
3042
3043 /* An X form instruction with the L bit specified. */
3044 #define XOPL(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 1) << 21))
3045
3046 /* An X form instruction with the L bits specified. */
3047 #define XOPL2(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 3) << 21))
3048
3049 /* An X form instruction with the L bit and RC bit specified. */
3050 #define XRCL(op, xop, l, rc) (XRC ((op), (xop), (rc)) | ((((unsigned long)(l)) & 1) << 21))
3051
3052 /* An X form instruction with RT fields specified */
3053 #define XRT(op, xop, rt) (X ((op), (xop)) \
3054 | ((((unsigned long)(rt)) & 0x1f) << 21))
3055
3056 /* An X form instruction with RT and RA fields specified */
3057 #define XRTRA(op, xop, rt, ra) (X ((op), (xop)) \
3058 | ((((unsigned long)(rt)) & 0x1f) << 21) \
3059 | ((((unsigned long)(ra)) & 0x1f) << 16))
3060
3061 /* The mask for an X form comparison instruction. */
3062 #define XCMP_MASK (X_MASK | (((unsigned long)1) << 22))
3063
3064 /* The mask for an X form comparison instruction with the L field
3065 fixed. */
3066 #define XCMPL_MASK (XCMP_MASK | (((unsigned long)1) << 21))
3067
3068 /* An X form trap instruction with the TO field specified. */
3069 #define XTO(op, xop, to) (X ((op), (xop)) | ((((unsigned long)(to)) & 0x1f) << 21))
3070 #define XTO_MASK (X_MASK | TO_MASK)
3071
3072 /* An X form tlb instruction with the SH field specified. */
3073 #define XTLB(op, xop, sh) (X ((op), (xop)) | ((((unsigned long)(sh)) & 0x1f) << 11))
3074 #define XTLB_MASK (X_MASK | SH_MASK)
3075
3076 /* An X form sync instruction. */
3077 #define XSYNC(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 3) << 21))
3078
3079 /* An X form sync instruction with everything filled in except the LS field. */
3080 #define XSYNC_MASK (0xff9fffff)
3081
3082 /* An X form sync instruction with everything filled in except the L and E fields. */
3083 #define XSYNCLE_MASK (0xff90ffff)
3084
3085 /* An X_MASK, but with the EH bit clear. */
3086 #define XEH_MASK (X_MASK & ~((unsigned long )1))
3087
3088 /* An X form AltiVec dss instruction. */
3089 #define XDSS(op, xop, a) (X ((op), (xop)) | ((((unsigned long)(a)) & 1) << 25))
3090 #define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
3091
3092 /* An XFL form instruction. */
3093 #define XFL(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1))
3094 #define XFL_MASK XFL (0x3f, 0x3ff, 1)
3095
3096 /* An X form isel instruction. */
3097 #define XISEL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
3098 #define XISEL_MASK XISEL(0x3f, 0x1f)
3099
3100 /* An XL form instruction with the LK field set to 0. */
3101 #define XL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
3102
3103 /* An XL form instruction which uses the LK field. */
3104 #define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
3105
3106 /* The mask for an XL form instruction. */
3107 #define XL_MASK XLLK (0x3f, 0x3ff, 1)
3108
3109 /* An XL_MASK with the RT, RA and RB fields fixed, but S bit clear. */
3110 #define XLS_MASK ((XL_MASK | RT_MASK | RA_MASK | RB_MASK) & ~(1 << 11))
3111
3112 /* An XL form instruction which explicitly sets the BO field. */
3113 #define XLO(op, bo, xop, lk) \
3114 (XLLK ((op), (xop), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
3115 #define XLO_MASK (XL_MASK | BO_MASK)
3116
3117 /* An XL form instruction which explicitly sets the y bit of the BO
3118 field. */
3119 #define XLYLK(op, xop, y, lk) (XLLK ((op), (xop), (lk)) | ((((unsigned long)(y)) & 1) << 21))
3120 #define XLYLK_MASK (XL_MASK | Y_MASK)
3121
3122 /* An XL form instruction which sets the BO field and the condition
3123 bits of the BI field. */
3124 #define XLOCB(op, bo, cb, xop, lk) \
3125 (XLO ((op), (bo), (xop), (lk)) | ((((unsigned long)(cb)) & 3) << 16))
3126 #define XLOCB_MASK XLOCB (0x3f, 0x1f, 0x3, 0x3ff, 1)
3127
3128 /* An XL_MASK or XLYLK_MASK or XLOCB_MASK with the BB field fixed. */
3129 #define XLBB_MASK (XL_MASK | BB_MASK)
3130 #define XLYBB_MASK (XLYLK_MASK | BB_MASK)
3131 #define XLBOCBBB_MASK (XLOCB_MASK | BB_MASK)
3132
3133 /* A mask for branch instructions using the BH field. */
3134 #define XLBH_MASK (XL_MASK | (0x1c << 11))
3135
3136 /* An XL_MASK with the BO and BB fields fixed. */
3137 #define XLBOBB_MASK (XL_MASK | BO_MASK | BB_MASK)
3138
3139 /* An XL_MASK with the BO, BI and BB fields fixed. */
3140 #define XLBOBIBB_MASK (XL_MASK | BO_MASK | BI_MASK | BB_MASK)
3141
3142 /* An X form mbar instruction with MO field. */
3143 #define XMBAR(op, xop, mo) (X ((op), (xop)) | ((((unsigned long)(mo)) & 1) << 21))
3144
3145 /* An XO form instruction. */
3146 #define XO(op, xop, oe, rc) \
3147 (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1) | ((((unsigned long)(oe)) & 1) << 10) | (((unsigned long)(rc)) & 1))
3148 #define XO_MASK XO (0x3f, 0x1ff, 1, 1)
3149
3150 /* An XO_MASK with the RB field fixed. */
3151 #define XORB_MASK (XO_MASK | RB_MASK)
3152
3153 /* An XOPS form instruction for paired singles. */
3154 #define XOPS(op, xop, rc) \
3155 (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1))
3156 #define XOPS_MASK XOPS (0x3f, 0x3ff, 1)
3157
3158
3159 /* An XS form instruction. */
3160 #define XS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2) | (((unsigned long)(rc)) & 1))
3161 #define XS_MASK XS (0x3f, 0x1ff, 1)
3162
3163 /* A mask for the FXM version of an XFX form instruction. */
3164 #define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
3165
3166 /* An XFX form instruction with the FXM field filled in. */
3167 #define XFXM(op, xop, fxm, p4) \
3168 (X ((op), (xop)) | ((((unsigned long)(fxm)) & 0xff) << 12) \
3169 | ((unsigned long)(p4) << 20))
3170
3171 /* An XFX form instruction with the SPR field filled in. */
3172 #define XSPR(op, xop, spr) \
3173 (X ((op), (xop)) | ((((unsigned long)(spr)) & 0x1f) << 16) | ((((unsigned long)(spr)) & 0x3e0) << 6))
3174 #define XSPR_MASK (X_MASK | SPR_MASK)
3175
3176 /* An XFX form instruction with the SPR field filled in except for the
3177 SPRBAT field. */
3178 #define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
3179
3180 /* An XFX form instruction with the SPR field filled in except for the
3181 SPRG field. */
3182 #define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16))
3183
3184 /* An X form instruction with everything filled in except the E field. */
3185 #define XE_MASK (0xffff7fff)
3186
3187 /* An X form user context instruction. */
3188 #define XUC(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f))
3189 #define XUC_MASK XUC(0x3f, 0x1f)
3190
3191 /* An XW form instruction. */
3192 #define XW(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3f) << 1) | ((rc) & 1))
3193 /* The mask for a G form instruction. rc not supported at present. */
3194 #define XW_MASK XW (0x3f, 0x3f, 0)
3195
3196 /* An APU form instruction. */
3197 #define APU(op, xop, rc) (OP (op) | (((unsigned long)(xop)) & 0x3ff) << 1 | ((rc) & 1))
3198
3199 /* The mask for an APU form instruction. */
3200 #define APU_MASK APU (0x3f, 0x3ff, 1)
3201 #define APU_RT_MASK (APU_MASK | RT_MASK)
3202 #define APU_RA_MASK (APU_MASK | RA_MASK)
3203
3204 /* The BO encodings used in extended conditional branch mnemonics. */
3205 #define BODNZF (0x0)
3206 #define BODNZFP (0x1)
3207 #define BODZF (0x2)
3208 #define BODZFP (0x3)
3209 #define BODNZT (0x8)
3210 #define BODNZTP (0x9)
3211 #define BODZT (0xa)
3212 #define BODZTP (0xb)
3213
3214 #define BOF (0x4)
3215 #define BOFP (0x5)
3216 #define BOFM4 (0x6)
3217 #define BOFP4 (0x7)
3218 #define BOT (0xc)
3219 #define BOTP (0xd)
3220 #define BOTM4 (0xe)
3221 #define BOTP4 (0xf)
3222
3223 #define BODNZ (0x10)
3224 #define BODNZP (0x11)
3225 #define BODZ (0x12)
3226 #define BODZP (0x13)
3227 #define BODNZM4 (0x18)
3228 #define BODNZP4 (0x19)
3229 #define BODZM4 (0x1a)
3230 #define BODZP4 (0x1b)
3231
3232 #define BOU (0x14)
3233
3234 /* The BO16 encodings used in extended VLE conditional branch mnemonics. */
3235 #define BO16F (0x0)
3236 #define BO16T (0x1)
3237
3238 /* The BO32 encodings used in extended VLE conditional branch mnemonics. */
3239 #define BO32F (0x0)
3240 #define BO32T (0x1)
3241 #define BO32DNZ (0x2)
3242 #define BO32DZ (0x3)
3243
3244 /* The BI condition bit encodings used in extended conditional branch
3245 mnemonics. */
3246 #define CBLT (0)
3247 #define CBGT (1)
3248 #define CBEQ (2)
3249 #define CBSO (3)
3250
3251 /* The TO encodings used in extended trap mnemonics. */
3252 #define TOLGT (0x1)
3253 #define TOLLT (0x2)
3254 #define TOEQ (0x4)
3255 #define TOLGE (0x5)
3256 #define TOLNL (0x5)
3257 #define TOLLE (0x6)
3258 #define TOLNG (0x6)
3259 #define TOGT (0x8)
3260 #define TOGE (0xc)
3261 #define TONL (0xc)
3262 #define TOLT (0x10)
3263 #define TOLE (0x14)
3264 #define TONG (0x14)
3265 #define TONE (0x18)
3266 #define TOU (0x1f)
3267 \f
3268 /* Smaller names for the flags so each entry in the opcodes table will
3269 fit on a single line. */
3270 #undef PPC
3271 #define PPC PPC_OPCODE_PPC
3272 #define PPCCOM PPC_OPCODE_PPC | PPC_OPCODE_COMMON
3273 #define POWER4 PPC_OPCODE_POWER4
3274 #define POWER5 PPC_OPCODE_POWER5
3275 #define POWER6 PPC_OPCODE_POWER6
3276 #define POWER7 PPC_OPCODE_POWER7
3277 #define POWER8 PPC_OPCODE_POWER8
3278 #define POWER9 PPC_OPCODE_POWER9
3279 #define CELL PPC_OPCODE_CELL
3280 #define PPC64 PPC_OPCODE_64 | PPC_OPCODE_64_BRIDGE
3281 #define NON32 (PPC_OPCODE_64 | PPC_OPCODE_POWER4 \
3282 | PPC_OPCODE_EFS | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
3283 #define PPC403 PPC_OPCODE_403
3284 #define PPC405 PPC_OPCODE_405
3285 #define PPC440 PPC_OPCODE_440
3286 #define PPC464 PPC440
3287 #define PPC476 PPC_OPCODE_476
3288 #define PPC750 PPC_OPCODE_750
3289 #define PPC7450 PPC_OPCODE_7450
3290 #define PPC860 PPC_OPCODE_860
3291 #define PPCPS PPC_OPCODE_PPCPS
3292 #define PPCVEC PPC_OPCODE_ALTIVEC
3293 #define PPCVEC2 (PPC_OPCODE_POWER8 | PPC_OPCODE_E6500)
3294 #define PPCVEC3 PPC_OPCODE_POWER9
3295 #define PPCVSX PPC_OPCODE_VSX
3296 #define PPCVSX2 PPC_OPCODE_POWER8
3297 #define PPCVSX3 PPC_OPCODE_POWER9
3298 #define POWER PPC_OPCODE_POWER
3299 #define POWER2 PPC_OPCODE_POWER | PPC_OPCODE_POWER2
3300 #define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
3301 #define PPCPWR2 PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
3302 #define COM PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
3303 #define M601 PPC_OPCODE_POWER | PPC_OPCODE_601
3304 #define PWRCOM PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
3305 #define MFDEC1 PPC_OPCODE_POWER
3306 #define MFDEC2 PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE | PPC_OPCODE_TITAN
3307 #define BOOKE PPC_OPCODE_BOOKE
3308 #define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
3309 #define PPCE300 PPC_OPCODE_E300
3310 #define PPCSPE PPC_OPCODE_SPE
3311 #define PPCISEL PPC_OPCODE_ISEL
3312 #define PPCEFS PPC_OPCODE_EFS
3313 #define PPCBRLK PPC_OPCODE_BRLOCK
3314 #define PPCPMR PPC_OPCODE_PMR
3315 #define PPCTMR PPC_OPCODE_TMR
3316 #define PPCCHLK PPC_OPCODE_CACHELCK
3317 #define PPCRFMCI PPC_OPCODE_RFMCI
3318 #define E500MC PPC_OPCODE_E500MC
3319 #define PPCA2 PPC_OPCODE_A2
3320 #define TITAN PPC_OPCODE_TITAN
3321 #define MULHW PPC_OPCODE_405 | PPC_OPCODE_440 | PPC_OPCODE_476 | TITAN
3322 #define E500 PPC_OPCODE_E500
3323 #define E6500 PPC_OPCODE_E6500
3324 #define PPCVLE PPC_OPCODE_VLE
3325 #define PPCHTM PPC_OPCODE_POWER8
3326 #define E200Z4 PPC_OPCODE_E200Z4
3327 #define PPCLSP PPC_OPCODE_LSP
3328 /* The list of embedded processors that use the embedded operand ordering
3329 for the 3 operand dcbt and dcbtst instructions. */
3330 #define DCBT_EO (PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \
3331 | PPC_OPCODE_A2)
3332
3333
3334 \f
3335 /* The opcode table.
3336
3337 The format of the opcode table is:
3338
3339 NAME OPCODE MASK FLAGS ANTI {OPERANDS}
3340
3341 NAME is the name of the instruction.
3342 OPCODE is the instruction opcode.
3343 MASK is the opcode mask; this is used to tell the disassembler
3344 which bits in the actual opcode must match OPCODE.
3345 FLAGS are flags indicating which processors support the instruction.
3346 ANTI indicates which processors don't support the instruction.
3347 OPERANDS is the list of operands.
3348
3349 The disassembler reads the table in order and prints the first
3350 instruction which matches, so this table is sorted to put more
3351 specific instructions before more general instructions.
3352
3353 This table must be sorted by major opcode. Please try to keep it
3354 vaguely sorted within major opcode too, except of course where
3355 constrained otherwise by disassembler operation. */
3356
3357 const struct powerpc_opcode powerpc_opcodes[] = {
3358 {"attn", X(0,256), X_MASK, POWER4|PPCA2, PPC476|PPCVLE, {0}},
3359 {"tdlgti", OPTO(2,TOLGT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3360 {"tdllti", OPTO(2,TOLLT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3361 {"tdeqi", OPTO(2,TOEQ), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3362 {"tdlgei", OPTO(2,TOLGE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3363 {"tdlnli", OPTO(2,TOLNL), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3364 {"tdllei", OPTO(2,TOLLE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3365 {"tdlngi", OPTO(2,TOLNG), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3366 {"tdgti", OPTO(2,TOGT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3367 {"tdgei", OPTO(2,TOGE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3368 {"tdnli", OPTO(2,TONL), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3369 {"tdlti", OPTO(2,TOLT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3370 {"tdlei", OPTO(2,TOLE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3371 {"tdngi", OPTO(2,TONG), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3372 {"tdnei", OPTO(2,TONE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3373 {"tdui", OPTO(2,TOU), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3374 {"tdi", OP(2), OP_MASK, PPC64, PPCVLE, {TO, RA, SI}},
3375
3376 {"twlgti", OPTO(3,TOLGT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3377 {"tlgti", OPTO(3,TOLGT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3378 {"twllti", OPTO(3,TOLLT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3379 {"tllti", OPTO(3,TOLLT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3380 {"tweqi", OPTO(3,TOEQ), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3381 {"teqi", OPTO(3,TOEQ), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3382 {"twlgei", OPTO(3,TOLGE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3383 {"tlgei", OPTO(3,TOLGE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3384 {"twlnli", OPTO(3,TOLNL), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3385 {"tlnli", OPTO(3,TOLNL), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3386 {"twllei", OPTO(3,TOLLE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3387 {"tllei", OPTO(3,TOLLE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3388 {"twlngi", OPTO(3,TOLNG), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3389 {"tlngi", OPTO(3,TOLNG), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3390 {"twgti", OPTO(3,TOGT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3391 {"tgti", OPTO(3,TOGT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3392 {"twgei", OPTO(3,TOGE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3393 {"tgei", OPTO(3,TOGE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3394 {"twnli", OPTO(3,TONL), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3395 {"tnli", OPTO(3,TONL), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3396 {"twlti", OPTO(3,TOLT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3397 {"tlti", OPTO(3,TOLT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3398 {"twlei", OPTO(3,TOLE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3399 {"tlei", OPTO(3,TOLE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3400 {"twngi", OPTO(3,TONG), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3401 {"tngi", OPTO(3,TONG), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3402 {"twnei", OPTO(3,TONE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3403 {"tnei", OPTO(3,TONE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3404 {"twui", OPTO(3,TOU), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3405 {"tui", OPTO(3,TOU), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3406 {"twi", OP(3), OP_MASK, PPCCOM, PPCVLE, {TO, RA, SI}},
3407 {"ti", OP(3), OP_MASK, PWRCOM, PPCVLE, {TO, RA, SI}},
3408
3409 {"ps_cmpu0", X (4, 0), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
3410 {"vaddubm", VX (4, 0), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3411 {"vmul10cuq", VX (4, 1), VXVB_MASK, PPCVEC3, 0, {VD, VA}},
3412 {"vmaxub", VX (4, 2), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3413 {"vrlb", VX (4, 4), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3414 {"vcmpequb", VXR(4, 6,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3415 {"vcmpneb", VXR(4, 7,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3416 {"vmuloub", VX (4, 8), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3417 {"vaddfp", VX (4, 10), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3418 {"psq_lx", XW (4, 6,0), XW_MASK, PPCPS, 0, {FRT,RA,RB,PSWM,PSQM}},
3419 {"vmrghb", VX (4, 12), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3420 {"psq_stx", XW (4, 7,0), XW_MASK, PPCPS, 0, {FRS,RA,RB,PSWM,PSQM}},
3421 {"vpkuhum", VX (4, 14), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3422 {"mulhhwu", XRC(4, 8,0), X_MASK, MULHW, 0, {RT, RA, RB}},
3423 {"mulhhwu.", XRC(4, 8,1), X_MASK, MULHW, 0, {RT, RA, RB}},
3424 {"ps_sum0", A (4, 10,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3425 {"ps_sum0.", A (4, 10,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3426 {"ps_sum1", A (4, 11,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3427 {"ps_sum1.", A (4, 11,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3428 {"ps_muls0", A (4, 12,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3429 {"machhwu", XO (4, 12,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3430 {"ps_muls0.", A (4, 12,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3431 {"machhwu.", XO (4, 12,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3432 {"ps_muls1", A (4, 13,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3433 {"ps_muls1.", A (4, 13,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3434 {"ps_madds0", A (4, 14,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3435 {"ps_madds0.", A (4, 14,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3436 {"ps_madds1", A (4, 15,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3437 {"ps_madds1.", A (4, 15,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3438 {"vmhaddshs", VXA(4, 32), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3439 {"vmhraddshs", VXA(4, 33), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3440 {"vmladduhm", VXA(4, 34), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3441 {"vmsumudm", VXA(4, 35), VXA_MASK, PPCVEC3, 0, {VD, VA, VB, VC}},
3442 {"ps_div", A (4, 18,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3443 {"vmsumubm", VXA(4, 36), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3444 {"ps_div.", A (4, 18,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3445 {"vmsummbm", VXA(4, 37), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3446 {"vmsumuhm", VXA(4, 38), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3447 {"vmsumuhs", VXA(4, 39), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3448 {"ps_sub", A (4, 20,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3449 {"vmsumshm", VXA(4, 40), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3450 {"ps_sub.", A (4, 20,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3451 {"vmsumshs", VXA(4, 41), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3452 {"ps_add", A (4, 21,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3453 {"vsel", VXA(4, 42), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3454 {"ps_add.", A (4, 21,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3455 {"vperm", VXA(4, 43), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3456 {"vsldoi", VXA(4, 44), VXASHB_MASK, PPCVEC, 0, {VD, VA, VB, SHB}},
3457 {"vpermxor", VXA(4, 45), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3458 {"ps_sel", A (4, 23,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3459 {"vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC, 0, {VD, VA, VC, VB}},
3460 {"ps_sel.", A (4, 23,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3461 {"vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC, 0, {VD, VA, VC, VB}},
3462 {"ps_res", A (4, 24,0), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
3463 {"maddhd", VXA(4, 48), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
3464 {"ps_res.", A (4, 24,1), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
3465 {"maddhdu", VXA(4, 49), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
3466 {"ps_mul", A (4, 25,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3467 {"ps_mul.", A (4, 25,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3468 {"maddld", VXA(4, 51), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
3469 {"ps_rsqrte", A (4, 26,0), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
3470 {"ps_rsqrte.", A (4, 26,1), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
3471 {"ps_msub", A (4, 28,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3472 {"ps_msub.", A (4, 28,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3473 {"ps_madd", A (4, 29,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3474 {"ps_madd.", A (4, 29,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3475 {"vpermr", VXA(4, 59), VXA_MASK, PPCVEC3, 0, {VD, VA, VB, VC}},
3476 {"ps_nmsub", A (4, 30,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3477 {"vaddeuqm", VXA(4, 60), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3478 {"ps_nmsub.", A (4, 30,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3479 {"vaddecuq", VXA(4, 61), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3480 {"ps_nmadd", A (4, 31,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3481 {"vsubeuqm", VXA(4, 62), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3482 {"ps_nmadd.", A (4, 31,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3483 {"vsubecuq", VXA(4, 63), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3484 {"ps_cmpo0", X (4, 32), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
3485 {"vadduhm", VX (4, 64), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3486 {"vmul10ecuq", VX (4, 65), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3487 {"vmaxuh", VX (4, 66), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3488 {"vrlh", VX (4, 68), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3489 {"vcmpequh", VXR(4, 70,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3490 {"vcmpneh", VXR(4, 71,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3491 {"vmulouh", VX (4, 72), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3492 {"vsubfp", VX (4, 74), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3493 {"psq_lux", XW (4, 38,0), XW_MASK, PPCPS, 0, {FRT,RA,RB,PSWM,PSQM}},
3494 {"vmrghh", VX (4, 76), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3495 {"psq_stux", XW (4, 39,0), XW_MASK, PPCPS, 0, {FRS,RA,RB,PSWM,PSQM}},
3496 {"vpkuwum", VX (4, 78), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3497 {"ps_neg", XRC(4, 40,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3498 {"mulhhw", XRC(4, 40,0), X_MASK, MULHW, 0, {RT, RA, RB}},
3499 {"ps_neg.", XRC(4, 40,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3500 {"mulhhw.", XRC(4, 40,1), X_MASK, MULHW, 0, {RT, RA, RB}},
3501 {"machhw", XO (4, 44,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3502 {"machhw.", XO (4, 44,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3503 {"nmachhw", XO (4, 46,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3504 {"nmachhw.", XO (4, 46,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3505 {"ps_cmpu1", X (4, 64), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
3506 {"vadduwm", VX (4, 128), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3507 {"vmaxuw", VX (4, 130), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3508 {"vrlw", VX (4, 132), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3509 {"vrlwmi", VX (4, 133), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3510 {"vcmpequw", VXR(4, 134,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3511 {"vcmpnew", VXR(4, 135,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3512 {"vmulouw", VX (4, 136), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3513 {"vmuluwm", VX (4, 137), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3514 {"vmrghw", VX (4, 140), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3515 {"vpkuhus", VX (4, 142), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3516 {"ps_mr", XRC(4, 72,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3517 {"ps_mr.", XRC(4, 72,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3518 {"machhwsu", XO (4, 76,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3519 {"machhwsu.", XO (4, 76,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3520 {"ps_cmpo1", X (4, 96), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
3521 {"vaddudm", VX (4, 192), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3522 {"vmaxud", VX (4, 194), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3523 {"vrld", VX (4, 196), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3524 {"vrldmi", VX (4, 197), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3525 {"vcmpeqfp", VXR(4, 198,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3526 {"vcmpequd", VXR(4, 199,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
3527 {"vpkuwus", VX (4, 206), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3528 {"machhws", XO (4, 108,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3529 {"machhws.", XO (4, 108,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3530 {"nmachhws", XO (4, 110,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3531 {"nmachhws.", XO (4, 110,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3532 {"vadduqm", VX (4, 256), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3533 {"vmaxsb", VX (4, 258), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3534 {"vslb", VX (4, 260), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3535 {"vcmpnezb", VXR(4, 263,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3536 {"vmulosb", VX (4, 264), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3537 {"vrefp", VX (4, 266), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3538 {"vmrglb", VX (4, 268), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3539 {"vpkshus", VX (4, 270), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3540 {"ps_nabs", XRC(4, 136,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3541 {"mulchwu", XRC(4, 136,0), X_MASK, MULHW, 0, {RT, RA, RB}},
3542 {"ps_nabs.", XRC(4, 136,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3543 {"mulchwu.", XRC(4, 136,1), X_MASK, MULHW, 0, {RT, RA, RB}},
3544 {"macchwu", XO (4, 140,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3545 {"macchwu.", XO (4, 140,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3546 {"vaddcuq", VX (4, 320), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3547 {"vmaxsh", VX (4, 322), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3548 {"vslh", VX (4, 324), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3549 {"vcmpnezh", VXR(4, 327,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3550 {"vmulosh", VX (4, 328), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3551 {"vrsqrtefp", VX (4, 330), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3552 {"vmrglh", VX (4, 332), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3553 {"vpkswus", VX (4, 334), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3554 {"mulchw", XRC(4, 168,0), X_MASK, MULHW, 0, {RT, RA, RB}},
3555 {"mulchw.", XRC(4, 168,1), X_MASK, MULHW, 0, {RT, RA, RB}},
3556 {"macchw", XO (4, 172,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3557 {"macchw.", XO (4, 172,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3558 {"nmacchw", XO (4, 174,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3559 {"nmacchw.", XO (4, 174,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3560 {"vaddcuw", VX (4, 384), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3561 {"vmaxsw", VX (4, 386), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3562 {"vslw", VX (4, 388), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3563 {"vrlwnm", VX (4, 389), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3564 {"vcmpnezw", VXR(4, 391,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3565 {"vmulosw", VX (4, 392), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3566 {"vexptefp", VX (4, 394), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3567 {"vmrglw", VX (4, 396), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3568 {"vpkshss", VX (4, 398), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3569 {"macchwsu", XO (4, 204,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3570 {"macchwsu.", XO (4, 204,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3571 {"vmaxsd", VX (4, 450), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3572 {"vsl", VX (4, 452), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3573 {"vrldnm", VX (4, 453), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3574 {"vcmpgefp", VXR(4, 454,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3575 {"vlogefp", VX (4, 458), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3576 {"vpkswss", VX (4, 462), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3577 {"macchws", XO (4, 236,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3578 {"macchws.", XO (4, 236,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3579 {"nmacchws", XO (4, 238,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3580 {"nmacchws.", XO (4, 238,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3581 {"evaddw", VX (4, 512), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3582 {"vaddubs", VX (4, 512), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3583 {"vmul10uq", VX (4, 513), VXVB_MASK, PPCVEC3, 0, {VD, VA}},
3584 {"evaddiw", VX (4, 514), VX_MASK, PPCSPE, 0, {RS, RB, UIMM}},
3585 {"vminub", VX (4, 514), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3586 {"evsubfw", VX (4, 516), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3587 {"evsubw", VX (4, 516), VX_MASK, PPCSPE, 0, {RS, RB, RA}},
3588 {"vsrb", VX (4, 516), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3589 {"evsubifw", VX (4, 518), VX_MASK, PPCSPE, 0, {RS, UIMM, RB}},
3590 {"evsubiw", VX (4, 518), VX_MASK, PPCSPE, 0, {RS, RB, UIMM}},
3591 {"vcmpgtub", VXR(4, 518,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3592 {"evabs", VX (4, 520), VX_MASK, PPCSPE, 0, {RS, RA}},
3593 {"vmuleub", VX (4, 520), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3594 {"evneg", VX (4, 521), VX_MASK, PPCSPE, 0, {RS, RA}},
3595 {"evextsb", VX (4, 522), VX_MASK, PPCSPE, 0, {RS, RA}},
3596 {"vrfin", VX (4, 522), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3597 {"evextsh", VX (4, 523), VX_MASK, PPCSPE, 0, {RS, RA}},
3598 {"evrndw", VX (4, 524), VX_MASK, PPCSPE, 0, {RS, RA}},
3599 {"vspltb", VX (4, 524), VXUIMM4_MASK, PPCVEC, 0, {VD, VB, UIMM4}},
3600 {"vextractub", VX (4, 525), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3601 {"evcntlzw", VX (4, 525), VX_MASK, PPCSPE, 0, {RS, RA}},
3602 {"evcntlsw", VX (4, 526), VX_MASK, PPCSPE, 0, {RS, RA}},
3603 {"vupkhsb", VX (4, 526), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3604 {"brinc", VX (4, 527), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3605 {"ps_abs", XRC(4, 264,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3606 {"ps_abs.", XRC(4, 264,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3607 {"evand", VX (4, 529), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3608 {"evandc", VX (4, 530), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3609 {"evxor", VX (4, 534), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3610 {"evmr", VX (4, 535), VX_MASK, PPCSPE, 0, {RS, RA, BBA}},
3611 {"evor", VX (4, 535), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3612 {"evnor", VX (4, 536), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3613 {"evnot", VX (4, 536), VX_MASK, PPCSPE, 0, {RS, RA, BBA}},
3614 {"get", APU(4, 268,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
3615 {"eveqv", VX (4, 537), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3616 {"evorc", VX (4, 539), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3617 {"evnand", VX (4, 542), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3618 {"evsrwu", VX (4, 544), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3619 {"evsrws", VX (4, 545), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3620 {"evsrwiu", VX (4, 546), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
3621 {"evsrwis", VX (4, 547), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
3622 {"evslw", VX (4, 548), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3623 {"evslwi", VX (4, 550), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
3624 {"evrlw", VX (4, 552), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3625 {"evsplati", VX (4, 553), VX_MASK, PPCSPE, 0, {RS, SIMM}},
3626 {"evrlwi", VX (4, 554), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
3627 {"evsplatfi", VX (4, 555), VX_MASK, PPCSPE, 0, {RS, SIMM}},
3628 {"evmergehi", VX (4, 556), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3629 {"evmergelo", VX (4, 557), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3630 {"evmergehilo", VX (4, 558), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3631 {"evmergelohi", VX (4, 559), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3632 {"evcmpgtu", VX (4, 560), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3633 {"evcmpgts", VX (4, 561), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3634 {"evcmpltu", VX (4, 562), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3635 {"evcmplts", VX (4, 563), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3636 {"evcmpeq", VX (4, 564), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3637 {"cget", APU(4, 284,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
3638 {"vadduhs", VX (4, 576), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3639 {"vmul10euq", VX (4, 577), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3640 {"vminuh", VX (4, 578), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3641 {"vsrh", VX (4, 580), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3642 {"vcmpgtuh", VXR(4, 582,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3643 {"vmuleuh", VX (4, 584), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3644 {"vrfiz", VX (4, 586), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3645 {"vsplth", VX (4, 588), VXUIMM3_MASK, PPCVEC, 0, {VD, VB, UIMM3}},
3646 {"vextractuh", VX (4, 589), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3647 {"vupkhsh", VX (4, 590), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3648 {"nget", APU(4, 300,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
3649 {"evsel", EVSEL(4,79), EVSEL_MASK, PPCSPE, 0, {RS, RA, RB, CRFS}},
3650 {"ncget", APU(4, 316,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
3651 {"evfsadd", VX (4, 640), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3652 {"vadduws", VX (4, 640), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3653 {"evfssub", VX (4, 641), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3654 {"vminuw", VX (4, 642), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3655 {"evfsabs", VX (4, 644), VX_MASK, PPCSPE, 0, {RS, RA}},
3656 {"vsrw", VX (4, 644), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3657 {"evfsnabs", VX (4, 645), VX_MASK, PPCSPE, 0, {RS, RA}},
3658 {"evfsneg", VX (4, 646), VX_MASK, PPCSPE, 0, {RS, RA}},
3659 {"vcmpgtuw", VXR(4, 646,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3660 {"vmuleuw", VX (4, 648), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3661 {"evfsmul", VX (4, 648), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3662 {"evfsdiv", VX (4, 649), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3663 {"vrfip", VX (4, 650), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3664 {"evfscmpgt", VX (4, 652), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3665 {"vspltw", VX (4, 652), VXUIMM2_MASK, PPCVEC, 0, {VD, VB, UIMM2}},
3666 {"vextractuw", VX (4, 653), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3667 {"evfscmplt", VX (4, 653), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3668 {"evfscmpeq", VX (4, 654), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3669 {"vupklsb", VX (4, 654), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3670 {"evfscfui", VX (4, 656), VX_MASK, PPCSPE, 0, {RS, RB}},
3671 {"evfscfsi", VX (4, 657), VX_MASK, PPCSPE, 0, {RS, RB}},
3672 {"evfscfuf", VX (4, 658), VX_MASK, PPCSPE, 0, {RS, RB}},
3673 {"evfscfsf", VX (4, 659), VX_MASK, PPCSPE, 0, {RS, RB}},
3674 {"evfsctui", VX (4, 660), VX_MASK, PPCSPE, 0, {RS, RB}},
3675 {"evfsctsi", VX (4, 661), VX_MASK, PPCSPE, 0, {RS, RB}},
3676 {"evfsctuf", VX (4, 662), VX_MASK, PPCSPE, 0, {RS, RB}},
3677 {"evfsctsf", VX (4, 663), VX_MASK, PPCSPE, 0, {RS, RB}},
3678 {"evfsctuiz", VX (4, 664), VX_MASK, PPCSPE, 0, {RS, RB}},
3679 {"put", APU(4, 332,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
3680 {"evfsctsiz", VX (4, 666), VX_MASK, PPCSPE, 0, {RS, RB}},
3681 {"evfststgt", VX (4, 668), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3682 {"evfststlt", VX (4, 669), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3683 {"evfststeq", VX (4, 670), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3684 {"cput", APU(4, 348,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
3685 {"efsadd", VX (4, 704), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3686 {"efssub", VX (4, 705), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3687 {"vminud", VX (4, 706), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3688 {"efsabs", VX (4, 708), VX_MASK, PPCEFS, 0, {RS, RA}},
3689 {"vsr", VX (4, 708), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3690 {"efsnabs", VX (4, 709), VX_MASK, PPCEFS, 0, {RS, RA}},
3691 {"efsneg", VX (4, 710), VX_MASK, PPCEFS, 0, {RS, RA}},
3692 {"vcmpgtfp", VXR(4, 710,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3693 {"vcmpgtud", VXR(4, 711,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
3694 {"efsmul", VX (4, 712), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3695 {"efsdiv", VX (4, 713), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3696 {"vrfim", VX (4, 714), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3697 {"efscmpgt", VX (4, 716), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3698 {"vextractd", VX (4, 717), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3699 {"efscmplt", VX (4, 717), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3700 {"efscmpeq", VX (4, 718), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3701 {"vupklsh", VX (4, 718), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3702 {"efscfd", VX (4, 719), VX_MASK, PPCEFS, 0, {RS, RB}},
3703 {"efscfui", VX (4, 720), VX_MASK, PPCEFS, 0, {RS, RB}},
3704 {"efscfsi", VX (4, 721), VX_MASK, PPCEFS, 0, {RS, RB}},
3705 {"efscfuf", VX (4, 722), VX_MASK, PPCEFS, 0, {RS, RB}},
3706 {"efscfsf", VX (4, 723), VX_MASK, PPCEFS, 0, {RS, RB}},
3707 {"efsctui", VX (4, 724), VX_MASK, PPCEFS, 0, {RS, RB}},
3708 {"efsctsi", VX (4, 725), VX_MASK, PPCEFS, 0, {RS, RB}},
3709 {"efsctuf", VX (4, 726), VX_MASK, PPCEFS, 0, {RS, RB}},
3710 {"efsctsf", VX (4, 727), VX_MASK, PPCEFS, 0, {RS, RB}},
3711 {"efsctuiz", VX (4, 728), VX_MASK, PPCEFS, 0, {RS, RB}},
3712 {"nput", APU(4, 364,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
3713 {"efsctsiz", VX (4, 730), VX_MASK, PPCEFS, 0, {RS, RB}},
3714 {"efststgt", VX (4, 732), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3715 {"efststlt", VX (4, 733), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3716 {"efststeq", VX (4, 734), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3717 {"efdadd", VX (4, 736), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3718 {"efdsub", VX (4, 737), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3719 {"efdcfuid", VX (4, 738), VX_MASK, PPCEFS, 0, {RS, RB}},
3720 {"efdcfsid", VX (4, 739), VX_MASK, PPCEFS, 0, {RS, RB}},
3721 {"efdabs", VX (4, 740), VX_MASK, PPCEFS, 0, {RS, RA}},
3722 {"efdnabs", VX (4, 741), VX_MASK, PPCEFS, 0, {RS, RA}},
3723 {"efdneg", VX (4, 742), VX_MASK, PPCEFS, 0, {RS, RA}},
3724 {"efdmul", VX (4, 744), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3725 {"efddiv", VX (4, 745), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3726 {"efdctuidz", VX (4, 746), VX_MASK, PPCEFS, 0, {RS, RB}},
3727 {"efdctsidz", VX (4, 747), VX_MASK, PPCEFS, 0, {RS, RB}},
3728 {"efdcmpgt", VX (4, 748), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3729 {"efdcmplt", VX (4, 749), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3730 {"efdcmpeq", VX (4, 750), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3731 {"efdcfs", VX (4, 751), VX_MASK, PPCEFS, 0, {RS, RB}},
3732 {"efdcfui", VX (4, 752), VX_MASK, PPCEFS, 0, {RS, RB}},
3733 {"efdcfsi", VX (4, 753), VX_MASK, PPCEFS, 0, {RS, RB}},
3734 {"efdcfuf", VX (4, 754), VX_MASK, PPCEFS, 0, {RS, RB}},
3735 {"efdcfsf", VX (4, 755), VX_MASK, PPCEFS, 0, {RS, RB}},
3736 {"efdctui", VX (4, 756), VX_MASK, PPCEFS, 0, {RS, RB}},
3737 {"efdctsi", VX (4, 757), VX_MASK, PPCEFS, 0, {RS, RB}},
3738 {"efdctuf", VX (4, 758), VX_MASK, PPCEFS, 0, {RS, RB}},
3739 {"efdctsf", VX (4, 759), VX_MASK, PPCEFS, 0, {RS, RB}},
3740 {"efdctuiz", VX (4, 760), VX_MASK, PPCEFS, 0, {RS, RB}},
3741 {"ncput", APU(4, 380,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
3742 {"efdctsiz", VX (4, 762), VX_MASK, PPCEFS, 0, {RS, RB}},
3743 {"efdtstgt", VX (4, 764), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3744 {"efdtstlt", VX (4, 765), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3745 {"efdtsteq", VX (4, 766), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3746 {"evlddx", VX (4, 768), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3747 {"vaddsbs", VX (4, 768), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3748 {"evldd", VX (4, 769), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
3749 {"evldwx", VX (4, 770), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3750 {"vminsb", VX (4, 770), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3751 {"evldw", VX (4, 771), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
3752 {"evldhx", VX (4, 772), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3753 {"vsrab", VX (4, 772), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3754 {"evldh", VX (4, 773), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
3755 {"vcmpgtsb", VXR(4, 774,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3756 {"evlhhesplatx",VX (4, 776), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3757 {"vmulesb", VX (4, 776), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3758 {"evlhhesplat", VX (4, 777), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
3759 {"vcfux", VX (4, 778), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3760 {"vcuxwfp", VX (4, 778), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3761 {"evlhhousplatx",VX(4, 780), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3762 {"vspltisb", VX (4, 780), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
3763 {"vinsertb", VX (4, 781), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3764 {"evlhhousplat",VX (4, 781), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
3765 {"evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3766 {"vpkpx", VX (4, 782), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3767 {"evlhhossplat",VX (4, 783), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
3768 {"mullhwu", XRC(4, 392,0), X_MASK, MULHW, 0, {RT, RA, RB}},
3769 {"evlwhex", VX (4, 784), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3770 {"mullhwu.", XRC(4, 392,1), X_MASK, MULHW, 0, {RT, RA, RB}},
3771 {"evlwhe", VX (4, 785), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3772 {"evlwhoux", VX (4, 788), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3773 {"evlwhou", VX (4, 789), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3774 {"evlwhosx", VX (4, 790), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3775 {"evlwhos", VX (4, 791), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3776 {"maclhwu", XO (4, 396,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
3777 {"evlwwsplatx", VX (4, 792), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3778 {"maclhwu.", XO (4, 396,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
3779 {"evlwwsplat", VX (4, 793), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3780 {"evlwhsplatx", VX (4, 796), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3781 {"evlwhsplat", VX (4, 797), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3782 {"evstddx", VX (4, 800), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3783 {"evstdd", VX (4, 801), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
3784 {"evstdwx", VX (4, 802), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3785 {"evstdw", VX (4, 803), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
3786 {"evstdhx", VX (4, 804), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3787 {"evstdh", VX (4, 805), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
3788 {"evstwhex", VX (4, 816), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3789 {"evstwhe", VX (4, 817), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3790 {"evstwhox", VX (4, 820), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3791 {"evstwho", VX (4, 821), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3792 {"evstwwex", VX (4, 824), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3793 {"evstwwe", VX (4, 825), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3794 {"evstwwox", VX (4, 828), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3795 {"evstwwo", VX (4, 829), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3796 {"vaddshs", VX (4, 832), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3797 {"bcdcpsgn.", VX (4, 833), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3798 {"vminsh", VX (4, 834), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3799 {"vsrah", VX (4, 836), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3800 {"vcmpgtsh", VXR(4, 838,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3801 {"vmulesh", VX (4, 840), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3802 {"vcfsx", VX (4, 842), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3803 {"vcsxwfp", VX (4, 842), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3804 {"vspltish", VX (4, 844), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
3805 {"vinserth", VX (4, 845), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3806 {"vupkhpx", VX (4, 846), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3807 {"mullhw", XRC(4, 424,0), X_MASK, MULHW, 0, {RT, RA, RB}},
3808 {"mullhw.", XRC(4, 424,1), X_MASK, MULHW, 0, {RT, RA, RB}},
3809 {"maclhw", XO (4, 428,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
3810 {"maclhw.", XO (4, 428,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
3811 {"nmaclhw", XO (4, 430,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
3812 {"nmaclhw.", XO (4, 430,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
3813 {"vaddsws", VX (4, 896), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3814 {"vminsw", VX (4, 898), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3815 {"vsraw", VX (4, 900), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3816 {"vcmpgtsw", VXR(4, 902,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3817 {"vmulesw", VX (4, 904), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3818 {"vctuxs", VX (4, 906), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3819 {"vcfpuxws", VX (4, 906), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3820 {"vspltisw", VX (4, 908), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
3821 {"vinsertw", VX (4, 909), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3822 {"maclhwsu", XO (4, 460,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3823 {"maclhwsu.", XO (4, 460,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3824 {"vminsd", VX (4, 962), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3825 {"vsrad", VX (4, 964), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3826 {"vcmpbfp", VXR(4, 966,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3827 {"vcmpgtsd", VXR(4, 967,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
3828 {"vctsxs", VX (4, 970), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3829 {"vcfpsxws", VX (4, 970), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3830 {"vinsertd", VX (4, 973), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3831 {"vupklpx", VX (4, 974), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3832 {"maclhws", XO (4, 492,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3833 {"maclhws.", XO (4, 492,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3834 {"nmaclhws", XO (4, 494,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3835 {"nmaclhws.", XO (4, 494,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3836 {"vsububm", VX (4,1024), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3837 {"bcdadd.", VX (4,1025), VXPS_MASK, PPCVEC2, 0, {VD, VA, VB, PS}},
3838 {"vavgub", VX (4,1026), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3839 {"vabsdub", VX (4,1027), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3840 {"evmhessf", VX (4,1027), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3841 {"vand", VX (4,1028), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3842 {"vcmpequb.", VXR(4, 6,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3843 {"vcmpneb.", VXR(4, 7,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3844 {"udi0fcm.", APU(4, 515,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
3845 {"udi0fcm", APU(4, 515,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
3846 {"evmhossf", VX (4,1031), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3847 {"vpmsumb", VX (4,1032), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3848 {"evmheumi", VX (4,1032), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3849 {"evmhesmi", VX (4,1033), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3850 {"vmaxfp", VX (4,1034), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3851 {"evmhesmf", VX (4,1035), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3852 {"evmhoumi", VX (4,1036), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3853 {"vslo", VX (4,1036), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3854 {"evmhosmi", VX (4,1037), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3855 {"evmhosmf", VX (4,1039), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3856 {"machhwuo", XO (4, 12,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3857 {"machhwuo.", XO (4, 12,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3858 {"ps_merge00", XOPS(4,528,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3859 {"ps_merge00.", XOPS(4,528,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3860 {"evmhessfa", VX (4,1059), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3861 {"evmhossfa", VX (4,1063), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3862 {"evmheumia", VX (4,1064), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3863 {"evmhesmia", VX (4,1065), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3864 {"evmhesmfa", VX (4,1067), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3865 {"evmhoumia", VX (4,1068), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3866 {"evmhosmia", VX (4,1069), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3867 {"evmhosmfa", VX (4,1071), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3868 {"vsubuhm", VX (4,1088), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3869 {"bcdsub.", VX (4,1089), VXPS_MASK, PPCVEC2, 0, {VD, VA, VB, PS}},
3870 {"vavguh", VX (4,1090), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3871 {"vabsduh", VX (4,1091), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3872 {"vandc", VX (4,1092), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3873 {"vcmpequh.", VXR(4, 70,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3874 {"udi1fcm.", APU(4, 547,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
3875 {"udi1fcm", APU(4, 547,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
3876 {"vcmpneh.", VXR(4, 71,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3877 {"evmwhssf", VX (4,1095), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3878 {"vpmsumh", VX (4,1096), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3879 {"evmwlumi", VX (4,1096), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3880 {"vminfp", VX (4,1098), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3881 {"evmwhumi", VX (4,1100), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3882 {"vsro", VX (4,1100), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3883 {"evmwhsmi", VX (4,1101), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3884 {"vpkudum", VX (4,1102), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3885 {"evmwhsmf", VX (4,1103), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3886 {"evmwssf", VX (4,1107), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3887 {"machhwo", XO (4, 44,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3888 {"evmwumi", VX (4,1112), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3889 {"machhwo.", XO (4, 44,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3890 {"evmwsmi", VX (4,1113), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3891 {"evmwsmf", VX (4,1115), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3892 {"nmachhwo", XO (4, 46,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3893 {"nmachhwo.", XO (4, 46,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3894 {"ps_merge01", XOPS(4,560,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3895 {"ps_merge01.", XOPS(4,560,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3896 {"evmwhssfa", VX (4,1127), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3897 {"evmwlumia", VX (4,1128), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3898 {"evmwhumia", VX (4,1132), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3899 {"evmwhsmia", VX (4,1133), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3900 {"evmwhsmfa", VX (4,1135), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3901 {"evmwssfa", VX (4,1139), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3902 {"evmwumia", VX (4,1144), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3903 {"evmwsmia", VX (4,1145), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3904 {"evmwsmfa", VX (4,1147), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3905 {"vsubuwm", VX (4,1152), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3906 {"bcdus.", VX (4,1153), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3907 {"vavguw", VX (4,1154), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3908 {"vabsduw", VX (4,1155), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3909 {"vmr", VX (4,1156), VX_MASK, PPCVEC, 0, {VD, VA, VBA}},
3910 {"vor", VX (4,1156), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3911 {"vcmpnew.", VXR(4, 135,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3912 {"vpmsumw", VX (4,1160), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3913 {"vcmpequw.", VXR(4, 134,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3914 {"udi2fcm.", APU(4, 579,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
3915 {"udi2fcm", APU(4, 579,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
3916 {"machhwsuo", XO (4, 76,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3917 {"machhwsuo.", XO (4, 76,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3918 {"ps_merge10", XOPS(4,592,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3919 {"ps_merge10.", XOPS(4,592,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3920 {"vsubudm", VX (4,1216), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3921 {"evaddusiaaw", VX (4,1216), VX_MASK, PPCSPE, 0, {RS, RA}},
3922 {"bcds.", VX (4,1217), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
3923 {"evaddssiaaw", VX (4,1217), VX_MASK, PPCSPE, 0, {RS, RA}},
3924 {"evsubfusiaaw",VX (4,1218), VX_MASK, PPCSPE, 0, {RS, RA}},
3925 {"evsubfssiaaw",VX (4,1219), VX_MASK, PPCSPE, 0, {RS, RA}},
3926 {"evmra", VX (4,1220), VX_MASK, PPCSPE, 0, {RS, RA}},
3927 {"vxor", VX (4,1220), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3928 {"evdivws", VX (4,1222), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3929 {"vcmpeqfp.", VXR(4, 198,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3930 {"udi3fcm.", APU(4, 611,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
3931 {"vcmpequd.", VXR(4, 199,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
3932 {"udi3fcm", APU(4, 611,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
3933 {"evdivwu", VX (4,1223), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3934 {"vpmsumd", VX (4,1224), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3935 {"evaddumiaaw", VX (4,1224), VX_MASK, PPCSPE, 0, {RS, RA}},
3936 {"evaddsmiaaw", VX (4,1225), VX_MASK, PPCSPE, 0, {RS, RA}},
3937 {"evsubfumiaaw",VX (4,1226), VX_MASK, PPCSPE, 0, {RS, RA}},
3938 {"evsubfsmiaaw",VX (4,1227), VX_MASK, PPCSPE, 0, {RS, RA}},
3939 {"vpkudus", VX (4,1230), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3940 {"machhwso", XO (4, 108,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3941 {"machhwso.", XO (4, 108,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3942 {"nmachhwso", XO (4, 110,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3943 {"nmachhwso.", XO (4, 110,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3944 {"ps_merge11", XOPS(4,624,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3945 {"ps_merge11.", XOPS(4,624,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3946 {"vsubuqm", VX (4,1280), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3947 {"evmheusiaaw", VX (4,1280), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3948 {"bcdtrunc.", VX (4,1281), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
3949 {"evmhessiaaw", VX (4,1281), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3950 {"vavgsb", VX (4,1282), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3951 {"evmhessfaaw", VX (4,1283), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3952 {"evmhousiaaw", VX (4,1284), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3953 {"vnot", VX (4,1284), VX_MASK, PPCVEC, 0, {VD, VA, VBA}},
3954 {"vnor", VX (4,1284), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3955 {"evmhossiaaw", VX (4,1285), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3956 {"udi4fcm.", APU(4, 643,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
3957 {"udi4fcm", APU(4, 643,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
3958 {"vcmpnezb.", VXR(4, 263,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3959 {"evmhossfaaw", VX (4,1287), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3960 {"evmheumiaaw", VX (4,1288), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3961 {"vcipher", VX (4,1288), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3962 {"vcipherlast", VX (4,1289), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3963 {"evmhesmiaaw", VX (4,1289), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3964 {"evmhesmfaaw", VX (4,1291), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3965 {"vgbbd", VX (4,1292), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
3966 {"evmhoumiaaw", VX (4,1292), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3967 {"evmhosmiaaw", VX (4,1293), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3968 {"evmhosmfaaw", VX (4,1295), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3969 {"macchwuo", XO (4, 140,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3970 {"macchwuo.", XO (4, 140,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3971 {"evmhegumiaa", VX (4,1320), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3972 {"evmhegsmiaa", VX (4,1321), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3973 {"evmhegsmfaa", VX (4,1323), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3974 {"evmhogumiaa", VX (4,1324), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3975 {"evmhogsmiaa", VX (4,1325), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3976 {"evmhogsmfaa", VX (4,1327), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3977 {"vsubcuq", VX (4,1344), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3978 {"evmwlusiaaw", VX (4,1344), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3979 {"bcdutrunc.", VX (4,1345), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3980 {"evmwlssiaaw", VX (4,1345), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3981 {"vavgsh", VX (4,1346), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3982 {"vorc", VX (4,1348), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3983 {"udi5fcm.", APU(4, 675,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
3984 {"udi5fcm", APU(4, 675,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
3985 {"vcmpnezh.", VXR(4, 327,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3986 {"vncipher", VX (4,1352), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3987 {"evmwlumiaaw", VX (4,1352), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3988 {"vncipherlast",VX (4,1353), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3989 {"evmwlsmiaaw", VX (4,1353), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3990 {"vbpermq", VX (4,1356), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3991 {"vpksdus", VX (4,1358), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3992 {"evmwssfaa", VX (4,1363), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3993 {"macchwo", XO (4, 172,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3994 {"evmwumiaa", VX (4,1368), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3995 {"macchwo.", XO (4, 172,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3996 {"evmwsmiaa", VX (4,1369), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3997 {"evmwsmfaa", VX (4,1371), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3998 {"nmacchwo", XO (4, 174,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3999 {"nmacchwo.", XO (4, 174,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4000 {"evmheusianw", VX (4,1408), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4001 {"vsubcuw", VX (4,1408), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4002 {"evmhessianw", VX (4,1409), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4003 {"bcdctsq.", VXVA(4,1409,0), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4004 {"bcdcfsq.", VXVA(4,1409,2), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
4005 {"bcdctz.", VXVA(4,1409,4), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
4006 {"bcdctn.", VXVA(4,1409,5), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4007 {"bcdcfz.", VXVA(4,1409,6), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
4008 {"bcdcfn.", VXVA(4,1409,7), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
4009 {"bcdsetsgn.", VXVA(4,1409,31), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
4010 {"vavgsw", VX (4,1410), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4011 {"evmhessfanw", VX (4,1411), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4012 {"vnand", VX (4,1412), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4013 {"evmhousianw", VX (4,1412), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4014 {"evmhossianw", VX (4,1413), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4015 {"udi6fcm.", APU(4, 707,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
4016 {"udi6fcm", APU(4, 707,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
4017 {"vcmpnezw.", VXR(4, 391,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
4018 {"evmhossfanw", VX (4,1415), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4019 {"evmheumianw", VX (4,1416), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4020 {"evmhesmianw", VX (4,1417), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4021 {"evmhesmfanw", VX (4,1419), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4022 {"evmhoumianw", VX (4,1420), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4023 {"evmhosmianw", VX (4,1421), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4024 {"evmhosmfanw", VX (4,1423), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4025 {"macchwsuo", XO (4, 204,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4026 {"macchwsuo.", XO (4, 204,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4027 {"evmhegumian", VX (4,1448), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4028 {"evmhegsmian", VX (4,1449), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4029 {"evmhegsmfan", VX (4,1451), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4030 {"evmhogumian", VX (4,1452), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4031 {"evmhogsmian", VX (4,1453), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4032 {"evmhogsmfan", VX (4,1455), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4033 {"evmwlusianw", VX (4,1472), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4034 {"bcdsr.", VX (4,1473), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
4035 {"evmwlssianw", VX (4,1473), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4036 {"vsld", VX (4,1476), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4037 {"vcmpgefp.", VXR(4, 454,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4038 {"udi7fcm.", APU(4, 739,0), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
4039 {"udi7fcm", APU(4, 739,1), APU_MASK, PPC405|PPC440, 0, {URT, URA, URB}},
4040 {"vsbox", VX (4,1480), VXVB_MASK, PPCVEC2, 0, {VD, VA}},
4041 {"evmwlumianw", VX (4,1480), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4042 {"evmwlsmianw", VX (4,1481), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4043 {"vbpermd", VX (4,1484), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4044 {"vpksdss", VX (4,1486), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4045 {"evmwssfan", VX (4,1491), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4046 {"macchwso", XO (4, 236,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4047 {"evmwumian", VX (4,1496), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4048 {"macchwso.", XO (4, 236,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4049 {"evmwsmian", VX (4,1497), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4050 {"evmwsmfan", VX (4,1499), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
4051 {"nmacchwso", XO (4, 238,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4052 {"nmacchwso.", XO (4, 238,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4053 {"vsububs", VX (4,1536), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4054 {"vclzlsbb", VXVA(4,1538,0), VXVA_MASK, PPCVEC3, 0, {RT, VB}},
4055 {"vctzlsbb", VXVA(4,1538,1), VXVA_MASK, PPCVEC3, 0, {RT, VB}},
4056 {"vnegw", VXVA(4,1538,6), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4057 {"vnegd", VXVA(4,1538,7), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4058 {"vprtybw", VXVA(4,1538,8), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4059 {"vprtybd", VXVA(4,1538,9), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4060 {"vprtybq", VXVA(4,1538,10), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4061 {"vextsb2w", VXVA(4,1538,16), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4062 {"vextsh2w", VXVA(4,1538,17), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4063 {"vextsb2d", VXVA(4,1538,24), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4064 {"vextsh2d", VXVA(4,1538,25), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4065 {"vextsw2d", VXVA(4,1538,26), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4066 {"vctzb", VXVA(4,1538,28), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4067 {"vctzh", VXVA(4,1538,29), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4068 {"vctzw", VXVA(4,1538,30), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4069 {"vctzd", VXVA(4,1538,31), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
4070 {"mfvscr", VX (4,1540), VXVAVB_MASK, PPCVEC, 0, {VD}},
4071 {"vcmpgtub.", VXR(4, 518,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4072 {"udi8fcm.", APU(4, 771,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
4073 {"udi8fcm", APU(4, 771,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
4074 {"vsum4ubs", VX (4,1544), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4075 {"vextublx", VX (4,1549), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
4076 {"vsubuhs", VX (4,1600), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4077 {"mtvscr", VX (4,1604), VXVDVA_MASK, PPCVEC, 0, {VB}},
4078 {"vcmpgtuh.", VXR(4, 582,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4079 {"vsum4shs", VX (4,1608), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4080 {"udi9fcm.", APU(4, 804,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
4081 {"udi9fcm", APU(4, 804,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
4082 {"vextuhlx", VX (4,1613), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
4083 {"vupkhsw", VX (4,1614), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4084 {"vsubuws", VX (4,1664), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4085 {"vshasigmaw", VX (4,1666), VX_MASK, PPCVEC2, 0, {VD, VA, ST, SIX}},
4086 {"veqv", VX (4,1668), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4087 {"vcmpgtuw.", VXR(4, 646,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4088 {"udi10fcm.", APU(4, 835,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
4089 {"udi10fcm", APU(4, 835,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
4090 {"vsum2sws", VX (4,1672), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4091 {"vmrgow", VX (4,1676), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4092 {"vextuwlx", VX (4,1677), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
4093 {"vshasigmad", VX (4,1730), VX_MASK, PPCVEC2, 0, {VD, VA, ST, SIX}},
4094 {"vsrd", VX (4,1732), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4095 {"vcmpgtfp.", VXR(4, 710,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4096 {"udi11fcm.", APU(4, 867,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
4097 {"vcmpgtud.", VXR(4, 711,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
4098 {"udi11fcm", APU(4, 867,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
4099 {"vupklsw", VX (4,1742), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4100 {"vsubsbs", VX (4,1792), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4101 {"vclzb", VX (4,1794), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4102 {"vpopcntb", VX (4,1795), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4103 {"vsrv", VX (4,1796), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4104 {"vcmpgtsb.", VXR(4, 774,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4105 {"udi12fcm.", APU(4, 899,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
4106 {"udi12fcm", APU(4, 899,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
4107 {"vsum4sbs", VX (4,1800), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4108 {"vextubrx", VX (4,1805), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
4109 {"maclhwuo", XO (4, 396,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4110 {"maclhwuo.", XO (4, 396,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4111 {"vsubshs", VX (4,1856), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4112 {"vclzh", VX (4,1858), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4113 {"vpopcnth", VX (4,1859), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4114 {"vslv", VX (4,1860), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
4115 {"vcmpgtsh.", VXR(4, 838,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4116 {"vextuhrx", VX (4,1869), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
4117 {"udi13fcm.", APU(4, 931,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
4118 {"udi13fcm", APU(4, 931,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
4119 {"maclhwo", XO (4, 428,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4120 {"maclhwo.", XO (4, 428,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4121 {"nmaclhwo", XO (4, 430,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4122 {"nmaclhwo.", XO (4, 430,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4123 {"vsubsws", VX (4,1920), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4124 {"vclzw", VX (4,1922), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4125 {"vpopcntw", VX (4,1923), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4126 {"vcmpgtsw.", VXR(4, 902,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4127 {"udi14fcm.", APU(4, 963,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
4128 {"udi14fcm", APU(4, 963,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
4129 {"vsumsws", VX (4,1928), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
4130 {"vmrgew", VX (4,1932), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
4131 {"vextuwrx", VX (4,1933), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
4132 {"maclhwsuo", XO (4, 460,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4133 {"maclhwsuo.", XO (4, 460,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4134 {"vclzd", VX (4,1986), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4135 {"vpopcntd", VX (4,1987), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
4136 {"vcmpbfp.", VXR(4, 966,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
4137 {"udi15fcm.", APU(4, 995,0), APU_MASK, PPC440, 0, {URT, URA, URB}},
4138 {"vcmpgtsd.", VXR(4, 967,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
4139 {"udi15fcm", APU(4, 995,1), APU_MASK, PPC440, 0, {URT, URA, URB}},
4140 {"maclhwso", XO (4, 492,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4141 {"maclhwso.", XO (4, 492,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4142 {"nmaclhwso", XO (4, 494,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
4143 {"nmaclhwso.", XO (4, 494,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
4144 {"dcbz_l", X (4,1014), XRT_MASK, PPCPS, 0, {RA, RB}},
4145
4146 {"mulli", OP(7), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
4147 {"muli", OP(7), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
4148
4149 {"subfic", OP(8), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
4150 {"sfi", OP(8), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
4151
4152 {"dozi", OP(9), OP_MASK, M601, PPCVLE, {RT, RA, SI}},
4153
4154 {"cmplwi", OPL(10,0), OPL_MASK, PPCCOM, PPCVLE, {OBF, RA, UISIGNOPT}},
4155 {"cmpldi", OPL(10,1), OPL_MASK, PPC64, PPCVLE, {OBF, RA, UISIGNOPT}},
4156 {"cmpli", OP(10), OP_MASK, PPC, PPCVLE, {BF, L32OPT, RA, UISIGNOPT}},
4157 {"cmpli", OP(10), OP_MASK, PWRCOM, PPC|PPCVLE, {BF, RA, UISIGNOPT}},
4158
4159 {"cmpwi", OPL(11,0), OPL_MASK, PPCCOM, PPCVLE, {OBF, RA, SI}},
4160 {"cmpdi", OPL(11,1), OPL_MASK, PPC64, PPCVLE, {OBF, RA, SI}},
4161 {"cmpi", OP(11), OP_MASK, PPC, PPCVLE, {BF, L32OPT, RA, SI}},
4162 {"cmpi", OP(11), OP_MASK, PWRCOM, PPC|PPCVLE, {BF, RA, SI}},
4163
4164 {"addic", OP(12), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
4165 {"ai", OP(12), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
4166 {"subic", OP(12), OP_MASK, PPCCOM, PPCVLE, {RT, RA, NSI}},
4167
4168 {"addic.", OP(13), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
4169 {"ai.", OP(13), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
4170 {"subic.", OP(13), OP_MASK, PPCCOM, PPCVLE, {RT, RA, NSI}},
4171
4172 {"li", OP(14), DRA_MASK, PPCCOM, PPCVLE, {RT, SI}},
4173 {"lil", OP(14), DRA_MASK, PWRCOM, PPCVLE, {RT, SI}},
4174 {"addi", OP(14), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, SI}},
4175 {"cal", OP(14), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
4176 {"subi", OP(14), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, NSI}},
4177 {"la", OP(14), OP_MASK, PPCCOM, PPCVLE, {RT, D, RA0}},
4178
4179 {"lis", OP(15), DRA_MASK, PPCCOM, PPCVLE, {RT, SISIGNOPT}},
4180 {"liu", OP(15), DRA_MASK, PWRCOM, PPCVLE, {RT, SISIGNOPT}},
4181 {"addis", OP(15), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, SISIGNOPT}},
4182 {"cau", OP(15), OP_MASK, PWRCOM, PPCVLE, {RT, RA0, SISIGNOPT}},
4183 {"subis", OP(15), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, NSISIGNOPT}},
4184
4185 {"bdnz-", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}},
4186 {"bdnz+", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}},
4187 {"bdnz", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BD}},
4188 {"bdn", BBO(16,BODNZ,0,0), BBOATBI_MASK, PWRCOM, PPCVLE, {BD}},
4189 {"bdnzl-", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}},
4190 {"bdnzl+", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}},
4191 {"bdnzl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BD}},
4192 {"bdnl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PWRCOM, PPCVLE, {BD}},
4193 {"bdnza-", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}},
4194 {"bdnza+", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}},
4195 {"bdnza", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDA}},
4196 {"bdna", BBO(16,BODNZ,1,0), BBOATBI_MASK, PWRCOM, PPCVLE, {BDA}},
4197 {"bdnzla-", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}},
4198 {"bdnzla+", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}},
4199 {"bdnzla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDA}},
4200 {"bdnla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PWRCOM, PPCVLE, {BDA}},
4201 {"bdz-", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}},
4202 {"bdz+", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}},
4203 {"bdz", BBO(16,BODZ,0,0), BBOATBI_MASK, COM, PPCVLE, {BD}},
4204 {"bdzl-", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}},
4205 {"bdzl+", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}},
4206 {"bdzl", BBO(16,BODZ,0,1), BBOATBI_MASK, COM, PPCVLE, {BD}},
4207 {"bdza-", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}},
4208 {"bdza+", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}},
4209 {"bdza", BBO(16,BODZ,1,0), BBOATBI_MASK, COM, PPCVLE, {BDA}},
4210 {"bdzla-", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}},
4211 {"bdzla+", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}},
4212 {"bdzla", BBO(16,BODZ,1,1), BBOATBI_MASK, COM, PPCVLE, {BDA}},
4213
4214 {"bge-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4215 {"bge+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4216 {"bge", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4217 {"bnl-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4218 {"bnl+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4219 {"bnl", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4220 {"bgel-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4221 {"bgel+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4222 {"bgel", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4223 {"bnll-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4224 {"bnll+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4225 {"bnll", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4226 {"bgea-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4227 {"bgea+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4228 {"bgea", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4229 {"bnla-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4230 {"bnla+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4231 {"bnla", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4232 {"bgela-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4233 {"bgela+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4234 {"bgela", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4235 {"bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4236 {"bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4237 {"bnlla", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4238 {"ble-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4239 {"ble+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4240 {"ble", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4241 {"bng-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4242 {"bng+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4243 {"bng", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4244 {"blel-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4245 {"blel+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4246 {"blel", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4247 {"bngl-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4248 {"bngl+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4249 {"bngl", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4250 {"blea-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4251 {"blea+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4252 {"blea", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4253 {"bnga-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4254 {"bnga+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4255 {"bnga", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4256 {"blela-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4257 {"blela+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4258 {"blela", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4259 {"bngla-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4260 {"bngla+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4261 {"bngla", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4262 {"bne-", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4263 {"bne+", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4264 {"bne", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4265 {"bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4266 {"bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4267 {"bnel", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4268 {"bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4269 {"bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4270 {"bnea", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4271 {"bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4272 {"bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4273 {"bnela", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4274 {"bns-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4275 {"bns+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4276 {"bns", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4277 {"bnu-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4278 {"bnu+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4279 {"bnu", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}},
4280 {"bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4281 {"bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4282 {"bnsl", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4283 {"bnul-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4284 {"bnul+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4285 {"bnul", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}},
4286 {"bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4287 {"bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4288 {"bnsa", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4289 {"bnua-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4290 {"bnua+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4291 {"bnua", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}},
4292 {"bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4293 {"bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4294 {"bnsla", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4295 {"bnula-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4296 {"bnula+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4297 {"bnula", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}},
4298
4299 {"blt-", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4300 {"blt+", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4301 {"blt", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4302 {"bltl-", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4303 {"bltl+", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4304 {"bltl", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4305 {"blta-", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4306 {"blta+", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4307 {"blta", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4308 {"bltla-", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4309 {"bltla+", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4310 {"bltla", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4311 {"bgt-", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4312 {"bgt+", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4313 {"bgt", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4314 {"bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4315 {"bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4316 {"bgtl", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4317 {"bgta-", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4318 {"bgta+", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4319 {"bgta", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4320 {"bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4321 {"bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4322 {"bgtla", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4323 {"beq-", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4324 {"beq+", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4325 {"beq", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4326 {"beql-", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4327 {"beql+", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4328 {"beql", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4329 {"beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4330 {"beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4331 {"beqa", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4332 {"beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4333 {"beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4334 {"beqla", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4335 {"bso-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4336 {"bso+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4337 {"bso", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4338 {"bun-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4339 {"bun+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4340 {"bun", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}},
4341 {"bsol-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4342 {"bsol+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4343 {"bsol", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4344 {"bunl-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4345 {"bunl+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4346 {"bunl", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}},
4347 {"bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4348 {"bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4349 {"bsoa", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4350 {"buna-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4351 {"buna+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4352 {"buna", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}},
4353 {"bsola-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4354 {"bsola+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4355 {"bsola", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4356 {"bunla-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4357 {"bunla+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4358 {"bunla", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}},
4359
4360 {"bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4361 {"bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4362 {"bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4363 {"bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4364 {"bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4365 {"bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4366 {"bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4367 {"bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4368 {"bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4369 {"bdnzfla-", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4370 {"bdnzfla+", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4371 {"bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4372 {"bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4373 {"bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4374 {"bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4375 {"bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4376 {"bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4377 {"bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4378 {"bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4379 {"bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4380 {"bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4381 {"bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4382 {"bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4383 {"bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4384
4385 {"bf-", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}},
4386 {"bf+", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}},
4387 {"bf", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}},
4388 {"bbf", BBO(16,BOF,0,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}},
4389 {"bfl-", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}},
4390 {"bfl+", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}},
4391 {"bfl", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}},
4392 {"bbfl", BBO(16,BOF,0,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}},
4393 {"bfa-", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}},
4394 {"bfa+", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}},
4395 {"bfa", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4396 {"bbfa", BBO(16,BOF,1,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}},
4397 {"bfla-", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}},
4398 {"bfla+", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}},
4399 {"bfla", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4400 {"bbfla", BBO(16,BOF,1,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}},
4401
4402 {"bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4403 {"bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4404 {"bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4405 {"bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4406 {"bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4407 {"bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4408 {"bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4409 {"bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4410 {"bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4411 {"bdnztla-", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4412 {"bdnztla+", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4413 {"bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4414 {"bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4415 {"bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4416 {"bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4417 {"bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4418 {"bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4419 {"bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4420 {"bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4421 {"bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4422 {"bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4423 {"bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4424 {"bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4425 {"bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4426
4427 {"bt-", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}},
4428 {"bt+", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}},
4429 {"bt", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}},
4430 {"bbt", BBO(16,BOT,0,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}},
4431 {"btl-", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}},
4432 {"btl+", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}},
4433 {"btl", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}},
4434 {"bbtl", BBO(16,BOT,0,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}},
4435 {"bta-", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}},
4436 {"bta+", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}},
4437 {"bta", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4438 {"bbta", BBO(16,BOT,1,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}},
4439 {"btla-", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}},
4440 {"btla+", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}},
4441 {"btla", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4442 {"bbtla", BBO(16,BOT,1,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}},
4443
4444 {"bc-", B(16,0,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDM}},
4445 {"bc+", B(16,0,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDP}},
4446 {"bc", B(16,0,0), B_MASK, COM, PPCVLE, {BO, BI, BD}},
4447 {"bcl-", B(16,0,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDM}},
4448 {"bcl+", B(16,0,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDP}},
4449 {"bcl", B(16,0,1), B_MASK, COM, PPCVLE, {BO, BI, BD}},
4450 {"bca-", B(16,1,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDMA}},
4451 {"bca+", B(16,1,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDPA}},
4452 {"bca", B(16,1,0), B_MASK, COM, PPCVLE, {BO, BI, BDA}},
4453 {"bcla-", B(16,1,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDMA}},
4454 {"bcla+", B(16,1,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDPA}},
4455 {"bcla", B(16,1,1), B_MASK, COM, PPCVLE, {BO, BI, BDA}},
4456
4457 {"svc", SC(17,0,0), SC_MASK, POWER, PPCVLE, {SVC_LEV, FL1, FL2}},
4458 {"scv", SC(17,0,1), SC_MASK, POWER9, PPCVLE, {SVC_LEV}},
4459 {"svcl", SC(17,0,1), SC_MASK, POWER, PPCVLE, {SVC_LEV, FL1, FL2}},
4460 {"sc", SC(17,1,0), SC_MASK, PPC, PPCVLE, {LEV}},
4461 {"svca", SC(17,1,0), SC_MASK, PWRCOM, PPCVLE, {SV}},
4462 {"svcla", SC(17,1,1), SC_MASK, POWER, PPCVLE, {SV}},
4463
4464 {"b", B(18,0,0), B_MASK, COM, PPCVLE, {LI}},
4465 {"bl", B(18,0,1), B_MASK, COM, PPCVLE, {LI}},
4466 {"ba", B(18,1,0), B_MASK, COM, PPCVLE, {LIA}},
4467 {"bla", B(18,1,1), B_MASK, COM, PPCVLE, {LIA}},
4468
4469 {"mcrf", XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM, PPCVLE, {BF, BFA}},
4470
4471 {"lnia", DX(19,2), NODX_MASK, POWER9, PPCVLE, {RT}},
4472 {"addpcis", DX(19,2), DX_MASK, POWER9, PPCVLE, {RT, DXD}},
4473 {"subpcis", DX(19,2), DX_MASK, POWER9, PPCVLE, {RT, NDXD}},
4474
4475 {"bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
4476 {"bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4477 {"bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
4478 {"bdnzlrl-", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4479 {"bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4480 {"bdnzlrl+", XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4481 {"bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
4482 {"bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4483 {"bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
4484 {"bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4485 {"bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4486 {"bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4487 {"blr", XLO(19,BOU,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
4488 {"br", XLO(19,BOU,16,0), XLBOBIBB_MASK, PWRCOM, PPCVLE, {0}},
4489 {"blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
4490 {"brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM, PPCVLE, {0}},
4491 {"bdnzlr-", XLO(19,BODNZM4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4492 {"bdnzlrl-", XLO(19,BODNZM4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4493 {"bdnzlr+", XLO(19,BODNZP4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4494 {"bdnzlrl+", XLO(19,BODNZP4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4495 {"bdzlr-", XLO(19,BODZM4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4496 {"bdzlrl-", XLO(19,BODZM4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4497 {"bdzlr+", XLO(19,BODZP4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4498 {"bdzlrl+", XLO(19,BODZP4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4499
4500 {"bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4501 {"bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4502 {"bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4503 {"bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4504 {"bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4505 {"bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4506 {"bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4507 {"bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4508 {"bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4509 {"bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4510 {"bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4511 {"bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4512 {"blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4513 {"blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4514 {"bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4515 {"bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4516 {"bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4517 {"bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4518 {"blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4519 {"blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4520 {"blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4521 {"bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4522 {"bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4523 {"bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4524 {"bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4525 {"bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4526 {"bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4527 {"bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4528 {"bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4529 {"bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4530 {"bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4531 {"bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4532 {"bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4533 {"bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4534 {"bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4535 {"bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4536 {"bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4537 {"bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4538 {"bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4539 {"bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4540 {"bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4541 {"bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4542 {"bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4543 {"bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4544 {"blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4545 {"bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4546 {"blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4547 {"bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4548 {"bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4549 {"bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4550 {"bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4551 {"bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4552 {"bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4553 {"bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4554 {"bgelr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4555 {"bnllr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4556 {"bgelrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4557 {"bnllrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4558 {"blelr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4559 {"bnglr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4560 {"blelrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4561 {"bnglrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4562 {"bnelr-", XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4563 {"bnelrl-", XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4564 {"bnslr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4565 {"bnulr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4566 {"bnslrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4567 {"bnulrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4568 {"bgelr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4569 {"bnllr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4570 {"bgelrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4571 {"bnllrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4572 {"blelr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4573 {"bnglr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4574 {"blelrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4575 {"bnglrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4576 {"bnelr+", XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4577 {"bnelrl+", XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4578 {"bnslr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4579 {"bnulr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4580 {"bnslrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4581 {"bnulrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4582 {"bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4583 {"bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4584 {"bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4585 {"bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4586 {"bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4587 {"bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4588 {"bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4589 {"bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4590 {"bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4591 {"bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4592 {"bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4593 {"bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4594 {"beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4595 {"beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4596 {"beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4597 {"beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4598 {"beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4599 {"beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4600 {"bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4601 {"bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4602 {"bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4603 {"bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4604 {"bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4605 {"bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4606 {"bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4607 {"bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4608 {"bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4609 {"bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4610 {"bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4611 {"bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4612 {"bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4613 {"bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4614 {"beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4615 {"beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4616 {"bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4617 {"bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4618 {"bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4619 {"bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4620 {"bltlr-", XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4621 {"bltlrl-", XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4622 {"bgtlr-", XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4623 {"bgtlrl-", XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4624 {"beqlr-", XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4625 {"beqlrl-", XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4626 {"bsolr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4627 {"bunlr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4628 {"bsolrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4629 {"bunlrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4630 {"bltlr+", XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4631 {"bltlrl+", XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4632 {"bgtlr+", XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4633 {"bgtlrl+", XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4634 {"beqlr+", XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4635 {"beqlrl+", XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4636 {"bsolr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4637 {"bunlr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4638 {"bsolrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4639 {"bunlrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4640
4641 {"bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4642 {"bdnzflr-", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4643 {"bdnzflrl", XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4644 {"bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4645 {"bdnzflr+", XLO(19,BODNZFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4646 {"bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4647 {"bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4648 {"bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4649 {"bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4650 {"bdzflrl-", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4651 {"bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4652 {"bdzflrl+", XLO(19,BODZFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4653 {"bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4654 {"bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4655 {"bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}},
4656 {"bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4657 {"bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4658 {"bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}},
4659 {"bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4660 {"bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4661 {"bflr-", XLO(19,BOFM4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4662 {"bflrl-", XLO(19,BOFM4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4663 {"bflr+", XLO(19,BOFP4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4664 {"bflrl+", XLO(19,BOFP4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4665 {"bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4666 {"bdnztlr-", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4667 {"bdnztlrl", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4668 {"bdnztlrl-", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4669 {"bdnztlr+", XLO(19,BODNZTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4670 {"bdnztlrl+", XLO(19,BODNZTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4671 {"bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4672 {"bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4673 {"bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4674 {"bdztlrl-", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4675 {"bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4676 {"bdztlrl+", XLO(19,BODZTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4677 {"btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4678 {"btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4679 {"bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}},
4680 {"btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4681 {"btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4682 {"bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}},
4683 {"btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4684 {"btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4685 {"btlr-", XLO(19,BOTM4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4686 {"btlrl-", XLO(19,BOTM4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4687 {"btlr+", XLO(19,BOTP4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4688 {"btlrl+", XLO(19,BOTP4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4689
4690 {"bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4691 {"bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4692 {"bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4693 {"bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4694 {"bclr", XLLK(19,16,0), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
4695 {"bcr", XLLK(19,16,0), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}},
4696 {"bclrl", XLLK(19,16,1), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
4697 {"bcrl", XLLK(19,16,1), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}},
4698
4699 {"rfid", XL(19,18), 0xffffffff, PPC64, PPCVLE, {0}},
4700
4701 {"crnot", XL(19,33), XL_MASK, PPCCOM, PPCVLE, {BT, BA, BBA}},
4702 {"crnor", XL(19,33), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4703 {"rfmci", X(19,38), 0xffffffff, PPCRFMCI|PPCA2|PPC476, PPCVLE, {0}},
4704
4705 {"rfdi", XL(19,39), 0xffffffff, E500MC, PPCVLE, {0}},
4706 {"rfi", XL(19,50), 0xffffffff, COM, PPCVLE, {0}},
4707 {"rfci", XL(19,51), 0xffffffff, PPC403|BOOKE|PPCE300|PPCA2|PPC476, PPCVLE, {0}},
4708
4709 {"rfscv", XL(19,82), 0xffffffff, POWER9, PPCVLE, {0}},
4710 {"rfsvc", XL(19,82), 0xffffffff, POWER, PPCVLE, {0}},
4711
4712 {"rfgi", XL(19,102), 0xffffffff, E500MC|PPCA2, PPCVLE, {0}},
4713
4714 {"crandc", XL(19,129), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4715
4716 {"rfebb", XL(19,146), XLS_MASK, POWER8, PPCVLE, {SXL}},
4717
4718 {"isync", XL(19,150), 0xffffffff, PPCCOM, PPCVLE, {0}},
4719 {"ics", XL(19,150), 0xffffffff, PWRCOM, PPCVLE, {0}},
4720
4721 {"crclr", XL(19,193), XL_MASK, PPCCOM, PPCVLE, {BT, BAT, BBA}},
4722 {"crxor", XL(19,193), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4723
4724 {"dnh", X(19,198), X_MASK, E500MC, PPCVLE, {DUI, DUIS}},
4725
4726 {"crnand", XL(19,225), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4727
4728 {"crand", XL(19,257), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4729
4730 {"hrfid", XL(19,274), 0xffffffff, POWER5|CELL, PPC476|PPCVLE, {0}},
4731
4732 {"crset", XL(19,289), XL_MASK, PPCCOM, PPCVLE, {BT, BAT, BBA}},
4733 {"creqv", XL(19,289), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4734
4735 {"urfid", XL(19,306), 0xffffffff, POWER9, PPCVLE, {0}},
4736 {"stop", XL(19,370), 0xffffffff, POWER9, PPCVLE, {0}},
4737
4738 {"doze", XL(19,402), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
4739
4740 {"crorc", XL(19,417), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4741
4742 {"nap", XL(19,434), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
4743
4744 {"crmove", XL(19,449), XL_MASK, PPCCOM, PPCVLE, {BT, BA, BBA}},
4745 {"cror", XL(19,449), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4746
4747 {"sleep", XL(19,466), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
4748 {"rvwinkle", XL(19,498), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
4749
4750 {"bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, COM, PPCVLE, {0}},
4751 {"bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, COM, PPCVLE, {0}},
4752
4753 {"bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4754 {"bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4755 {"bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4756 {"bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4757 {"bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4758 {"bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4759 {"bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4760 {"bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4761 {"blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4762 {"blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4763 {"bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4764 {"bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4765 {"blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4766 {"blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4767 {"bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4768 {"bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4769 {"bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4770 {"bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4771 {"bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4772 {"bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4773 {"bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4774 {"bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4775 {"bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4776 {"bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4777 {"bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4778 {"bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4779 {"bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4780 {"bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4781 {"bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4782 {"bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4783 {"bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4784 {"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4785 {"blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4786 {"bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4787 {"blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4788 {"bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4789 {"bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4790 {"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4791 {"bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4792 {"bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4793 {"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4794 {"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4795 {"bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4796 {"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4797 {"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4798 {"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4799 {"blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4800 {"bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4801 {"blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4802 {"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4803 {"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4804 {"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4805 {"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4806 {"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4807 {"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4808 {"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4809 {"bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4810 {"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4811 {"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4812 {"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4813 {"blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4814 {"bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4815 {"blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4816 {"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4817 {"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4818 {"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4819 {"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4820 {"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4821 {"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4822 {"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4823 {"bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4824 {"bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4825 {"bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4826 {"bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4827 {"bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4828 {"bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4829 {"bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4830 {"bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4831 {"beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4832 {"beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4833 {"beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4834 {"beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4835 {"bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4836 {"bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4837 {"bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4838 {"bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4839 {"bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4840 {"bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4841 {"bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4842 {"bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4843 {"bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4844 {"bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4845 {"bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4846 {"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4847 {"beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4848 {"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4849 {"bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4850 {"bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4851 {"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4852 {"bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4853 {"bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4854 {"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4855 {"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4856 {"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4857 {"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4858 {"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4859 {"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4860 {"bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4861 {"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4862 {"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4863 {"bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4864 {"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4865 {"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4866 {"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4867 {"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4868 {"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4869 {"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4870 {"bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4871 {"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4872 {"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4873
4874 {"bfctr", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4875 {"bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4876 {"bfctrl", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4877 {"bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4878 {"bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4879 {"bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4880 {"bfctr-", XLO(19,BOFM4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4881 {"bfctrl-", XLO(19,BOFM4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4882 {"bfctr+", XLO(19,BOFP4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4883 {"bfctrl+", XLO(19,BOFP4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4884 {"btctr", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4885 {"btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4886 {"btctrl", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4887 {"btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4888 {"btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4889 {"btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4890 {"btctr-", XLO(19,BOTM4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4891 {"btctrl-", XLO(19,BOTM4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4892 {"btctr+", XLO(19,BOTP4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4893 {"btctrl+", XLO(19,BOTP4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4894
4895 {"bcctr-", XLYLK(19,528,0,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4896 {"bcctrl-", XLYLK(19,528,0,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4897 {"bcctr+", XLYLK(19,528,1,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4898 {"bcctrl+", XLYLK(19,528,1,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4899 {"bcctr", XLLK(19,528,0), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
4900 {"bcc", XLLK(19,528,0), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}},
4901 {"bcctrl", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
4902 {"bccl", XLLK(19,528,1), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}},
4903
4904 {"bctar-", XLYLK(19,560,0,0), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}},
4905 {"bctarl-", XLYLK(19,560,0,1), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}},
4906 {"bctar+", XLYLK(19,560,1,0), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}},
4907 {"bctarl+", XLYLK(19,560,1,1), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}},
4908 {"bctar", XLLK(19,560,0), XLBH_MASK, POWER8, PPCVLE, {BO, BI, BH}},
4909 {"bctarl", XLLK(19,560,1), XLBH_MASK, POWER8, PPCVLE, {BO, BI, BH}},
4910
4911 {"rlwimi", M(20,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4912 {"rlimi", M(20,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4913
4914 {"rlwimi.", M(20,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4915 {"rlimi.", M(20,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4916
4917 {"rotlwi", MME(21,31,0), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, SH}},
4918 {"clrlwi", MME(21,31,0), MSHME_MASK, PPCCOM, PPCVLE, {RA, RS, MB}},
4919 {"rlwinm", M(21,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4920 {"rlinm", M(21,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4921 {"rotlwi.", MME(21,31,1), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, SH}},
4922 {"clrlwi.", MME(21,31,1), MSHME_MASK, PPCCOM, PPCVLE, {RA, RS, MB}},
4923 {"rlwinm.", M(21,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4924 {"rlinm.", M(21,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4925
4926 {"rlmi", M(22,0), M_MASK, M601, PPCVLE, {RA, RS, RB, MBE, ME}},
4927 {"rlmi.", M(22,1), M_MASK, M601, PPCVLE, {RA, RS, RB, MBE, ME}},
4928
4929 {"rotlw", MME(23,31,0), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, RB}},
4930 {"rlwnm", M(23,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
4931 {"rlnm", M(23,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
4932 {"rotlw.", MME(23,31,1), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, RB}},
4933 {"rlwnm.", M(23,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
4934 {"rlnm.", M(23,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
4935
4936 {"nop", OP(24), 0xffffffff, PPCCOM, PPCVLE, {0}},
4937 {"ori", OP(24), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
4938 {"oril", OP(24), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
4939
4940 {"oris", OP(25), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
4941 {"oriu", OP(25), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
4942
4943 {"xnop", OP(26), 0xffffffff, PPCCOM, PPCVLE, {0}},
4944 {"xori", OP(26), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
4945 {"xoril", OP(26), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
4946
4947 {"xoris", OP(27), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
4948 {"xoriu", OP(27), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
4949
4950 {"andi.", OP(28), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
4951 {"andil.", OP(28), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
4952
4953 {"andis.", OP(29), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
4954 {"andiu.", OP(29), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
4955
4956 {"rotldi", MD(30,0,0), MDMB_MASK, PPC64, PPCVLE, {RA, RS, SH6}},
4957 {"clrldi", MD(30,0,0), MDSH_MASK, PPC64, PPCVLE, {RA, RS, MB6}},
4958 {"rldicl", MD(30,0,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
4959 {"rotldi.", MD(30,0,1), MDMB_MASK, PPC64, PPCVLE, {RA, RS, SH6}},
4960 {"clrldi.", MD(30,0,1), MDSH_MASK, PPC64, PPCVLE, {RA, RS, MB6}},
4961 {"rldicl.", MD(30,0,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
4962
4963 {"rldicr", MD(30,1,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, ME6}},
4964 {"rldicr.", MD(30,1,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, ME6}},
4965
4966 {"rldic", MD(30,2,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
4967 {"rldic.", MD(30,2,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
4968
4969 {"rldimi", MD(30,3,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
4970 {"rldimi.", MD(30,3,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
4971
4972 {"rotld", MDS(30,8,0), MDSMB_MASK, PPC64, PPCVLE, {RA, RS, RB}},
4973 {"rldcl", MDS(30,8,0), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, MB6}},
4974 {"rotld.", MDS(30,8,1), MDSMB_MASK, PPC64, PPCVLE, {RA, RS, RB}},
4975 {"rldcl.", MDS(30,8,1), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, MB6}},
4976
4977 {"rldcr", MDS(30,9,0), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, ME6}},
4978 {"rldcr.", MDS(30,9,1), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, ME6}},
4979
4980 {"cmpw", XOPL(31,0,0), XCMPL_MASK, PPCCOM, 0, {OBF, RA, RB}},
4981 {"cmpd", XOPL(31,0,1), XCMPL_MASK, PPC64, 0, {OBF, RA, RB}},
4982 {"cmp", X(31,0), XCMP_MASK, PPC, 0, {BF, L32OPT, RA, RB}},
4983 {"cmp", X(31,0), XCMPL_MASK, PWRCOM, PPC, {BF, RA, RB}},
4984
4985 {"twlgt", XTO(31,4,TOLGT), XTO_MASK, PPCCOM, 0, {RA, RB}},
4986 {"tlgt", XTO(31,4,TOLGT), XTO_MASK, PWRCOM, 0, {RA, RB}},
4987 {"twllt", XTO(31,4,TOLLT), XTO_MASK, PPCCOM, 0, {RA, RB}},
4988 {"tllt", XTO(31,4,TOLLT), XTO_MASK, PWRCOM, 0, {RA, RB}},
4989 {"tweq", XTO(31,4,TOEQ), XTO_MASK, PPCCOM, 0, {RA, RB}},
4990 {"teq", XTO(31,4,TOEQ), XTO_MASK, PWRCOM, 0, {RA, RB}},
4991 {"twlge", XTO(31,4,TOLGE), XTO_MASK, PPCCOM, 0, {RA, RB}},
4992 {"tlge", XTO(31,4,TOLGE), XTO_MASK, PWRCOM, 0, {RA, RB}},
4993 {"twlnl", XTO(31,4,TOLNL), XTO_MASK, PPCCOM, 0, {RA, RB}},
4994 {"tlnl", XTO(31,4,TOLNL), XTO_MASK, PWRCOM, 0, {RA, RB}},
4995 {"twlle", XTO(31,4,TOLLE), XTO_MASK, PPCCOM, 0, {RA, RB}},
4996 {"tlle", XTO(31,4,TOLLE), XTO_MASK, PWRCOM, 0, {RA, RB}},
4997 {"twlng", XTO(31,4,TOLNG), XTO_MASK, PPCCOM, 0, {RA, RB}},
4998 {"tlng", XTO(31,4,TOLNG), XTO_MASK, PWRCOM, 0, {RA, RB}},
4999 {"twgt", XTO(31,4,TOGT), XTO_MASK, PPCCOM, 0, {RA, RB}},
5000 {"tgt", XTO(31,4,TOGT), XTO_MASK, PWRCOM, 0, {RA, RB}},
5001 {"twge", XTO(31,4,TOGE), XTO_MASK, PPCCOM, 0, {RA, RB}},
5002 {"tge", XTO(31,4,TOGE), XTO_MASK, PWRCOM, 0, {RA, RB}},
5003 {"twnl", XTO(31,4,TONL), XTO_MASK, PPCCOM, 0, {RA, RB}},
5004 {"tnl", XTO(31,4,TONL), XTO_MASK, PWRCOM, 0, {RA, RB}},
5005 {"twlt", XTO(31,4,TOLT), XTO_MASK, PPCCOM, 0, {RA, RB}},
5006 {"tlt", XTO(31,4,TOLT), XTO_MASK, PWRCOM, 0, {RA, RB}},
5007 {"twle", XTO(31,4,TOLE), XTO_MASK, PPCCOM, 0, {RA, RB}},
5008 {"tle", XTO(31,4,TOLE), XTO_MASK, PWRCOM, 0, {RA, RB}},
5009 {"twng", XTO(31,4,TONG), XTO_MASK, PPCCOM, 0, {RA, RB}},
5010 {"tng", XTO(31,4,TONG), XTO_MASK, PWRCOM, 0, {RA, RB}},
5011 {"twne", XTO(31,4,TONE), XTO_MASK, PPCCOM, 0, {RA, RB}},
5012 {"tne", XTO(31,4,TONE), XTO_MASK, PWRCOM, 0, {RA, RB}},
5013 {"trap", XTO(31,4,TOU), 0xffffffff, PPCCOM, 0, {0}},
5014 {"twu", XTO(31,4,TOU), XTO_MASK, PPCCOM, 0, {RA, RB}},
5015 {"tu", XTO(31,4,TOU), XTO_MASK, PWRCOM, 0, {RA, RB}},
5016 {"tw", X(31,4), X_MASK, PPCCOM, 0, {TO, RA, RB}},
5017 {"t", X(31,4), X_MASK, PWRCOM, 0, {TO, RA, RB}},
5018
5019 {"lvsl", X(31,6), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
5020 {"lvebx", X(31,7), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
5021 {"lbfcmx", APU(31,7,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
5022
5023 {"subfc", XO(31,8,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5024 {"sf", XO(31,8,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5025 {"subc", XO(31,8,0,0), XO_MASK, PPCCOM, 0, {RT, RB, RA}},
5026 {"subfc.", XO(31,8,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5027 {"sf.", XO(31,8,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5028 {"subc.", XO(31,8,0,1), XO_MASK, PPCCOM, 0, {RT, RB, RA}},
5029
5030 {"mulhdu", XO(31,9,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
5031 {"mulhdu.", XO(31,9,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
5032
5033 {"addc", XO(31,10,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5034 {"a", XO(31,10,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5035 {"addc.", XO(31,10,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5036 {"a.", XO(31,10,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5037
5038 {"mulhwu", XO(31,11,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
5039 {"mulhwu.", XO(31,11,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
5040
5041 {"lxsiwzx", X(31,12), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
5042
5043 {"isellt", X(31,15), X_MASK, PPCISEL, 0, {RT, RA0, RB}},
5044
5045 {"tlbilxlpid", XTO(31,18,0), XTO_MASK, E500MC|PPCA2, 0, {0}},
5046 {"tlbilxpid", XTO(31,18,1), XTO_MASK, E500MC|PPCA2, 0, {0}},
5047 {"tlbilxva", XTO(31,18,3), XTO_MASK, E500MC|PPCA2, 0, {RA0, RB}},
5048 {"tlbilx", X(31,18), X_MASK, E500MC|PPCA2, 0, {T, RA0, RB}},
5049
5050 {"mfcr", XFXM(31,19,0,0), XFXFXM_MASK, COM, 0, {RT, FXM4}},
5051 {"mfocrf", XFXM(31,19,0,1), XFXFXM_MASK, COM, 0, {RT, FXM}},
5052
5053 {"lwarx", X(31,20), XEH_MASK, PPC, 0, {RT, RA0, RB, EH}},
5054
5055 {"ldx", X(31,21), X_MASK, PPC64, 0, {RT, RA0, RB}},
5056
5057 {"icbt", X(31,22), X_MASK, BOOKE|PPCE300|PPCA2|PPC476, 0, {CT, RA0, RB}},
5058
5059 {"lwzx", X(31,23), X_MASK, PPCCOM, 0, {RT, RA0, RB}},
5060 {"lx", X(31,23), X_MASK, PWRCOM, 0, {RT, RA, RB}},
5061
5062 {"slw", XRC(31,24,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
5063 {"sl", XRC(31,24,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
5064 {"slw.", XRC(31,24,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
5065 {"sl.", XRC(31,24,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
5066
5067 {"cntlzw", XRC(31,26,0), XRB_MASK, PPCCOM, 0, {RA, RS}},
5068 {"cntlz", XRC(31,26,0), XRB_MASK, PWRCOM, 0, {RA, RS}},
5069 {"cntlzw.", XRC(31,26,1), XRB_MASK, PPCCOM, 0, {RA, RS}},
5070 {"cntlz.", XRC(31,26,1), XRB_MASK, PWRCOM, 0, {RA, RS}},
5071
5072 {"sld", XRC(31,27,0), X_MASK, PPC64, 0, {RA, RS, RB}},
5073 {"sld.", XRC(31,27,1), X_MASK, PPC64, 0, {RA, RS, RB}},
5074
5075 {"and", XRC(31,28,0), X_MASK, COM, 0, {RA, RS, RB}},
5076 {"and.", XRC(31,28,1), X_MASK, COM, 0, {RA, RS, RB}},
5077
5078 {"maskg", XRC(31,29,0), X_MASK, M601, PPCA2, {RA, RS, RB}},
5079 {"maskg.", XRC(31,29,1), X_MASK, M601, PPCA2, {RA, RS, RB}},
5080
5081 {"ldepx", X(31,29), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
5082
5083 {"waitasec", X(31,30), XRTRARB_MASK, POWER8, POWER9, {0}},
5084 {"wait", X(31,30), XWC_MASK, POWER9, 0, {WC}},
5085
5086 {"lwepx", X(31,31), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
5087
5088 {"cmplw", XOPL(31,32,0), XCMPL_MASK, PPCCOM, 0, {OBF, RA, RB}},
5089 {"cmpld", XOPL(31,32,1), XCMPL_MASK, PPC64, 0, {OBF, RA, RB}},
5090 {"cmpl", X(31,32), XCMP_MASK, PPC, 0, {BF, L32OPT, RA, RB}},
5091 {"cmpl", X(31,32), XCMPL_MASK, PWRCOM, PPC, {BF, RA, RB}},
5092
5093 {"lvsr", X(31,38), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
5094 {"lvehx", X(31,39), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
5095 {"lhfcmx", APU(31,39,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
5096
5097 {"mviwsplt", X(31,46), X_MASK, E6500, 0, {VD, RA, RB}},
5098
5099 {"iselgt", X(31,47), X_MASK, PPCISEL, 0, {RT, RA0, RB}},
5100
5101 {"lvewx", X(31,71), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
5102
5103 {"addg6s", XO(31,74,0,0), XO_MASK, POWER6, 0, {RT, RA, RB}},
5104
5105 {"lxsiwax", X(31,76), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
5106
5107 {"iseleq", X(31,79), X_MASK, PPCISEL, 0, {RT, RA0, RB}},
5108
5109 {"isel", XISEL(31,15), XISEL_MASK, PPCISEL|TITAN, 0, {RT, RA0, RB, CRB}},
5110
5111 {"subf", XO(31,40,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
5112 {"sub", XO(31,40,0,0), XO_MASK, PPC, 0, {RT, RB, RA}},
5113 {"subf.", XO(31,40,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
5114 {"sub.", XO(31,40,0,1), XO_MASK, PPC, 0, {RT, RB, RA}},
5115
5116 {"mfvsrd", X(31,51), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}},
5117 {"mffprd", X(31,51), XX1RB_MASK|1, PPCVSX2, 0, {RA, FRS}},
5118 {"mfvrd", X(31,51)|1, XX1RB_MASK|1, PPCVSX2, 0, {RA, VS}},
5119 {"eratilx", X(31,51), X_MASK, PPCA2, 0, {ERAT_T, RA, RB}},
5120
5121 {"lbarx", X(31,52), XEH_MASK, POWER8|E6500, 0, {RT, RA0, RB, EH}},
5122
5123 {"ldux", X(31,53), X_MASK, PPC64, 0, {RT, RAL, RB}},
5124
5125 {"dcbst", X(31,54), XRT_MASK, PPC, 0, {RA0, RB}},
5126
5127 {"lwzux", X(31,55), X_MASK, PPCCOM, 0, {RT, RAL, RB}},
5128 {"lux", X(31,55), X_MASK, PWRCOM, 0, {RT, RA, RB}},
5129
5130 {"cntlzd", XRC(31,58,0), XRB_MASK, PPC64, 0, {RA, RS}},
5131 {"cntlzd.", XRC(31,58,1), XRB_MASK, PPC64, 0, {RA, RS}},
5132
5133 {"andc", XRC(31,60,0), X_MASK, COM, 0, {RA, RS, RB}},
5134 {"andc.", XRC(31,60,1), X_MASK, COM, 0, {RA, RS, RB}},
5135
5136 {"waitrsv", X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, 0, {0}},
5137 {"waitimpl", X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, 0, {0}},
5138 {"wait", X(31,62), XWC_MASK, E500MC|PPCA2, 0, {WC}},
5139
5140 {"dcbstep", XRT(31,63,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
5141
5142 {"tdlgt", XTO(31,68,TOLGT), XTO_MASK, PPC64, 0, {RA, RB}},
5143 {"tdllt", XTO(31,68,TOLLT), XTO_MASK, PPC64, 0, {RA, RB}},
5144 {"tdeq", XTO(31,68,TOEQ), XTO_MASK, PPC64, 0, {RA, RB}},
5145 {"tdlge", XTO(31,68,TOLGE), XTO_MASK, PPC64, 0, {RA, RB}},
5146 {"tdlnl", XTO(31,68,TOLNL), XTO_MASK, PPC64, 0, {RA, RB}},
5147 {"tdlle", XTO(31,68,TOLLE), XTO_MASK, PPC64, 0, {RA, RB}},
5148 {"tdlng", XTO(31,68,TOLNG), XTO_MASK, PPC64, 0, {RA, RB}},
5149 {"tdgt", XTO(31,68,TOGT), XTO_MASK, PPC64, 0, {RA, RB}},
5150 {"tdge", XTO(31,68,TOGE), XTO_MASK, PPC64, 0, {RA, RB}},
5151 {"tdnl", XTO(31,68,TONL), XTO_MASK, PPC64, 0, {RA, RB}},
5152 {"tdlt", XTO(31,68,TOLT), XTO_MASK, PPC64, 0, {RA, RB}},
5153 {"tdle", XTO(31,68,TOLE), XTO_MASK, PPC64, 0, {RA, RB}},
5154 {"tdng", XTO(31,68,TONG), XTO_MASK, PPC64, 0, {RA, RB}},
5155 {"tdne", XTO(31,68,TONE), XTO_MASK, PPC64, 0, {RA, RB}},
5156 {"tdu", XTO(31,68,TOU), XTO_MASK, PPC64, 0, {RA, RB}},
5157 {"td", X(31,68), X_MASK, PPC64, 0, {TO, RA, RB}},
5158
5159 {"lwfcmx", APU(31,71,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
5160 {"mulhd", XO(31,73,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
5161 {"mulhd.", XO(31,73,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
5162
5163 {"mulhw", XO(31,75,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
5164 {"mulhw.", XO(31,75,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
5165
5166 {"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA, RS, RB}},
5167 {"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA, RS, RB}},
5168
5169 {"mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, 0, {SR, RS}},
5170
5171 {"mfmsr", X(31,83), XRARB_MASK, COM, 0, {RT}},
5172
5173 {"ldarx", X(31,84), XEH_MASK, PPC64, 0, {RT, RA0, RB, EH}},
5174
5175 {"dcbfl", XOPL(31,86,1), XRT_MASK, POWER5, PPC476, {RA0, RB}},
5176 {"dcbf", X(31,86), XLRT_MASK, PPC, 0, {RA0, RB, L2OPT}},
5177
5178 {"lbzx", X(31,87), X_MASK, COM, 0, {RT, RA0, RB}},
5179
5180 {"lbepx", X(31,95), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
5181
5182 {"dni", XRC(31,97,1), XRB_MASK, E6500, 0, {DUI, DCTL}},
5183
5184 {"lvx", X(31,103), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
5185 {"lqfcmx", APU(31,103,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
5186
5187 {"neg", XO(31,104,0,0), XORB_MASK, COM, 0, {RT, RA}},
5188 {"neg.", XO(31,104,0,1), XORB_MASK, COM, 0, {RT, RA}},
5189
5190 {"mul", XO(31,107,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
5191 {"mul.", XO(31,107,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
5192
5193 {"mvidsplt", X(31,110), X_MASK, E6500, 0, {VD, RA, RB}},
5194
5195 {"mtsrdin", X(31,114), XRA_MASK, PPC64, 0, {RS, RB}},
5196
5197 {"mffprwz", X(31,115), XX1RB_MASK|1, PPCVSX2, 0, {RA, FRS}},
5198 {"mfvrwz", X(31,115)|1, XX1RB_MASK|1, PPCVSX2, 0, {RA, VS}},
5199 {"mfvsrwz", X(31,115), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}},
5200
5201 {"lharx", X(31,116), XEH_MASK, POWER8|E6500, 0, {RT, RA0, RB, EH}},
5202
5203 {"clf", X(31,118), XTO_MASK, POWER, 0, {RA, RB}},
5204
5205 {"lbzux", X(31,119), X_MASK, COM, 0, {RT, RAL, RB}},
5206
5207 {"popcntb", X(31,122), XRB_MASK, POWER5, 0, {RA, RS}},
5208
5209 {"not", XRC(31,124,0), X_MASK, COM, 0, {RA, RS, RBS}},
5210 {"nor", XRC(31,124,0), X_MASK, COM, 0, {RA, RS, RB}},
5211 {"not.", XRC(31,124,1), X_MASK, COM, 0, {RA, RS, RBS}},
5212 {"nor.", XRC(31,124,1), X_MASK, COM, 0, {RA, RS, RB}},
5213
5214 {"dcbfep", XRT(31,127,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
5215
5216 {"setb", X(31,128), XRB_MASK|(3<<16), POWER9, 0, {RT, BFA}},
5217
5218 {"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RS}},
5219
5220 {"dcbtstls", X(31,134), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
5221
5222 {"stvebx", X(31,135), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
5223 {"stbfcmx", APU(31,135,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
5224
5225 {"subfe", XO(31,136,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5226 {"sfe", XO(31,136,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5227 {"subfe.", XO(31,136,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5228 {"sfe.", XO(31,136,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5229
5230 {"adde", XO(31,138,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5231 {"ae", XO(31,138,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5232 {"adde.", XO(31,138,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5233 {"ae.", XO(31,138,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5234
5235 {"stxsiwx", X(31,140), XX1_MASK, PPCVSX2, 0, {XS6, RA0, RB}},
5236
5237 {"msgsndp", XRTRA(31,142,0,0), XRTRA_MASK, POWER8, 0, {RB}},
5238 {"dcbtstlse", X(31,142), X_MASK, PPCCHLK, E500MC, {CT, RA0, RB}},
5239
5240 {"mtcr", XFXM(31,144,0xff,0), XRARB_MASK, COM, 0, {RS}},
5241 {"mtcrf", XFXM(31,144,0,0), XFXFXM_MASK, COM, 0, {FXM, RS}},
5242 {"mtocrf", XFXM(31,144,0,1), XFXFXM_MASK, COM, 0, {FXM, RS}},
5243
5244 {"mtmsr", X(31,146), XRLARB_MASK, COM, 0, {RS, A_L}},
5245
5246 {"mtsle", X(31,147), XRTLRARB_MASK, POWER8, 0, {L}},
5247
5248 {"eratsx", XRC(31,147,0), X_MASK, PPCA2, 0, {RT, RA0, RB}},
5249 {"eratsx.", XRC(31,147,1), X_MASK, PPCA2, 0, {RT, RA0, RB}},
5250
5251 {"stdx", X(31,149), X_MASK, PPC64, 0, {RS, RA0, RB}},
5252
5253 {"stwcx.", XRC(31,150,1), X_MASK, PPC, 0, {RS, RA0, RB}},
5254
5255 {"stwx", X(31,151), X_MASK, PPCCOM, 0, {RS, RA0, RB}},
5256 {"stx", X(31,151), X_MASK, PWRCOM, 0, {RS, RA, RB}},
5257
5258 {"slq", XRC(31,152,0), X_MASK, M601, 0, {RA, RS, RB}},
5259 {"slq.", XRC(31,152,1), X_MASK, M601, 0, {RA, RS, RB}},
5260
5261 {"sle", XRC(31,153,0), X_MASK, M601, 0, {RA, RS, RB}},
5262 {"sle.", XRC(31,153,1), X_MASK, M601, 0, {RA, RS, RB}},
5263
5264 {"prtyw", X(31,154), XRB_MASK, POWER6|PPCA2|PPC476, 0, {RA, RS}},
5265
5266 {"stdepx", X(31,157), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
5267
5268 {"stwepx", X(31,159), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
5269
5270 {"wrteei", X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {E}},
5271
5272 {"dcbtls", X(31,166), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
5273
5274 {"stvehx", X(31,167), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
5275 {"sthfcmx", APU(31,167,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
5276
5277 {"addex", ZRC(31,170,0), Z2_MASK, POWER9, 0, {RT, RA, RB, CY}},
5278
5279 {"msgclrp", XRTRA(31,174,0,0), XRTRA_MASK, POWER8, 0, {RB}},
5280 {"dcbtlse", X(31,174), X_MASK, PPCCHLK, E500MC, {CT, RA0, RB}},
5281
5282 {"mtmsrd", X(31,178), XRLARB_MASK, PPC64, 0, {RS, A_L}},
5283
5284 {"mtvsrd", X(31,179), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
5285 {"mtfprd", X(31,179), XX1RB_MASK|1, PPCVSX2, 0, {FRT, RA}},
5286 {"mtvrd", X(31,179)|1, XX1RB_MASK|1, PPCVSX2, 0, {VD, RA}},
5287 {"eratre", X(31,179), X_MASK, PPCA2, 0, {RT, RA, WS}},
5288
5289 {"stdux", X(31,181), X_MASK, PPC64, 0, {RS, RAS, RB}},
5290
5291 {"stqcx.", XRC(31,182,1), X_MASK|Q_MASK, POWER8, 0, {RSQ, RA0, RB}},
5292 {"wchkall", X(31,182), X_MASK, PPCA2, 0, {OBF}},
5293
5294 {"stwux", X(31,183), X_MASK, PPCCOM, 0, {RS, RAS, RB}},
5295 {"stux", X(31,183), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
5296
5297 {"sliq", XRC(31,184,0), X_MASK, M601, 0, {RA, RS, SH}},
5298 {"sliq.", XRC(31,184,1), X_MASK, M601, 0, {RA, RS, SH}},
5299
5300 {"prtyd", X(31,186), XRB_MASK, POWER6|PPCA2, 0, {RA, RS}},
5301
5302 {"cmprb", X(31,192), XCMP_MASK, POWER9, 0, {BF, L, RA, RB}},
5303
5304 {"icblq.", XRC(31,198,1), X_MASK, E6500, 0, {CT, RA0, RB}},
5305
5306 {"stvewx", X(31,199), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
5307 {"stwfcmx", APU(31,199,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
5308
5309 {"subfze", XO(31,200,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
5310 {"sfze", XO(31,200,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
5311 {"subfze.", XO(31,200,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
5312 {"sfze.", XO(31,200,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
5313
5314 {"addze", XO(31,202,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
5315 {"aze", XO(31,202,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
5316 {"addze.", XO(31,202,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
5317 {"aze.", XO(31,202,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
5318
5319 {"msgsnd", XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0, {RB}},
5320
5321 {"mtsr", X(31,210), XRB_MASK|(1<<20), COM, NON32, {SR, RS}},
5322
5323 {"mtfprwa", X(31,211), XX1RB_MASK|1, PPCVSX2, 0, {FRT, RA}},
5324 {"mtvrwa", X(31,211)|1, XX1RB_MASK|1, PPCVSX2, 0, {VD, RA}},
5325 {"mtvsrwa", X(31,211), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
5326 {"eratwe", X(31,211), X_MASK, PPCA2, 0, {RS, RA, WS}},
5327
5328 {"ldawx.", XRC(31,212,1), X_MASK, PPCA2, 0, {RT, RA0, RB}},
5329
5330 {"stdcx.", XRC(31,214,1), X_MASK, PPC64, 0, {RS, RA0, RB}},
5331
5332 {"stbx", X(31,215), X_MASK, COM, 0, {RS, RA0, RB}},
5333
5334 {"sllq", XRC(31,216,0), X_MASK, M601, 0, {RA, RS, RB}},
5335 {"sllq.", XRC(31,216,1), X_MASK, M601, 0, {RA, RS, RB}},
5336
5337 {"sleq", XRC(31,217,0), X_MASK, M601, 0, {RA, RS, RB}},
5338 {"sleq.", XRC(31,217,1), X_MASK, M601, 0, {RA, RS, RB}},
5339
5340 {"stbepx", X(31,223), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
5341
5342 {"cmpeqb", X(31,224), XCMPL_MASK, POWER9, 0, {BF, RA, RB}},
5343
5344 {"icblc", X(31,230), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
5345
5346 {"stvx", X(31,231), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
5347 {"stqfcmx", APU(31,231,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
5348
5349 {"subfme", XO(31,232,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
5350 {"sfme", XO(31,232,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
5351 {"subfme.", XO(31,232,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
5352 {"sfme.", XO(31,232,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
5353
5354 {"mulld", XO(31,233,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
5355 {"mulld.", XO(31,233,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
5356
5357 {"addme", XO(31,234,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
5358 {"ame", XO(31,234,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
5359 {"addme.", XO(31,234,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
5360 {"ame.", XO(31,234,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
5361
5362 {"mullw", XO(31,235,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5363 {"muls", XO(31,235,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5364 {"mullw.", XO(31,235,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5365 {"muls.", XO(31,235,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5366
5367 {"icblce", X(31,238), X_MASK, PPCCHLK, E500MC|PPCA2, {CT, RA, RB}},
5368 {"msgclr", XRTRA(31,238,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0, {RB}},
5369 {"mtsrin", X(31,242), XRA_MASK, PPC, NON32, {RS, RB}},
5370 {"mtsri", X(31,242), XRA_MASK, POWER, NON32, {RS, RB}},
5371
5372 {"mtfprwz", X(31,243), XX1RB_MASK|1, PPCVSX2, 0, {FRT, RA}},
5373 {"mtvrwz", X(31,243)|1, XX1RB_MASK|1, PPCVSX2, 0, {VD, RA}},
5374 {"mtvsrwz", X(31,243), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
5375
5376 {"dcbtstt", XRT(31,246,0x10), XRT_MASK, POWER7, 0, {RA0, RB}},
5377 {"dcbtst", X(31,246), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}},
5378 {"dcbtst", X(31,246), X_MASK, DCBT_EO, 0, {CT, RA0, RB}},
5379 {"dcbtst", X(31,246), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}},
5380
5381 {"stbux", X(31,247), X_MASK, COM, 0, {RS, RAS, RB}},
5382
5383 {"slliq", XRC(31,248,0), X_MASK, M601, 0, {RA, RS, SH}},
5384 {"slliq.", XRC(31,248,1), X_MASK, M601, 0, {RA, RS, SH}},
5385
5386 {"bpermd", X(31,252), X_MASK, POWER7|PPCA2, 0, {RA, RS, RB}},
5387
5388 {"dcbtstep", XRT(31,255,0), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
5389
5390 {"mfdcrx", X(31,259), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RS, RA}},
5391 {"mfdcrx.", XRC(31,259,1), X_MASK, PPCA2, 0, {RS, RA}},
5392
5393 {"lvexbx", X(31,261), X_MASK, E6500, 0, {VD, RA0, RB}},
5394
5395 {"icbt", X(31,262), XRT_MASK, PPC403, 0, {RA, RB}},
5396
5397 {"lvepxl", X(31,263), X_MASK, E6500, 0, {VD, RA0, RB}},
5398
5399 {"ldfcmx", APU(31,263,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
5400 {"doz", XO(31,264,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
5401 {"doz.", XO(31,264,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
5402
5403 {"modud", X(31,265), X_MASK, POWER9, 0, {RT, RA, RB}},
5404
5405 {"add", XO(31,266,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5406 {"cax", XO(31,266,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5407 {"add.", XO(31,266,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5408 {"cax.", XO(31,266,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5409
5410 {"moduw", X(31,267), X_MASK, POWER9, 0, {RT, RA, RB}},
5411
5412 {"lxvx", X(31,268), XX1_MASK|1<<6, PPCVSX3, 0, {XT6, RA0, RB}},
5413 {"lxvl", X(31,269), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
5414
5415 {"ehpriv", X(31,270), 0xffffffff, E500MC|PPCA2, 0, {0}},
5416
5417 {"tlbiel", X(31,274), X_MASK|1<<20,POWER9, 0, {RB, RSO, RIC, PRS, X_R}},
5418 {"tlbiel", X(31,274), XRTLRA_MASK, POWER4, POWER9|PPC476, {RB, LOPT}},
5419
5420 {"mfapidi", X(31,275), X_MASK, BOOKE, E500|TITAN, {RT, RA}},
5421
5422 {"lqarx", X(31,276), XEH_MASK|Q_MASK, POWER8, 0, {RTQ, RAX, RBX, EH}},
5423
5424 {"lscbx", XRC(31,277,0), X_MASK, M601, 0, {RT, RA, RB}},
5425 {"lscbx.", XRC(31,277,1), X_MASK, M601, 0, {RT, RA, RB}},
5426
5427 {"dcbtt", XRT(31,278,0x10), XRT_MASK, POWER7, 0, {RA0, RB}},
5428 {"dcbt", X(31,278), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}},
5429 {"dcbt", X(31,278), X_MASK, DCBT_EO, 0, {CT, RA0, RB}},
5430 {"dcbt", X(31,278), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}},
5431
5432 {"lhzx", X(31,279), X_MASK, COM, 0, {RT, RA0, RB}},
5433
5434 {"cdtbcd", X(31,282), XRB_MASK, POWER6, 0, {RA, RS}},
5435
5436 {"eqv", XRC(31,284,0), X_MASK, COM, 0, {RA, RS, RB}},
5437 {"eqv.", XRC(31,284,1), X_MASK, COM, 0, {RA, RS, RB}},
5438
5439 {"lhepx", X(31,287), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
5440
5441 {"mfdcrux", X(31,291), X_MASK, PPC464|PPC476, 0, {RS, RA}},
5442
5443 {"lvexhx", X(31,293), X_MASK, E6500, 0, {VD, RA0, RB}},
5444 {"lvepx", X(31,295), X_MASK, E6500, 0, {VD, RA0, RB}},
5445
5446 {"lxvll", X(31,301), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
5447
5448 {"mfbhrbe", X(31,302), X_MASK, POWER8, 0, {RT, BHRBE}},
5449
5450 {"tlbie", X(31,306), X_MASK|1<<20,POWER9, TITAN, {RB, RS, RIC, PRS, X_R}},
5451 {"tlbie", X(31,306), XRA_MASK, POWER7, POWER9|TITAN, {RB, RS}},
5452 {"tlbie", X(31,306), XRTLRA_MASK, PPC, E500|POWER7|TITAN, {RB, LOPT}},
5453 {"tlbi", X(31,306), XRT_MASK, POWER, 0, {RA0, RB}},
5454
5455 {"mfvsrld", X(31,307), XX1RB_MASK, PPCVSX3, 0, {RA, XS6}},
5456
5457 {"ldmx", X(31,309), X_MASK, POWER9, 0, {RT, RA0, RB}},
5458
5459 {"eciwx", X(31,310), X_MASK, PPC, E500|TITAN, {RT, RA0, RB}},
5460
5461 {"lhzux", X(31,311), X_MASK, COM, 0, {RT, RAL, RB}},
5462
5463 {"cbcdtd", X(31,314), XRB_MASK, POWER6, 0, {RA, RS}},
5464
5465 {"xor", XRC(31,316,0), X_MASK, COM, 0, {RA, RS, RB}},
5466 {"xor.", XRC(31,316,1), X_MASK, COM, 0, {RA, RS, RB}},
5467
5468 {"dcbtep", XRT(31,319,0), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
5469
5470 {"mfexisr", XSPR(31,323, 64), XSPR_MASK, PPC403, 0, {RT}},
5471 {"mfexier", XSPR(31,323, 66), XSPR_MASK, PPC403, 0, {RT}},
5472 {"mfbr0", XSPR(31,323,128), XSPR_MASK, PPC403, 0, {RT}},
5473 {"mfbr1", XSPR(31,323,129), XSPR_MASK, PPC403, 0, {RT}},
5474 {"mfbr2", XSPR(31,323,130), XSPR_MASK, PPC403, 0, {RT}},
5475 {"mfbr3", XSPR(31,323,131), XSPR_MASK, PPC403, 0, {RT}},
5476 {"mfbr4", XSPR(31,323,132), XSPR_MASK, PPC403, 0, {RT}},
5477 {"mfbr5", XSPR(31,323,133), XSPR_MASK, PPC403, 0, {RT}},
5478 {"mfbr6", XSPR(31,323,134), XSPR_MASK, PPC403, 0, {RT}},
5479 {"mfbr7", XSPR(31,323,135), XSPR_MASK, PPC403, 0, {RT}},
5480 {"mfbear", XSPR(31,323,144), XSPR_MASK, PPC403, 0, {RT}},
5481 {"mfbesr", XSPR(31,323,145), XSPR_MASK, PPC403, 0, {RT}},
5482 {"mfiocr", XSPR(31,323,160), XSPR_MASK, PPC403, 0, {RT}},
5483 {"mfdmacr0", XSPR(31,323,192), XSPR_MASK, PPC403, 0, {RT}},
5484 {"mfdmact0", XSPR(31,323,193), XSPR_MASK, PPC403, 0, {RT}},
5485 {"mfdmada0", XSPR(31,323,194), XSPR_MASK, PPC403, 0, {RT}},
5486 {"mfdmasa0", XSPR(31,323,195), XSPR_MASK, PPC403, 0, {RT}},
5487 {"mfdmacc0", XSPR(31,323,196), XSPR_MASK, PPC403, 0, {RT}},
5488 {"mfdmacr1", XSPR(31,323,200), XSPR_MASK, PPC403, 0, {RT}},
5489 {"mfdmact1", XSPR(31,323,201), XSPR_MASK, PPC403, 0, {RT}},
5490 {"mfdmada1", XSPR(31,323,202), XSPR_MASK, PPC403, 0, {RT}},
5491 {"mfdmasa1", XSPR(31,323,203), XSPR_MASK, PPC403, 0, {RT}},
5492 {"mfdmacc1", XSPR(31,323,204), XSPR_MASK, PPC403, 0, {RT}},
5493 {"mfdmacr2", XSPR(31,323,208), XSPR_MASK, PPC403, 0, {RT}},
5494 {"mfdmact2", XSPR(31,323,209), XSPR_MASK, PPC403, 0, {RT}},
5495 {"mfdmada2", XSPR(31,323,210), XSPR_MASK, PPC403, 0, {RT}},
5496 {"mfdmasa2", XSPR(31,323,211), XSPR_MASK, PPC403, 0, {RT}},
5497 {"mfdmacc2", XSPR(31,323,212), XSPR_MASK, PPC403, 0, {RT}},
5498 {"mfdmacr3", XSPR(31,323,216), XSPR_MASK, PPC403, 0, {RT}},
5499 {"mfdmact3", XSPR(31,323,217), XSPR_MASK, PPC403, 0, {RT}},
5500 {"mfdmada3", XSPR(31,323,218), XSPR_MASK, PPC403, 0, {RT}},
5501 {"mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, 0, {RT}},
5502 {"mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, 0, {RT}},
5503 {"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, 0, {RT}},
5504 {"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {RT, SPR}},
5505 {"mfdcr.", XRC(31,323,1), X_MASK, PPCA2, 0, {RT, SPR}},
5506
5507 {"lvexwx", X(31,325), X_MASK, E6500, 0, {VD, RA0, RB}},
5508
5509 {"dcread", X(31,326), X_MASK, PPC476|TITAN, 0, {RT, RA0, RB}},
5510
5511 {"div", XO(31,331,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
5512 {"div.", XO(31,331,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
5513
5514 {"lxvdsx", X(31,332), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
5515
5516 {"mfpmr", X(31,334), X_MASK, PPCPMR|PPCE300, 0, {RT, PMR}},
5517 {"mftmr", X(31,366), X_MASK, PPCTMR, 0, {RT, TMR}},
5518
5519 {"slbsync", X(31,338), 0xffffffff, POWER9, 0, {0}},
5520
5521 {"mfmq", XSPR(31,339, 0), XSPR_MASK, M601, 0, {RT}},
5522 {"mfxer", XSPR(31,339, 1), XSPR_MASK, COM, 0, {RT}},
5523 {"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, TITAN, {RT}},
5524 {"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, TITAN, {RT}},
5525 {"mfdec", XSPR(31,339, 6), XSPR_MASK, MFDEC1, 0, {RT}},
5526 {"mflr", XSPR(31,339, 8), XSPR_MASK, COM, 0, {RT}},
5527 {"mfctr", XSPR(31,339, 9), XSPR_MASK, COM, 0, {RT}},
5528 {"mfdscr", XSPR(31,339, 17), XSPR_MASK, POWER6, 0, {RT}},
5529 {"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, 0, {RT}},
5530 {"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, TITAN, {RT}},
5531 {"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, TITAN, {RT}},
5532 {"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2, MFDEC1, {RT}},
5533 {"mfsdr0", XSPR(31,339, 24), XSPR_MASK, POWER, 0, {RT}},
5534 {"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, TITAN, {RT}},
5535 {"mfsrr0", XSPR(31,339, 26), XSPR_MASK, COM, 0, {RT}},
5536 {"mfsrr1", XSPR(31,339, 27), XSPR_MASK, COM, 0, {RT}},
5537 {"mfcfar", XSPR(31,339, 28), XSPR_MASK, POWER6, 0, {RT}},
5538 {"mfpid", XSPR(31,339, 48), XSPR_MASK, BOOKE, 0, {RT}},
5539 {"mfcsrr0", XSPR(31,339, 58), XSPR_MASK, BOOKE, 0, {RT}},
5540 {"mfcsrr1", XSPR(31,339, 59), XSPR_MASK, BOOKE, 0, {RT}},
5541 {"mfdear", XSPR(31,339, 61), XSPR_MASK, BOOKE, 0, {RT}},
5542 {"mfesr", XSPR(31,339, 62), XSPR_MASK, BOOKE, 0, {RT}},
5543 {"mfivpr", XSPR(31,339, 63), XSPR_MASK, BOOKE, 0, {RT}},
5544 {"mfctrl", XSPR(31,339,136), XSPR_MASK, POWER4, 0, {RT}},
5545 {"mfcmpa", XSPR(31,339,144), XSPR_MASK, PPC860, 0, {RT}},
5546 {"mfcmpb", XSPR(31,339,145), XSPR_MASK, PPC860, 0, {RT}},
5547 {"mfcmpc", XSPR(31,339,146), XSPR_MASK, PPC860, 0, {RT}},
5548 {"mfcmpd", XSPR(31,339,147), XSPR_MASK, PPC860, 0, {RT}},
5549 {"mficr", XSPR(31,339,148), XSPR_MASK, PPC860, 0, {RT}},
5550 {"mfder", XSPR(31,339,149), XSPR_MASK, PPC860, 0, {RT}},
5551 {"mfcounta", XSPR(31,339,150), XSPR_MASK, PPC860, 0, {RT}},
5552 {"mfcountb", XSPR(31,339,151), XSPR_MASK, PPC860, 0, {RT}},
5553 {"mfcmpe", XSPR(31,339,152), XSPR_MASK, PPC860, 0, {RT}},
5554 {"mfcmpf", XSPR(31,339,153), XSPR_MASK, PPC860, 0, {RT}},
5555 {"mfcmpg", XSPR(31,339,154), XSPR_MASK, PPC860, 0, {RT}},
5556 {"mfcmph", XSPR(31,339,155), XSPR_MASK, PPC860, 0, {RT}},
5557 {"mflctrl1", XSPR(31,339,156), XSPR_MASK, PPC860, 0, {RT}},
5558 {"mflctrl2", XSPR(31,339,157), XSPR_MASK, PPC860, 0, {RT}},
5559 {"mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860, 0, {RT}},
5560 {"mfbar", XSPR(31,339,159), XSPR_MASK, PPC860, 0, {RT}},
5561 {"mfvrsave", XSPR(31,339,256), XSPR_MASK, PPCVEC, 0, {RT}},
5562 {"mfusprg0", XSPR(31,339,256), XSPR_MASK, BOOKE, 0, {RT}},
5563 {"mfsprg", XSPR(31,339,256), XSPRG_MASK, PPC, 0, {RT, SPRG}},
5564 {"mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
5565 {"mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
5566 {"mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
5567 {"mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
5568 {"mftbu", XSPR(31,339,269), XSPR_MASK, POWER4|BOOKE, 0, {RT}},
5569 {"mftb", X(31,339), X_MASK, POWER4|BOOKE, 0, {RT, TBR}},
5570 {"mftbl", XSPR(31,339,268), XSPR_MASK, POWER4|BOOKE, 0, {RT}},
5571 {"mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, 0, {RT}},
5572 {"mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, 0, {RT}},
5573 {"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, 0, {RT}},
5574 {"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, 0, {RT}},
5575 {"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, 0, {RT}},
5576 {"mfear", XSPR(31,339,282), XSPR_MASK, PPC, TITAN, {RT}},
5577 {"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, 0, {RT}},
5578 {"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, 0, {RT}},
5579 {"mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, 0, {RT}},
5580 {"mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, 0, {RT}},
5581 {"mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, 0, {RT}},
5582 {"mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, 0, {RT}},
5583 {"mfiac1", XSPR(31,339,312), XSPR_MASK, BOOKE, 0, {RT}},
5584 {"mfiac2", XSPR(31,339,313), XSPR_MASK, BOOKE, 0, {RT}},
5585 {"mfiac3", XSPR(31,339,314), XSPR_MASK, BOOKE, 0, {RT}},
5586 {"mfiac4", XSPR(31,339,315), XSPR_MASK, BOOKE, 0, {RT}},
5587 {"mfdac1", XSPR(31,339,316), XSPR_MASK, BOOKE, 0, {RT}},
5588 {"mfdac2", XSPR(31,339,317), XSPR_MASK, BOOKE, 0, {RT}},
5589 {"mfdvc1", XSPR(31,339,318), XSPR_MASK, BOOKE, 0, {RT}},
5590 {"mfdvc2", XSPR(31,339,319), XSPR_MASK, BOOKE, 0, {RT}},
5591 {"mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, 0, {RT}},
5592 {"mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, 0, {RT}},
5593 {"mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, 0, {RT}},
5594 {"mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, 0, {RT}},
5595 {"mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, 0, {RT}},
5596 {"mfivor3", XSPR(31,339,403), XSPR_MASK, BOOKE, 0, {RT}},
5597 {"mfivor4", XSPR(31,339,404), XSPR_MASK, BOOKE, 0, {RT}},
5598 {"mfivor5", XSPR(31,339,405), XSPR_MASK, BOOKE, 0, {RT}},
5599 {"mfivor6", XSPR(31,339,406), XSPR_MASK, BOOKE, 0, {RT}},
5600 {"mfivor7", XSPR(31,339,407), XSPR_MASK, BOOKE, 0, {RT}},
5601 {"mfivor8", XSPR(31,339,408), XSPR_MASK, BOOKE, 0, {RT}},
5602 {"mfivor9", XSPR(31,339,409), XSPR_MASK, BOOKE, 0, {RT}},
5603 {"mfivor10", XSPR(31,339,410), XSPR_MASK, BOOKE, 0, {RT}},
5604 {"mfivor11", XSPR(31,339,411), XSPR_MASK, BOOKE, 0, {RT}},
5605 {"mfivor12", XSPR(31,339,412), XSPR_MASK, BOOKE, 0, {RT}},
5606 {"mfivor13", XSPR(31,339,413), XSPR_MASK, BOOKE, 0, {RT}},
5607 {"mfivor14", XSPR(31,339,414), XSPR_MASK, BOOKE, 0, {RT}},
5608 {"mfivor15", XSPR(31,339,415), XSPR_MASK, BOOKE, 0, {RT}},
5609 {"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE, 0, {RT}},
5610 {"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, 0, {RT}},
5611 {"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, 0, {RT}},
5612 {"mfivor32", XSPR(31,339,528), XSPR_MASK, PPCSPE|E6500, 0, {RT}},
5613 {"mfivor33", XSPR(31,339,529), XSPR_MASK, PPCSPE|E6500, 0, {RT}},
5614 {"mfivor34", XSPR(31,339,530), XSPR_MASK, PPCSPE, 0, {RT}},
5615 {"mfivor35", XSPR(31,339,531), XSPR_MASK, PPCPMR, 0, {RT}},
5616 {"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
5617 {"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
5618 {"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
5619 {"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
5620 {"mfic_cst", XSPR(31,339,560), XSPR_MASK, PPC860, 0, {RT}},
5621 {"mfic_adr", XSPR(31,339,561), XSPR_MASK, PPC860, 0, {RT}},
5622 {"mfic_dat", XSPR(31,339,562), XSPR_MASK, PPC860, 0, {RT}},
5623 {"mfdc_cst", XSPR(31,339,568), XSPR_MASK, PPC860, 0, {RT}},
5624 {"mfdc_adr", XSPR(31,339,569), XSPR_MASK, PPC860, 0, {RT}},
5625 {"mfdc_dat", XSPR(31,339,570), XSPR_MASK, PPC860, 0, {RT}},
5626 {"mfmcsrr0", XSPR(31,339,570), XSPR_MASK, PPCRFMCI, 0, {RT}},
5627 {"mfmcsrr1", XSPR(31,339,571), XSPR_MASK, PPCRFMCI, 0, {RT}},
5628 {"mfmcsr", XSPR(31,339,572), XSPR_MASK, PPCRFMCI, 0, {RT}},
5629 {"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, TITAN, {RT}},
5630 {"mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, 0, {RT}},
5631 {"mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, 0, {RT}},
5632 {"mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, 0, {RT}},
5633 {"mfmi_ctr", XSPR(31,339,784), XSPR_MASK, PPC860, 0, {RT}},
5634 {"mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860, 0, {RT}},
5635 {"mfmi_epn", XSPR(31,339,787), XSPR_MASK, PPC860, 0, {RT}},
5636 {"mfmi_twc", XSPR(31,339,789), XSPR_MASK, PPC860, 0, {RT}},
5637 {"mfmi_rpn", XSPR(31,339,790), XSPR_MASK, PPC860, 0, {RT}},
5638 {"mfmd_ctr", XSPR(31,339,792), XSPR_MASK, PPC860, 0, {RT}},
5639 {"mfm_casid", XSPR(31,339,793), XSPR_MASK, PPC860, 0, {RT}},
5640 {"mfmd_ap", XSPR(31,339,794), XSPR_MASK, PPC860, 0, {RT}},
5641 {"mfmd_epn", XSPR(31,339,795), XSPR_MASK, PPC860, 0, {RT}},
5642 {"mfmd_twb", XSPR(31,339,796), XSPR_MASK, PPC860, 0, {RT}},
5643 {"mfmd_twc", XSPR(31,339,797), XSPR_MASK, PPC860, 0, {RT}},
5644 {"mfmd_rpn", XSPR(31,339,798), XSPR_MASK, PPC860, 0, {RT}},
5645 {"mfm_tw", XSPR(31,339,799), XSPR_MASK, PPC860, 0, {RT}},
5646 {"mfmi_dbcam", XSPR(31,339,816), XSPR_MASK, PPC860, 0, {RT}},
5647 {"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860, 0, {RT}},
5648 {"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860, 0, {RT}},
5649 {"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, 0, {RT}},
5650 {"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860, 0, {RT}},
5651 {"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860, 0, {RT}},
5652 {"mfivndx", XSPR(31,339,880), XSPR_MASK, TITAN, 0, {RT}},
5653 {"mfdvndx", XSPR(31,339,881), XSPR_MASK, TITAN, 0, {RT}},
5654 {"mfivlim", XSPR(31,339,882), XSPR_MASK, TITAN, 0, {RT}},
5655 {"mfdvlim", XSPR(31,339,883), XSPR_MASK, TITAN, 0, {RT}},
5656 {"mfclcsr", XSPR(31,339,884), XSPR_MASK, TITAN, 0, {RT}},
5657 {"mfccr1", XSPR(31,339,888), XSPR_MASK, TITAN, 0, {RT}},
5658 {"mfppr", XSPR(31,339,896), XSPR_MASK, POWER7, 0, {RT}},
5659 {"mfppr32", XSPR(31,339,898), XSPR_MASK, POWER7, 0, {RT}},
5660 {"mfrstcfg", XSPR(31,339,923), XSPR_MASK, TITAN, 0, {RT}},
5661 {"mfdcdbtrl", XSPR(31,339,924), XSPR_MASK, TITAN, 0, {RT}},
5662 {"mfdcdbtrh", XSPR(31,339,925), XSPR_MASK, TITAN, 0, {RT}},
5663 {"mficdbtr", XSPR(31,339,927), XSPR_MASK, TITAN, 0, {RT}},
5664 {"mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, 0, {RT}},
5665 {"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, 0, {RT}},
5666 {"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, 0, {RT}},
5667 {"mfusia", XSPR(31,339,939), XSPR_MASK, PPC750, 0, {RT}},
5668 {"mfummcr1", XSPR(31,339,940), XSPR_MASK, PPC750, 0, {RT}},
5669 {"mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750, 0, {RT}},
5670 {"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, 0, {RT}},
5671 {"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, 0, {RT}},
5672 {"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, 0, {RT}},
5673 {"mfmmucr", XSPR(31,339,946), XSPR_MASK, TITAN, 0, {RT}},
5674 {"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, 0, {RT}},
5675 {"mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, 0, {RT}},
5676 {"mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, 0, {RT}},
5677 {"mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, 0, {RT}},
5678 {"mfdvc2", XSPR(31,339,951), XSPR_MASK, PPC405, 0, {RT}},
5679 {"mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750, 0, {RT}},
5680 {"mfpmc1", XSPR(31,339,953), XSPR_MASK, PPC750, 0, {RT}},
5681 {"mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403, 0, {RT}},
5682 {"mfdcwr", XSPR(31,339,954), XSPR_MASK, PPC403, 0, {RT}},
5683 {"mfpmc2", XSPR(31,339,954), XSPR_MASK, PPC750, 0, {RT}},
5684 {"mfsia", XSPR(31,339,955), XSPR_MASK, PPC750, 0, {RT}},
5685 {"mfsler", XSPR(31,339,955), XSPR_MASK, PPC405, 0, {RT}},
5686 {"mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750, 0, {RT}},
5687 {"mfsu0r", XSPR(31,339,956), XSPR_MASK, PPC405, 0, {RT}},
5688 {"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, 0, {RT}},
5689 {"mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, 0, {RT}},
5690 {"mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, 0, {RT}},
5691 {"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, 0, {RT}},
5692 {"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, 0, {RT}},
5693 {"mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, 0, {RT}},
5694 {"mfevpr", XSPR(31,339,982), XSPR_MASK, PPC403, 0, {RT}},
5695 {"mfcdbcr", XSPR(31,339,983), XSPR_MASK, PPC403, 0, {RT}},
5696 {"mftsr", XSPR(31,339,984), XSPR_MASK, PPC403, 0, {RT}},
5697 {"mftcr", XSPR(31,339,986), XSPR_MASK, PPC403, 0, {RT}},
5698 {"mfpit", XSPR(31,339,987), XSPR_MASK, PPC403, 0, {RT}},
5699 {"mftbhi", XSPR(31,339,988), XSPR_MASK, PPC403, 0, {RT}},
5700 {"mftblo", XSPR(31,339,989), XSPR_MASK, PPC403, 0, {RT}},
5701 {"mfsrr2", XSPR(31,339,990), XSPR_MASK, PPC403, 0, {RT}},
5702 {"mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, 0, {RT}},
5703 {"mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, 0, {RT}},
5704 {"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, 0, {RT}},
5705 {"mfdbdr", XSPR(31,339,1011), XSPR_MASK, TITAN, 0, {RS}},
5706 {"mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, 0, {RT}},
5707 {"mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, 0, {RT}},
5708 {"mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, 0, {RT}},
5709 {"mfdac2", XSPR(31,339,1015), XSPR_MASK, PPC403, 0, {RT}},
5710 {"mfl2cr", XSPR(31,339,1017), XSPR_MASK, PPC750, 0, {RT}},
5711 {"mfdccr", XSPR(31,339,1018), XSPR_MASK, PPC403, 0, {RT}},
5712 {"mficcr", XSPR(31,339,1019), XSPR_MASK, PPC403, 0, {RT}},
5713 {"mfictc", XSPR(31,339,1019), XSPR_MASK, PPC750, 0, {RT}},
5714 {"mfpbl1", XSPR(31,339,1020), XSPR_MASK, PPC403, 0, {RT}},
5715 {"mfthrm1", XSPR(31,339,1020), XSPR_MASK, PPC750, 0, {RT}},
5716 {"mfpbu1", XSPR(31,339,1021), XSPR_MASK, PPC403, 0, {RT}},
5717 {"mfthrm2", XSPR(31,339,1021), XSPR_MASK, PPC750, 0, {RT}},
5718 {"mfpbl2", XSPR(31,339,1022), XSPR_MASK, PPC403, 0, {RT}},
5719 {"mfthrm3", XSPR(31,339,1022), XSPR_MASK, PPC750, 0, {RT}},
5720 {"mfpbu2", XSPR(31,339,1023), XSPR_MASK, PPC403, 0, {RT}},
5721 {"mfspr", X(31,339), X_MASK, COM, 0, {RT, SPR}},
5722
5723 {"lwax", X(31,341), X_MASK, PPC64, 0, {RT, RA0, RB}},
5724
5725 {"dst", XDSS(31,342,0), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
5726
5727 {"lhax", X(31,343), X_MASK, COM, 0, {RT, RA0, RB}},
5728
5729 {"lvxl", X(31,359), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
5730
5731 {"abs", XO(31,360,0,0), XORB_MASK, M601, 0, {RT, RA}},
5732 {"abs.", XO(31,360,0,1), XORB_MASK, M601, 0, {RT, RA}},
5733
5734 {"divs", XO(31,363,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
5735 {"divs.", XO(31,363,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
5736
5737 {"lxvwsx", X(31,364), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
5738
5739 {"tlbia", X(31,370), 0xffffffff, PPC, E500|TITAN, {0}},
5740
5741 {"mftbu", XSPR(31,371,269), XSPR_MASK, PPC, NO371|POWER4, {RT}},
5742 {"mftb", X(31,371), X_MASK, PPC, NO371|POWER4, {RT, TBR}},
5743 {"mftbl", XSPR(31,371,268), XSPR_MASK, PPC, NO371|POWER4, {RT}},
5744
5745 {"lwaux", X(31,373), X_MASK, PPC64, 0, {RT, RAL, RB}},
5746
5747 {"dstst", XDSS(31,374,0), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
5748
5749 {"lhaux", X(31,375), X_MASK, COM, 0, {RT, RAL, RB}},
5750
5751 {"popcntw", X(31,378), XRB_MASK, POWER7|PPCA2, 0, {RA, RS}},
5752
5753 {"mtdcrx", X(31,387), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RA, RS}},
5754 {"mtdcrx.", XRC(31,387,1), X_MASK, PPCA2, 0, {RA, RS}},
5755
5756 {"stvexbx", X(31,389), X_MASK, E6500, 0, {VS, RA0, RB}},
5757
5758 {"dcblc", X(31,390), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
5759 {"stdfcmx", APU(31,391,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
5760
5761 {"divdeu", XO(31,393,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
5762 {"divdeu.", XO(31,393,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
5763 {"divweu", XO(31,395,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
5764 {"divweu.", XO(31,395,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
5765
5766 {"stxvx", X(31,396), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
5767 {"stxvl", X(31,397), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
5768
5769 {"dcblce", X(31,398), X_MASK, PPCCHLK, E500MC, {CT, RA, RB}},
5770
5771 {"slbmte", X(31,402), XRA_MASK, PPC64, 0, {RS, RB}},
5772
5773 {"mtvsrws", X(31,403), XX1RB_MASK, PPCVSX3, 0, {XT6, RA}},
5774
5775 {"pbt.", XRC(31,404,1), X_MASK, POWER8, 0, {RS, RA0, RB}},
5776
5777 {"icswx", XRC(31,406,0), X_MASK, POWER7|PPCA2, 0, {RS, RA, RB}},
5778 {"icswx.", XRC(31,406,1), X_MASK, POWER7|PPCA2, 0, {RS, RA, RB}},
5779
5780 {"sthx", X(31,407), X_MASK, COM, 0, {RS, RA0, RB}},
5781
5782 {"orc", XRC(31,412,0), X_MASK, COM, 0, {RA, RS, RB}},
5783 {"orc.", XRC(31,412,1), X_MASK, COM, 0, {RA, RS, RB}},
5784
5785 {"sthepx", X(31,415), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
5786
5787 {"mtdcrux", X(31,419), X_MASK, PPC464|PPC476, 0, {RA, RS}},
5788
5789 {"stvexhx", X(31,421), X_MASK, E6500, 0, {VS, RA0, RB}},
5790
5791 {"dcblq.", XRC(31,422,1), X_MASK, E6500, 0, {CT, RA0, RB}},
5792
5793 {"divde", XO(31,425,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
5794 {"divde.", XO(31,425,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
5795 {"divwe", XO(31,427,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
5796 {"divwe.", XO(31,427,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
5797
5798 {"stxvll", X(31,429), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
5799
5800 {"clrbhrb", X(31,430), 0xffffffff, POWER8, 0, {0}},
5801
5802 {"slbie", X(31,434), XRTRA_MASK, PPC64, 0, {RB}},
5803
5804 {"mtvsrdd", X(31,435), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
5805
5806 {"ecowx", X(31,438), X_MASK, PPC, E500|TITAN, {RT, RA0, RB}},
5807
5808 {"sthux", X(31,439), X_MASK, COM, 0, {RS, RAS, RB}},
5809
5810 {"mdors", 0x7f9ce378, 0xffffffff, E500MC, 0, {0}},
5811
5812 {"miso", 0x7f5ad378, 0xffffffff, E6500, 0, {0}},
5813
5814 /* The "yield", "mdoio" and "mdoom" instructions are extended mnemonics for
5815 "or rX,rX,rX", with rX being r27, r29 and r30 respectively. */
5816 {"yield", 0x7f7bdb78, 0xffffffff, POWER7, 0, {0}},
5817 {"mdoio", 0x7fbdeb78, 0xffffffff, POWER7, 0, {0}},
5818 {"mdoom", 0x7fdef378, 0xffffffff, POWER7, 0, {0}},
5819 {"mr", XRC(31,444,0), X_MASK, COM, 0, {RA, RS, RBS}},
5820 {"or", XRC(31,444,0), X_MASK, COM, 0, {RA, RS, RB}},
5821 {"mr.", XRC(31,444,1), X_MASK, COM, 0, {RA, RS, RBS}},
5822 {"or.", XRC(31,444,1), X_MASK, COM, 0, {RA, RS, RB}},
5823
5824 {"mtexisr", XSPR(31,451, 64), XSPR_MASK, PPC403, 0, {RS}},
5825 {"mtexier", XSPR(31,451, 66), XSPR_MASK, PPC403, 0, {RS}},
5826 {"mtbr0", XSPR(31,451,128), XSPR_MASK, PPC403, 0, {RS}},
5827 {"mtbr1", XSPR(31,451,129), XSPR_MASK, PPC403, 0, {RS}},
5828 {"mtbr2", XSPR(31,451,130), XSPR_MASK, PPC403, 0, {RS}},
5829 {"mtbr3", XSPR(31,451,131), XSPR_MASK, PPC403, 0, {RS}},
5830 {"mtbr4", XSPR(31,451,132), XSPR_MASK, PPC403, 0, {RS}},
5831 {"mtbr5", XSPR(31,451,133), XSPR_MASK, PPC403, 0, {RS}},
5832 {"mtbr6", XSPR(31,451,134), XSPR_MASK, PPC403, 0, {RS}},
5833 {"mtbr7", XSPR(31,451,135), XSPR_MASK, PPC403, 0, {RS}},
5834 {"mtbear", XSPR(31,451,144), XSPR_MASK, PPC403, 0, {RS}},
5835 {"mtbesr", XSPR(31,451,145), XSPR_MASK, PPC403, 0, {RS}},
5836 {"mtiocr", XSPR(31,451,160), XSPR_MASK, PPC403, 0, {RS}},
5837 {"mtdmacr0", XSPR(31,451,192), XSPR_MASK, PPC403, 0, {RS}},
5838 {"mtdmact0", XSPR(31,451,193), XSPR_MASK, PPC403, 0, {RS}},
5839 {"mtdmada0", XSPR(31,451,194), XSPR_MASK, PPC403, 0, {RS}},
5840 {"mtdmasa0", XSPR(31,451,195), XSPR_MASK, PPC403, 0, {RS}},
5841 {"mtdmacc0", XSPR(31,451,196), XSPR_MASK, PPC403, 0, {RS}},
5842 {"mtdmacr1", XSPR(31,451,200), XSPR_MASK, PPC403, 0, {RS}},
5843 {"mtdmact1", XSPR(31,451,201), XSPR_MASK, PPC403, 0, {RS}},
5844 {"mtdmada1", XSPR(31,451,202), XSPR_MASK, PPC403, 0, {RS}},
5845 {"mtdmasa1", XSPR(31,451,203), XSPR_MASK, PPC403, 0, {RS}},
5846 {"mtdmacc1", XSPR(31,451,204), XSPR_MASK, PPC403, 0, {RS}},
5847 {"mtdmacr2", XSPR(31,451,208), XSPR_MASK, PPC403, 0, {RS}},
5848 {"mtdmact2", XSPR(31,451,209), XSPR_MASK, PPC403, 0, {RS}},
5849 {"mtdmada2", XSPR(31,451,210), XSPR_MASK, PPC403, 0, {RS}},
5850 {"mtdmasa2", XSPR(31,451,211), XSPR_MASK, PPC403, 0, {RS}},
5851 {"mtdmacc2", XSPR(31,451,212), XSPR_MASK, PPC403, 0, {RS}},
5852 {"mtdmacr3", XSPR(31,451,216), XSPR_MASK, PPC403, 0, {RS}},
5853 {"mtdmact3", XSPR(31,451,217), XSPR_MASK, PPC403, 0, {RS}},
5854 {"mtdmada3", XSPR(31,451,218), XSPR_MASK, PPC403, 0, {RS}},
5855 {"mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403, 0, {RS}},
5856 {"mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403, 0, {RS}},
5857 {"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403, 0, {RS}},
5858 {"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {SPR, RS}},
5859 {"mtdcr.", XRC(31,451,1), X_MASK, PPCA2, 0, {SPR, RS}},
5860
5861 {"stvexwx", X(31,453), X_MASK, E6500, 0, {VS, RA0, RB}},
5862
5863 {"dccci", X(31,454), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
5864 {"dci", X(31,454), XRARB_MASK, PPCA2|PPC476, 0, {CT}},
5865
5866 {"divdu", XO(31,457,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
5867 {"divdu.", XO(31,457,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
5868
5869 {"divwu", XO(31,459,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
5870 {"divwu.", XO(31,459,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
5871
5872 {"mtpmr", X(31,462), X_MASK, PPCPMR|PPCE300, 0, {PMR, RS}},
5873 {"mttmr", X(31,494), X_MASK, PPCTMR, 0, {TMR, RS}},
5874
5875 {"slbieg", X(31,466), XRA_MASK, POWER9, 0, {RS, RB}},
5876
5877 {"mtmq", XSPR(31,467, 0), XSPR_MASK, M601, 0, {RS}},
5878 {"mtxer", XSPR(31,467, 1), XSPR_MASK, COM, 0, {RS}},
5879 {"mtlr", XSPR(31,467, 8), XSPR_MASK, COM, 0, {RS}},
5880 {"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, 0, {RS}},
5881 {"mtdscr", XSPR(31,467, 17), XSPR_MASK, POWER6, 0, {RS}},
5882 {"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, 0, {RS}},
5883 {"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, TITAN, {RS}},
5884 {"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, TITAN, {RS}},
5885 {"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, TITAN, {RS}},
5886 {"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, TITAN, {RS}},
5887 {"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, 0, {RS}},
5888 {"mtsdr0", XSPR(31,467, 24), XSPR_MASK, POWER, 0, {RS}},
5889 {"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, TITAN, {RS}},
5890 {"mtsrr0", XSPR(31,467, 26), XSPR_MASK, COM, 0, {RS}},
5891 {"mtsrr1", XSPR(31,467, 27), XSPR_MASK, COM, 0, {RS}},
5892 {"mtcfar", XSPR(31,467, 28), XSPR_MASK, POWER6, 0, {RS}},
5893 {"mtpid", XSPR(31,467, 48), XSPR_MASK, BOOKE, 0, {RS}},
5894 {"mtdecar", XSPR(31,467, 54), XSPR_MASK, BOOKE, 0, {RS}},
5895 {"mtcsrr0", XSPR(31,467, 58), XSPR_MASK, BOOKE, 0, {RS}},
5896 {"mtcsrr1", XSPR(31,467, 59), XSPR_MASK, BOOKE, 0, {RS}},
5897 {"mtdear", XSPR(31,467, 61), XSPR_MASK, BOOKE, 0, {RS}},
5898 {"mtesr", XSPR(31,467, 62), XSPR_MASK, BOOKE, 0, {RS}},
5899 {"mtivpr", XSPR(31,467, 63), XSPR_MASK, BOOKE, 0, {RS}},
5900 {"mtcmpa", XSPR(31,467,144), XSPR_MASK, PPC860, 0, {RS}},
5901 {"mtcmpb", XSPR(31,467,145), XSPR_MASK, PPC860, 0, {RS}},
5902 {"mtcmpc", XSPR(31,467,146), XSPR_MASK, PPC860, 0, {RS}},
5903 {"mtcmpd", XSPR(31,467,147), XSPR_MASK, PPC860, 0, {RS}},
5904 {"mticr", XSPR(31,467,148), XSPR_MASK, PPC860, 0, {RS}},
5905 {"mtder", XSPR(31,467,149), XSPR_MASK, PPC860, 0, {RS}},
5906 {"mtcounta", XSPR(31,467,150), XSPR_MASK, PPC860, 0, {RS}},
5907 {"mtcountb", XSPR(31,467,151), XSPR_MASK, PPC860, 0, {RS}},
5908 {"mtctrl", XSPR(31,467,152), XSPR_MASK, POWER4, 0, {RS}},
5909 {"mtcmpe", XSPR(31,467,152), XSPR_MASK, PPC860, 0, {RS}},
5910 {"mtcmpf", XSPR(31,467,153), XSPR_MASK, PPC860, 0, {RS}},
5911 {"mtcmpg", XSPR(31,467,154), XSPR_MASK, PPC860, 0, {RS}},
5912 {"mtcmph", XSPR(31,467,155), XSPR_MASK, PPC860, 0, {RS}},
5913 {"mtlctrl1", XSPR(31,467,156), XSPR_MASK, PPC860, 0, {RS}},
5914 {"mtlctrl2", XSPR(31,467,157), XSPR_MASK, PPC860, 0, {RS}},
5915 {"mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860, 0, {RS}},
5916 {"mtbar", XSPR(31,467,159), XSPR_MASK, PPC860, 0, {RS}},
5917 {"mtvrsave", XSPR(31,467,256), XSPR_MASK, PPCVEC, 0, {RS}},
5918 {"mtusprg0", XSPR(31,467,256), XSPR_MASK, BOOKE, 0, {RS}},
5919 {"mtsprg", XSPR(31,467,256), XSPRG_MASK, PPC, 0, {SPRG, RS}},
5920 {"mtsprg0", XSPR(31,467,272), XSPR_MASK, PPC, 0, {RS}},
5921 {"mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, 0, {RS}},
5922 {"mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, 0, {RS}},
5923 {"mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, 0, {RS}},
5924 {"mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, 0, {RS}},
5925 {"mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, 0, {RS}},
5926 {"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, 0, {RS}},
5927 {"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, 0, {RS}},
5928 {"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, 0, {RS}},
5929 {"mtear", XSPR(31,467,282), XSPR_MASK, PPC, TITAN, {RS}},
5930 {"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, 0, {RS}},
5931 {"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, 0, {RS}},
5932 {"mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, 0, {RS}},
5933 {"mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, 0, {RS}},
5934 {"mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, 0, {RS}},
5935 {"mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, 0, {RS}},
5936 {"mtiac1", XSPR(31,467,312), XSPR_MASK, BOOKE, 0, {RS}},
5937 {"mtiac2", XSPR(31,467,313), XSPR_MASK, BOOKE, 0, {RS}},
5938 {"mtiac3", XSPR(31,467,314), XSPR_MASK, BOOKE, 0, {RS}},
5939 {"mtiac4", XSPR(31,467,315), XSPR_MASK, BOOKE, 0, {RS}},
5940 {"mtdac1", XSPR(31,467,316), XSPR_MASK, BOOKE, 0, {RS}},
5941 {"mtdac2", XSPR(31,467,317), XSPR_MASK, BOOKE, 0, {RS}},
5942 {"mtdvc1", XSPR(31,467,318), XSPR_MASK, BOOKE, 0, {RS}},
5943 {"mtdvc2", XSPR(31,467,319), XSPR_MASK, BOOKE, 0, {RS}},
5944 {"mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, 0, {RS}},
5945 {"mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, 0, {RS}},
5946 {"mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, 0, {RS}},
5947 {"mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, 0, {RS}},
5948 {"mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, 0, {RS}},
5949 {"mtivor3", XSPR(31,467,403), XSPR_MASK, BOOKE, 0, {RS}},
5950 {"mtivor4", XSPR(31,467,404), XSPR_MASK, BOOKE, 0, {RS}},
5951 {"mtivor5", XSPR(31,467,405), XSPR_MASK, BOOKE, 0, {RS}},
5952 {"mtivor6", XSPR(31,467,406), XSPR_MASK, BOOKE, 0, {RS}},
5953 {"mtivor7", XSPR(31,467,407), XSPR_MASK, BOOKE, 0, {RS}},
5954 {"mtivor8", XSPR(31,467,408), XSPR_MASK, BOOKE, 0, {RS}},
5955 {"mtivor9", XSPR(31,467,409), XSPR_MASK, BOOKE, 0, {RS}},
5956 {"mtivor10", XSPR(31,467,410), XSPR_MASK, BOOKE, 0, {RS}},
5957 {"mtivor11", XSPR(31,467,411), XSPR_MASK, BOOKE, 0, {RS}},
5958 {"mtivor12", XSPR(31,467,412), XSPR_MASK, BOOKE, 0, {RS}},
5959 {"mtivor13", XSPR(31,467,413), XSPR_MASK, BOOKE, 0, {RS}},
5960 {"mtivor14", XSPR(31,467,414), XSPR_MASK, BOOKE, 0, {RS}},
5961 {"mtivor15", XSPR(31,467,415), XSPR_MASK, BOOKE, 0, {RS}},
5962 {"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE, 0, {RS}},
5963 {"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, 0, {RS}},
5964 {"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, 0, {RS}},
5965 {"mtivor32", XSPR(31,467,528), XSPR_MASK, PPCSPE|E6500, 0, {RS}},
5966 {"mtivor33", XSPR(31,467,529), XSPR_MASK, PPCSPE|E6500, 0, {RS}},
5967 {"mtivor34", XSPR(31,467,530), XSPR_MASK, PPCSPE, 0, {RS}},
5968 {"mtivor35", XSPR(31,467,531), XSPR_MASK, PPCPMR, 0, {RS}},
5969 {"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
5970 {"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
5971 {"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
5972 {"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
5973 {"mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, 0, {RS}},
5974 {"mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, 0, {RS}},
5975 {"mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, 0, {RS}},
5976 {"mtivndx", XSPR(31,467,880), XSPR_MASK, TITAN, 0, {RS}},
5977 {"mtdvndx", XSPR(31,467,881), XSPR_MASK, TITAN, 0, {RS}},
5978 {"mtivlim", XSPR(31,467,882), XSPR_MASK, TITAN, 0, {RS}},
5979 {"mtdvlim", XSPR(31,467,883), XSPR_MASK, TITAN, 0, {RS}},
5980 {"mtclcsr", XSPR(31,467,884), XSPR_MASK, TITAN, 0, {RS}},
5981 {"mtccr1", XSPR(31,467,888), XSPR_MASK, TITAN, 0, {RS}},
5982 {"mtppr", XSPR(31,467,896), XSPR_MASK, POWER7, 0, {RS}},
5983 {"mtppr32", XSPR(31,467,898), XSPR_MASK, POWER7, 0, {RS}},
5984 {"mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, 0, {RS}},
5985 {"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, 0, {RS}},
5986 {"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, 0, {RS}},
5987 {"mtusia", XSPR(31,467,939), XSPR_MASK, PPC750, 0, {RS}},
5988 {"mtummcr1", XSPR(31,467,940), XSPR_MASK, PPC750, 0, {RS}},
5989 {"mtupmc3", XSPR(31,467,941), XSPR_MASK, PPC750, 0, {RS}},
5990 {"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750, 0, {RS}},
5991 {"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, 0, {RS}},
5992 {"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, 0, {RS}},
5993 {"mtrmmucr", XSPR(31,467,946), XSPR_MASK, TITAN, 0, {RS}},
5994 {"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, 0, {RS}},
5995 {"mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, 0, {RS}},
5996 {"mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, 0, {RS}},
5997 {"mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, 0, {RS}},
5998 {"mtdvc2", XSPR(31,467,951), XSPR_MASK, PPC405, 0, {RS}},
5999 {"mtmmcr0", XSPR(31,467,952), XSPR_MASK, PPC750, 0, {RS}},
6000 {"mtpmc1", XSPR(31,467,953), XSPR_MASK, PPC750, 0, {RS}},
6001 {"mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403, 0, {RS}},
6002 {"mtdcwr", XSPR(31,467,954), XSPR_MASK, PPC403, 0, {RS}},
6003 {"mtpmc2", XSPR(31,467,954), XSPR_MASK, PPC750, 0, {RS}},
6004 {"mtsia", XSPR(31,467,955), XSPR_MASK, PPC750, 0, {RS}},
6005 {"mtsler", XSPR(31,467,955), XSPR_MASK, PPC405, 0, {RS}},
6006 {"mtmmcr1", XSPR(31,467,956), XSPR_MASK, PPC750, 0, {RS}},
6007 {"mtsu0r", XSPR(31,467,956), XSPR_MASK, PPC405, 0, {RS}},
6008 {"mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405, 0, {RS}},
6009 {"mtpmc3", XSPR(31,467,957), XSPR_MASK, PPC750, 0, {RS}},
6010 {"mtpmc4", XSPR(31,467,958), XSPR_MASK, PPC750, 0, {RS}},
6011 {"mticdbdr", XSPR(31,467,979), XSPR_MASK, PPC403, 0, {RS}},
6012 {"mtesr", XSPR(31,467,980), XSPR_MASK, PPC403, 0, {RS}},
6013 {"mtdear", XSPR(31,467,981), XSPR_MASK, PPC403, 0, {RS}},
6014 {"mtevpr", XSPR(31,467,982), XSPR_MASK, PPC403, 0, {RS}},
6015 {"mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403, 0, {RS}},
6016 {"mttsr", XSPR(31,467,984), XSPR_MASK, PPC403, 0, {RS}},
6017 {"mttcr", XSPR(31,467,986), XSPR_MASK, PPC403, 0, {RS}},
6018 {"mtpit", XSPR(31,467,987), XSPR_MASK, PPC403, 0, {RS}},
6019 {"mttbhi", XSPR(31,467,988), XSPR_MASK, PPC403, 0, {RS}},
6020 {"mttblo", XSPR(31,467,989), XSPR_MASK, PPC403, 0, {RS}},
6021 {"mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, 0, {RS}},
6022 {"mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, 0, {RS}},
6023 {"mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, 0, {RS}},
6024 {"mtdbdr", XSPR(31,467,1011), XSPR_MASK, TITAN, 0, {RS}},
6025 {"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, 0, {RS}},
6026 {"mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, 0, {RS}},
6027 {"mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, 0, {RS}},
6028 {"mtdac1", XSPR(31,467,1014), XSPR_MASK, PPC403, 0, {RS}},
6029 {"mtdac2", XSPR(31,467,1015), XSPR_MASK, PPC403, 0, {RS}},
6030 {"mtl2cr", XSPR(31,467,1017), XSPR_MASK, PPC750, 0, {RS}},
6031 {"mtdccr", XSPR(31,467,1018), XSPR_MASK, PPC403, 0, {RS}},
6032 {"mticcr", XSPR(31,467,1019), XSPR_MASK, PPC403, 0, {RS}},
6033 {"mtictc", XSPR(31,467,1019), XSPR_MASK, PPC750, 0, {RS}},
6034 {"mtpbl1", XSPR(31,467,1020), XSPR_MASK, PPC403, 0, {RS}},
6035 {"mtthrm1", XSPR(31,467,1020), XSPR_MASK, PPC750, 0, {RS}},
6036 {"mtpbu1", XSPR(31,467,1021), XSPR_MASK, PPC403, 0, {RS}},
6037 {"mtthrm2", XSPR(31,467,1021), XSPR_MASK, PPC750, 0, {RS}},
6038 {"mtpbl2", XSPR(31,467,1022), XSPR_MASK, PPC403, 0, {RS}},
6039 {"mtthrm3", XSPR(31,467,1022), XSPR_MASK, PPC750, 0, {RS}},
6040 {"mtpbu2", XSPR(31,467,1023), XSPR_MASK, PPC403, 0, {RS}},
6041 {"mtspr", X(31,467), X_MASK, COM, 0, {SPR, RS}},
6042
6043 {"dcbi", X(31,470), XRT_MASK, PPC, 0, {RA0, RB}},
6044
6045 {"nand", XRC(31,476,0), X_MASK, COM, 0, {RA, RS, RB}},
6046 {"nand.", XRC(31,476,1), X_MASK, COM, 0, {RA, RS, RB}},
6047
6048 {"dsn", X(31,483), XRT_MASK, E500MC, 0, {RA, RB}},
6049
6050 {"dcread", X(31,486), X_MASK, PPC403|PPC440, PPCA2, {RT, RA0, RB}},
6051
6052 {"icbtls", X(31,486), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
6053
6054 {"stvxl", X(31,487), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
6055
6056 {"nabs", XO(31,488,0,0), XORB_MASK, M601, 0, {RT, RA}},
6057 {"nabs.", XO(31,488,0,1), XORB_MASK, M601, 0, {RT, RA}},
6058
6059 {"divd", XO(31,489,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
6060 {"divd.", XO(31,489,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
6061
6062 {"divw", XO(31,491,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
6063 {"divw.", XO(31,491,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
6064
6065 {"icbtlse", X(31,494), X_MASK, PPCCHLK, E500MC, {CT, RA, RB}},
6066
6067 {"slbia", X(31,498), 0xff1fffff, POWER6, 0, {IH}},
6068 {"slbia", X(31,498), 0xffffffff, PPC64, POWER6, {0}},
6069
6070 {"cli", X(31,502), XRB_MASK, POWER, 0, {RT, RA}},
6071
6072 {"popcntd", X(31,506), XRB_MASK, POWER7|PPCA2, 0, {RA, RS}},
6073
6074 {"cmpb", X(31,508), X_MASK, POWER6|PPCA2|PPC476, 0, {RA, RS, RB}},
6075
6076 {"mcrxr", X(31,512), XBFRARB_MASK, COM, POWER7, {BF}},
6077
6078 {"lbdcbx", X(31,514), X_MASK, E200Z4, 0, {RT, RA, RB}},
6079 {"lbdx", X(31,515), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
6080
6081 {"bblels", X(31,518), X_MASK, PPCBRLK, 0, {0}},
6082
6083 {"lvlx", X(31,519), X_MASK, CELL, 0, {VD, RA0, RB}},
6084 {"lbfcmux", APU(31,519,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
6085
6086 {"subfco", XO(31,8,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6087 {"sfo", XO(31,8,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6088 {"subco", XO(31,8,1,0), XO_MASK, PPCCOM, 0, {RT, RB, RA}},
6089 {"subfco.", XO(31,8,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6090 {"sfo.", XO(31,8,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6091 {"subco.", XO(31,8,1,1), XO_MASK, PPCCOM, 0, {RT, RB, RA}},
6092
6093 {"addco", XO(31,10,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6094 {"ao", XO(31,10,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6095 {"addco.", XO(31,10,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6096 {"ao.", XO(31,10,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6097
6098 {"lxsspx", X(31,524), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
6099
6100 {"clcs", X(31,531), XRB_MASK, M601, 0, {RT, RA}},
6101
6102 {"ldbrx", X(31,532), X_MASK, CELL|POWER7|PPCA2, 0, {RT, RA0, RB}},
6103
6104 {"lswx", X(31,533), X_MASK, PPCCOM, E500|E500MC, {RT, RAX, RBX}},
6105 {"lsx", X(31,533), X_MASK, PWRCOM, 0, {RT, RA, RB}},
6106
6107 {"lwbrx", X(31,534), X_MASK, PPCCOM, 0, {RT, RA0, RB}},
6108 {"lbrx", X(31,534), X_MASK, PWRCOM, 0, {RT, RA, RB}},
6109
6110 {"lfsx", X(31,535), X_MASK, COM, PPCEFS, {FRT, RA0, RB}},
6111
6112 {"srw", XRC(31,536,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
6113 {"sr", XRC(31,536,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
6114 {"srw.", XRC(31,536,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
6115 {"sr.", XRC(31,536,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
6116
6117 {"rrib", XRC(31,537,0), X_MASK, M601, 0, {RA, RS, RB}},
6118 {"rrib.", XRC(31,537,1), X_MASK, M601, 0, {RA, RS, RB}},
6119
6120 {"cnttzw", XRC(31,538,0), XRB_MASK, POWER9, 0, {RA, RS}},
6121 {"cnttzw.", XRC(31,538,1), XRB_MASK, POWER9, 0, {RA, RS}},
6122
6123 {"srd", XRC(31,539,0), X_MASK, PPC64, 0, {RA, RS, RB}},
6124 {"srd.", XRC(31,539,1), X_MASK, PPC64, 0, {RA, RS, RB}},
6125
6126 {"maskir", XRC(31,541,0), X_MASK, M601, 0, {RA, RS, RB}},
6127 {"maskir.", XRC(31,541,1), X_MASK, M601, 0, {RA, RS, RB}},
6128
6129 {"lhdcbx", X(31,546), X_MASK, E200Z4, 0, {RT, RA, RB}},
6130 {"lhdx", X(31,547), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
6131
6132 {"lvtrx", X(31,549), X_MASK, E6500, 0, {VD, RA0, RB}},
6133
6134 {"bbelr", X(31,550), X_MASK, PPCBRLK, 0, {0}},
6135
6136 {"lvrx", X(31,551), X_MASK, CELL, 0, {VD, RA0, RB}},
6137 {"lhfcmux", APU(31,551,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
6138
6139 {"subfo", XO(31,40,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
6140 {"subo", XO(31,40,1,0), XO_MASK, PPC, 0, {RT, RB, RA}},
6141 {"subfo.", XO(31,40,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
6142 {"subo.", XO(31,40,1,1), XO_MASK, PPC, 0, {RT, RB, RA}},
6143
6144 {"tlbsync", X(31,566), 0xffffffff, PPC, 0, {0}},
6145
6146 {"lfsux", X(31,567), X_MASK, COM, PPCEFS, {FRT, RAS, RB}},
6147
6148 {"cnttzd", XRC(31,570,0), XRB_MASK, POWER9, 0, {RA, RS}},
6149 {"cnttzd.", XRC(31,570,1), XRB_MASK, POWER9, 0, {RA, RS}},
6150
6151 {"mcrxrx", X(31,576), XBFRARB_MASK, POWER9, 0, {BF}},
6152
6153 {"lwdcbx", X(31,578), X_MASK, E200Z4, 0, {RT, RA, RB}},
6154 {"lwdx", X(31,579), X_MASK, E500MC|E200Z4, 0, {RT, RA, RB}},
6155
6156 {"lvtlx", X(31,581), X_MASK, E6500, 0, {VD, RA0, RB}},
6157
6158 {"lwat", X(31,582), X_MASK, POWER9, 0, {RT, RA0, FC}},
6159
6160 {"lwfcmux", APU(31,583,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
6161
6162 {"lxsdx", X(31,588), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
6163
6164 {"mfsr", X(31,595), XRB_MASK|(1<<20), COM, NON32, {RT, SR}},
6165
6166 {"lswi", X(31,597), X_MASK, PPCCOM, E500|E500MC, {RT, RAX, NBI}},
6167 {"lsi", X(31,597), X_MASK, PWRCOM, 0, {RT, RA0, NB}},
6168
6169 {"hwsync", XSYNC(31,598,0), 0xffffffff, POWER4, BOOKE|PPC476, {0}},
6170 {"lwsync", XSYNC(31,598,1), 0xffffffff, PPC, E500, {0}},
6171 {"ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, 0, {0}},
6172 {"sync", X(31,598), XSYNCLE_MASK, E6500, 0, {LS, ESYNC}},
6173 {"sync", X(31,598), XSYNC_MASK, PPCCOM, BOOKE|PPC476, {LS}},
6174 {"msync", X(31,598), 0xffffffff, BOOKE|PPCA2|PPC476, 0, {0}},
6175 {"sync", X(31,598), 0xffffffff, BOOKE|PPC476, E6500, {0}},
6176 {"lwsync", X(31,598), 0xffffffff, E500, 0, {0}},
6177 {"dcs", X(31,598), 0xffffffff, PWRCOM, 0, {0}},
6178
6179 {"lfdx", X(31,599), X_MASK, COM, PPCEFS, {FRT, RA0, RB}},
6180
6181 {"mffgpr", XRC(31,607,0), XRA_MASK, POWER6, POWER7, {FRT, RB}},
6182 {"lfdepx", X(31,607), X_MASK, E500MC|PPCA2, 0, {FRT, RA0, RB}},
6183
6184 {"lddx", X(31,611), X_MASK, E500MC, 0, {RT, RA, RB}},
6185
6186 {"lvswx", X(31,613), X_MASK, E6500, 0, {VD, RA0, RB}},
6187
6188 {"ldat", X(31,614), X_MASK, POWER9, 0, {RT, RA0, FC}},
6189
6190 {"lqfcmux", APU(31,615,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
6191
6192 {"nego", XO(31,104,1,0), XORB_MASK, COM, 0, {RT, RA}},
6193 {"nego.", XO(31,104,1,1), XORB_MASK, COM, 0, {RT, RA}},
6194
6195 {"mulo", XO(31,107,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
6196 {"mulo.", XO(31,107,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
6197
6198 {"mfsri", X(31,627), X_MASK, M601, 0, {RT, RA, RB}},
6199
6200 {"dclst", X(31,630), XRB_MASK, M601, 0, {RS, RA}},
6201
6202 {"lfdux", X(31,631), X_MASK, COM, PPCEFS, {FRT, RAS, RB}},
6203
6204 {"stbdcbx", X(31,642), X_MASK, E200Z4, 0, {RS, RA, RB}},
6205 {"stbdx", X(31,643), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
6206
6207 {"stvlx", X(31,647), X_MASK, CELL, 0, {VS, RA0, RB}},
6208 {"stbfcmux", APU(31,647,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
6209
6210 {"stxsspx", X(31,652), XX1_MASK, PPCVSX2, 0, {XS6, RA0, RB}},
6211
6212 {"tbegin.", XRC(31,654,1), XRTLRARB_MASK, PPCHTM, 0, {HTM_R}},
6213
6214 {"subfeo", XO(31,136,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6215 {"sfeo", XO(31,136,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6216 {"subfeo.", XO(31,136,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6217 {"sfeo.", XO(31,136,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6218
6219 {"addeo", XO(31,138,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6220 {"aeo", XO(31,138,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6221 {"addeo.", XO(31,138,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6222 {"aeo.", XO(31,138,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6223
6224 {"mfsrin", X(31,659), XRA_MASK, PPC, NON32, {RT, RB}},
6225
6226 {"stdbrx", X(31,660), X_MASK, CELL|POWER7|PPCA2, 0, {RS, RA0, RB}},
6227
6228 {"stswx", X(31,661), X_MASK, PPCCOM, E500|E500MC, {RS, RA0, RB}},
6229 {"stsx", X(31,661), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
6230
6231 {"stwbrx", X(31,662), X_MASK, PPCCOM, 0, {RS, RA0, RB}},
6232 {"stbrx", X(31,662), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
6233
6234 {"stfsx", X(31,663), X_MASK, COM, PPCEFS, {FRS, RA0, RB}},
6235
6236 {"srq", XRC(31,664,0), X_MASK, M601, 0, {RA, RS, RB}},
6237 {"srq.", XRC(31,664,1), X_MASK, M601, 0, {RA, RS, RB}},
6238
6239 {"sre", XRC(31,665,0), X_MASK, M601, 0, {RA, RS, RB}},
6240 {"sre.", XRC(31,665,1), X_MASK, M601, 0, {RA, RS, RB}},
6241
6242 {"sthdcbx", X(31,674), X_MASK, E200Z4, 0, {RS, RA, RB}},
6243 {"sthdx", X(31,675), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
6244
6245 {"stvfrx", X(31,677), X_MASK, E6500, 0, {VS, RA0, RB}},
6246
6247 {"stvrx", X(31,679), X_MASK, CELL, 0, {VS, RA0, RB}},
6248 {"sthfcmux", APU(31,679,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
6249
6250 {"tendall.", XRC(31,686,1)|(1<<25), XRTRARB_MASK, PPCHTM, 0, {0}},
6251 {"tend.", XRC(31,686,1), XRTARARB_MASK, PPCHTM, 0, {HTM_A}},
6252
6253 {"stbcx.", XRC(31,694,1), X_MASK, POWER8|E6500, 0, {RS, RA0, RB}},
6254
6255 {"stfsux", X(31,695), X_MASK, COM, PPCEFS, {FRS, RAS, RB}},
6256
6257 {"sriq", XRC(31,696,0), X_MASK, M601, 0, {RA, RS, SH}},
6258 {"sriq.", XRC(31,696,1), X_MASK, M601, 0, {RA, RS, SH}},
6259
6260 {"stwdcbx", X(31,706), X_MASK, E200Z4, 0, {RS, RA, RB}},
6261 {"stwdx", X(31,707), X_MASK, E500MC|E200Z4, 0, {RS, RA, RB}},
6262
6263 {"stvflx", X(31,709), X_MASK, E6500, 0, {VS, RA0, RB}},
6264
6265 {"stwat", X(31,710), X_MASK, POWER9, 0, {RS, RA0, FC}},
6266
6267 {"stwfcmux", APU(31,711,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
6268
6269 {"stxsdx", X(31,716), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
6270
6271 {"tcheck", X(31,718), XRTBFRARB_MASK, PPCHTM, 0, {BF}},
6272
6273 {"subfzeo", XO(31,200,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
6274 {"sfzeo", XO(31,200,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
6275 {"subfzeo.", XO(31,200,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
6276 {"sfzeo.", XO(31,200,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
6277
6278 {"addzeo", XO(31,202,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
6279 {"azeo", XO(31,202,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
6280 {"addzeo.", XO(31,202,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
6281 {"azeo.", XO(31,202,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
6282
6283 {"stswi", X(31,725), X_MASK, PPCCOM, E500|E500MC, {RS, RA0, NB}},
6284 {"stsi", X(31,725), X_MASK, PWRCOM, 0, {RS, RA0, NB}},
6285
6286 {"sthcx.", XRC(31,726,1), X_MASK, POWER8|E6500, 0, {RS, RA0, RB}},
6287
6288 {"stfdx", X(31,727), X_MASK, COM, PPCEFS, {FRS, RA0, RB}},
6289
6290 {"srlq", XRC(31,728,0), X_MASK, M601, 0, {RA, RS, RB}},
6291 {"srlq.", XRC(31,728,1), X_MASK, M601, 0, {RA, RS, RB}},
6292
6293 {"sreq", XRC(31,729,0), X_MASK, M601, 0, {RA, RS, RB}},
6294 {"sreq.", XRC(31,729,1), X_MASK, M601, 0, {RA, RS, RB}},
6295
6296 {"mftgpr", XRC(31,735,0), XRA_MASK, POWER6, POWER7, {RT, FRB}},
6297 {"stfdepx", X(31,735), X_MASK, E500MC|PPCA2, 0, {FRS, RA0, RB}},
6298
6299 {"stddx", X(31,739), X_MASK, E500MC, 0, {RS, RA, RB}},
6300
6301 {"stvswx", X(31,741), X_MASK, E6500, 0, {VS, RA0, RB}},
6302
6303 {"stdat", X(31,742), X_MASK, POWER9, 0, {RS, RA0, FC}},
6304
6305 {"stqfcmux", APU(31,743,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
6306
6307 {"subfmeo", XO(31,232,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
6308 {"sfmeo", XO(31,232,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
6309 {"subfmeo.", XO(31,232,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
6310 {"sfmeo.", XO(31,232,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
6311
6312 {"mulldo", XO(31,233,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
6313 {"mulldo.", XO(31,233,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
6314
6315 {"addmeo", XO(31,234,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
6316 {"ameo", XO(31,234,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
6317 {"addmeo.", XO(31,234,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
6318 {"ameo.", XO(31,234,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
6319
6320 {"mullwo", XO(31,235,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6321 {"mulso", XO(31,235,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6322 {"mullwo.", XO(31,235,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6323 {"mulso.", XO(31,235,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6324
6325 {"tsuspend.", XRCL(31,750,0,1), XRTRARB_MASK,PPCHTM, 0, {0}},
6326 {"tresume.", XRCL(31,750,1,1), XRTRARB_MASK,PPCHTM, 0, {0}},
6327 {"tsr.", XRC(31,750,1), XRTLRARB_MASK,PPCHTM, 0, {L}},
6328
6329 {"darn", X(31,755), XLRAND_MASK, POWER9, 0, {RT, LRAND}},
6330
6331 {"dcba", X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
6332 {"dcbal", XOPL(31,758,1), XRT_MASK, E500MC, 0, {RA0, RB}},
6333
6334 {"stfdux", X(31,759), X_MASK, COM, PPCEFS, {FRS, RAS, RB}},
6335
6336 {"srliq", XRC(31,760,0), X_MASK, M601, 0, {RA, RS, SH}},
6337 {"srliq.", XRC(31,760,1), X_MASK, M601, 0, {RA, RS, SH}},
6338
6339 {"lvsm", X(31,773), X_MASK, E6500, 0, {VD, RA0, RB}},
6340
6341 {"copy", XOPL(31,774,1), XRT_MASK, POWER9, 0, {RA0, RB}},
6342
6343 {"stvepxl", X(31,775), X_MASK, E6500, 0, {VS, RA0, RB}},
6344 {"lvlxl", X(31,775), X_MASK, CELL, 0, {VD, RA0, RB}},
6345 {"ldfcmux", APU(31,775,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
6346
6347 {"dozo", XO(31,264,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
6348 {"dozo.", XO(31,264,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
6349
6350 {"addo", XO(31,266,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6351 {"caxo", XO(31,266,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6352 {"addo.", XO(31,266,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6353 {"caxo.", XO(31,266,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6354
6355 {"modsd", X(31,777), X_MASK, POWER9, 0, {RT, RA, RB}},
6356 {"modsw", X(31,779), X_MASK, POWER9, 0, {RT, RA, RB}},
6357
6358 {"lxvw4x", X(31,780), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
6359 {"lxsibzx", X(31,781), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
6360
6361 {"tabortwc.", XRC(31,782,1), X_MASK, PPCHTM, 0, {TO, RA, RB}},
6362
6363 {"tlbivax", X(31,786), XRT_MASK, BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
6364
6365 {"lwzcix", X(31,789), X_MASK, POWER6, 0, {RT, RA0, RB}},
6366
6367 {"lhbrx", X(31,790), X_MASK, COM, 0, {RT, RA0, RB}},
6368
6369 {"lfdpx", X(31,791), X_MASK|Q_MASK, POWER6, POWER7, {FRTp, RA0, RB}},
6370 {"lfqx", X(31,791), X_MASK, POWER2, 0, {FRT, RA, RB}},
6371
6372 {"sraw", XRC(31,792,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
6373 {"sra", XRC(31,792,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
6374 {"sraw.", XRC(31,792,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
6375 {"sra.", XRC(31,792,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
6376
6377 {"srad", XRC(31,794,0), X_MASK, PPC64, 0, {RA, RS, RB}},
6378 {"srad.", XRC(31,794,1), X_MASK, PPC64, 0, {RA, RS, RB}},
6379
6380 {"lfddx", X(31,803), X_MASK, E500MC, 0, {FRT, RA, RB}},
6381
6382 {"lvtrxl", X(31,805), X_MASK, E6500, 0, {VD, RA0, RB}},
6383 {"stvepx", X(31,807), X_MASK, E6500, 0, {VS, RA0, RB}},
6384 {"lvrxl", X(31,807), X_MASK, CELL, 0, {VD, RA0, RB}},
6385
6386 {"lxvh8x", X(31,812), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
6387 {"lxsihzx", X(31,813), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
6388
6389 {"tabortdc.", XRC(31,814,1), X_MASK, PPCHTM, 0, {TO, RA, RB}},
6390
6391 {"rac", X(31,818), X_MASK, M601, 0, {RT, RA, RB}},
6392
6393 {"erativax", X(31,819), X_MASK, PPCA2, 0, {RS, RA0, RB}},
6394
6395 {"lhzcix", X(31,821), X_MASK, POWER6, 0, {RT, RA0, RB}},
6396
6397 {"dss", XDSS(31,822,0), XDSS_MASK, PPCVEC, 0, {STRM}},
6398
6399 {"lfqux", X(31,823), X_MASK, POWER2, 0, {FRT, RA, RB}},
6400
6401 {"srawi", XRC(31,824,0), X_MASK, PPCCOM, 0, {RA, RS, SH}},
6402 {"srai", XRC(31,824,0), X_MASK, PWRCOM, 0, {RA, RS, SH}},
6403 {"srawi.", XRC(31,824,1), X_MASK, PPCCOM, 0, {RA, RS, SH}},
6404 {"srai.", XRC(31,824,1), X_MASK, PWRCOM, 0, {RA, RS, SH}},
6405
6406 {"sradi", XS(31,413,0), XS_MASK, PPC64, 0, {RA, RS, SH6}},
6407 {"sradi.", XS(31,413,1), XS_MASK, PPC64, 0, {RA, RS, SH6}},
6408
6409 {"lvtlxl", X(31,837), X_MASK, E6500, 0, {VD, RA0, RB}},
6410
6411 {"cpabort", X(31,838), XRTRARB_MASK,POWER9, 0, {0}},
6412
6413 {"divo", XO(31,331,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
6414 {"divo.", XO(31,331,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
6415
6416 {"lxvd2x", X(31,844), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
6417 {"lxvx", X(31,844), XX1_MASK, POWER8, POWER9|PPCVSX3, {XT6, RA0, RB}},
6418
6419 {"tabortwci.", XRC(31,846,1), X_MASK, PPCHTM, 0, {TO, RA, HTM_SI}},
6420
6421 {"tlbsrx.", XRC(31,850,1), XRT_MASK, PPCA2, 0, {RA0, RB}},
6422
6423 {"slbiag", X(31,850), XRARB_MASK, POWER9, 0, {RS}},
6424 {"slbmfev", X(31,851), XRLA_MASK, POWER9, 0, {RT, RB, A_L}},
6425 {"slbmfev", X(31,851), XRA_MASK, PPC64, POWER9, {RT, RB}},
6426
6427 {"lbzcix", X(31,853), X_MASK, POWER6, 0, {RT, RA0, RB}},
6428
6429 {"eieio", X(31,854), 0xffffffff, PPC, BOOKE|PPCA2|PPC476, {0}},
6430 {"mbar", X(31,854), X_MASK, BOOKE|PPCA2|PPC476, 0, {MO}},
6431 {"eieio", XMBAR(31,854,1),0xffffffff, E500, 0, {0}},
6432 {"eieio", X(31,854), 0xffffffff, PPCA2|PPC476, 0, {0}},
6433
6434 {"lfiwax", X(31,855), X_MASK, POWER6|PPCA2|PPC476, 0, {FRT, RA0, RB}},
6435
6436 {"lvswxl", X(31,869), X_MASK, E6500, 0, {VD, RA0, RB}},
6437
6438 {"abso", XO(31,360,1,0), XORB_MASK, M601, 0, {RT, RA}},
6439 {"abso.", XO(31,360,1,1), XORB_MASK, M601, 0, {RT, RA}},
6440
6441 {"divso", XO(31,363,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
6442 {"divso.", XO(31,363,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
6443
6444 {"lxvb16x", X(31,876), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
6445
6446 {"tabortdci.", XRC(31,878,1), X_MASK, PPCHTM, 0, {TO, RA, HTM_SI}},
6447
6448 {"rmieg", X(31,882), XRTRA_MASK, POWER9, 0, {RB}},
6449
6450 {"ldcix", X(31,885), X_MASK, POWER6, 0, {RT, RA0, RB}},
6451
6452 {"msgsync", X(31,886), 0xffffffff, POWER9, 0, {0}},
6453
6454 {"lfiwzx", X(31,887), X_MASK, POWER7|PPCA2, 0, {FRT, RA0, RB}},
6455
6456 {"extswsli", XS(31,445,0), XS_MASK, POWER9, 0, {RA, RS, SH6}},
6457 {"extswsli.", XS(31,445,1), XS_MASK, POWER9, 0, {RA, RS, SH6}},
6458
6459 {"paste.", XRCL(31,902,1,1),XRT_MASK, POWER9, 0, {RA0, RB}},
6460
6461 {"stvlxl", X(31,903), X_MASK, CELL, 0, {VS, RA0, RB}},
6462 {"stdfcmux", APU(31,903,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
6463
6464 {"divdeuo", XO(31,393,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6465 {"divdeuo.", XO(31,393,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6466 {"divweuo", XO(31,395,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6467 {"divweuo.", XO(31,395,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6468
6469 {"stxvw4x", X(31,908), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
6470 {"stxsibx", X(31,909), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
6471
6472 {"tabort.", XRC(31,910,1), XRTRB_MASK, PPCHTM, 0, {RA}},
6473
6474 {"tlbsx", XRC(31,914,0), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
6475 {"tlbsx.", XRC(31,914,1), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
6476
6477 {"slbmfee", X(31,915), XRLA_MASK, POWER9, 0, {RT, RB, A_L}},
6478 {"slbmfee", X(31,915), XRA_MASK, PPC64, POWER9, {RT, RB}},
6479
6480 {"stwcix", X(31,917), X_MASK, POWER6, 0, {RS, RA0, RB}},
6481
6482 {"sthbrx", X(31,918), X_MASK, COM, 0, {RS, RA0, RB}},
6483
6484 {"stfdpx", X(31,919), X_MASK|Q_MASK, POWER6, POWER7, {FRSp, RA0, RB}},
6485 {"stfqx", X(31,919), X_MASK, POWER2, 0, {FRS, RA0, RB}},
6486
6487 {"sraq", XRC(31,920,0), X_MASK, M601, 0, {RA, RS, RB}},
6488 {"sraq.", XRC(31,920,1), X_MASK, M601, 0, {RA, RS, RB}},
6489
6490 {"srea", XRC(31,921,0), X_MASK, M601, 0, {RA, RS, RB}},
6491 {"srea.", XRC(31,921,1), X_MASK, M601, 0, {RA, RS, RB}},
6492
6493 {"extsh", XRC(31,922,0), XRB_MASK, PPCCOM, 0, {RA, RS}},
6494 {"exts", XRC(31,922,0), XRB_MASK, PWRCOM, 0, {RA, RS}},
6495 {"extsh.", XRC(31,922,1), XRB_MASK, PPCCOM, 0, {RA, RS}},
6496 {"exts.", XRC(31,922,1), XRB_MASK, PWRCOM, 0, {RA, RS}},
6497
6498 {"stfddx", X(31,931), X_MASK, E500MC, 0, {FRS, RA, RB}},
6499
6500 {"stvfrxl", X(31,933), X_MASK, E6500, 0, {VS, RA0, RB}},
6501
6502 {"wclrone", XOPL2(31,934,2),XRT_MASK, PPCA2, 0, {RA0, RB}},
6503 {"wclrall", X(31,934), XRARB_MASK, PPCA2, 0, {L2}},
6504 {"wclr", X(31,934), X_MASK, PPCA2, 0, {L2, RA0, RB}},
6505
6506 {"stvrxl", X(31,935), X_MASK, CELL, 0, {VS, RA0, RB}},
6507
6508 {"divdeo", XO(31,425,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6509 {"divdeo.", XO(31,425,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6510 {"divweo", XO(31,427,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6511 {"divweo.", XO(31,427,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6512
6513 {"stxvh8x", X(31,940), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
6514 {"stxsihx", X(31,941), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
6515
6516 {"treclaim.", XRC(31,942,1), XRTRB_MASK, PPCHTM, 0, {RA}},
6517
6518 {"tlbrehi", XTLB(31,946,0), XTLB_MASK, PPC403, PPCA2, {RT, RA}},
6519 {"tlbrelo", XTLB(31,946,1), XTLB_MASK, PPC403, PPCA2, {RT, RA}},
6520 {"tlbre", X(31,946), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
6521
6522 {"sthcix", X(31,949), X_MASK, POWER6, 0, {RS, RA0, RB}},
6523
6524 {"icswepx", XRC(31,950,0), X_MASK, PPCA2, 0, {RS, RA, RB}},
6525 {"icswepx.", XRC(31,950,1), X_MASK, PPCA2, 0, {RS, RA, RB}},
6526
6527 {"stfqux", X(31,951), X_MASK, POWER2, 0, {FRS, RA, RB}},
6528
6529 {"sraiq", XRC(31,952,0), X_MASK, M601, 0, {RA, RS, SH}},
6530 {"sraiq.", XRC(31,952,1), X_MASK, M601, 0, {RA, RS, SH}},
6531
6532 {"extsb", XRC(31,954,0), XRB_MASK, PPC, 0, {RA, RS}},
6533 {"extsb.", XRC(31,954,1), XRB_MASK, PPC, 0, {RA, RS}},
6534
6535 {"stvflxl", X(31,965), X_MASK, E6500, 0, {VS, RA0, RB}},
6536
6537 {"iccci", X(31,966), XRT_MASK, PPC403|PPC440|PPC476|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
6538 {"ici", X(31,966), XRARB_MASK, PPCA2|PPC476, 0, {CT}},
6539
6540 {"divduo", XO(31,457,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
6541 {"divduo.", XO(31,457,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
6542
6543 {"divwuo", XO(31,459,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
6544 {"divwuo.", XO(31,459,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
6545
6546 {"stxvd2x", X(31,972), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
6547 {"stxvx", X(31,972), XX1_MASK, POWER8, POWER9|PPCVSX3, {XS6, RA0, RB}},
6548
6549 {"tlbld", X(31,978), XRTRA_MASK, PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}},
6550 {"tlbwehi", XTLB(31,978,0), XTLB_MASK, PPC403, 0, {RT, RA}},
6551 {"tlbwelo", XTLB(31,978,1), XTLB_MASK, PPC403, 0, {RT, RA}},
6552 {"tlbwe", X(31,978), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
6553
6554 {"slbfee.", XRC(31,979,1), XRA_MASK, POWER6, 0, {RT, RB}},
6555
6556 {"stbcix", X(31,981), X_MASK, POWER6, 0, {RS, RA0, RB}},
6557
6558 {"icbi", X(31,982), XRT_MASK, PPC, 0, {RA0, RB}},
6559
6560 {"stfiwx", X(31,983), X_MASK, PPC, PPCEFS, {FRS, RA0, RB}},
6561
6562 {"extsw", XRC(31,986,0), XRB_MASK, PPC64, 0, {RA, RS}},
6563 {"extsw.", XRC(31,986,1), XRB_MASK, PPC64, 0, {RA, RS}},
6564
6565 {"icbiep", XRT(31,991,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
6566
6567 {"stvswxl", X(31,997), X_MASK, E6500, 0, {VS, RA0, RB}},
6568
6569 {"icread", X(31,998), XRT_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA0, RB}},
6570
6571 {"nabso", XO(31,488,1,0), XORB_MASK, M601, 0, {RT, RA}},
6572 {"nabso.", XO(31,488,1,1), XORB_MASK, M601, 0, {RT, RA}},
6573
6574 {"divdo", XO(31,489,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
6575 {"divdo.", XO(31,489,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
6576
6577 {"divwo", XO(31,491,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
6578 {"divwo.", XO(31,491,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
6579
6580 {"stxvb16x", X(31,1004), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
6581
6582 {"trechkpt.", XRC(31,1006,1), XRTRARB_MASK,PPCHTM, 0, {0}},
6583
6584 {"tlbli", X(31,1010), XRTRA_MASK, PPC, TITAN, {RB}},
6585
6586 {"stdcix", X(31,1013), X_MASK, POWER6, 0, {RS, RA0, RB}},
6587
6588 {"dcbz", X(31,1014), XRT_MASK, PPC, 0, {RA0, RB}},
6589 {"dclz", X(31,1014), XRT_MASK, PPC, 0, {RA0, RB}},
6590
6591 {"dcbzep", XRT(31,1023,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
6592
6593 {"dcbzl", XOPL(31,1014,1), XRT_MASK, POWER4|E500MC, PPC476, {RA0, RB}},
6594
6595 {"cctpl", 0x7c210b78, 0xffffffff, CELL, 0, {0}},
6596 {"cctpm", 0x7c421378, 0xffffffff, CELL, 0, {0}},
6597 {"cctph", 0x7c631b78, 0xffffffff, CELL, 0, {0}},
6598
6599 {"dstt", XDSS(31,342,1), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
6600 {"dststt", XDSS(31,374,1), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
6601 {"dssall", XDSS(31,822,1), XDSS_MASK, PPCVEC, 0, {0}},
6602
6603 {"db8cyc", 0x7f9ce378, 0xffffffff, CELL, 0, {0}},
6604 {"db10cyc", 0x7fbdeb78, 0xffffffff, CELL, 0, {0}},
6605 {"db12cyc", 0x7fdef378, 0xffffffff, CELL, 0, {0}},
6606 {"db16cyc", 0x7ffffb78, 0xffffffff, CELL, 0, {0}},
6607
6608 {"lwz", OP(32), OP_MASK, PPCCOM, PPCVLE, {RT, D, RA0}},
6609 {"l", OP(32), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
6610
6611 {"lwzu", OP(33), OP_MASK, PPCCOM, PPCVLE, {RT, D, RAL}},
6612 {"lu", OP(33), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
6613
6614 {"lbz", OP(34), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
6615
6616 {"lbzu", OP(35), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
6617
6618 {"stw", OP(36), OP_MASK, PPCCOM, PPCVLE, {RS, D, RA0}},
6619 {"st", OP(36), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
6620
6621 {"stwu", OP(37), OP_MASK, PPCCOM, PPCVLE, {RS, D, RAS}},
6622 {"stu", OP(37), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
6623
6624 {"stb", OP(38), OP_MASK, COM, PPCVLE, {RS, D, RA0}},
6625
6626 {"stbu", OP(39), OP_MASK, COM, PPCVLE, {RS, D, RAS}},
6627
6628 {"lhz", OP(40), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
6629
6630 {"lhzu", OP(41), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
6631
6632 {"lha", OP(42), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
6633
6634 {"lhau", OP(43), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
6635
6636 {"sth", OP(44), OP_MASK, COM, PPCVLE, {RS, D, RA0}},
6637
6638 {"sthu", OP(45), OP_MASK, COM, PPCVLE, {RS, D, RAS}},
6639
6640 {"lmw", OP(46), OP_MASK, PPCCOM, PPCVLE, {RT, D, RAM}},
6641 {"lm", OP(46), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
6642
6643 {"stmw", OP(47), OP_MASK, PPCCOM, PPCVLE, {RS, D, RA0}},
6644 {"stm", OP(47), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
6645
6646 {"lfs", OP(48), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RA0}},
6647
6648 {"lfsu", OP(49), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RAS}},
6649
6650 {"lfd", OP(50), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RA0}},
6651
6652 {"lfdu", OP(51), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RAS}},
6653
6654 {"stfs", OP(52), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RA0}},
6655
6656 {"stfsu", OP(53), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RAS}},
6657
6658 {"stfd", OP(54), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RA0}},
6659
6660 {"stfdu", OP(55), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RAS}},
6661
6662 {"lq", OP(56), OP_MASK|Q_MASK, POWER4, PPC476|PPCVLE, {RTQ, DQ, RAQ}},
6663 {"psq_l", OP(56), OP_MASK, PPCPS, PPCVLE, {FRT,PSD,RA,PSW,PSQ}},
6664 {"lfq", OP(56), OP_MASK, POWER2, PPCVLE, {FRT, D, RA0}},
6665
6666 {"lxsd", DSO(57,2), DS_MASK, PPCVSX3, PPCVLE, {VD, DS, RA0}},
6667 {"lxssp", DSO(57,3), DS_MASK, PPCVSX3, PPCVLE, {VD, DS, RA0}},
6668 {"lfdp", OP(57), OP_MASK|Q_MASK, POWER6, POWER7|PPCVLE, {FRTp, DS, RA0}},
6669 {"psq_lu", OP(57), OP_MASK, PPCPS, PPCVLE, {FRT,PSD,RA,PSW,PSQ}},
6670 {"lfqu", OP(57), OP_MASK, POWER2, PPCVLE, {FRT, D, RA0}},
6671
6672 {"ld", DSO(58,0), DS_MASK, PPC64, PPCVLE, {RT, DS, RA0}},
6673 {"ldu", DSO(58,1), DS_MASK, PPC64, PPCVLE, {RT, DS, RAL}},
6674 {"lwa", DSO(58,2), DS_MASK, PPC64, PPCVLE, {RT, DS, RA0}},
6675
6676 {"dadd", XRC(59,2,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6677 {"dadd.", XRC(59,2,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6678
6679 {"dqua", ZRC(59,3,0), Z2_MASK, POWER6, PPCVLE, {FRT,FRA,FRB,RMC}},
6680 {"dqua.", ZRC(59,3,1), Z2_MASK, POWER6, PPCVLE, {FRT,FRA,FRB,RMC}},
6681
6682 {"fdivs", A(59,18,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6683 {"fdivs.", A(59,18,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6684
6685 {"fsubs", A(59,20,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6686 {"fsubs.", A(59,20,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6687
6688 {"fadds", A(59,21,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6689 {"fadds.", A(59,21,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6690
6691 {"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
6692 {"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
6693
6694 {"fres", A(59,24,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
6695 {"fres", A(59,24,0), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
6696 {"fres.", A(59,24,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
6697 {"fres.", A(59,24,1), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
6698
6699 {"fmuls", A(59,25,0), AFRB_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
6700 {"fmuls.", A(59,25,1), AFRB_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
6701
6702 {"frsqrtes", A(59,26,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
6703 {"frsqrtes", A(59,26,0), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
6704 {"frsqrtes.", A(59,26,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
6705 {"frsqrtes.", A(59,26,1), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
6706
6707 {"fmsubs", A(59,28,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6708 {"fmsubs.", A(59,28,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6709
6710 {"fmadds", A(59,29,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6711 {"fmadds.", A(59,29,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6712
6713 {"fnmsubs", A(59,30,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6714 {"fnmsubs.", A(59,30,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6715
6716 {"fnmadds", A(59,31,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6717 {"fnmadds.", A(59,31,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6718
6719 {"dmul", XRC(59,34,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6720 {"dmul.", XRC(59,34,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6721
6722 {"drrnd", ZRC(59,35,0), Z2_MASK, POWER6, PPCVLE, {FRT, FRA, FRB, RMC}},
6723 {"drrnd.", ZRC(59,35,1), Z2_MASK, POWER6, PPCVLE, {FRT, FRA, FRB, RMC}},
6724
6725 {"dscli", ZRC(59,66,0), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
6726 {"dscli.", ZRC(59,66,1), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
6727
6728 {"dquai", ZRC(59,67,0), Z2_MASK, POWER6, PPCVLE, {TE, FRT,FRB,RMC}},
6729 {"dquai.", ZRC(59,67,1), Z2_MASK, POWER6, PPCVLE, {TE, FRT,FRB,RMC}},
6730
6731 {"dscri", ZRC(59,98,0), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
6732 {"dscri.", ZRC(59,98,1), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
6733
6734 {"drintx", ZRC(59,99,0), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
6735 {"drintx.", ZRC(59,99,1), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
6736
6737 {"dcmpo", X(59,130), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
6738
6739 {"dtstex", X(59,162), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
6740 {"dtstdc", Z(59,194), Z_MASK, POWER6, PPCVLE, {BF, FRA, DCM}},
6741 {"dtstdg", Z(59,226), Z_MASK, POWER6, PPCVLE, {BF, FRA, DGM}},
6742
6743 {"drintn", ZRC(59,227,0), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
6744 {"drintn.", ZRC(59,227,1), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
6745
6746 {"dctdp", XRC(59,258,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6747 {"dctdp.", XRC(59,258,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6748
6749 {"dctfix", XRC(59,290,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6750 {"dctfix.", XRC(59,290,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6751
6752 {"ddedpd", XRC(59,322,0), X_MASK, POWER6, PPCVLE, {SP, FRT, FRB}},
6753 {"ddedpd.", XRC(59,322,1), X_MASK, POWER6, PPCVLE, {SP, FRT, FRB}},
6754
6755 {"dxex", XRC(59,354,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6756 {"dxex.", XRC(59,354,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6757
6758 {"dsub", XRC(59,514,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6759 {"dsub.", XRC(59,514,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6760
6761 {"ddiv", XRC(59,546,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6762 {"ddiv.", XRC(59,546,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6763
6764 {"dcmpu", X(59,642), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
6765
6766 {"dtstsf", X(59,674), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
6767 {"dtstsfi", X(59,675), X_MASK|1<<22,POWER9, PPCVLE, {BF, UIM6, FRB}},
6768
6769 {"drsp", XRC(59,770,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6770 {"drsp.", XRC(59,770,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6771
6772 {"dcffix", XRC(59,802,0), X_MASK|FRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
6773 {"dcffix.", XRC(59,802,1), X_MASK|FRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
6774
6775 {"denbcd", XRC(59,834,0), X_MASK, POWER6, PPCVLE, {S, FRT, FRB}},
6776 {"denbcd.", XRC(59,834,1), X_MASK, POWER6, PPCVLE, {S, FRT, FRB}},
6777
6778 {"fcfids", XRC(59,846,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
6779 {"fcfids.", XRC(59,846,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
6780
6781 {"diex", XRC(59,866,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6782 {"diex.", XRC(59,866,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6783
6784 {"fcfidus", XRC(59,974,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
6785 {"fcfidus.", XRC(59,974,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
6786
6787 {"xsaddsp", XX3(60,0), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6788 {"xsmaddasp", XX3(60,1), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6789 {"xxsldwi", XX3(60,2), XX3SHW_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, SHW}},
6790 {"xscmpeqdp", XX3(60,3), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6791 {"xsrsqrtesp", XX2(60,10), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6792 {"xssqrtsp", XX2(60,11), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6793 {"xxsel", XX4(60,3), XX4_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, XC6}},
6794 {"xssubsp", XX3(60,8), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6795 {"xsmaddmsp", XX3(60,9), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6796 {"xxspltd", XX3(60,10), XX3DM_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6S, DMEX}},
6797 {"xxmrghd", XX3(60,10), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6798 {"xxswapd", XX3(60,10)|(2<<8), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6S}},
6799 {"xxmrgld", XX3(60,10)|(3<<8), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6800 {"xxpermdi", XX3(60,10), XX3DM_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, DM}},
6801 {"xscmpgtdp", XX3(60,11), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6802 {"xsresp", XX2(60,26), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6803 {"xsmulsp", XX3(60,16), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6804 {"xsmsubasp", XX3(60,17), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6805 {"xxmrghw", XX3(60,18), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6806 {"xscmpgedp", XX3(60,19), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6807 {"xsdivsp", XX3(60,24), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6808 {"xsmsubmsp", XX3(60,25), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6809 {"xxperm", XX3(60,26), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6810 {"xsadddp", XX3(60,32), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6811 {"xsmaddadp", XX3(60,33), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6812 {"xscmpudp", XX3(60,35), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
6813 {"xscvdpuxws", XX2(60,72), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6814 {"xsrdpi", XX2(60,73), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6815 {"xsrsqrtedp", XX2(60,74), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6816 {"xssqrtdp", XX2(60,75), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6817 {"xssubdp", XX3(60,40), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6818 {"xsmaddmdp", XX3(60,41), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6819 {"xscmpodp", XX3(60,43), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
6820 {"xscvdpsxws", XX2(60,88), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6821 {"xsrdpiz", XX2(60,89), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6822 {"xsredp", XX2(60,90), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6823 {"xsmuldp", XX3(60,48), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6824 {"xsmsubadp", XX3(60,49), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6825 {"xxmrglw", XX3(60,50), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6826 {"xsrdpip", XX2(60,105), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6827 {"xstsqrtdp", XX2(60,106), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
6828 {"xsrdpic", XX2(60,107), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6829 {"xsdivdp", XX3(60,56), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6830 {"xsmsubmdp", XX3(60,57), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6831 {"xxpermr", XX3(60,58), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6832 {"xscmpexpdp", XX3(60,59), XX3BF_MASK, PPCVSX3, PPCVLE, {BF, XA6, XB6}},
6833 {"xsrdpim", XX2(60,121), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6834 {"xstdivdp", XX3(60,61), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
6835 {"xvaddsp", XX3(60,64), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6836 {"xvmaddasp", XX3(60,65), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6837 {"xvcmpeqsp", XX3RC(60,67,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6838 {"xvcmpeqsp.", XX3RC(60,67,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6839 {"xvcvspuxws", XX2(60,136), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6840 {"xvrspi", XX2(60,137), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6841 {"xvrsqrtesp", XX2(60,138), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6842 {"xvsqrtsp", XX2(60,139), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6843 {"xvsubsp", XX3(60,72), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6844 {"xvmaddmsp", XX3(60,73), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6845 {"xvcmpgtsp", XX3RC(60,75,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6846 {"xvcmpgtsp.", XX3RC(60,75,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6847 {"xvcvspsxws", XX2(60,152), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6848 {"xvrspiz", XX2(60,153), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6849 {"xvresp", XX2(60,154), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6850 {"xvmulsp", XX3(60,80), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6851 {"xvmsubasp", XX3(60,81), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6852 {"xxspltw", XX2(60,164), XX2UIM_MASK, PPCVSX, PPCVLE, {XT6, XB6, UIM}},
6853 {"xxextractuw", XX2(60,165), XX2UIM4_MASK, PPCVSX3, PPCVLE, {XT6, XB6, UIMM4}},
6854 {"xvcmpgesp", XX3RC(60,83,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6855 {"xvcmpgesp.", XX3RC(60,83,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6856 {"xvcvuxwsp", XX2(60,168), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6857 {"xvrspip", XX2(60,169), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6858 {"xvtsqrtsp", XX2(60,170), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
6859 {"xvrspic", XX2(60,171), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6860 {"xvdivsp", XX3(60,88), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6861 {"xvmsubmsp", XX3(60,89), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6862 {"xxspltib", X(60,360), XX1_MASK|3<<19, PPCVSX3, PPCVLE, {XT6, IMM8}},
6863 {"xxinsertw", XX2(60,181), XX2UIM4_MASK, PPCVSX3, PPCVLE, {XT6, XB6, UIMM4}},
6864 {"xvcvsxwsp", XX2(60,184), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6865 {"xvrspim", XX2(60,185), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6866 {"xvtdivsp", XX3(60,93), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
6867 {"xvadddp", XX3(60,96), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6868 {"xvmaddadp", XX3(60,97), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6869 {"xvcmpeqdp", XX3RC(60,99,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6870 {"xvcmpeqdp.", XX3RC(60,99,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6871 {"xvcvdpuxws", XX2(60,200), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6872 {"xvrdpi", XX2(60,201), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6873 {"xvrsqrtedp", XX2(60,202), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6874 {"xvsqrtdp", XX2(60,203), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6875 {"xvsubdp", XX3(60,104), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6876 {"xvmaddmdp", XX3(60,105), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6877 {"xvcmpgtdp", XX3RC(60,107,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6878 {"xvcmpgtdp.", XX3RC(60,107,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6879 {"xvcvdpsxws", XX2(60,216), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6880 {"xvrdpiz", XX2(60,217), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6881 {"xvredp", XX2(60,218), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6882 {"xvmuldp", XX3(60,112), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6883 {"xvmsubadp", XX3(60,113), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6884 {"xvcmpgedp", XX3RC(60,115,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6885 {"xvcmpgedp.", XX3RC(60,115,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6886 {"xvcvuxwdp", XX2(60,232), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6887 {"xvrdpip", XX2(60,233), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6888 {"xvtsqrtdp", XX2(60,234), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
6889 {"xvrdpic", XX2(60,235), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6890 {"xvdivdp", XX3(60,120), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6891 {"xvmsubmdp", XX3(60,121), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6892 {"xvcvsxwdp", XX2(60,248), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6893 {"xvrdpim", XX2(60,249), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6894 {"xvtdivdp", XX3(60,125), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
6895 {"xsmaxcdp", XX3(60,128), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6896 {"xsnmaddasp", XX3(60,129), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6897 {"xxland", XX3(60,130), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6898 {"xscvdpsp", XX2(60,265), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6899 {"xscvdpspn", XX2(60,267), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6900 {"xsmincdp", XX3(60,136), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6901 {"xsnmaddmsp", XX3(60,137), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6902 {"xxlandc", XX3(60,138), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6903 {"xsrsp", XX2(60,281), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6904 {"xsmaxjdp", XX3(60,144), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6905 {"xsnmsubasp", XX3(60,145), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6906 {"xxlor", XX3(60,146), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6907 {"xscvuxdsp", XX2(60,296), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6908 {"xststdcsp", XX2(60,298), XX2BFD_MASK, PPCVSX3, PPCVLE, {BF, XB6, DCMX}},
6909 {"xsminjdp", XX3(60,152), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6910 {"xsnmsubmsp", XX3(60,153), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6911 {"xxlxor", XX3(60,154), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6912 {"xscvsxdsp", XX2(60,312), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6913 {"xsmaxdp", XX3(60,160), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6914 {"xsnmaddadp", XX3(60,161), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6915 {"xxlnor", XX3(60,162), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6916 {"xscvdpuxds", XX2(60,328), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6917 {"xscvspdp", XX2(60,329), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6918 {"xscvspdpn", XX2(60,331), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6919 {"xsmindp", XX3(60,168), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6920 {"xsnmaddmdp", XX3(60,169), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6921 {"xxlorc", XX3(60,170), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6922 {"xscvdpsxds", XX2(60,344), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6923 {"xsabsdp", XX2(60,345), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6924 {"xsxexpdp", XX2VA(60,347,0),XX2_MASK|1, PPCVSX3, PPCVLE, {RT, XB6}},
6925 {"xsxsigdp", XX2VA(60,347,1),XX2_MASK|1, PPCVSX3, PPCVLE, {RT, XB6}},
6926 {"xscvhpdp", XX2VA(60,347,16),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6927 {"xscvdphp", XX2VA(60,347,17),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6928 {"xscpsgndp", XX3(60,176), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6929 {"xsnmsubadp", XX3(60,177), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6930 {"xxlnand", XX3(60,178), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6931 {"xscvuxddp", XX2(60,360), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6932 {"xsnabsdp", XX2(60,361), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6933 {"xststdcdp", XX2(60,362), XX2BFD_MASK, PPCVSX3, PPCVLE, {BF, XB6, DCMX}},
6934 {"xsnmsubmdp", XX3(60,185), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6935 {"xxleqv", XX3(60,186), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6936 {"xscvsxddp", XX2(60,376), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6937 {"xsnegdp", XX2(60,377), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6938 {"xvmaxsp", XX3(60,192), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6939 {"xvnmaddasp", XX3(60,193), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6940 {"xvcvspuxds", XX2(60,392), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6941 {"xvcvdpsp", XX2(60,393), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6942 {"xvminsp", XX3(60,200), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6943 {"xvnmaddmsp", XX3(60,201), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6944 {"xvcvspsxds", XX2(60,408), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6945 {"xvabssp", XX2(60,409), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6946 {"xvmovsp", XX3(60,208), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6S}},
6947 {"xvcpsgnsp", XX3(60,208), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6948 {"xvnmsubasp", XX3(60,209), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6949 {"xvcvuxdsp", XX2(60,424), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6950 {"xvnabssp", XX2(60,425), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6951 {"xvtstdcsp", XX2(60,426), XX2DCMXS_MASK, PPCVSX3, PPCVLE, {XT6, XB6, DCMXS}},
6952 {"xviexpsp", XX3(60,216), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6953 {"xvnmsubmsp", XX3(60,217), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6954 {"xvcvsxdsp", XX2(60,440), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6955 {"xvnegsp", XX2(60,441), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6956 {"xvmaxdp", XX3(60,224), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6957 {"xvnmaddadp", XX3(60,225), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6958 {"xvcvdpuxds", XX2(60,456), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6959 {"xvcvspdp", XX2(60,457), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6960 {"xsiexpdp", X(60,918), XX1_MASK, PPCVSX3, PPCVLE, {XT6, RA, RB}},
6961 {"xvmindp", XX3(60,232), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6962 {"xvnmaddmdp", XX3(60,233), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6963 {"xvcvdpsxds", XX2(60,472), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6964 {"xvabsdp", XX2(60,473), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6965 {"xvxexpdp", XX2VA(60,475,0),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6966 {"xvxsigdp", XX2VA(60,475,1),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6967 {"xxbrh", XX2VA(60,475,7),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6968 {"xvxexpsp", XX2VA(60,475,8),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6969 {"xvxsigsp", XX2VA(60,475,9),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6970 {"xxbrw", XX2VA(60,475,15),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6971 {"xxbrd", XX2VA(60,475,23),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6972 {"xvcvhpsp", XX2VA(60,475,24),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6973 {"xvcvsphp", XX2VA(60,475,25),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6974 {"xxbrq", XX2VA(60,475,31),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6975 {"xvmovdp", XX3(60,240), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6S}},
6976 {"xvcpsgndp", XX3(60,240), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6977 {"xvnmsubadp", XX3(60,241), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6978 {"xvcvuxddp", XX2(60,488), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6979 {"xvnabsdp", XX2(60,489), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6980 {"xvtstdcdp", XX2(60,490), XX2DCMXS_MASK, PPCVSX3, PPCVLE, {XT6, XB6, DCMXS}},
6981 {"xviexpdp", XX3(60,248), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6982 {"xvnmsubmdp", XX3(60,249), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6983 {"xvcvsxddp", XX2(60,504), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6984 {"xvnegdp", XX2(60,505), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6985
6986 {"psq_st", OP(60), OP_MASK, PPCPS, PPCVLE, {FRS,PSD,RA,PSW,PSQ}},
6987 {"stfq", OP(60), OP_MASK, POWER2, PPCVLE, {FRS, D, RA}},
6988
6989 {"lxv", DQX(61,1), DQX_MASK, PPCVSX3, PPCVLE, {XTQ6, DQ, RA0}},
6990 {"stxv", DQX(61,5), DQX_MASK, PPCVSX3, PPCVLE, {XSQ6, DQ, RA0}},
6991 {"stxsd", DSO(61,2), DS_MASK, PPCVSX3, PPCVLE, {VS, DS, RA0}},
6992 {"stxssp", DSO(61,3), DS_MASK, PPCVSX3, PPCVLE, {VS, DS, RA0}},
6993 {"stfdp", OP(61), OP_MASK|Q_MASK, POWER6, POWER7|PPCVLE, {FRSp, DS, RA0}},
6994 {"psq_stu", OP(61), OP_MASK, PPCPS, PPCVLE, {FRS,PSD,RA,PSW,PSQ}},
6995 {"stfqu", OP(61), OP_MASK, POWER2, PPCVLE, {FRS, D, RA}},
6996
6997 {"std", DSO(62,0), DS_MASK, PPC64, PPCVLE, {RS, DS, RA0}},
6998 {"stdu", DSO(62,1), DS_MASK, PPC64, PPCVLE, {RS, DS, RAS}},
6999 {"stq", DSO(62,2), DS_MASK|Q_MASK, POWER4, PPC476|PPCVLE, {RSQ, DS, RA0}},
7000
7001 {"fcmpu", X(63,0), XBF_MASK, COM, PPCEFS|PPCVLE, {BF, FRA, FRB}},
7002
7003 {"daddq", XRC(63,2,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
7004 {"daddq.", XRC(63,2,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
7005
7006 {"dquaq", ZRC(63,3,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp, RMC}},
7007 {"dquaq.", ZRC(63,3,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp, RMC}},
7008
7009 {"xsaddqp", XRC(63,4,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7010 {"xsaddqpo", XRC(63,4,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7011
7012 {"xsrqpi", ZRC(63,5,0), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
7013 {"xsrqpix", ZRC(63,5,1), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
7014
7015 {"fcpsgn", XRC(63,8,0), X_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FRT, FRA, FRB}},
7016 {"fcpsgn.", XRC(63,8,1), X_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FRT, FRA, FRB}},
7017
7018 {"frsp", XRC(63,12,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7019 {"frsp.", XRC(63,12,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7020
7021 {"fctiw", XRC(63,14,0), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
7022 {"fcir", XRC(63,14,0), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
7023 {"fctiw.", XRC(63,14,1), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
7024 {"fcir.", XRC(63,14,1), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
7025
7026 {"fctiwz", XRC(63,15,0), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
7027 {"fcirz", XRC(63,15,0), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
7028 {"fctiwz.", XRC(63,15,1), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
7029 {"fcirz.", XRC(63,15,1), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
7030
7031 {"fdiv", A(63,18,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7032 {"fd", A(63,18,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
7033 {"fdiv.", A(63,18,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7034 {"fd.", A(63,18,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
7035
7036 {"fsub", A(63,20,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7037 {"fs", A(63,20,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
7038 {"fsub.", A(63,20,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7039 {"fs.", A(63,20,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
7040
7041 {"fadd", A(63,21,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7042 {"fa", A(63,21,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
7043 {"fadd.", A(63,21,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
7044 {"fa.", A(63,21,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
7045
7046 {"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
7047 {"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
7048
7049 {"fsel", A(63,23,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7050 {"fsel.", A(63,23,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7051
7052 {"fre", A(63,24,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
7053 {"fre", A(63,24,0), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
7054 {"fre.", A(63,24,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
7055 {"fre.", A(63,24,1), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
7056
7057 {"fmul", A(63,25,0), AFRB_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
7058 {"fm", A(63,25,0), AFRB_MASK, PWRCOM, PPCVLE|PPCVLE, {FRT, FRA, FRC}},
7059 {"fmul.", A(63,25,1), AFRB_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
7060 {"fm.", A(63,25,1), AFRB_MASK, PWRCOM, PPCVLE|PPCVLE, {FRT, FRA, FRC}},
7061
7062 {"frsqrte", A(63,26,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
7063 {"frsqrte", A(63,26,0), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
7064 {"frsqrte.", A(63,26,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
7065 {"frsqrte.", A(63,26,1), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
7066
7067 {"fmsub", A(63,28,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7068 {"fms", A(63,28,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
7069 {"fmsub.", A(63,28,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7070 {"fms.", A(63,28,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
7071
7072 {"fmadd", A(63,29,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7073 {"fma", A(63,29,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
7074 {"fmadd.", A(63,29,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7075 {"fma.", A(63,29,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
7076
7077 {"fnmsub", A(63,30,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7078 {"fnms", A(63,30,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
7079 {"fnmsub.", A(63,30,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7080 {"fnms.", A(63,30,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
7081
7082 {"fnmadd", A(63,31,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7083 {"fnma", A(63,31,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
7084 {"fnmadd.", A(63,31,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
7085 {"fnma.", A(63,31,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
7086
7087 {"fcmpo", X(63,32), XBF_MASK, COM, PPCEFS|PPCVLE, {BF, FRA, FRB}},
7088
7089 {"dmulq", XRC(63,34,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
7090 {"dmulq.", XRC(63,34,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
7091
7092 {"drrndq", ZRC(63,35,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp, RMC}},
7093 {"drrndq.", ZRC(63,35,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp, RMC}},
7094
7095 {"xsmulqp", XRC(63,36,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7096 {"xsmulqpo", XRC(63,36,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7097
7098 {"xsrqpxp", Z(63,37), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
7099
7100 {"mtfsb1", XRC(63,38,0), XRARB_MASK, COM, PPCVLE, {BT}},
7101 {"mtfsb1.", XRC(63,38,1), XRARB_MASK, COM, PPCVLE, {BT}},
7102
7103 {"fneg", XRC(63,40,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7104 {"fneg.", XRC(63,40,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7105
7106 {"mcrfs", X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, PPCVLE, {BF, BFA}},
7107
7108 {"dscliq", ZRC(63,66,0), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
7109 {"dscliq.", ZRC(63,66,1), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
7110
7111 {"dquaiq", ZRC(63,67,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {TE, FRTp, FRBp, RMC}},
7112 {"dquaiq.", ZRC(63,67,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {TE, FRTp, FRBp, RMC}},
7113
7114 {"mtfsb0", XRC(63,70,0), XRARB_MASK, COM, PPCVLE, {BT}},
7115 {"mtfsb0.", XRC(63,70,1), XRARB_MASK, COM, PPCVLE, {BT}},
7116
7117 {"fmr", XRC(63,72,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7118 {"fmr.", XRC(63,72,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7119
7120 {"dscriq", ZRC(63,98,0), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
7121 {"dscriq.", ZRC(63,98,1), Z_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
7122
7123 {"drintxq", ZRC(63,99,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
7124 {"drintxq.", ZRC(63,99,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
7125
7126 {"xscpsgnqp", X(63,100), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7127
7128 {"ftdiv", X(63,128), XBF_MASK, POWER7, PPCVLE, {BF, FRA, FRB}},
7129
7130 {"dcmpoq", X(63,130), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
7131
7132 {"xscmpoqp", X(63,132), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
7133
7134 {"mtfsfi", XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
7135 {"mtfsfi", XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
7136 {"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
7137 {"mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
7138
7139 {"fnabs", XRC(63,136,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7140 {"fnabs.", XRC(63,136,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7141
7142 {"fctiwu", XRC(63,142,0), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
7143 {"fctiwu.", XRC(63,142,1), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
7144 {"fctiwuz", XRC(63,143,0), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
7145 {"fctiwuz.", XRC(63,143,1), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
7146
7147 {"ftsqrt", X(63,160), XBF_MASK|FRA_MASK, POWER7, PPCVLE, {BF, FRB}},
7148
7149 {"dtstexq", X(63,162), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
7150
7151 {"xscmpexpqp", X(63,164), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
7152
7153 {"dtstdcq", Z(63,194), Z_MASK, POWER6, PPCVLE, {BF, FRAp, DCM}},
7154 {"dtstdgq", Z(63,226), Z_MASK, POWER6, PPCVLE, {BF, FRAp, DGM}},
7155
7156 {"drintnq", ZRC(63,227,0), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
7157 {"drintnq.", ZRC(63,227,1), Z2_MASK|Q_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
7158
7159 {"dctqpq", XRC(63,258,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
7160 {"dctqpq.", XRC(63,258,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
7161
7162 {"fabs", XRC(63,264,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7163 {"fabs.", XRC(63,264,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
7164
7165 {"dctfixq", XRC(63,290,0), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
7166 {"dctfixq.", XRC(63,290,1), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
7167
7168 {"ddedpdq", XRC(63,322,0), X_MASK|Q_MASK, POWER6, PPCVLE, {SP, FRTp, FRBp}},
7169 {"ddedpdq.", XRC(63,322,1), X_MASK|Q_MASK, POWER6, PPCVLE, {SP, FRTp, FRBp}},
7170
7171 {"dxexq", XRC(63,354,0), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
7172 {"dxexq.", XRC(63,354,1), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
7173
7174 {"xsmaddqp", XRC(63,388,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7175 {"xsmaddqpo", XRC(63,388,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7176
7177 {"frin", XRC(63,392,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
7178 {"frin.", XRC(63,392,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
7179
7180 {"xsmsubqp", XRC(63,420,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7181 {"xsmsubqpo", XRC(63,420,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7182
7183 {"friz", XRC(63,424,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
7184 {"friz.", XRC(63,424,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
7185
7186 {"xsnmaddqp", XRC(63,452,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7187 {"xsnmaddqpo", XRC(63,452,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7188
7189 {"frip", XRC(63,456,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
7190 {"frip.", XRC(63,456,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
7191
7192 {"xsnmsubqp", XRC(63,484,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7193 {"xsnmsubqpo", XRC(63,484,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7194
7195 {"frim", XRC(63,488,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
7196 {"frim.", XRC(63,488,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
7197
7198 {"dsubq", XRC(63,514,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
7199 {"dsubq.", XRC(63,514,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
7200
7201 {"xssubqp", XRC(63,516,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7202 {"xssubqpo", XRC(63,516,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7203
7204 {"ddivq", XRC(63,546,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
7205 {"ddivq.", XRC(63,546,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
7206
7207 {"xsdivqp", XRC(63,548,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7208 {"xsdivqpo", XRC(63,548,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7209
7210 {"mffs", XRC(63,583,0), XRARB_MASK, COM, PPCEFS|PPCVLE, {FRT}},
7211 {"mffs.", XRC(63,583,1), XRARB_MASK, COM, PPCEFS|PPCVLE, {FRT}},
7212
7213 {"mffsce", XMMF(63,583,0,1), XMMF_MASK|RB_MASK, POWER9, PPCVLE, {FRT}},
7214 {"mffscdrn", XMMF(63,583,2,4), XMMF_MASK, POWER9, PPCVLE, {FRT, FRB}},
7215 {"mffscdrni", XMMF(63,583,2,5), XMMF_MASK|(3<<14), POWER9, PPCVLE, {FRT, DRM}},
7216 {"mffscrn", XMMF(63,583,2,6), XMMF_MASK, POWER9, PPCVLE, {FRT, FRB}},
7217 {"mffscrni", XMMF(63,583,2,7), XMMF_MASK|(7<<13), POWER9, PPCVLE, {FRT, RM}},
7218 {"mffsl", XMMF(63,583,3,0), XMMF_MASK|RB_MASK, POWER9, PPCVLE, {FRT}},
7219
7220 {"dcmpuq", X(63,642), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
7221
7222 {"xscmpuqp", X(63,644), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
7223
7224 {"dtstsfq", X(63,674), X_MASK, POWER6, PPCVLE, {BF, FRA, FRBp}},
7225 {"dtstsfiq", X(63,675), X_MASK|1<<22,POWER9, PPCVLE, {BF, UIM6, FRBp}},
7226
7227 {"xststdcqp", X(63,708), X_MASK, PPCVSX3, PPCVLE, {BF, VB, DCMX}},
7228
7229 {"mtfsf", XFL(63,711,0), XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FLM, FRB, XFL_L, W}},
7230 {"mtfsf", XFL(63,711,0), XFL_MASK, COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
7231 {"mtfsf.", XFL(63,711,1), XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FLM, FRB, XFL_L, W}},
7232 {"mtfsf.", XFL(63,711,1), XFL_MASK, COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
7233
7234 {"drdpq", XRC(63,770,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRBp}},
7235 {"drdpq.", XRC(63,770,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRBp}},
7236
7237 {"dcffixq", XRC(63,802,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
7238 {"dcffixq.", XRC(63,802,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRB}},
7239
7240 {"xsabsqp", XVA(63,804,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7241 {"xsxexpqp", XVA(63,804,2), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7242 {"xsnabsqp", XVA(63,804,8), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7243 {"xsnegqp", XVA(63,804,16), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7244 {"xsxsigqp", XVA(63,804,18), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7245 {"xssqrtqp", XVARC(63,804,27,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7246 {"xssqrtqpo", XVARC(63,804,27,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7247
7248 {"fctid", XRC(63,814,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
7249 {"fctid", XRC(63,814,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
7250 {"fctid.", XRC(63,814,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
7251 {"fctid.", XRC(63,814,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
7252
7253 {"fctidz", XRC(63,815,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
7254 {"fctidz", XRC(63,815,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
7255 {"fctidz.", XRC(63,815,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
7256 {"fctidz.", XRC(63,815,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
7257
7258 {"denbcdq", XRC(63,834,0), X_MASK|Q_MASK, POWER6, PPCVLE, {S, FRTp, FRBp}},
7259 {"denbcdq.", XRC(63,834,1), X_MASK|Q_MASK, POWER6, PPCVLE, {S, FRTp, FRBp}},
7260
7261 {"xscvqpuwz", XVA(63,836,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7262 {"xscvudqp", XVA(63,836,2), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7263 {"xscvqpswz", XVA(63,836,9), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7264 {"xscvsdqp", XVA(63,836,10), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7265 {"xscvqpudz", XVA(63,836,17), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7266 {"xscvqpdp", XVARC(63,836,20,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7267 {"xscvqpdpo", XVARC(63,836,20,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7268 {"xscvdpqp", XVA(63,836,22), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7269 {"xscvqpsdz", XVA(63,836,25), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
7270
7271 {"fmrgow", X(63,838), X_MASK, PPCVSX2, PPCVLE, {FRT, FRA, FRB}},
7272
7273 {"fcfid", XRC(63,846,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
7274 {"fcfid", XRC(63,846,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
7275 {"fcfid.", XRC(63,846,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
7276 {"fcfid.", XRC(63,846,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
7277
7278 {"diexq", XRC(63,866,0), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp}},
7279 {"diexq.", XRC(63,866,1), X_MASK|Q_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp}},
7280
7281 {"xsiexpqp", X(63,868), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
7282
7283 {"fctidu", XRC(63,942,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
7284 {"fctidu.", XRC(63,942,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
7285
7286 {"fctiduz", XRC(63,943,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
7287 {"fctiduz.", XRC(63,943,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
7288
7289 {"fmrgew", X(63,966), X_MASK, PPCVSX2, PPCVLE, {FRT, FRA, FRB}},
7290
7291 {"fcfidu", XRC(63,974,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
7292 {"fcfidu.", XRC(63,974,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
7293 };
7294
7295 const int powerpc_num_opcodes =
7296 sizeof (powerpc_opcodes) / sizeof (powerpc_opcodes[0]);
7297 \f
7298 /* The VLE opcode table.
7299
7300 The format of this opcode table is the same as the main opcode table. */
7301
7302 const struct powerpc_opcode vle_opcodes[] = {
7303 {"se_illegal", C(0), C_MASK, PPCVLE, 0, {}},
7304 {"se_isync", C(1), C_MASK, PPCVLE, 0, {}},
7305 {"se_sc", C(2), C_MASK, PPCVLE, 0, {}},
7306 {"se_blr", C_LK(2,0), C_LK_MASK, PPCVLE, 0, {}},
7307 {"se_blrl", C_LK(2,1), C_LK_MASK, PPCVLE, 0, {}},
7308 {"se_bctr", C_LK(3,0), C_LK_MASK, PPCVLE, 0, {}},
7309 {"se_bctrl", C_LK(3,1), C_LK_MASK, PPCVLE, 0, {}},
7310 {"se_rfi", C(8), C_MASK, PPCVLE, 0, {}},
7311 {"se_rfci", C(9), C_MASK, PPCVLE, 0, {}},
7312 {"se_rfdi", C(10), C_MASK, PPCVLE, 0, {}},
7313 {"se_rfmci", C(11), C_MASK, PPCRFMCI|PPCVLE, 0, {}},
7314 {"se_rfgi", C(12), C_MASK, PPCVLE, 0, {}},
7315 {"se_not", SE_R(0,2), SE_R_MASK, PPCVLE, 0, {RX}},
7316 {"se_neg", SE_R(0,3), SE_R_MASK, PPCVLE, 0, {RX}},
7317 {"se_mflr", SE_R(0,8), SE_R_MASK, PPCVLE, 0, {RX}},
7318 {"se_mtlr", SE_R(0,9), SE_R_MASK, PPCVLE, 0, {RX}},
7319 {"se_mfctr", SE_R(0,10), SE_R_MASK, PPCVLE, 0, {RX}},
7320 {"se_mtctr", SE_R(0,11), SE_R_MASK, PPCVLE, 0, {RX}},
7321 {"se_extzb", SE_R(0,12), SE_R_MASK, PPCVLE, 0, {RX}},
7322 {"se_extsb", SE_R(0,13), SE_R_MASK, PPCVLE, 0, {RX}},
7323 {"se_extzh", SE_R(0,14), SE_R_MASK, PPCVLE, 0, {RX}},
7324 {"se_extsh", SE_R(0,15), SE_R_MASK, PPCVLE, 0, {RX}},
7325 {"se_mr", SE_RR(0,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7326 {"se_mtar", SE_RR(0,2), SE_RR_MASK, PPCVLE, 0, {ARX, RY}},
7327 {"se_mfar", SE_RR(0,3), SE_RR_MASK, PPCVLE, 0, {RX, ARY}},
7328 {"se_add", SE_RR(1,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7329 {"se_mullw", SE_RR(1,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7330 {"se_sub", SE_RR(1,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7331 {"se_subf", SE_RR(1,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7332 {"se_cmp", SE_RR(3,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7333 {"se_cmpl", SE_RR(3,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7334 {"se_cmph", SE_RR(3,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7335 {"se_cmphl", SE_RR(3,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7336
7337 /* by major opcode */
7338 {"zvaddih", VX(4, 0x200), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
7339 {"zvsubifh", VX(4, 0x201), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
7340 {"zvaddh", VX(4, 0x204), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7341 {"zvsubfh", VX(4, 0x205), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7342 {"zvaddsubfh", VX(4, 0x206), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7343 {"zvsubfaddh", VX(4, 0x207), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7344 {"zvaddhx", VX(4, 0x20C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7345 {"zvsubfhx", VX(4, 0x20D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7346 {"zvaddsubfhx", VX(4, 0x20E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7347 {"zvsubfaddhx", VX(4, 0x20F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7348 {"zaddwus", VX(4, 0x210), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7349 {"zsubfwus", VX(4, 0x211), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7350 {"zaddwss", VX(4, 0x212), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7351 {"zsubfwss", VX(4, 0x213), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7352 {"zvaddhus", VX(4, 0x214), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7353 {"zvsubfhus", VX(4, 0x215), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7354 {"zvaddhss", VX(4, 0x216), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7355 {"zvsubfhss", VX(4, 0x217), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7356 {"zvaddsubfhss", VX(4, 0x21A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7357 {"zvsubfaddhss", VX(4, 0x21B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7358 {"zvaddhxss", VX(4, 0x21C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7359 {"zvsubfhxss", VX(4, 0x21D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7360 {"zvaddsubfhxss", VX(4, 0x21E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7361 {"zvsubfaddhxss", VX(4, 0x21F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7362 {"zaddheuw", VX(4, 0x220), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7363 {"zsubfheuw", VX(4, 0x221), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7364 {"zaddhesw", VX(4, 0x222), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7365 {"zsubfhesw", VX(4, 0x223), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7366 {"zaddhouw", VX(4, 0x224), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7367 {"zsubfhouw", VX(4, 0x225), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7368 {"zaddhosw", VX(4, 0x226), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7369 {"zsubfhosw", VX(4, 0x227), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7370 {"zvmergehih", VX(4, 0x22C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7371 {"zvmergeloh", VX(4, 0x22D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7372 {"zvmergehiloh", VX(4, 0x22E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7373 {"zvmergelohih", VX(4, 0x22F), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7374 {"zvcmpgthu", VX(4, 0x230), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
7375 {"zvcmpgths", VX(4, 0x230), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
7376 {"zvcmplthu", VX(4, 0x231), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
7377 {"zvcmplths", VX(4, 0x231), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
7378 {"zvcmpeqh", VX(4, 0x232), VX_MASK, PPCLSP, 0, {CRFD, RA, RB}},
7379 {"zpkswgshfrs", VX(4, 0x238), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7380 {"zpkswgswfrs", VX(4, 0x239), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7381 {"zvpkshgwshfrs", VX(4, 0x23A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7382 {"zvpkswshfrs", VX(4, 0x23B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7383 {"zvpkswuhs", VX(4, 0x23C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7384 {"zvpkswshs", VX(4, 0x23D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7385 {"zvpkuwuhs", VX(4, 0x23E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7386 {"zvsplatih", VX_LSP(4, 0x23F), VX_LSP_MASK, PPCLSP, 0, {RD, SIMM}},
7387 {"zvsplatfih", VX_LSP(4, 0xA3F), VX_LSP_MASK, PPCLSP, 0, {RD, SIMM}},
7388 {"zcntlsw", VX_LSP(4, 0x2A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7389 {"zvcntlzh", VX_LSP(4, 0x323F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7390 {"zvcntlsh", VX_LSP(4, 0x3A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7391 {"znegws", VX_LSP(4, 0x4A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7392 {"zvnegh", VX_LSP(4, 0x523F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7393 {"zvneghs", VX_LSP(4, 0x5A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7394 {"zvnegho", VX_LSP(4, 0x623F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7395 {"zvneghos", VX_LSP(4, 0x6A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7396 {"zrndwh", VX_LSP(4, 0x823F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7397 {"zrndwhss", VX_LSP(4, 0x8A3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7398 {"zvabsh", VX_LSP(4, 0xA23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7399 {"zvabshs", VX_LSP(4, 0xAA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7400 {"zabsw", VX_LSP(4, 0xB23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7401 {"zabsws", VX_LSP(4, 0xBA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7402 {"zsatswuw", VX_LSP(4, 0xC23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7403 {"zsatuwsw", VX_LSP(4, 0xCA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7404 {"zsatswuh", VX_LSP(4, 0xD23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7405 {"zsatswsh", VX_LSP(4, 0xDA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7406 {"zvsatshuh", VX_LSP(4, 0xE23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7407 {"zvsatuhsh", VX_LSP(4, 0xEA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7408 {"zsatuwuh", VX_LSP(4, 0xF23F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7409 {"zsatuwsh", VX_LSP(4, 0xFA3F), VX_LSP_MASK, PPCLSP, 0, {RD, RA}},
7410 {"zsatsduw", VX(4, 0x260), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7411 {"zsatsdsw", VX(4, 0x261), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7412 {"zsatuduw", VX(4, 0x262), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7413 {"zvselh", VX(4, 0x264), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7414 {"zxtrw", VX(4, 0x264), VX_LSP_OFF_MASK, PPCLSP, 0, {RD, RA, RB, VX_OFF}},
7415 {"zbrminc", VX(4, 0x268), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7416 {"zcircinc", VX(4, 0x269), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7417 {"zdivwsf", VX(4, 0x26B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7418 {"zvsrhu", VX(4, 0x270), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7419 {"zvsrhs", VX(4, 0x271), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7420 {"zvsrhiu", VX(4, 0x272), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
7421 {"zvsrhis", VX(4, 0x273), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
7422 {"zvslh", VX(4, 0x274), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7423 {"zvrlh", VX(4, 0x275), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7424 {"zvslhi", VX(4, 0x276), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
7425 {"zvrlhi", VX(4, 0x277), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
7426 {"zvslhus", VX(4, 0x278), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7427 {"zvslhss", VX(4, 0x279), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7428 {"zvslhius", VX(4, 0x27A), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
7429 {"zvslhiss", VX(4, 0x27B), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM_LT16}},
7430 {"zslwus", VX(4, 0x27C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7431 {"zslwss", VX(4, 0x27D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7432 {"zslwius", VX(4, 0x27E), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
7433 {"zslwiss", VX(4, 0x27F), VX_MASK, PPCLSP, 0, {RD, RA, EVUIMM}},
7434 {"zaddwgui", VX(4, 0x460), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7435 {"zsubfwgui", VX(4, 0x461), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7436 {"zaddd", VX(4, 0x462), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7437 {"zsubfd", VX(4, 0x463), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7438 {"zvaddsubfw", VX(4, 0x464), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7439 {"zvsubfaddw", VX(4, 0x465), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7440 {"zvaddw", VX(4, 0x466), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7441 {"zvsubfw", VX(4, 0x467), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7442 {"zaddwgsi", VX(4, 0x468), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7443 {"zsubfwgsi", VX(4, 0x469), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7444 {"zadddss", VX(4, 0x46A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7445 {"zsubfdss", VX(4, 0x46B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7446 {"zvaddsubfwss", VX(4, 0x46C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7447 {"zvsubfaddwss", VX(4, 0x46D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7448 {"zvaddwss", VX(4, 0x46E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7449 {"zvsubfwss", VX(4, 0x46F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7450 {"zaddwgsf", VX(4, 0x470), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7451 {"zsubfwgsf", VX(4, 0x471), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7452 {"zadddus", VX(4, 0x472), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7453 {"zsubfdus", VX(4, 0x473), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7454 {"zvaddwus", VX(4, 0x476), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7455 {"zvsubfwus", VX(4, 0x477), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7456 {"zvunpkhgwsf", VX_LSP(4, 0x478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
7457 {"zvunpkhsf", VX_LSP(4, 0xC78), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
7458 {"zvunpkhui", VX_LSP(4, 0x1478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
7459 {"zvunpkhsi", VX_LSP(4, 0x1C78), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
7460 {"zunpkwgsf", VX_LSP(4, 0x2478), VX_LSP_MASK, PPCLSP, 0, {RD_EVEN, RA}},
7461 {"zvdotphgwasmf", VX(4, 0x488), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7462 {"zvdotphgwasmfr", VX(4, 0x489), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7463 {"zvdotphgwasmfaa", VX(4, 0x48A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7464 {"zvdotphgwasmfraa", VX(4, 0x48B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7465 {"zvdotphgwasmfan", VX(4, 0x48C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7466 {"zvdotphgwasmfran", VX(4, 0x48D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7467 {"zvmhulgwsmf", VX(4, 0x490), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7468 {"zvmhulgwsmfr", VX(4, 0x491), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7469 {"zvmhulgwsmfaa", VX(4, 0x492), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7470 {"zvmhulgwsmfraa", VX(4, 0x493), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7471 {"zvmhulgwsmfan", VX(4, 0x494), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7472 {"zvmhulgwsmfran", VX(4, 0x495), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7473 {"zvmhulgwsmfanp", VX(4, 0x496), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7474 {"zvmhulgwsmfranp", VX(4, 0x497), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7475 {"zmhegwsmf", VX(4, 0x498), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7476 {"zmhegwsmfr", VX(4, 0x499), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7477 {"zmhegwsmfaa", VX(4, 0x49A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7478 {"zmhegwsmfraa", VX(4, 0x49B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7479 {"zmhegwsmfan", VX(4, 0x49C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7480 {"zmhegwsmfran", VX(4, 0x49D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7481 {"zvdotphxgwasmf", VX(4, 0x4A8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7482 {"zvdotphxgwasmfr", VX(4, 0x4A9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7483 {"zvdotphxgwasmfaa", VX(4, 0x4AA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7484 {"zvdotphxgwasmfraa", VX(4, 0x4AB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7485 {"zvdotphxgwasmfan", VX(4, 0x4AC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7486 {"zvdotphxgwasmfran", VX(4, 0x4AD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7487 {"zvmhllgwsmf", VX(4, 0x4B0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7488 {"zvmhllgwsmfr", VX(4, 0x4B1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7489 {"zvmhllgwsmfaa", VX(4, 0x4B2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7490 {"zvmhllgwsmfraa", VX(4, 0x4B3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7491 {"zvmhllgwsmfan", VX(4, 0x4B4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7492 {"zvmhllgwsmfran", VX(4, 0x4B5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7493 {"zvmhllgwsmfanp", VX(4, 0x4B6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7494 {"zvmhllgwsmfranp", VX(4, 0x4B7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7495 {"zmheogwsmf", VX(4, 0x4B8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7496 {"zmheogwsmfr", VX(4, 0x4B9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7497 {"zmheogwsmfaa", VX(4, 0x4BA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7498 {"zmheogwsmfraa", VX(4, 0x4BB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7499 {"zmheogwsmfan", VX(4, 0x4BC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7500 {"zmheogwsmfran", VX(4, 0x4BD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7501 {"zvdotphgwssmf", VX(4, 0x4C8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7502 {"zvdotphgwssmfr", VX(4, 0x4C9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7503 {"zvdotphgwssmfaa", VX(4, 0x4CA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7504 {"zvdotphgwssmfraa", VX(4, 0x4CB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7505 {"zvdotphgwssmfan", VX(4, 0x4CC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7506 {"zvdotphgwssmfran", VX(4, 0x4CD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7507 {"zvmhuugwsmf", VX(4, 0x4D0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7508 {"zvmhuugwsmfr", VX(4, 0x4D1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7509 {"zvmhuugwsmfaa", VX(4, 0x4D2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7510 {"zvmhuugwsmfraa", VX(4, 0x4D3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7511 {"zvmhuugwsmfan", VX(4, 0x4D4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7512 {"zvmhuugwsmfran", VX(4, 0x4D5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7513 {"zvmhuugwsmfanp", VX(4, 0x4D6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7514 {"zvmhuugwsmfranp", VX(4, 0x4D7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7515 {"zmhogwsmf", VX(4, 0x4D8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7516 {"zmhogwsmfr", VX(4, 0x4D9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7517 {"zmhogwsmfaa", VX(4, 0x4DA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7518 {"zmhogwsmfraa", VX(4, 0x4DB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7519 {"zmhogwsmfan", VX(4, 0x4DC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7520 {"zmhogwsmfran", VX(4, 0x4DD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7521 {"zvmhxlgwsmf", VX(4, 0x4F0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7522 {"zvmhxlgwsmfr", VX(4, 0x4F1), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7523 {"zvmhxlgwsmfaa", VX(4, 0x4F2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7524 {"zvmhxlgwsmfraa", VX(4, 0x4F3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7525 {"zvmhxlgwsmfan", VX(4, 0x4F4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7526 {"zvmhxlgwsmfran", VX(4, 0x4F5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7527 {"zvmhxlgwsmfanp", VX(4, 0x4F6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7528 {"zvmhxlgwsmfranp", VX(4, 0x4F7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7529 {"zmhegui", VX(4, 0x500), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7530 {"zvdotphgaui", VX(4, 0x501), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7531 {"zmheguiaa", VX(4, 0x502), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7532 {"zvdotphgauiaa", VX(4, 0x503), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7533 {"zmheguian", VX(4, 0x504), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7534 {"zvdotphgauian", VX(4, 0x505), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7535 {"zmhegsi", VX(4, 0x508), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7536 {"zvdotphgasi", VX(4, 0x509), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7537 {"zmhegsiaa", VX(4, 0x50A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7538 {"zvdotphgasiaa", VX(4, 0x50B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7539 {"zmhegsian", VX(4, 0x50C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7540 {"zvdotphgasian", VX(4, 0x50D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7541 {"zmhegsui", VX(4, 0x510), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7542 {"zvdotphgasui", VX(4, 0x511), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7543 {"zmhegsuiaa", VX(4, 0x512), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7544 {"zvdotphgasuiaa", VX(4, 0x513), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7545 {"zmhegsuian", VX(4, 0x514), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7546 {"zvdotphgasuian", VX(4, 0x515), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7547 {"zmhegsmf", VX(4, 0x518), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7548 {"zvdotphgasmf", VX(4, 0x519), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7549 {"zmhegsmfaa", VX(4, 0x51A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7550 {"zvdotphgasmfaa", VX(4, 0x51B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7551 {"zmhegsmfan", VX(4, 0x51C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7552 {"zvdotphgasmfan", VX(4, 0x51D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7553 {"zmheogui", VX(4, 0x520), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7554 {"zvdotphxgaui", VX(4, 0x521), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7555 {"zmheoguiaa", VX(4, 0x522), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7556 {"zvdotphxgauiaa", VX(4, 0x523), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7557 {"zmheoguian", VX(4, 0x524), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7558 {"zvdotphxgauian", VX(4, 0x525), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7559 {"zmheogsi", VX(4, 0x528), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7560 {"zvdotphxgasi", VX(4, 0x529), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7561 {"zmheogsiaa", VX(4, 0x52A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7562 {"zvdotphxgasiaa", VX(4, 0x52B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7563 {"zmheogsian", VX(4, 0x52C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7564 {"zvdotphxgasian", VX(4, 0x52D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7565 {"zmheogsui", VX(4, 0x530), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7566 {"zvdotphxgasui", VX(4, 0x531), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7567 {"zmheogsuiaa", VX(4, 0x532), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7568 {"zvdotphxgasuiaa", VX(4, 0x533), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7569 {"zmheogsuian", VX(4, 0x534), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7570 {"zvdotphxgasuian", VX(4, 0x535), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7571 {"zmheogsmf", VX(4, 0x538), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7572 {"zvdotphxgasmf", VX(4, 0x539), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7573 {"zmheogsmfaa", VX(4, 0x53A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7574 {"zvdotphxgasmfaa", VX(4, 0x53B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7575 {"zmheogsmfan", VX(4, 0x53C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7576 {"zvdotphxgasmfan", VX(4, 0x53D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7577 {"zmhogui", VX(4, 0x540), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7578 {"zvdotphgsui", VX(4, 0x541), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7579 {"zmhoguiaa", VX(4, 0x542), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7580 {"zvdotphgsuiaa", VX(4, 0x543), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7581 {"zmhoguian", VX(4, 0x544), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7582 {"zvdotphgsuian", VX(4, 0x545), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7583 {"zmhogsi", VX(4, 0x548), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7584 {"zvdotphgssi", VX(4, 0x549), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7585 {"zmhogsiaa", VX(4, 0x54A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7586 {"zvdotphgssiaa", VX(4, 0x54B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7587 {"zmhogsian", VX(4, 0x54C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7588 {"zvdotphgssian", VX(4, 0x54D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7589 {"zmhogsui", VX(4, 0x550), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7590 {"zvdotphgssui", VX(4, 0x551), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7591 {"zmhogsuiaa", VX(4, 0x552), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7592 {"zvdotphgssuiaa", VX(4, 0x553), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7593 {"zmhogsuian", VX(4, 0x554), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7594 {"zvdotphgssuian", VX(4, 0x555), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7595 {"zmhogsmf", VX(4, 0x558), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7596 {"zvdotphgssmf", VX(4, 0x559), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7597 {"zmhogsmfaa", VX(4, 0x55A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7598 {"zvdotphgssmfaa", VX(4, 0x55B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7599 {"zmhogsmfan", VX(4, 0x55C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7600 {"zvdotphgssmfan", VX(4, 0x55D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7601 {"zmwgui", VX(4, 0x560), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7602 {"zmwguiaa", VX(4, 0x562), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7603 {"zmwguiaas", VX(4, 0x563), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7604 {"zmwguian", VX(4, 0x564), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7605 {"zmwguians", VX(4, 0x565), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7606 {"zmwgsi", VX(4, 0x568), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7607 {"zmwgsiaa", VX(4, 0x56A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7608 {"zmwgsiaas", VX(4, 0x56B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7609 {"zmwgsian", VX(4, 0x56C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7610 {"zmwgsians", VX(4, 0x56D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7611 {"zmwgsui", VX(4, 0x570), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7612 {"zmwgsuiaa", VX(4, 0x572), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7613 {"zmwgsuiaas", VX(4, 0x573), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7614 {"zmwgsuian", VX(4, 0x574), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7615 {"zmwgsuians", VX(4, 0x575), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7616 {"zmwgsmf", VX(4, 0x578), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7617 {"zmwgsmfr", VX(4, 0x579), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7618 {"zmwgsmfaa", VX(4, 0x57A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7619 {"zmwgsmfraa", VX(4, 0x57B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7620 {"zmwgsmfan", VX(4, 0x57C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7621 {"zmwgsmfran", VX(4, 0x57D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7622 {"zvmhului", VX(4, 0x580), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7623 {"zvmhuluiaa", VX(4, 0x582), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7624 {"zvmhuluiaas", VX(4, 0x583), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7625 {"zvmhuluian", VX(4, 0x584), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7626 {"zvmhuluians", VX(4, 0x585), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7627 {"zvmhuluianp", VX(4, 0x586), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7628 {"zvmhuluianps", VX(4, 0x587), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7629 {"zvmhulsi", VX(4, 0x588), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7630 {"zvmhulsiaa", VX(4, 0x58A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7631 {"zvmhulsiaas", VX(4, 0x58B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7632 {"zvmhulsian", VX(4, 0x58C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7633 {"zvmhulsians", VX(4, 0x58D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7634 {"zvmhulsianp", VX(4, 0x58E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7635 {"zvmhulsianps", VX(4, 0x58F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7636 {"zvmhulsui", VX(4, 0x590), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7637 {"zvmhulsuiaa", VX(4, 0x592), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7638 {"zvmhulsuiaas", VX(4, 0x593), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7639 {"zvmhulsuian", VX(4, 0x594), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7640 {"zvmhulsuians", VX(4, 0x595), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7641 {"zvmhulsuianp", VX(4, 0x596), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7642 {"zvmhulsuianps", VX(4, 0x597), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7643 {"zvmhulsf", VX(4, 0x598), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7644 {"zvmhulsfr", VX(4, 0x599), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7645 {"zvmhulsfaas", VX(4, 0x59A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7646 {"zvmhulsfraas", VX(4, 0x59B), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7647 {"zvmhulsfans", VX(4, 0x59C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7648 {"zvmhulsfrans", VX(4, 0x59D), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7649 {"zvmhulsfanps", VX(4, 0x59E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7650 {"zvmhulsfranps", VX(4, 0x59F), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7651 {"zvmhllui", VX(4, 0x5A0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7652 {"zvmhlluiaa", VX(4, 0x5A2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7653 {"zvmhlluiaas", VX(4, 0x5A3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7654 {"zvmhlluian", VX(4, 0x5A4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7655 {"zvmhlluians", VX(4, 0x5A5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7656 {"zvmhlluianp", VX(4, 0x5A6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7657 {"zvmhlluianps", VX(4, 0x5A7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7658 {"zvmhllsi", VX(4, 0x5A8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7659 {"zvmhllsiaa", VX(4, 0x5AA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7660 {"zvmhllsiaas", VX(4, 0x5AB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7661 {"zvmhllsian", VX(4, 0x5AC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7662 {"zvmhllsians", VX(4, 0x5AD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7663 {"zvmhllsianp", VX(4, 0x5AE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7664 {"zvmhllsianps", VX(4, 0x5AF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7665 {"zvmhllsui", VX(4, 0x5B0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7666 {"zvmhllsuiaa", VX(4, 0x5B2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7667 {"zvmhllsuiaas", VX(4, 0x5B3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7668 {"zvmhllsuian", VX(4, 0x5B4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7669 {"zvmhllsuians", VX(4, 0x5B5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7670 {"zvmhllsuianp", VX(4, 0x5B6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7671 {"zvmhllsuianps", VX(4, 0x5B7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7672 {"zvmhllsf", VX(4, 0x5B8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7673 {"zvmhllsfr", VX(4, 0x5B9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7674 {"zvmhllsfaas", VX(4, 0x5BA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7675 {"zvmhllsfraas", VX(4, 0x5BB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7676 {"zvmhllsfans", VX(4, 0x5BC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7677 {"zvmhllsfrans", VX(4, 0x5BD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7678 {"zvmhllsfanps", VX(4, 0x5BE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7679 {"zvmhllsfranps", VX(4, 0x5BF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7680 {"zvmhuuui", VX(4, 0x5C0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7681 {"zvmhuuuiaa", VX(4, 0x5C2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7682 {"zvmhuuuiaas", VX(4, 0x5C3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7683 {"zvmhuuuian", VX(4, 0x5C4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7684 {"zvmhuuuians", VX(4, 0x5C5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7685 {"zvmhuuuianp", VX(4, 0x5C6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7686 {"zvmhuuuianps", VX(4, 0x5C7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7687 {"zvmhuusi", VX(4, 0x5C8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7688 {"zvmhuusiaa", VX(4, 0x5CA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7689 {"zvmhuusiaas", VX(4, 0x5CB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7690 {"zvmhuusian", VX(4, 0x5CC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7691 {"zvmhuusians", VX(4, 0x5CD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7692 {"zvmhuusianp", VX(4, 0x5CE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7693 {"zvmhuusianps", VX(4, 0x5CF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7694 {"zvmhuusui", VX(4, 0x5D0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7695 {"zvmhuusuiaa", VX(4, 0x5D2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7696 {"zvmhuusuiaas", VX(4, 0x5D3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7697 {"zvmhuusuian", VX(4, 0x5D4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7698 {"zvmhuusuians", VX(4, 0x5D5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7699 {"zvmhuusuianp", VX(4, 0x5D6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7700 {"zvmhuusuianps", VX(4, 0x5D7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7701 {"zvmhuusf", VX(4, 0x5D8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7702 {"zvmhuusfr", VX(4, 0x5D9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7703 {"zvmhuusfaas", VX(4, 0x5DA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7704 {"zvmhuusfraas", VX(4, 0x5DB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7705 {"zvmhuusfans", VX(4, 0x5DC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7706 {"zvmhuusfrans", VX(4, 0x5DD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7707 {"zvmhuusfanps", VX(4, 0x5DE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7708 {"zvmhuusfranps", VX(4, 0x5DF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7709 {"zvmhxlui", VX(4, 0x5E0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7710 {"zvmhxluiaa", VX(4, 0x5E2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7711 {"zvmhxluiaas", VX(4, 0x5E3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7712 {"zvmhxluian", VX(4, 0x5E4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7713 {"zvmhxluians", VX(4, 0x5E5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7714 {"zvmhxluianp", VX(4, 0x5E6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7715 {"zvmhxluianps", VX(4, 0x5E7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7716 {"zvmhxlsi", VX(4, 0x5E8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7717 {"zvmhxlsiaa", VX(4, 0x5EA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7718 {"zvmhxlsiaas", VX(4, 0x5EB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7719 {"zvmhxlsian", VX(4, 0x5EC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7720 {"zvmhxlsians", VX(4, 0x5ED), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7721 {"zvmhxlsianp", VX(4, 0x5EE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7722 {"zvmhxlsianps", VX(4, 0x5EF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7723 {"zvmhxlsui", VX(4, 0x5F0), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7724 {"zvmhxlsuiaa", VX(4, 0x5F2), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7725 {"zvmhxlsuiaas", VX(4, 0x5F3), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7726 {"zvmhxlsuian", VX(4, 0x5F4), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7727 {"zvmhxlsuians", VX(4, 0x5F5), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7728 {"zvmhxlsuianp", VX(4, 0x5F6), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7729 {"zvmhxlsuianps", VX(4, 0x5F7), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7730 {"zvmhxlsf", VX(4, 0x5F8), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7731 {"zvmhxlsfr", VX(4, 0x5F9), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7732 {"zvmhxlsfaas", VX(4, 0x5FA), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7733 {"zvmhxlsfraas", VX(4, 0x5FB), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7734 {"zvmhxlsfans", VX(4, 0x5FC), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7735 {"zvmhxlsfrans", VX(4, 0x5FD), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7736 {"zvmhxlsfanps", VX(4, 0x5FE), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7737 {"zvmhxlsfranps", VX(4, 0x5FF), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7738 {"zmheui", VX(4, 0x600), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7739 {"zmheuiaa", VX(4, 0x602), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7740 {"zmheuiaas", VX(4, 0x603), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7741 {"zmheuian", VX(4, 0x604), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7742 {"zmheuians", VX(4, 0x605), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7743 {"zmhesi", VX(4, 0x608), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7744 {"zmhesiaa", VX(4, 0x60A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7745 {"zmhesiaas", VX(4, 0x60B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7746 {"zmhesian", VX(4, 0x60C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7747 {"zmhesians", VX(4, 0x60D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7748 {"zmhesui", VX(4, 0x610), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7749 {"zmhesuiaa", VX(4, 0x612), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7750 {"zmhesuiaas", VX(4, 0x613), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7751 {"zmhesuian", VX(4, 0x614), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7752 {"zmhesuians", VX(4, 0x615), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7753 {"zmhesf", VX(4, 0x618), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7754 {"zmhesfr", VX(4, 0x619), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7755 {"zmhesfaas", VX(4, 0x61A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7756 {"zmhesfraas", VX(4, 0x61B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7757 {"zmhesfans", VX(4, 0x61C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7758 {"zmhesfrans", VX(4, 0x61D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7759 {"zmheoui", VX(4, 0x620), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7760 {"zmheouiaa", VX(4, 0x622), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7761 {"zmheouiaas", VX(4, 0x623), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7762 {"zmheouian", VX(4, 0x624), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7763 {"zmheouians", VX(4, 0x625), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7764 {"zmheosi", VX(4, 0x628), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7765 {"zmheosiaa", VX(4, 0x62A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7766 {"zmheosiaas", VX(4, 0x62B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7767 {"zmheosian", VX(4, 0x62C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7768 {"zmheosians", VX(4, 0x62D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7769 {"zmheosui", VX(4, 0x630), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7770 {"zmheosuiaa", VX(4, 0x632), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7771 {"zmheosuiaas", VX(4, 0x633), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7772 {"zmheosuian", VX(4, 0x634), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7773 {"zmheosuians", VX(4, 0x635), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7774 {"zmheosf", VX(4, 0x638), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7775 {"zmheosfr", VX(4, 0x639), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7776 {"zmheosfaas", VX(4, 0x63A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7777 {"zmheosfraas", VX(4, 0x63B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7778 {"zmheosfans", VX(4, 0x63C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7779 {"zmheosfrans", VX(4, 0x63D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7780 {"zmhoui", VX(4, 0x640), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7781 {"zmhouiaa", VX(4, 0x642), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7782 {"zmhouiaas", VX(4, 0x643), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7783 {"zmhouian", VX(4, 0x644), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7784 {"zmhouians", VX(4, 0x645), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7785 {"zmhosi", VX(4, 0x648), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7786 {"zmhosiaa", VX(4, 0x64A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7787 {"zmhosiaas", VX(4, 0x64B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7788 {"zmhosian", VX(4, 0x64C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7789 {"zmhosians", VX(4, 0x64D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7790 {"zmhosui", VX(4, 0x650), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7791 {"zmhosuiaa", VX(4, 0x652), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7792 {"zmhosuiaas", VX(4, 0x653), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7793 {"zmhosuian", VX(4, 0x654), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7794 {"zmhosuians", VX(4, 0x655), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7795 {"zmhosf", VX(4, 0x658), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7796 {"zmhosfr", VX(4, 0x659), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7797 {"zmhosfaas", VX(4, 0x65A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7798 {"zmhosfraas", VX(4, 0x65B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7799 {"zmhosfans", VX(4, 0x65C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7800 {"zmhosfrans", VX(4, 0x65D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7801 {"zvmhuih", VX(4, 0x660), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7802 {"zvmhuihs", VX(4, 0x661), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7803 {"zvmhuiaah", VX(4, 0x662), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7804 {"zvmhuiaahs", VX(4, 0x663), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7805 {"zvmhuianh", VX(4, 0x664), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7806 {"zvmhuianhs", VX(4, 0x665), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7807 {"zvmhsihs", VX(4, 0x669), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7808 {"zvmhsiaahs", VX(4, 0x66B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7809 {"zvmhsianhs", VX(4, 0x66D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7810 {"zvmhsuihs", VX(4, 0x671), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7811 {"zvmhsuiaahs", VX(4, 0x673), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7812 {"zvmhsuianhs", VX(4, 0x675), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7813 {"zvmhsfh", VX(4, 0x678), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7814 {"zvmhsfrh", VX(4, 0x679), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7815 {"zvmhsfaahs", VX(4, 0x67A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7816 {"zvmhsfraahs", VX(4, 0x67B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7817 {"zvmhsfanhs", VX(4, 0x67C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7818 {"zvmhsfranhs", VX(4, 0x67D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7819 {"zvdotphaui", VX(4, 0x680), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7820 {"zvdotphauis", VX(4, 0x681), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7821 {"zvdotphauiaa", VX(4, 0x682), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7822 {"zvdotphauiaas", VX(4, 0x683), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7823 {"zvdotphauian", VX(4, 0x684), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7824 {"zvdotphauians", VX(4, 0x685), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7825 {"zvdotphasi", VX(4, 0x688), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7826 {"zvdotphasis", VX(4, 0x689), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7827 {"zvdotphasiaa", VX(4, 0x68A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7828 {"zvdotphasiaas", VX(4, 0x68B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7829 {"zvdotphasian", VX(4, 0x68C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7830 {"zvdotphasians", VX(4, 0x68D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7831 {"zvdotphasui", VX(4, 0x690), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7832 {"zvdotphasuis", VX(4, 0x691), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7833 {"zvdotphasuiaa", VX(4, 0x692), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7834 {"zvdotphasuiaas", VX(4, 0x693), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7835 {"zvdotphasuian", VX(4, 0x694), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7836 {"zvdotphasuians", VX(4, 0x695), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7837 {"zvdotphasfs", VX(4, 0x698), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7838 {"zvdotphasfrs", VX(4, 0x699), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7839 {"zvdotphasfaas", VX(4, 0x69A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7840 {"zvdotphasfraas", VX(4, 0x69B), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7841 {"zvdotphasfans", VX(4, 0x69C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7842 {"zvdotphasfrans", VX(4, 0x69D), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7843 {"zvdotphxaui", VX(4, 0x6A0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7844 {"zvdotphxauis", VX(4, 0x6A1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7845 {"zvdotphxauiaa", VX(4, 0x6A2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7846 {"zvdotphxauiaas", VX(4, 0x6A3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7847 {"zvdotphxauian", VX(4, 0x6A4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7848 {"zvdotphxauians", VX(4, 0x6A5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7849 {"zvdotphxasi", VX(4, 0x6A8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7850 {"zvdotphxasis", VX(4, 0x6A9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7851 {"zvdotphxasiaa", VX(4, 0x6AA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7852 {"zvdotphxasiaas", VX(4, 0x6AB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7853 {"zvdotphxasian", VX(4, 0x6AC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7854 {"zvdotphxasians", VX(4, 0x6AD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7855 {"zvdotphxasui", VX(4, 0x6B0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7856 {"zvdotphxasuis", VX(4, 0x6B1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7857 {"zvdotphxasuiaa", VX(4, 0x6B2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7858 {"zvdotphxasuiaas", VX(4, 0x6B3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7859 {"zvdotphxasuian", VX(4, 0x6B4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7860 {"zvdotphxasuians", VX(4, 0x6B5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7861 {"zvdotphxasfs", VX(4, 0x6B8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7862 {"zvdotphxasfrs", VX(4, 0x6B9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7863 {"zvdotphxasfaas", VX(4, 0x6BA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7864 {"zvdotphxasfraas", VX(4, 0x6BB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7865 {"zvdotphxasfans", VX(4, 0x6BC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7866 {"zvdotphxasfrans", VX(4, 0x6BD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7867 {"zvdotphsui", VX(4, 0x6C0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7868 {"zvdotphsuis", VX(4, 0x6C1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7869 {"zvdotphsuiaa", VX(4, 0x6C2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7870 {"zvdotphsuiaas", VX(4, 0x6C3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7871 {"zvdotphsuian", VX(4, 0x6C4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7872 {"zvdotphsuians", VX(4, 0x6C5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7873 {"zvdotphssi", VX(4, 0x6C8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7874 {"zvdotphssis", VX(4, 0x6C9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7875 {"zvdotphssiaa", VX(4, 0x6CA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7876 {"zvdotphssiaas", VX(4, 0x6CB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7877 {"zvdotphssian", VX(4, 0x6CC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7878 {"zvdotphssians", VX(4, 0x6CD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7879 {"zvdotphssui", VX(4, 0x6D0), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7880 {"zvdotphssuis", VX(4, 0x6D1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7881 {"zvdotphssuiaa", VX(4, 0x6D2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7882 {"zvdotphssuiaas", VX(4, 0x6D3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7883 {"zvdotphssuian", VX(4, 0x6D4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7884 {"zvdotphssuians", VX(4, 0x6D5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7885 {"zvdotphssfs", VX(4, 0x6D8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7886 {"zvdotphssfrs", VX(4, 0x6D9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7887 {"zvdotphssfaas", VX(4, 0x6DA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7888 {"zvdotphssfraas", VX(4, 0x6DB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7889 {"zvdotphssfans", VX(4, 0x6DC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7890 {"zvdotphssfrans", VX(4, 0x6DD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7891 {"zmwluis", VX(4, 0x6E1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7892 {"zmwluiaa", VX(4, 0x6E2), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7893 {"zmwluiaas", VX(4, 0x6E3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7894 {"zmwluian", VX(4, 0x6E4), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7895 {"zmwluians", VX(4, 0x6E5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7896 {"zmwlsis", VX(4, 0x6E9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7897 {"zmwlsiaas", VX(4, 0x6EB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7898 {"zmwlsians", VX(4, 0x6ED), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7899 {"zmwlsuis", VX(4, 0x6F1), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7900 {"zmwlsuiaas", VX(4, 0x6F3), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7901 {"zmwlsuians", VX(4, 0x6F5), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7902 {"zmwsf", VX(4, 0x6F8), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7903 {"zmwsfr", VX(4, 0x6F9), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7904 {"zmwsfaas", VX(4, 0x6FA), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7905 {"zmwsfraas", VX(4, 0x6FB), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7906 {"zmwsfans", VX(4, 0x6FC), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7907 {"zmwsfrans", VX(4, 0x6FD), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7908 {"zlddx", VX(4, 0x300), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7909 {"zldd", VX(4, 0x301), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
7910 {"zldwx", VX(4, 0x302), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7911 {"zldw", VX(4, 0x303), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
7912 {"zldhx", VX(4, 0x304), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7913 {"zldh", VX(4, 0x305), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8, RA}},
7914 {"zlwgsfdx", VX(4, 0x308), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7915 {"zlwgsfd", VX(4, 0x309), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
7916 {"zlwwosdx", VX(4, 0x30A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7917 {"zlwwosd", VX(4, 0x30B), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
7918 {"zlwhsplatwdx", VX(4, 0x30C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7919 {"zlwhsplatwd", VX(4, 0x30D), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
7920 {"zlwhsplatdx", VX(4, 0x30E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7921 {"zlwhsplatd", VX(4, 0x30F), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
7922 {"zlwhgwsfdx", VX(4, 0x310), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7923 {"zlwhgwsfd", VX(4, 0x311), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
7924 {"zlwhedx", VX(4, 0x312), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7925 {"zlwhed", VX(4, 0x313), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
7926 {"zlwhosdx", VX(4, 0x314), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7927 {"zlwhosd", VX(4, 0x315), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
7928 {"zlwhoudx", VX(4, 0x316), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7929 {"zlwhoud", VX(4, 0x317), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4, RA}},
7930 {"zlwhx", VX(4, 0x318), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7931 {"zlwh", VX(4, 0x319), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4, RA}},
7932 {"zlwwx", VX(4, 0x31A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7933 {"zlww", VX(4, 0x31B), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4, RA}},
7934 {"zlhgwsfx", VX(4, 0x31C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7935 {"zlhgwsf", VX(4, 0x31D), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
7936 {"zlhhsplatx", VX(4, 0x31E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7937 {"zlhhsplat", VX(4, 0x31F), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
7938 {"zstddx", VX(4, 0x320), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
7939 {"zstdd", VX(4, 0x321), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
7940 {"zstdwx", VX(4, 0x322), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
7941 {"zstdw", VX(4, 0x323), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
7942 {"zstdhx", VX(4, 0x324), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
7943 {"zstdh", VX(4, 0x325), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8, RA}},
7944 {"zstwhedx", VX(4, 0x328), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
7945 {"zstwhed", VX(4, 0x329), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4, RA}},
7946 {"zstwhodx", VX(4, 0x32A), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
7947 {"zstwhod", VX(4, 0x32B), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4, RA}},
7948 {"zlhhex", VX(4, 0x330), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7949 {"zlhhe", VX(4, 0x331), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
7950 {"zlhhosx", VX(4, 0x332), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7951 {"zlhhos", VX(4, 0x333), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
7952 {"zlhhoux", VX(4, 0x334), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7953 {"zlhhou", VX(4, 0x335), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2, RA}},
7954 {"zsthex", VX(4, 0x338), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
7955 {"zsthe", VX(4, 0x339), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2, RA}},
7956 {"zsthox", VX(4, 0x33A), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
7957 {"zstho", VX(4, 0x33B), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2, RA}},
7958 {"zstwhx", VX(4, 0x33C), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
7959 {"zstwh", VX(4, 0x33D), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4, RA}},
7960 {"zstwwx", VX(4, 0x33E), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
7961 {"zstww", VX(4, 0x33F), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4, RA}},
7962 {"zlddmx", VX(4, 0x340), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7963 {"zlddu", VX(4, 0x341), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
7964 {"zldwmx", VX(4, 0x342), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7965 {"zldwu", VX(4, 0x343), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
7966 {"zldhmx", VX(4, 0x344), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7967 {"zldhu", VX(4, 0x345), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_8_EX0, RA}},
7968 {"zlwgsfdmx", VX(4, 0x348), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7969 {"zlwgsfdu", VX(4, 0x349), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
7970 {"zlwwosdmx", VX(4, 0x34A), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7971 {"zlwwosdu", VX(4, 0x34B), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
7972 {"zlwhsplatwdmx", VX(4, 0x34C), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7973 {"zlwhsplatwdu", VX(4, 0x34D), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
7974 {"zlwhsplatdmx", VX(4, 0x34E), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7975 {"zlwhsplatdu", VX(4, 0x34F), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
7976 {"zlwhgwsfdmx", VX(4, 0x350), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7977 {"zlwhgwsfdu", VX(4, 0x351), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
7978 {"zlwhedmx", VX(4, 0x352), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7979 {"zlwhedu", VX(4, 0x353), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
7980 {"zlwhosdmx", VX(4, 0x354), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7981 {"zlwhosdu", VX(4, 0x355), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
7982 {"zlwhoudmx", VX(4, 0x356), VX_MASK, PPCLSP, 0, {RD_EVEN, RA, RB}},
7983 {"zlwhoudu", VX(4, 0x357), VX_MASK, PPCLSP, 0, {RD_EVEN, EVUIMM_4_EX0, RA}},
7984 {"zlwhmx", VX(4, 0x358), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7985 {"zlwhu", VX(4, 0x359), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4_EX0, RA}},
7986 {"zlwwmx", VX(4, 0x35A), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7987 {"zlwwu", VX(4, 0x35B), VX_MASK, PPCLSP, 0, {RD, EVUIMM_4_EX0, RA}},
7988 {"zlhgwsfmx", VX(4, 0x35C), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7989 {"zlhgwsfu", VX(4, 0x35D), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
7990 {"zlhhsplatmx", VX(4, 0x35E), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
7991 {"zlhhsplatu", VX(4, 0x35F), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
7992 {"zstddmx", VX(4, 0x360), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
7993 {"zstddu", VX(4, 0x361), VX_MASK, PPCLSP, 0, {RS, EVUIMM_8_EX0, RA}},
7994 {"zstdwmx", VX(4, 0x362), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
7995 {"zstdwu", VX(4, 0x363), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8_EX0, RA}},
7996 {"zstdhmx", VX(4, 0x364), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
7997 {"zstdhu", VX(4, 0x365), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_8_EX0, RA}},
7998 {"zstwhedmx", VX(4, 0x368), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
7999 {"zstwhedu", VX(4, 0x369), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4_EX0, RA}},
8000 {"zstwhodmx", VX(4, 0x36A), VX_MASK, PPCLSP, 0, {RS_EVEN, RA, RB}},
8001 {"zstwhodu", VX(4, 0x36B), VX_MASK, PPCLSP, 0, {RS_EVEN, EVUIMM_4_EX0, RA}},
8002 {"zlhhemx", VX(4, 0x370), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8003 {"zlhheu", VX(4, 0x371), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
8004 {"zlhhosmx", VX(4, 0x372), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8005 {"zlhhosu", VX(4, 0x373), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
8006 {"zlhhoumx", VX(4, 0x374), VX_MASK, PPCLSP, 0, {RD, RA, RB}},
8007 {"zlhhouu", VX(4, 0x375), VX_MASK, PPCLSP, 0, {RD, EVUIMM_2_EX0, RA}},
8008 {"zsthemx", VX(4, 0x378), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
8009 {"zstheu", VX(4, 0x379), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2_EX0, RA}},
8010 {"zsthomx", VX(4, 0x37A), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
8011 {"zsthou", VX(4, 0x37B), VX_MASK, PPCLSP, 0, {RS, EVUIMM_2_EX0, RA}},
8012 {"zstwhmx", VX(4, 0x37C), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
8013 {"zstwhu", VX(4, 0x37D), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4_EX0, RA}},
8014 {"zstwwmx", VX(4, 0x37E), VX_MASK, PPCLSP, 0, {RS, RA, RB}},
8015 {"zstwwu", VX(4, 0x37F), VX_MASK, PPCLSP, 0, {RS, EVUIMM_4_EX0, RA}},
8016
8017 {"e_cmpi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
8018 {"e_cmpwi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
8019 {"e_cmpli", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
8020 {"e_cmplwi", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
8021 {"e_addi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
8022 {"e_subi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}},
8023 {"e_addi.", SCI8(6,17), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
8024 {"e_addic", SCI8(6,18), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
8025 {"e_subic", SCI8(6,18), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}},
8026 {"e_addic.", SCI8(6,19), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
8027 {"e_subic.", SCI8(6,19), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}},
8028 {"e_mulli", SCI8(6,20), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
8029 {"e_subfic", SCI8(6,22), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
8030 {"e_subfic.", SCI8(6,23), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
8031 {"e_andi", SCI8(6,24), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
8032 {"e_andi.", SCI8(6,25), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
8033 {"e_nop", SCI8(6,26), 0xffffffff, PPCVLE, 0, {0}},
8034 {"e_ori", SCI8(6,26), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
8035 {"e_ori.", SCI8(6,27), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
8036 {"e_xori", SCI8(6,28), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
8037 {"e_xori.", SCI8(6,29), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
8038 {"e_lbzu", OPVUP(6,0), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8039 {"e_lhau", OPVUP(6,3), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8040 {"e_lhzu", OPVUP(6,1), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8041 {"e_lmw", OPVUP(6,8), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8042 {"e_lwzu", OPVUP(6,2), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8043 {"e_stbu", OPVUP(6,4), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8044 {"e_sthu", OPVUP(6,5), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8045 {"e_stwu", OPVUP(6,6), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8046 {"e_stmw", OPVUP(6,9), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
8047 {"e_ldmvgprw", OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8048 {"e_stmvgprw", OPVUPRT(6,17,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8049 {"e_ldmvsprw", OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8050 {"e_stmvsprw", OPVUPRT(6,17,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8051 {"e_ldmvsrrw", OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8052 {"e_stmvsrrw", OPVUPRT(6,17,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8053 {"e_ldmvcsrrw", OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8054 {"e_stmvcsrrw", OPVUPRT(6,17,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8055 {"e_ldmvdsrrw", OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8056 {"e_stmvdsrrw", OPVUPRT(6,17,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
8057 {"e_add16i", OP(7), OP_MASK, PPCVLE, 0, {RT, RA, SI}},
8058 {"e_la", OP(7), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8059 {"e_sub16i", OP(7), OP_MASK, PPCVLE, 0, {RT, RA, NSI}},
8060
8061 {"se_addi", SE_IM5(8,0), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
8062 {"se_cmpli", SE_IM5(8,1), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
8063 {"se_subi", SE_IM5(9,0), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
8064 {"se_subi.", SE_IM5(9,1), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
8065 {"se_cmpi", SE_IM5(10,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8066 {"se_bmaski", SE_IM5(11,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8067 {"se_andi", SE_IM5(11,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8068
8069 {"e_lbz", OP(12), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8070 {"e_stb", OP(13), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8071 {"e_lha", OP(14), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8072
8073 {"se_srw", SE_RR(16,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8074 {"se_sraw", SE_RR(16,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8075 {"se_slw", SE_RR(16,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8076 {"se_nop", SE_RR(17,0), 0xffff, PPCVLE, 0, {0}},
8077 {"se_or", SE_RR(17,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8078 {"se_andc", SE_RR(17,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8079 {"se_and", SE_RR(17,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8080 {"se_and.", SE_RR(17,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
8081 {"se_li", IM7(9), IM7_MASK, PPCVLE, 0, {RX, UI7}},
8082
8083 {"e_lwz", OP(20), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8084 {"e_stw", OP(21), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8085 {"e_lhz", OP(22), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8086 {"e_sth", OP(23), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
8087
8088 {"se_bclri", SE_IM5(24,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8089 {"se_bgeni", SE_IM5(24,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8090 {"se_bseti", SE_IM5(25,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8091 {"se_btsti", SE_IM5(25,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8092 {"se_srwi", SE_IM5(26,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8093 {"se_srawi", SE_IM5(26,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8094 {"se_slwi", SE_IM5(27,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
8095
8096 {"e_lis", I16L(28,28), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
8097 {"e_and2is.", I16L(28,29), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
8098 {"e_or2is", I16L(28,26), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
8099 {"e_and2i.", I16L(28,25), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
8100 {"e_or2i", I16L(28,24), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
8101 {"e_cmphl16i", IA16(28,23), IA16_MASK, PPCVLE, 0, {RA, VLEUIMM}},
8102 {"e_cmph16i", IA16(28,22), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}},
8103 {"e_cmpl16i", I16A(28,21), I16A_MASK, PPCVLE, 0, {RA, VLEUIMM}},
8104 {"e_mull2i", I16A(28,20), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
8105 {"e_cmp16i", IA16(28,19), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}},
8106 {"e_sub2is", I16A(28,18), I16A_MASK, PPCVLE, 0, {RA, VLENSIMM}},
8107 {"e_add2is", I16A(28,18), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
8108 {"e_sub2i.", I16A(28,17), I16A_MASK, PPCVLE, 0, {RA, VLENSIMM}},
8109 {"e_add2i.", I16A(28,17), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
8110 {"e_li", LI20(28,0), LI20_MASK, PPCVLE, 0, {RT, IMM20}},
8111 {"e_rlwimi", M(29,0), M_MASK, PPCVLE, 0, {RA, RS, SH, MB, ME}},
8112 {"e_rlwinm", M(29,1), M_MASK, PPCVLE, 0, {RA, RT, SH, MBE, ME}},
8113 {"e_b", BD24(30,0,0), BD24_MASK, PPCVLE, 0, {B24}},
8114 {"e_bl", BD24(30,0,1), BD24_MASK, PPCVLE, 0, {B24}},
8115 {"e_bdnz", EBD15(30,8,BO32DNZ,0), EBD15_MASK, PPCVLE, 0, {B15}},
8116 {"e_bdnzl", EBD15(30,8,BO32DNZ,1), EBD15_MASK, PPCVLE, 0, {B15}},
8117 {"e_bdz", EBD15(30,8,BO32DZ,0), EBD15_MASK, PPCVLE, 0, {B15}},
8118 {"e_bdzl", EBD15(30,8,BO32DZ,1), EBD15_MASK, PPCVLE, 0, {B15}},
8119 {"e_bge", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8120 {"e_bgel", EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8121 {"e_bnl", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8122 {"e_bnll", EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8123 {"e_blt", EBD15BI(30,8,BO32T,CBLT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8124 {"e_bltl", EBD15BI(30,8,BO32T,CBLT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8125 {"e_bgt", EBD15BI(30,8,BO32T,CBGT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8126 {"e_bgtl", EBD15BI(30,8,BO32T,CBGT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8127 {"e_ble", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8128 {"e_blel", EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8129 {"e_bng", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8130 {"e_bngl", EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8131 {"e_bne", EBD15BI(30,8,BO32F,CBEQ,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8132 {"e_bnel", EBD15BI(30,8,BO32F,CBEQ,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8133 {"e_beq", EBD15BI(30,8,BO32T,CBEQ,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8134 {"e_beql", EBD15BI(30,8,BO32T,CBEQ,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8135 {"e_bso", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8136 {"e_bsol", EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8137 {"e_bun", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8138 {"e_bunl", EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8139 {"e_bns", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8140 {"e_bnsl", EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8141 {"e_bnu", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8142 {"e_bnul", EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
8143 {"e_bc", BD15(30,8,0), BD15_MASK, PPCVLE, 0, {BO32, BI32, B15}},
8144 {"e_bcl", BD15(30,8,1), BD15_MASK, PPCVLE, 0, {BO32, BI32, B15}},
8145
8146 {"e_bf", EBD15(30,8,BO32F,0), EBD15_MASK, PPCVLE, 0, {BI32,B15}},
8147 {"e_bfl", EBD15(30,8,BO32F,1), EBD15_MASK, PPCVLE, 0, {BI32,B15}},
8148 {"e_bt", EBD15(30,8,BO32T,0), EBD15_MASK, PPCVLE, 0, {BI32,B15}},
8149 {"e_btl", EBD15(30,8,BO32T,1), EBD15_MASK, PPCVLE, 0, {BI32,B15}},
8150
8151 {"e_cmph", X(31,14), X_MASK, PPCVLE, 0, {CRD, RA, RB}},
8152 {"e_sc", X(31,36), XRTRA_MASK, PPCVLE, 0, {ELEV}},
8153 {"e_cmphl", X(31,46), X_MASK, PPCVLE, 0, {CRD, RA, RB}},
8154 {"e_crandc", XL(31,129), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
8155 {"e_crnand", XL(31,225), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
8156 {"e_crnot", XL(31,33), XL_MASK, PPCVLE, 0, {BT, BA, BBA}},
8157 {"e_crnor", XL(31,33), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
8158 {"e_crclr", XL(31,193), XL_MASK, PPCVLE, 0, {BT, BAT, BBA}},
8159 {"e_crxor", XL(31,193), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
8160 {"e_mcrf", XL(31,16), XL_MASK, PPCVLE, 0, {CRD, CR}},
8161 {"e_slwi", EX(31,112), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
8162 {"e_slwi.", EX(31,113), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
8163
8164 {"e_crand", XL(31,257), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
8165
8166 {"e_rlw", EX(31,560), EX_MASK, PPCVLE, 0, {RA, RS, RB}},
8167 {"e_rlw.", EX(31,561), EX_MASK, PPCVLE, 0, {RA, RS, RB}},
8168
8169 {"e_crset", XL(31,289), XL_MASK, PPCVLE, 0, {BT, BAT, BBA}},
8170 {"e_creqv", XL(31,289), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
8171
8172 {"e_rlwi", EX(31,624), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
8173 {"e_rlwi.", EX(31,625), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
8174
8175 {"e_crorc", XL(31,417), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
8176
8177 {"e_crmove", XL(31,449), XL_MASK, PPCVLE, 0, {BT, BA, BBA}},
8178 {"e_cror", XL(31,449), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
8179
8180 {"mtmas1", XSPR(31,467,625), XSPR_MASK, PPCVLE, 0, {RS}},
8181
8182 {"e_srwi", EX(31,1136), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
8183 {"e_srwi.", EX(31,1137), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
8184
8185 {"se_lbz", SD4(8), SD4_MASK, PPCVLE, 0, {RZ, SE_SD, RX}},
8186
8187 {"se_stb", SD4(9), SD4_MASK, PPCVLE, 0, {RZ, SE_SD, RX}},
8188
8189 {"se_lhz", SD4(10), SD4_MASK, PPCVLE, 0, {RZ, SE_SDH, RX}},
8190
8191 {"se_sth", SD4(11), SD4_MASK, PPCVLE, 0, {RZ, SE_SDH, RX}},
8192
8193 {"se_lwz", SD4(12), SD4_MASK, PPCVLE, 0, {RZ, SE_SDW, RX}},
8194
8195 {"se_stw", SD4(13), SD4_MASK, PPCVLE, 0, {RZ, SE_SDW, RX}},
8196
8197 {"se_bge", EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, 0, {B8}},
8198 {"se_bnl", EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, 0, {B8}},
8199 {"se_ble", EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, 0, {B8}},
8200 {"se_bng", EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, 0, {B8}},
8201 {"se_bne", EBD8IO(28,0,2), EBD8IO3_MASK, PPCVLE, 0, {B8}},
8202 {"se_bns", EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, 0, {B8}},
8203 {"se_bnu", EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, 0, {B8}},
8204 {"se_bf", EBD8IO(28,0,0), EBD8IO2_MASK, PPCVLE, 0, {BI16, B8}},
8205 {"se_blt", EBD8IO(28,1,0), EBD8IO3_MASK, PPCVLE, 0, {B8}},
8206 {"se_bgt", EBD8IO(28,1,1), EBD8IO3_MASK, PPCVLE, 0, {B8}},
8207 {"se_beq", EBD8IO(28,1,2), EBD8IO3_MASK, PPCVLE, 0, {B8}},
8208 {"se_bso", EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, 0, {B8}},
8209 {"se_bun", EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, 0, {B8}},
8210 {"se_bt", EBD8IO(28,1,0), EBD8IO2_MASK, PPCVLE, 0, {BI16, B8}},
8211 {"se_bc", BD8IO(28), BD8IO_MASK, PPCVLE, 0, {BO16, BI16, B8}},
8212 {"se_b", BD8(58,0,0), BD8_MASK, PPCVLE, 0, {B8}},
8213 {"se_bl", BD8(58,0,1), BD8_MASK, PPCVLE, 0, {B8}},
8214 };
8215
8216 const int vle_num_opcodes =
8217 sizeof (vle_opcodes) / sizeof (vle_opcodes[0]);
8218 \f
8219 /* The macro table. This is only used by the assembler. */
8220
8221 /* The expressions of the form (-x ! 31) & (x | 31) have the value 0
8222 when x=0; 32-x when x is between 1 and 31; are negative if x is
8223 negative; and are 32 or more otherwise. This is what you want
8224 when, for instance, you are emulating a right shift by a
8225 rotate-left-and-mask, because the underlying instructions support
8226 shifts of size 0 but not shifts of size 32. By comparison, when
8227 extracting x bits from some word you want to use just 32-x, because
8228 the underlying instructions don't support extracting 0 bits but do
8229 support extracting the whole word (32 bits in this case). */
8230
8231 const struct powerpc_macro powerpc_macros[] = {
8232 {"extldi", 4, PPC64, "rldicr %0,%1,%3,(%2)-1"},
8233 {"extldi.", 4, PPC64, "rldicr. %0,%1,%3,(%2)-1"},
8234 {"extrdi", 4, PPC64, "rldicl %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"},
8235 {"extrdi.", 4, PPC64, "rldicl. %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"},
8236 {"insrdi", 4, PPC64, "rldimi %0,%1,64-((%2)+(%3)),%3"},
8237 {"insrdi.", 4, PPC64, "rldimi. %0,%1,64-((%2)+(%3)),%3"},
8238 {"rotrdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),0"},
8239 {"rotrdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),0"},
8240 {"sldi", 3, PPC64, "rldicr %0,%1,%2,63-(%2)"},
8241 {"sldi.", 3, PPC64, "rldicr. %0,%1,%2,63-(%2)"},
8242 {"srdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),%2"},
8243 {"srdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),%2"},
8244 {"clrrdi", 3, PPC64, "rldicr %0,%1,0,63-(%2)"},
8245 {"clrrdi.", 3, PPC64, "rldicr. %0,%1,0,63-(%2)"},
8246 {"clrlsldi", 4, PPC64, "rldic %0,%1,%3,(%2)-(%3)"},
8247 {"clrlsldi.",4, PPC64, "rldic. %0,%1,%3,(%2)-(%3)"},
8248
8249 {"extlwi", 4, PPCCOM, "rlwinm %0,%1,%3,0,(%2)-1"},
8250 {"extlwi.", 4, PPCCOM, "rlwinm. %0,%1,%3,0,(%2)-1"},
8251 {"extrwi", 4, PPCCOM, "rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
8252 {"extrwi.", 4, PPCCOM, "rlwinm. %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
8253 {"inslwi", 4, PPCCOM, "rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
8254 {"inslwi.", 4, PPCCOM, "rlwimi. %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
8255 {"insrwi", 4, PPCCOM, "rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
8256 {"insrwi.", 4, PPCCOM, "rlwimi. %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
8257 {"rotrwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
8258 {"rotrwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),0,31"},
8259 {"slwi", 3, PPCCOM, "rlwinm %0,%1,%2,0,31-(%2)"},
8260 {"sli", 3, PWRCOM, "rlinm %0,%1,%2,0,31-(%2)"},
8261 {"slwi.", 3, PPCCOM, "rlwinm. %0,%1,%2,0,31-(%2)"},
8262 {"sli.", 3, PWRCOM, "rlinm. %0,%1,%2,0,31-(%2)"},
8263 {"srwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
8264 {"sri", 3, PWRCOM, "rlinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
8265 {"srwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
8266 {"sri.", 3, PWRCOM, "rlinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
8267 {"clrrwi", 3, PPCCOM, "rlwinm %0,%1,0,0,31-(%2)"},
8268 {"clrrwi.", 3, PPCCOM, "rlwinm. %0,%1,0,0,31-(%2)"},
8269 {"clrlslwi", 4, PPCCOM, "rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
8270 {"clrlslwi.",4, PPCCOM, "rlwinm. %0,%1,%3,(%2)-(%3),31-(%3)"},
8271
8272 {"e_extlwi", 4, PPCVLE, "e_rlwinm %0,%1,%3,0,(%2)-1"},
8273 {"e_extrwi", 4, PPCVLE, "e_rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
8274 {"e_inslwi", 4, PPCVLE, "e_rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
8275 {"e_insrwi", 4, PPCVLE, "e_rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
8276 {"e_rotlwi", 3, PPCVLE, "e_rlwinm %0,%1,%2,0,31"},
8277 {"e_rotrwi", 3, PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
8278 {"e_slwi", 3, PPCVLE, "e_rlwinm %0,%1,%2,0,31-(%2)"},
8279 {"e_srwi", 3, PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
8280 {"e_clrlwi", 3, PPCVLE, "e_rlwinm %0,%1,0,%2,31"},
8281 {"e_clrrwi", 3, PPCVLE, "e_rlwinm %0,%1,0,0,31-(%2)"},
8282 {"e_clrlslwi",4, PPCVLE, "e_rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
8283 };
8284
8285 const int powerpc_num_macros =
8286 sizeof (powerpc_macros) / sizeof (powerpc_macros[0]);
This page took 0.435757 seconds and 5 git commands to generate.