Fix powerpc testsuite source errors
[deliverable/binutils-gdb.git] / opcodes / ppc-opc.c
CommitLineData
252b5132 1/* ppc-opc.c -- PowerPC opcode list
2571583a 2 Copyright (C) 1994-2017 Free Software Foundation, Inc.
252b5132
RH
3 Written by Ian Lance Taylor, Cygnus Support
4
9b201bb5 5 This file is part of the GNU opcodes library.
252b5132 6
9b201bb5
NC
7 This library is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3, or (at your option)
10 any later version.
252b5132 11
9b201bb5
NC
12 It is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 License for more details.
252b5132 16
112290ab 17 You should have received a copy of the GNU General Public License
9b201bb5
NC
18 along with this file; see the file COPYING. If not, write to the
19 Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
20 MA 02110-1301, USA. */
252b5132 21
0d8dfecf 22#include "sysdep.h"
df7b86aa 23#include <stdio.h>
252b5132
RH
24#include "opcode/ppc.h"
25#include "opintl.h"
26
27/* This file holds the PowerPC opcode table. The opcode table
28 includes almost all of the extended instruction mnemonics. This
29 permits the disassembler to use them, and simplifies the assembler
30 logic, at the cost of increasing the table size. The table is
31 strictly constant data, so the compiler should be able to put it in
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
b9c361e0
JL
40static unsigned long insert_arx (unsigned long, long, ppc_cpu_t, const char **);
41static long extract_arx (unsigned long, ppc_cpu_t, int *);
42static unsigned long insert_ary (unsigned long, long, ppc_cpu_t, const char **);
43static long extract_ary (unsigned long, ppc_cpu_t, int *);
fa452fa6
PB
44static unsigned long insert_bat (unsigned long, long, ppc_cpu_t, const char **);
45static long extract_bat (unsigned long, ppc_cpu_t, int *);
46static unsigned long insert_bba (unsigned long, long, ppc_cpu_t, const char **);
47static long extract_bba (unsigned long, ppc_cpu_t, int *);
48static unsigned long insert_bdm (unsigned long, long, ppc_cpu_t, const char **);
49static long extract_bdm (unsigned long, ppc_cpu_t, int *);
50static unsigned long insert_bdp (unsigned long, long, ppc_cpu_t, const char **);
51static long extract_bdp (unsigned long, ppc_cpu_t, int *);
52static unsigned long insert_bo (unsigned long, long, ppc_cpu_t, const char **);
53static long extract_bo (unsigned long, ppc_cpu_t, int *);
54static unsigned long insert_boe (unsigned long, long, ppc_cpu_t, const char **);
55static long extract_boe (unsigned long, ppc_cpu_t, int *);
7b934113 56static unsigned long insert_esync (unsigned long, long, ppc_cpu_t, const char **);
a680de9a
PB
57static unsigned long insert_dcmxs (unsigned long, long, ppc_cpu_t, const char **);
58static long extract_dcmxs (unsigned long, ppc_cpu_t, int *);
59static unsigned long insert_dxd (unsigned long, long, ppc_cpu_t, const char **);
60static long extract_dxd (unsigned long, ppc_cpu_t, int *);
61static unsigned long insert_dxdn (unsigned long, long, ppc_cpu_t, const char **);
62static long extract_dxdn (unsigned long, ppc_cpu_t, int *);
fa452fa6
PB
63static unsigned long insert_fxm (unsigned long, long, ppc_cpu_t, const char **);
64static long extract_fxm (unsigned long, ppc_cpu_t, int *);
b9c361e0
JL
65static unsigned long insert_li20 (unsigned long, long, ppc_cpu_t, const char **);
66static long extract_li20 (unsigned long, ppc_cpu_t, int *);
aea77599 67static unsigned long insert_ls (unsigned long, long, ppc_cpu_t, const char **);
fa452fa6
PB
68static unsigned long insert_mbe (unsigned long, long, ppc_cpu_t, const char **);
69static long extract_mbe (unsigned long, ppc_cpu_t, int *);
70static unsigned long insert_mb6 (unsigned long, long, ppc_cpu_t, const char **);
71static long extract_mb6 (unsigned long, ppc_cpu_t, int *);
72static long extract_nb (unsigned long, ppc_cpu_t, int *);
989993d8 73static unsigned long insert_nbi (unsigned long, long, ppc_cpu_t, const char **);
fa452fa6
PB
74static unsigned long insert_nsi (unsigned long, long, ppc_cpu_t, const char **);
75static long extract_nsi (unsigned long, ppc_cpu_t, int *);
b9c361e0
JL
76static unsigned long insert_oimm (unsigned long, long, ppc_cpu_t, const char **);
77static long extract_oimm (unsigned long, ppc_cpu_t, int *);
fa452fa6
PB
78static unsigned long insert_ral (unsigned long, long, ppc_cpu_t, const char **);
79static unsigned long insert_ram (unsigned long, long, ppc_cpu_t, const char **);
80static unsigned long insert_raq (unsigned long, long, ppc_cpu_t, const char **);
81static unsigned long insert_ras (unsigned long, long, ppc_cpu_t, const char **);
82static unsigned long insert_rbs (unsigned long, long, ppc_cpu_t, const char **);
83static long extract_rbs (unsigned long, ppc_cpu_t, int *);
989993d8 84static unsigned long insert_rbx (unsigned long, long, ppc_cpu_t, const char **);
b9c361e0
JL
85static unsigned long insert_rx (unsigned long, long, ppc_cpu_t, const char **);
86static long extract_rx (unsigned long, ppc_cpu_t, int *);
87static unsigned long insert_ry (unsigned long, long, ppc_cpu_t, const char **);
88static long extract_ry (unsigned long, ppc_cpu_t, int *);
fa452fa6
PB
89static unsigned long insert_sh6 (unsigned long, long, ppc_cpu_t, const char **);
90static long extract_sh6 (unsigned long, ppc_cpu_t, int *);
b9c361e0
JL
91static unsigned long insert_sci8 (unsigned long, long, ppc_cpu_t, const char **);
92static long extract_sci8 (unsigned long, ppc_cpu_t, int *);
93static unsigned long insert_sci8n (unsigned long, long, ppc_cpu_t, const char **);
94static long extract_sci8n (unsigned long, ppc_cpu_t, int *);
95static unsigned long insert_sd4h (unsigned long, long, ppc_cpu_t, const char **);
96static long extract_sd4h (unsigned long, ppc_cpu_t, int *);
97static unsigned long insert_sd4w (unsigned long, long, ppc_cpu_t, const char **);
98static long extract_sd4w (unsigned long, ppc_cpu_t, int *);
fa452fa6
PB
99static unsigned long insert_spr (unsigned long, long, ppc_cpu_t, const char **);
100static long extract_spr (unsigned long, ppc_cpu_t, int *);
101static unsigned long insert_sprg (unsigned long, long, ppc_cpu_t, const char **);
102static long extract_sprg (unsigned long, ppc_cpu_t, int *);
103static unsigned long insert_tbr (unsigned long, long, ppc_cpu_t, const char **);
104static long extract_tbr (unsigned long, ppc_cpu_t, int *);
9b4e5766
PB
105static unsigned long insert_xt6 (unsigned long, long, ppc_cpu_t, const char **);
106static long extract_xt6 (unsigned long, ppc_cpu_t, int *);
a680de9a
PB
107static unsigned long insert_xtq6 (unsigned long, long, ppc_cpu_t, const char **);
108static long extract_xtq6 (unsigned long, ppc_cpu_t, int *);
9b4e5766
PB
109static unsigned long insert_xa6 (unsigned long, long, ppc_cpu_t, const char **);
110static long extract_xa6 (unsigned long, ppc_cpu_t, int *);
111static unsigned long insert_xb6 (unsigned long, long, ppc_cpu_t, const char **);
112static long extract_xb6 (unsigned long, ppc_cpu_t, int *);
113static unsigned long insert_xb6s (unsigned long, long, ppc_cpu_t, const char **);
114static long extract_xb6s (unsigned long, ppc_cpu_t, int *);
066be9f7
PB
115static unsigned long insert_xc6 (unsigned long, long, ppc_cpu_t, const char **);
116static long extract_xc6 (unsigned long, ppc_cpu_t, int *);
117static unsigned long insert_dm (unsigned long, long, ppc_cpu_t, const char **);
118static long extract_dm (unsigned long, ppc_cpu_t, int *);
b9c361e0
JL
119static unsigned long insert_vlesi (unsigned long, long, ppc_cpu_t, const char **);
120static long extract_vlesi (unsigned long, ppc_cpu_t, int *);
121static unsigned long insert_vlensi (unsigned long, long, ppc_cpu_t, const char **);
122static long extract_vlensi (unsigned long, ppc_cpu_t, int *);
123static unsigned long insert_vleui (unsigned long, long, ppc_cpu_t, const char **);
124static long extract_vleui (unsigned long, ppc_cpu_t, int *);
125static unsigned long insert_vleil (unsigned long, long, ppc_cpu_t, const char **);
126static long extract_vleil (unsigned long, ppc_cpu_t, int *);
252b5132
RH
127\f
128/* The operands table.
129
717bbdf1 130 The fields are bitm, shift, insert, extract, flags.
252b5132
RH
131
132 We used to put parens around the various additions, like the one
133 for BA just below. However, that caused trouble with feeble
134 compilers with a limit on depth of a parenthesized expression, like
135 (reportedly) the compiler in Microsoft Developer Studio 5. So we
136 omit the parens, since the macros are never used in a context where
137 the addition will be ambiguous. */
138
139const struct powerpc_operand powerpc_operands[] =
140{
141 /* The zero index is used to indicate the end of the list of
142 operands. */
143#define UNUSED 0
bbac1f2a 144 { 0, 0, NULL, NULL, 0 },
252b5132
RH
145
146 /* The BA field in an XL form instruction. */
147#define BA UNUSED + 1
717bbdf1
AM
148 /* The BI field in a B form or XL form instruction. */
149#define BI BA
150#define BI_MASK (0x1f << 16)
b9c361e0 151 { 0x1f, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
252b5132
RH
152
153 /* The BA field in an XL form instruction when it must be the same
154 as the BT field in the same instruction. */
155#define BAT BA + 1
b84bf58a 156 { 0x1f, 16, insert_bat, extract_bat, PPC_OPERAND_FAKE },
252b5132
RH
157
158 /* The BB field in an XL form instruction. */
159#define BB BAT + 1
160#define BB_MASK (0x1f << 11)
b9c361e0 161 { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR_BIT },
252b5132
RH
162
163 /* The BB field in an XL form instruction when it must be the same
164 as the BA field in the same instruction. */
165#define BBA BB + 1
c7a5aa9c
PB
166 /* The VB field in a VX form instruction when it must be the same
167 as the VA field in the same instruction. */
168#define VBA BBA
b84bf58a 169 { 0x1f, 11, insert_bba, extract_bba, PPC_OPERAND_FAKE },
252b5132
RH
170
171 /* The BD field in a B form instruction. The lower two bits are
172 forced to zero. */
173#define BD BBA + 1
b84bf58a 174 { 0xfffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
252b5132
RH
175
176 /* The BD field in a B form instruction when absolute addressing is
177 used. */
178#define BDA BD + 1
b84bf58a 179 { 0xfffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
252b5132
RH
180
181 /* The BD field in a B form instruction when the - modifier is used.
182 This sets the y bit of the BO field appropriately. */
183#define BDM BDA + 1
b84bf58a 184 { 0xfffc, 0, insert_bdm, extract_bdm,
e43de63c 185 PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
252b5132
RH
186
187 /* The BD field in a B form instruction when the - modifier is used
188 and absolute address is used. */
189#define BDMA BDM + 1
b84bf58a 190 { 0xfffc, 0, insert_bdm, extract_bdm,
e43de63c 191 PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
252b5132
RH
192
193 /* The BD field in a B form instruction when the + modifier is used.
194 This sets the y bit of the BO field appropriately. */
195#define BDP BDMA + 1
b84bf58a 196 { 0xfffc, 0, insert_bdp, extract_bdp,
e43de63c 197 PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
252b5132
RH
198
199 /* The BD field in a B form instruction when the + modifier is used
200 and absolute addressing is used. */
201#define BDPA BDP + 1
b84bf58a 202 { 0xfffc, 0, insert_bdp, extract_bdp,
e43de63c 203 PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
252b5132
RH
204
205 /* The BF field in an X or XL form instruction. */
206#define BF BDPA + 1
717bbdf1
AM
207 /* The CRFD field in an X form instruction. */
208#define CRFD BF
b9c361e0
JL
209 /* The CRD field in an XL form instruction. */
210#define CRD BF
211 { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG },
252b5132 212
ea192fa3
PB
213 /* The BF field in an X or XL form instruction. */
214#define BFF BF + 1
215 { 0x7, 23, NULL, NULL, 0 },
216
252b5132
RH
217 /* An optional BF field. This is used for comparison instructions,
218 in which an omitted BF field is taken as zero. */
ea192fa3 219#define OBF BFF + 1
b9c361e0 220 { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
252b5132
RH
221
222 /* The BFA field in an X or XL form instruction. */
223#define BFA OBF + 1
b9c361e0 224 { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG },
252b5132 225
252b5132
RH
226 /* The BO field in a B form instruction. Certain values are
227 illegal. */
717bbdf1 228#define BO BFA + 1
252b5132 229#define BO_MASK (0x1f << 21)
b84bf58a 230 { 0x1f, 21, insert_bo, extract_bo, 0 },
252b5132
RH
231
232 /* The BO field in a B form instruction when the + or - modifier is
233 used. This is like the BO field, but it must be even. */
234#define BOE BO + 1
b84bf58a 235 { 0x1e, 21, insert_boe, extract_boe, 0 },
252b5132 236
6fd3a02d
PB
237 /* The RM field in an X form instruction. */
238#define RM BOE + 1
239 { 0x3, 11, NULL, NULL, 0 },
240
241#define BH RM + 1
b84bf58a 242 { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
d0618d1c 243
252b5132 244 /* The BT field in an X or XL form instruction. */
d0618d1c 245#define BT BH + 1
b9c361e0
JL
246 { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT },
247
248 /* The BI16 field in a BD8 form instruction. */
249#define BI16 BT + 1
250 { 0x3, 8, NULL, NULL, PPC_OPERAND_CR_BIT },
251
252 /* The BI32 field in a BD15 form instruction. */
253#define BI32 BI16 + 1
254 { 0xf, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
255
256 /* The BO32 field in a BD15 form instruction. */
257#define BO32 BI32 + 1
258 { 0x3, 20, NULL, NULL, 0 },
259
260 /* The B8 field in a BD8 form instruction. */
261#define B8 BO32 + 1
262 { 0x1fe, -1, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
263
264 /* The B15 field in a BD15 form instruction. The lowest bit is
265 forced to zero. */
266#define B15 B8 + 1
267 { 0xfffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
268
269 /* The B24 field in a BD24 form instruction. The lowest bit is
270 forced to zero. */
271#define B24 B15 + 1
272 { 0x1fffffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
252b5132
RH
273
274 /* The condition register number portion of the BI field in a B form
275 or XL form instruction. This is used for the extended
276 conditional branch mnemonics, which set the lower two bits of the
277 BI field. This field is optional. */
b9c361e0
JL
278#define CR B24 + 1
279 { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
252b5132 280
23976049
EZ
281 /* The CRB field in an X form instruction. */
282#define CRB CR + 1
717bbdf1
AM
283 /* The MB field in an M form instruction. */
284#define MB CRB
285#define MB_MASK (0x1f << 6)
b84bf58a 286 { 0x1f, 6, NULL, NULL, 0 },
23976049 287
b9c361e0
JL
288 /* The CRD32 field in an XL form instruction. */
289#define CRD32 CRB + 1
290 { 0x3, 21, NULL, NULL, PPC_OPERAND_CR_REG },
291
23976049 292 /* The CRFS field in an X form instruction. */
b9c361e0
JL
293#define CRFS CRD32 + 1
294 { 0x7, 0, NULL, NULL, PPC_OPERAND_CR_REG },
295
296#define CRS CRFS + 1
297 { 0x3, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
23976049 298
418c1742 299 /* The CT field in an X form instruction. */
b9c361e0 300#define CT CRS + 1
717bbdf1
AM
301 /* The MO field in an mbar instruction. */
302#define MO CT
b84bf58a 303 { 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
418c1742 304
252b5132
RH
305 /* The D field in a D form instruction. This is a displacement off
306 a register, and implies that the next operand is a register in
307 parentheses. */
418c1742 308#define D CT + 1
b84bf58a 309 { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
252b5132 310
b9c361e0
JL
311 /* The D8 field in a D form instruction. This is a displacement off
312 a register, and implies that the next operand is a register in
313 parentheses. */
314#define D8 D + 1
315 { 0xff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
316
a680de9a
PB
317 /* The DCMX field in an X form instruction. */
318#define DCMX D8 + 1
319 { 0x7f, 16, NULL, NULL, 0 },
320
321 /* The split DCMX field in an X form instruction. */
322#define DCMXS DCMX + 1
323 { 0x7f, PPC_OPSHIFT_INV, insert_dcmxs, extract_dcmxs, 0 },
324
adadcc0c
AM
325 /* The DQ field in a DQ form instruction. This is like D, but the
326 lower four bits are forced to zero. */
a680de9a 327#define DQ DCMXS + 1
b84bf58a
AM
328 { 0xfff0, 0, NULL, NULL,
329 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
adadcc0c 330
252b5132
RH
331 /* The DS field in a DS form instruction. This is like D, but the
332 lower two bits are forced to zero. */
adadcc0c 333#define DS DQ + 1
b84bf58a
AM
334 { 0xfffc, 0, NULL, NULL,
335 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS },
252b5132 336
c0637f3a
PB
337 /* The DUIS or BHRBE fields in a XFX form instruction, 10 bits
338 unsigned imediate */
19a6653c 339#define DUIS DS + 1
c0637f3a 340#define BHRBE DUIS
19a6653c
AM
341 { 0x3ff, 11, NULL, NULL, 0 },
342
a680de9a
PB
343 /* The split D field in a DX form instruction. */
344#define DXD DUIS + 1
345 { 0xffff, PPC_OPSHIFT_INV, insert_dxd, extract_dxd,
346 PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
347
348 /* The split ND field in a DX form instruction.
349 This is the same as the DX field, only negated. */
350#define NDXD DXD + 1
351 { 0xffff, PPC_OPSHIFT_INV, insert_dxdn, extract_dxdn,
352 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
353
252b5132 354 /* The E field in a wrteei instruction. */
c3d65c1c 355 /* And the W bit in the pair singles instructions. */
c0637f3a 356 /* And the ST field in a VX form instruction. */
a680de9a 357#define E NDXD + 1
c3d65c1c 358#define PSW E
c0637f3a 359#define ST E
b84bf58a 360 { 0x1, 15, NULL, NULL, 0 },
252b5132
RH
361
362 /* The FL1 field in a POWER SC form instruction. */
363#define FL1 E + 1
717bbdf1
AM
364 /* The U field in an X form instruction. */
365#define U FL1
b84bf58a 366 { 0xf, 12, NULL, NULL, 0 },
252b5132
RH
367
368 /* The FL2 field in a POWER SC form instruction. */
369#define FL2 FL1 + 1
b84bf58a 370 { 0x7, 2, NULL, NULL, 0 },
252b5132
RH
371
372 /* The FLM field in an XFL form instruction. */
373#define FLM FL2 + 1
b84bf58a 374 { 0xff, 17, NULL, NULL, 0 },
252b5132
RH
375
376 /* The FRA field in an X or A form instruction. */
377#define FRA FLM + 1
378#define FRA_MASK (0x1f << 16)
b84bf58a 379 { 0x1f, 16, NULL, NULL, PPC_OPERAND_FPR },
252b5132 380
989993d8
JB
381 /* The FRAp field of DFP instructions. */
382#define FRAp FRA + 1
383 { 0x1e, 16, NULL, NULL, PPC_OPERAND_FPR },
384
252b5132 385 /* The FRB field in an X or A form instruction. */
989993d8 386#define FRB FRAp + 1
252b5132 387#define FRB_MASK (0x1f << 11)
b84bf58a 388 { 0x1f, 11, NULL, NULL, PPC_OPERAND_FPR },
252b5132 389
989993d8
JB
390 /* The FRBp field of DFP instructions. */
391#define FRBp FRB + 1
392 { 0x1e, 11, NULL, NULL, PPC_OPERAND_FPR },
393
252b5132 394 /* The FRC field in an A form instruction. */
989993d8 395#define FRC FRBp + 1
252b5132 396#define FRC_MASK (0x1f << 6)
b84bf58a 397 { 0x1f, 6, NULL, NULL, PPC_OPERAND_FPR },
252b5132
RH
398
399 /* The FRS field in an X form instruction or the FRT field in a D, X
400 or A form instruction. */
401#define FRS FRC + 1
402#define FRT FRS
b84bf58a 403 { 0x1f, 21, NULL, NULL, PPC_OPERAND_FPR },
252b5132 404
989993d8
JB
405 /* The FRSp field of stfdp or the FRTp field of lfdp and DFP
406 instructions. */
407#define FRSp FRS + 1
408#define FRTp FRSp
409 { 0x1e, 21, NULL, NULL, PPC_OPERAND_FPR },
410
252b5132 411 /* The FXM field in an XFX instruction. */
989993d8 412#define FXM FRSp + 1
b84bf58a 413 { 0xff, 12, insert_fxm, extract_fxm, 0 },
c168870a
AM
414
415 /* Power4 version for mfcr. */
416#define FXM4 FXM + 1
e43de63c
AM
417 { 0xff, 12, insert_fxm, extract_fxm,
418 PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE},
11a0cf2e
PB
419 /* If the FXM4 operand is ommitted, use the sentinel value -1. */
420 { -1, -1, NULL, NULL, 0},
252b5132 421
b9c361e0 422 /* The IMM20 field in an LI instruction. */
11a0cf2e 423#define IMM20 FXM4 + 2
b9c361e0
JL
424 { 0xfffff, PPC_OPSHIFT_INV, insert_li20, extract_li20, PPC_OPERAND_SIGNED},
425
252b5132 426 /* The L field in a D or X form instruction. */
b9c361e0 427#define L IMM20 + 1
a5721ba2
AM
428 { 0x1, 21, NULL, NULL, 0 },
429
430 /* The optional L field in tlbie and tlbiel instructions. */
431#define LOPT L + 1
5817ffd1 432 /* The R field in a HTM X form instruction. */
a5721ba2 433#define HTM_R LOPT
b84bf58a 434 { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
252b5132 435
a5721ba2
AM
436 /* The optional (for 32-bit) L field in cmp[l][i] instructions. */
437#define L32OPT LOPT + 1
438 { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL32 },
a680de9a 439
a5721ba2
AM
440 /* The L field in dcbf instruction. */
441#define L2OPT L32OPT + 1
442 { 0x3, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
a680de9a 443
dce75bf9 444 /* The LEV field in a POWER SVC / POWER9 SCV form instruction. */
a5721ba2 445#define SVC_LEV L2OPT + 1
b84bf58a 446 { 0x7f, 5, NULL, NULL, 0 },
252b5132 447
1ed8e1e4
AM
448 /* The LEV field in an SC form instruction. */
449#define LEV SVC_LEV + 1
b84bf58a 450 { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL },
1ed8e1e4 451
252b5132
RH
452 /* The LI field in an I form instruction. The lower two bits are
453 forced to zero. */
454#define LI LEV + 1
b84bf58a 455 { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
252b5132
RH
456
457 /* The LI field in an I form instruction when used as an absolute
458 address. */
459#define LIA LI + 1
b84bf58a 460 { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
252b5132 461
066be9f7 462 /* The LS or WC field in an X (sync or wait) form instruction. */
6ba045b1 463#define LS LIA + 1
066be9f7 464#define WC LS
7b934113 465 { 0x3, 21, insert_ls, NULL, PPC_OPERAND_OPTIONAL },
6ba045b1 466
252b5132 467 /* The ME field in an M form instruction. */
717bbdf1 468#define ME LS + 1
252b5132 469#define ME_MASK (0x1f << 1)
b84bf58a 470 { 0x1f, 1, NULL, NULL, 0 },
252b5132
RH
471
472 /* The MB and ME fields in an M form instruction expressed a single
473 operand which is a bitmask indicating which bits to select. This
474 is a two operand form using PPC_OPERAND_NEXT. See the
475 description in opcode/ppc.h for what this means. */
476#define MBE ME + 1
b84bf58a 477 { 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT },
eb42fac1 478 { -1, 0, insert_mbe, extract_mbe, 0 },
252b5132
RH
479
480 /* The MB or ME field in an MD or MDS form instruction. The high
481 bit is wrapped to the low end. */
482#define MB6 MBE + 2
483#define ME6 MB6
484#define MB6_MASK (0x3f << 5)
b84bf58a 485 { 0x3f, 5, insert_mb6, extract_mb6, 0 },
252b5132
RH
486
487 /* The NB field in an X form instruction. The value 32 is stored as
488 0. */
717bbdf1 489#define NB MB6 + 1
b84bf58a 490 { 0x1f, 11, NULL, extract_nb, PPC_OPERAND_PLUS1 },
252b5132 491
989993d8
JB
492 /* The NBI field in an lswi instruction, which has special value
493 restrictions. The value 32 is stored as 0. */
494#define NBI NB + 1
495 { 0x1f, 11, insert_nbi, extract_nb, PPC_OPERAND_PLUS1 },
496
252b5132
RH
497 /* The NSI field in a D form instruction. This is the same as the
498 SI field, only negated. */
989993d8 499#define NSI NBI + 1
b84bf58a 500 { 0xffff, 0, insert_nsi, extract_nsi,
e43de63c
AM
501 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
502
503 /* The NSI field in a D form instruction when we accept a wide range
504 of positive values. */
505#define NSISIGNOPT NSI + 1
514e58b7 506 { 0xffff, 0, insert_nsi, extract_nsi,
e43de63c 507 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
252b5132 508
adadcc0c 509 /* The RA field in an D, DS, DQ, X, XO, M, or MDS form instruction. */
e43de63c 510#define RA NSISIGNOPT + 1
252b5132 511#define RA_MASK (0x1f << 16)
b84bf58a 512 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR },
252b5132 513
fdd12ef3
AM
514 /* As above, but 0 in the RA field means zero, not r0. */
515#define RA0 RA + 1
b84bf58a 516 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 },
fdd12ef3 517
989993d8 518 /* The RA field in the DQ form lq or an lswx instruction, which have special
adadcc0c 519 value restrictions. */
fdd12ef3 520#define RAQ RA0 + 1
989993d8 521#define RAX RAQ
b84bf58a 522 { 0x1f, 16, insert_raq, NULL, PPC_OPERAND_GPR_0 },
adadcc0c 523
252b5132
RH
524 /* The RA field in a D or X form instruction which is an updating
525 load, which means that the RA field may not be zero and may not
526 equal the RT field. */
adadcc0c 527#define RAL RAQ + 1
b84bf58a 528 { 0x1f, 16, insert_ral, NULL, PPC_OPERAND_GPR_0 },
252b5132
RH
529
530 /* The RA field in an lmw instruction, which has special value
531 restrictions. */
532#define RAM RAL + 1
b84bf58a 533 { 0x1f, 16, insert_ram, NULL, PPC_OPERAND_GPR_0 },
252b5132
RH
534
535 /* The RA field in a D or X form instruction which is an updating
536 store or an updating floating point load, which means that the RA
537 field may not be zero. */
538#define RAS RAM + 1
b84bf58a 539 { 0x1f, 16, insert_ras, NULL, PPC_OPERAND_GPR_0 },
252b5132 540
cee62821
PB
541 /* The RA field of the tlbwe, dccci and iccci instructions,
542 which are optional. */
fdd12ef3 543#define RAOPT RAS + 1
b84bf58a 544 { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
1f6c9eb0 545
252b5132 546 /* The RB field in an X, XO, M, or MDS form instruction. */
fdd12ef3 547#define RB RAOPT + 1
252b5132 548#define RB_MASK (0x1f << 11)
b84bf58a 549 { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR },
252b5132
RH
550
551 /* The RB field in an X form instruction when it must be the same as
552 the RS field in the instruction. This is used for extended
553 mnemonics like mr. */
554#define RBS RB + 1
b84bf58a 555 { 0x1f, 11, insert_rbs, extract_rbs, PPC_OPERAND_FAKE },
252b5132 556
989993d8
JB
557 /* The RB field in an lswx instruction, which has special value
558 restrictions. */
559#define RBX RBS + 1
560 { 0x1f, 11, insert_rbx, NULL, PPC_OPERAND_GPR },
561
cee62821 562 /* The RB field of the dccci and iccci instructions, which are optional. */
989993d8 563#define RBOPT RBX + 1
cee62821
PB
564 { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
565
a680de9a
PB
566 /* The RC register field in an maddld, maddhd or maddhdu instruction. */
567#define RC RBOPT + 1
568 { 0x1f, 6, NULL, NULL, PPC_OPERAND_GPR },
569
252b5132
RH
570 /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
571 instruction or the RT field in a D, DS, X, XFX or XO form
572 instruction. */
a680de9a 573#define RS RC + 1
252b5132
RH
574#define RT RS
575#define RT_MASK (0x1f << 21)
b9c361e0 576#define RD RS
b84bf58a 577 { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR },
252b5132 578
588925d0
PB
579 /* The RS and RT fields of the DS form stq and DQ form lq instructions,
580 which have special value restrictions. */
adadcc0c 581#define RSQ RS + 1
717bbdf1 582#define RTQ RSQ
588925d0 583 { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR },
adadcc0c 584
1f6c9eb0 585 /* The RS field of the tlbwe instruction, which is optional. */
717bbdf1 586#define RSO RSQ + 1
eed0d89a 587#define RTO RSO
b84bf58a 588 { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
1f6c9eb0 589
b9c361e0
JL
590 /* The RX field of the SE_RR form instruction. */
591#define RX RSO + 1
592 { 0x1f, PPC_OPSHIFT_INV, insert_rx, extract_rx, PPC_OPERAND_GPR },
593
594 /* The ARX field of the SE_RR form instruction. */
595#define ARX RX + 1
596 { 0x1f, PPC_OPSHIFT_INV, insert_arx, extract_arx, PPC_OPERAND_GPR },
597
598 /* The RY field of the SE_RR form instruction. */
599#define RY ARX + 1
600#define RZ RY
601 { 0x1f, PPC_OPSHIFT_INV, insert_ry, extract_ry, PPC_OPERAND_GPR },
602
603 /* The ARY field of the SE_RR form instruction. */
604#define ARY RY + 1
605 { 0x1f, PPC_OPSHIFT_INV, insert_ary, extract_ary, PPC_OPERAND_GPR },
606
607 /* The SCLSCI8 field in a D form instruction. */
608#define SCLSCI8 ARY + 1
609 { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8, extract_sci8, 0 },
610
611 /* The SCLSCI8N field in a D form instruction. This is the same as the
612 SCLSCI8 field, only negated. */
613#define SCLSCI8N SCLSCI8 + 1
614 { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8n, extract_sci8n,
e43de63c 615 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
b9c361e0
JL
616
617 /* The SD field of the SD4 form instruction. */
618#define SE_SD SCLSCI8N + 1
619 { 0xf, 8, NULL, NULL, PPC_OPERAND_PARENS },
620
621 /* The SD field of the SD4 form instruction, for halfword. */
622#define SE_SDH SE_SD + 1
623 { 0x1e, PPC_OPSHIFT_INV, insert_sd4h, extract_sd4h, PPC_OPERAND_PARENS },
624
625 /* The SD field of the SD4 form instruction, for word. */
626#define SE_SDW SE_SDH + 1
627 { 0x3c, PPC_OPSHIFT_INV, insert_sd4w, extract_sd4w, PPC_OPERAND_PARENS },
628
252b5132 629 /* The SH field in an X or M form instruction. */
b9c361e0 630#define SH SE_SDW + 1
252b5132 631#define SH_MASK (0x1f << 11)
717bbdf1
AM
632 /* The other UIMM field in a EVX form instruction. */
633#define EVUIMM SH
a680de9a
PB
634 /* The FC field in an atomic X form instruction. */
635#define FC SH
b84bf58a 636 { 0x1f, 11, NULL, NULL, 0 },
252b5132 637
5817ffd1
PB
638 /* The SI field in a HTM X form instruction. */
639#define HTM_SI SH + 1
640 { 0x1f, 11, NULL, NULL, PPC_OPERAND_SIGNED },
641
252b5132 642 /* The SH field in an MD form instruction. This is split. */
5817ffd1 643#define SH6 HTM_SI + 1
252b5132 644#define SH6_MASK ((0x1f << 11) | (1 << 1))
b9c361e0 645 { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_sh6, 0 },
252b5132 646
1f6c9eb0
ZW
647 /* The SH field of the tlbwe instruction, which is optional. */
648#define SHO SH6 + 1
b84bf58a 649 { 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
1f6c9eb0 650
252b5132 651 /* The SI field in a D form instruction. */
1f6c9eb0 652#define SI SHO + 1
b84bf58a 653 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
252b5132
RH
654
655 /* The SI field in a D form instruction when we accept a wide range
656 of positive values. */
657#define SISIGNOPT SI + 1
b84bf58a 658 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
252b5132 659
b9c361e0
JL
660 /* The SI8 field in a D form instruction. */
661#define SI8 SISIGNOPT + 1
662 { 0xff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
663
252b5132
RH
664 /* The SPR field in an XFX form instruction. This is flipped--the
665 lower 5 bits are stored in the upper 5 and vice- versa. */
b9c361e0 666#define SPR SI8 + 1
914749f6 667#define PMR SPR
aea77599 668#define TMR SPR
252b5132 669#define SPR_MASK (0x3ff << 11)
b84bf58a 670 { 0x3ff, 11, insert_spr, extract_spr, 0 },
252b5132
RH
671
672 /* The BAT index number in an XFX form m[ft]ibat[lu] instruction. */
673#define SPRBAT SPR + 1
674#define SPRBAT_MASK (0x3 << 17)
b84bf58a 675 { 0x3, 17, NULL, NULL, 0 },
252b5132
RH
676
677 /* The SPRG register number in an XFX form m[ft]sprg instruction. */
678#define SPRG SPRBAT + 1
b84bf58a 679 { 0x1f, 16, insert_sprg, extract_sprg, 0 },
252b5132
RH
680
681 /* The SR field in an X form instruction. */
682#define SR SPRG + 1
fb048c26
PB
683 /* The 4-bit UIMM field in a VX form instruction. */
684#define UIMM4 SR
b84bf58a 685 { 0xf, 16, NULL, NULL, 0 },
252b5132 686
f5c120c5
MG
687 /* The STRM field in an X AltiVec form instruction. */
688#define STRM SR + 1
19a6653c
AM
689 /* The T field in a tlbilx form instruction. */
690#define T STRM
a5721ba2
AM
691 /* The L field in wclr instructions. */
692#define L2 STRM
b84bf58a 693 { 0x3, 21, NULL, NULL, 0 },
f5c120c5 694
aea77599
AM
695 /* The ESYNC field in an X (sync) form instruction. */
696#define ESYNC STRM + 1
7b934113 697 { 0xf, 16, insert_esync, NULL, PPC_OPERAND_OPTIONAL },
aea77599 698
252b5132 699 /* The SV field in a POWER SC form instruction. */
aea77599 700#define SV ESYNC + 1
b84bf58a 701 { 0x3fff, 2, NULL, NULL, 0 },
252b5132
RH
702
703 /* The TBR field in an XFX form instruction. This is like the SPR
704 field, but it is optional. */
705#define TBR SV + 1
e43de63c
AM
706 { 0x3ff, 11, insert_tbr, extract_tbr,
707 PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE},
11a0cf2e
PB
708 /* If the TBR operand is ommitted, use the value 268. */
709 { -1, 268, NULL, NULL, 0},
252b5132
RH
710
711 /* The TO field in a D or X form instruction. */
11a0cf2e 712#define TO TBR + 2
19a6653c 713#define DUI TO
252b5132 714#define TO_MASK (0x1f << 21)
b84bf58a 715 { 0x1f, 21, NULL, NULL, 0 },
252b5132 716
252b5132 717 /* The UI field in a D form instruction. */
717bbdf1 718#define UI TO + 1
b84bf58a 719 { 0xffff, 0, NULL, NULL, 0 },
786e2c0f 720
a47622ac
AM
721#define UISIGNOPT UI + 1
722 { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNOPT },
723
b9c361e0 724 /* The IMM field in an SE_IM5 instruction. */
a47622ac 725#define UI5 UISIGNOPT + 1
b9c361e0
JL
726 { 0x1f, 4, NULL, NULL, 0 },
727
728 /* The OIMM field in an SE_OIM5 instruction. */
729#define OIMM5 UI5 + 1
730 { 0x1f, PPC_OPSHIFT_INV, insert_oimm, extract_oimm, PPC_OPERAND_PLUS1 },
731
732 /* The UI7 field in an SE_LI instruction. */
733#define UI7 OIMM5 + 1
734 { 0x7f, 4, NULL, NULL, 0 },
735
112290ab 736 /* The VA field in a VA, VX or VXR form instruction. */
b9c361e0 737#define VA UI7 + 1
b84bf58a 738 { 0x1f, 16, NULL, NULL, PPC_OPERAND_VR },
786e2c0f 739
112290ab 740 /* The VB field in a VA, VX or VXR form instruction. */
786e2c0f 741#define VB VA + 1
b84bf58a 742 { 0x1f, 11, NULL, NULL, PPC_OPERAND_VR },
786e2c0f 743
112290ab 744 /* The VC field in a VA form instruction. */
786e2c0f 745#define VC VB + 1
b84bf58a 746 { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR },
786e2c0f 747
112290ab 748 /* The VD or VS field in a VA, VX, VXR or X form instruction. */
786e2c0f
C
749#define VD VC + 1
750#define VS VD
b84bf58a 751 { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR },
786e2c0f 752
8dbcd839 753 /* The SIMM field in a VX form instruction, and TE in Z form. */
786e2c0f 754#define SIMM VD + 1
8dbcd839 755#define TE SIMM
b84bf58a 756 { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED},
786e2c0f 757
8dbcd839 758 /* The UIMM field in a VX form instruction. */
786e2c0f 759#define UIMM SIMM + 1
aea77599 760#define DCTL UIMM
b84bf58a 761 { 0x1f, 16, NULL, NULL, 0 },
786e2c0f 762
fb048c26
PB
763 /* The 3-bit UIMM field in a VX form instruction. */
764#define UIMM3 UIMM + 1
765 { 0x7, 16, NULL, NULL, 0 },
766
a680de9a
PB
767 /* The 6-bit UIM field in a X form instruction. */
768#define UIM6 UIMM3 + 1
769 { 0x3f, 16, NULL, NULL, 0 },
770
c0637f3a 771 /* The SIX field in a VX form instruction. */
a680de9a 772#define SIX UIM6 + 1
c0637f3a
PB
773 { 0xf, 11, NULL, NULL, 0 },
774
775 /* The PS field in a VX form instruction. */
776#define PS SIX + 1
777 { 0x1, 9, NULL, NULL, 0 },
778
112290ab 779 /* The SHB field in a VA form instruction. */
c0637f3a 780#define SHB PS + 1
b84bf58a 781 { 0xf, 6, NULL, NULL, 0 },
ff3a6ee3 782
112290ab 783 /* The other UIMM field in a half word EVX form instruction. */
717bbdf1 784#define EVUIMM_2 SHB + 1
b84bf58a 785 { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
23976049 786
112290ab 787 /* The other UIMM field in a word EVX form instruction. */
23976049 788#define EVUIMM_4 EVUIMM_2 + 1
b84bf58a 789 { 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS },
23976049 790
112290ab 791 /* The other UIMM field in a double EVX form instruction. */
23976049 792#define EVUIMM_8 EVUIMM_4 + 1
b84bf58a 793 { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS },
23976049 794
6fd3a02d 795 /* The WS or DRM field in an X form instruction. */
23976049 796#define WS EVUIMM_8 + 1
6fd3a02d 797#define DRM WS
b84bf58a 798 { 0x7, 11, NULL, NULL, 0 },
ff3a6ee3 799
c3d65c1c
BE
800 /* PowerPC paired singles extensions. */
801 /* W bit in the pair singles instructions for x type instructions. */
802#define PSWM WS + 1
b9c361e0
JL
803 /* The BO16 field in a BD8 form instruction. */
804#define BO16 PSWM
c3d65c1c
BE
805 { 0x1, 10, 0, 0, 0 },
806
807 /* IDX bits for quantization in the pair singles instructions. */
808#define PSQ PSWM + 1
809 { 0x7, 12, 0, 0, 0 },
810
811 /* IDX bits for quantization in the pair singles x-type instructions. */
812#define PSQM PSQ + 1
813 { 0x7, 7, 0, 0, 0 },
814
815 /* Smaller D field for quantization in the pair singles instructions. */
816#define PSD PSQM + 1
817 { 0xfff, 0, 0, 0, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
818
a680de9a 819 /* The L field in an mtmsrd or A form instruction or R or W in an X form. */
c3d65c1c 820#define A_L PSD + 1
ea192fa3 821#define W A_L
a680de9a 822#define X_R A_L
b84bf58a 823 { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
5ae2e65e 824
19dfcc89 825 /* The RMC or CY field in a Z23 form instruction. */
99a2c561 826#define RMC A_L + 1
19dfcc89 827#define CY RMC
b84bf58a 828 { 0x3, 9, NULL, NULL, 0 },
702f0fb4
PB
829
830#define R RMC + 1
b84bf58a 831 { 0x1, 16, NULL, NULL, 0 },
702f0fb4 832
a680de9a
PB
833#define RIC R + 1
834 { 0x3, 18, NULL, NULL, PPC_OPERAND_OPTIONAL },
835
836#define PRS RIC + 1
837 { 0x1, 17, NULL, NULL, PPC_OPERAND_OPTIONAL },
838
839#define SP PRS + 1
b84bf58a 840 { 0x3, 19, NULL, NULL, 0 },
702f0fb4
PB
841
842#define S SP + 1
b84bf58a 843 { 0x1, 20, NULL, NULL, 0 },
702f0fb4 844
c0637f3a
PB
845 /* The S field in a XL form instruction. */
846#define SXL S + 1
11a0cf2e
PB
847 { 0x1, 11, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE},
848 /* If the SXL operand is ommitted, use the value 1. */
849 { -1, 1, NULL, NULL, 0},
c0637f3a 850
702f0fb4 851 /* SH field starting at bit position 16. */
11a0cf2e 852#define SH16 SXL + 2
0bbdef92
AM
853 /* The DCM and DGM fields in a Z form instruction. */
854#define DCM SH16
855#define DGM DCM
b84bf58a 856 { 0x3f, 10, NULL, NULL, 0 },
702f0fb4 857
702f0fb4 858 /* The EH field in larx instruction. */
717bbdf1 859#define EH SH16 + 1
b84bf58a 860 { 0x1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL },
ea192fa3
PB
861
862 /* The L field in an mtfsf or XFL form instruction. */
5817ffd1 863 /* The A field in a HTM X form instruction. */
ea192fa3 864#define XFL_L EH + 1
5817ffd1 865#define HTM_A XFL_L
ea192fa3 866 { 0x1, 25, NULL, NULL, PPC_OPERAND_OPTIONAL},
081ba1b3
AM
867
868 /* Xilinx APU related masks and macros */
869#define FCRT XFL_L + 1
870#define FCRT_MASK (0x1f << 21)
871 { 0x1f, 21, 0, 0, PPC_OPERAND_FCR },
872
43e65147 873 /* Xilinx FSL related masks and macros */
081ba1b3
AM
874#define FSL FCRT + 1
875#define FSL_MASK (0x1f << 11)
43e65147 876 { 0x1f, 11, 0, 0, PPC_OPERAND_FSL },
081ba1b3 877
43e65147 878 /* Xilinx UDI related masks and macros */
081ba1b3
AM
879#define URT FSL + 1
880 { 0x1f, 21, 0, 0, PPC_OPERAND_UDI },
881
882#define URA URT + 1
883 { 0x1f, 16, 0, 0, PPC_OPERAND_UDI },
884
885#define URB URA + 1
886 { 0x1f, 11, 0, 0, PPC_OPERAND_UDI },
887
888#define URC URB + 1
889 { 0x1f, 6, 0, 0, PPC_OPERAND_UDI },
890
b9c361e0
JL
891 /* The VLESIMM field in a D form instruction. */
892#define VLESIMM URC + 1
893 { 0xffff, PPC_OPSHIFT_INV, insert_vlesi, extract_vlesi,
e43de63c 894 PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
b9c361e0
JL
895
896 /* The VLENSIMM field in a D form instruction. */
897#define VLENSIMM VLESIMM + 1
898 { 0xffff, PPC_OPSHIFT_INV, insert_vlensi, extract_vlensi,
e43de63c 899 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
b9c361e0
JL
900
901 /* The VLEUIMM field in a D form instruction. */
902#define VLEUIMM VLENSIMM + 1
903 { 0xffff, PPC_OPSHIFT_INV, insert_vleui, extract_vleui, 0 },
904
905 /* The VLEUIMML field in a D form instruction. */
906#define VLEUIMML VLEUIMM + 1
907 { 0xffff, PPC_OPSHIFT_INV, insert_vleil, extract_vleil, 0 },
908
9b4e5766 909 /* The XT and XS fields in an XX1 or XX3 form instruction. This is split. */
b9c361e0 910#define XS6 VLEUIMML + 1
9b4e5766 911#define XT6 XS6
b9c361e0 912 { 0x3f, PPC_OPSHIFT_INV, insert_xt6, extract_xt6, PPC_OPERAND_VSR },
9b4e5766 913
a680de9a
PB
914 /* The XT and XS fields in an DQ form VSX instruction. This is split. */
915#define XSQ6 XT6 + 1
916#define XTQ6 XSQ6
917 { 0x3f, PPC_OPSHIFT_INV, insert_xtq6, extract_xtq6, PPC_OPERAND_VSR },
918
9b4e5766 919 /* The XA field in an XX3 form instruction. This is split. */
a680de9a 920#define XA6 XTQ6 + 1
b9c361e0 921 { 0x3f, PPC_OPSHIFT_INV, insert_xa6, extract_xa6, PPC_OPERAND_VSR },
9b4e5766 922
066be9f7 923 /* The XB field in an XX2 or XX3 form instruction. This is split. */
9b4e5766 924#define XB6 XA6 + 1
b9c361e0 925 { 0x3f, PPC_OPSHIFT_INV, insert_xb6, extract_xb6, PPC_OPERAND_VSR },
9b4e5766
PB
926
927 /* The XB field in an XX3 form instruction when it must be the same as
928 the XA field in the instruction. This is used in extended mnemonics
929 like xvmovdp. This is split. */
930#define XB6S XB6 + 1
b9c361e0 931 { 0x3f, PPC_OPSHIFT_INV, insert_xb6s, extract_xb6s, PPC_OPERAND_FAKE },
9b4e5766 932
066be9f7
PB
933 /* The XC field in an XX4 form instruction. This is split. */
934#define XC6 XB6S + 1
b9c361e0 935 { 0x3f, PPC_OPSHIFT_INV, insert_xc6, extract_xc6, PPC_OPERAND_VSR },
066be9f7
PB
936
937 /* The DM or SHW field in an XX3 form instruction. */
938#define DM XC6 + 1
939#define SHW DM
9b4e5766 940 { 0x3, 8, NULL, NULL, 0 },
066be9f7
PB
941
942 /* The DM field in an extended mnemonic XX3 form instruction. */
943#define DMEX DM + 1
944 { 0x3, 8, insert_dm, extract_dm, 0 },
945
946 /* The UIM field in an XX2 form instruction. */
947#define UIM DMEX + 1
fb048c26
PB
948 /* The 2-bit UIMM field in a VX form instruction. */
949#define UIMM2 UIM
a680de9a
PB
950 /* The 2-bit L field in a darn instruction. */
951#define LRAND UIM
066be9f7 952 { 0x3, 16, NULL, NULL, 0 },
e0d602ec
BE
953
954#define ERAT_T UIM + 1
955 { 0x7, 21, NULL, NULL, 0 },
4bc0608a
PB
956
957#define IH ERAT_T + 1
958 { 0x7, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
a680de9a
PB
959
960 /* The 8-bit IMM8 field in a XX1 form instruction. */
961#define IMM8 IH + 1
1178da44 962 { 0xff, 11, NULL, NULL, PPC_OPERAND_SIGNOPT },
252b5132
RH
963};
964
b84bf58a
AM
965const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
966 / sizeof (powerpc_operands[0]));
967
252b5132
RH
968/* The functions used to insert and extract complicated operands. */
969
b9c361e0
JL
970/* The ARX, ARY, RX and RY operands are alternate encodings of GPRs. */
971
972static unsigned long
973insert_arx (unsigned long insn,
974 long value,
975 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
976 const char **errmsg ATTRIBUTE_UNUSED)
977{
978 if (value >= 8 && value < 24)
979 return insn | ((value - 8) & 0xf);
980 else
981 {
982 *errmsg = _("invalid register");
983 return 0;
984 }
985}
986
987static long
988extract_arx (unsigned long insn,
989 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
990 int *invalid ATTRIBUTE_UNUSED)
43e65147 991{
b9c361e0
JL
992 return (insn & 0xf) + 8;
993}
994
995static unsigned long
996insert_ary (unsigned long insn,
997 long value,
998 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
999 const char **errmsg ATTRIBUTE_UNUSED)
1000{
1001 if (value >= 8 && value < 24)
1002 return insn | (((value - 8) & 0xf) << 4);
1003 else
1004 {
1005 *errmsg = _("invalid register");
1006 return 0;
1007 }
1008}
1009
1010static long
1011extract_ary (unsigned long insn,
1012 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1013 int *invalid ATTRIBUTE_UNUSED)
1014{
1015 return ((insn >> 4) & 0xf) + 8;
1016}
1017
1018static unsigned long
1019insert_rx (unsigned long insn,
1020 long value,
1021 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1022 const char **errmsg)
1023{
1024 if (value >= 0 && value < 8)
1025 return insn | value;
1026 else if (value >= 24 && value <= 31)
1027 return insn | (value - 16);
1028 else
1029 {
1030 *errmsg = _("invalid register");
1031 return 0;
1032 }
1033}
1034
1035static long
1036extract_rx (unsigned long insn,
1037 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1038 int *invalid ATTRIBUTE_UNUSED)
1039{
1040 int value = insn & 0xf;
1041 if (value >= 0 && value < 8)
1042 return value;
1043 else
1044 return value + 16;
1045}
1046
1047static unsigned long
1048insert_ry (unsigned long insn,
1049 long value,
1050 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1051 const char **errmsg)
1052{
1053 if (value >= 0 && value < 8)
1054 return insn | (value << 4);
1055 else if (value >= 24 && value <= 31)
1056 return insn | ((value - 16) << 4);
1057 else
1058 {
1059 *errmsg = _("invalid register");
1060 return 0;
1061 }
1062}
1063
1064static long
1065extract_ry (unsigned long insn,
1066 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1067 int *invalid ATTRIBUTE_UNUSED)
1068{
1069 int value = (insn >> 4) & 0xf;
1070 if (value >= 0 && value < 8)
1071 return value;
1072 else
1073 return value + 16;
1074}
1075
252b5132
RH
1076/* The BA field in an XL form instruction when it must be the same as
1077 the BT field in the same instruction. This operand is marked FAKE.
1078 The insertion function just copies the BT field into the BA field,
1079 and the extraction function just checks that the fields are the
1080 same. */
1081
252b5132 1082static unsigned long
2fbfdc41
AM
1083insert_bat (unsigned long insn,
1084 long value ATTRIBUTE_UNUSED,
fa452fa6 1085 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1086 const char **errmsg ATTRIBUTE_UNUSED)
252b5132
RH
1087{
1088 return insn | (((insn >> 21) & 0x1f) << 16);
1089}
1090
1091static long
2fbfdc41 1092extract_bat (unsigned long insn,
fa452fa6 1093 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1094 int *invalid)
252b5132 1095{
8427c424 1096 if (((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f))
252b5132
RH
1097 *invalid = 1;
1098 return 0;
1099}
1100
1101/* The BB field in an XL form instruction when it must be the same as
1102 the BA field in the same instruction. This operand is marked FAKE.
1103 The insertion function just copies the BA field into the BB field,
1104 and the extraction function just checks that the fields are the
1105 same. */
1106
252b5132 1107static unsigned long
2fbfdc41
AM
1108insert_bba (unsigned long insn,
1109 long value ATTRIBUTE_UNUSED,
fa452fa6 1110 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1111 const char **errmsg ATTRIBUTE_UNUSED)
252b5132
RH
1112{
1113 return insn | (((insn >> 16) & 0x1f) << 11);
1114}
1115
1116static long
2fbfdc41 1117extract_bba (unsigned long insn,
fa452fa6 1118 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1119 int *invalid)
252b5132 1120{
8427c424 1121 if (((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
252b5132
RH
1122 *invalid = 1;
1123 return 0;
1124}
1125
252b5132
RH
1126/* The BD field in a B form instruction when the - modifier is used.
1127 This modifier means that the branch is not expected to be taken.
94efba12
AM
1128 For chips built to versions of the architecture prior to version 2
1129 (ie. not Power4 compatible), we set the y bit of the BO field to 1
1130 if the offset is negative. When extracting, we require that the y
1131 bit be 1 and that the offset be positive, since if the y bit is 0
1132 we just want to print the normal form of the instruction.
1133 Power4 compatible targets use two bits, "a", and "t", instead of
1134 the "y" bit. "at" == 00 => no hint, "at" == 01 => unpredictable,
1135 "at" == 10 => not taken, "at" == 11 => taken. The "t" bit is 00001
1136 in BO field, the "a" bit is 00010 for branch on CR(BI) and 01000
ba4e851b
AM
1137 for branch on CTR. We only handle the taken/not-taken hint here.
1138 Note that we don't relax the conditions tested here when
1139 disassembling with -Many because insns using extract_bdm and
1140 extract_bdp always occur in pairs. One or the other will always
1141 be valid. */
252b5132 1142
8ebac3aa
AM
1143#define ISA_V2 (PPC_OPCODE_POWER4 | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
1144
252b5132 1145static unsigned long
2fbfdc41
AM
1146insert_bdm (unsigned long insn,
1147 long value,
fa452fa6 1148 ppc_cpu_t dialect,
2fbfdc41 1149 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 1150{
8ebac3aa 1151 if ((dialect & ISA_V2) == 0)
802a735e
AM
1152 {
1153 if ((value & 0x8000) != 0)
1154 insn |= 1 << 21;
1155 }
1156 else
1157 {
1158 if ((insn & (0x14 << 21)) == (0x04 << 21))
1159 insn |= 0x02 << 21;
1160 else if ((insn & (0x14 << 21)) == (0x10 << 21))
1161 insn |= 0x08 << 21;
1162 }
252b5132
RH
1163 return insn | (value & 0xfffc);
1164}
1165
1166static long
2fbfdc41 1167extract_bdm (unsigned long insn,
fa452fa6 1168 ppc_cpu_t dialect,
2fbfdc41 1169 int *invalid)
252b5132 1170{
8ebac3aa 1171 if ((dialect & ISA_V2) == 0)
802a735e 1172 {
8427c424
AM
1173 if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
1174 *invalid = 1;
802a735e 1175 }
8427c424
AM
1176 else
1177 {
1178 if ((insn & (0x17 << 21)) != (0x06 << 21)
1179 && (insn & (0x1d << 21)) != (0x18 << 21))
1180 *invalid = 1;
1181 }
1182
802a735e 1183 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
252b5132
RH
1184}
1185
1186/* The BD field in a B form instruction when the + modifier is used.
1187 This is like BDM, above, except that the branch is expected to be
1188 taken. */
1189
252b5132 1190static unsigned long
2fbfdc41
AM
1191insert_bdp (unsigned long insn,
1192 long value,
fa452fa6 1193 ppc_cpu_t dialect,
2fbfdc41 1194 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 1195{
8ebac3aa 1196 if ((dialect & ISA_V2) == 0)
802a735e
AM
1197 {
1198 if ((value & 0x8000) == 0)
1199 insn |= 1 << 21;
1200 }
1201 else
1202 {
1203 if ((insn & (0x14 << 21)) == (0x04 << 21))
1204 insn |= 0x03 << 21;
1205 else if ((insn & (0x14 << 21)) == (0x10 << 21))
1206 insn |= 0x09 << 21;
1207 }
252b5132
RH
1208 return insn | (value & 0xfffc);
1209}
1210
1211static long
2fbfdc41 1212extract_bdp (unsigned long insn,
fa452fa6 1213 ppc_cpu_t dialect,
2fbfdc41 1214 int *invalid)
252b5132 1215{
8ebac3aa 1216 if ((dialect & ISA_V2) == 0)
802a735e 1217 {
8427c424
AM
1218 if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
1219 *invalid = 1;
1220 }
1221 else
1222 {
1223 if ((insn & (0x17 << 21)) != (0x07 << 21)
1224 && (insn & (0x1d << 21)) != (0x19 << 21))
1225 *invalid = 1;
802a735e 1226 }
8427c424 1227
802a735e 1228 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
252b5132
RH
1229}
1230
8ebac3aa
AM
1231static inline int
1232valid_bo_pre_v2 (long value)
252b5132 1233{
8ebac3aa
AM
1234 /* Certain encodings have bits that are required to be zero.
1235 These are (z must be zero, y may be anything):
43e65147
L
1236 0000y
1237 0001y
8ebac3aa 1238 001zy
43e65147
L
1239 0100y
1240 0101y
8ebac3aa
AM
1241 011zy
1242 1z00y
1243 1z01y
1244 1z1zz
1245 */
1246 if ((value & 0x14) == 0)
1247 return 1;
1248 else if ((value & 0x14) == 0x4)
1249 return (value & 0x2) == 0;
1250 else if ((value & 0x14) == 0x10)
1251 return (value & 0x8) == 0;
1252 else
1253 return value == 0x14;
1254}
ba4e851b 1255
8ebac3aa
AM
1256static inline int
1257valid_bo_post_v2 (long value)
1258{
ba4e851b
AM
1259 /* Certain encodings have bits that are required to be zero.
1260 These are (z must be zero, a & t may be anything):
1261 0000z
1262 0001z
8ebac3aa 1263 001at
ba4e851b
AM
1264 0100z
1265 0101z
ba4e851b
AM
1266 011at
1267 1a00t
1268 1a01t
1269 1z1zz
1270 */
1271 if ((value & 0x14) == 0)
1272 return (value & 0x1) == 0;
1273 else if ((value & 0x14) == 0x14)
1274 return value == 0x14;
802a735e 1275 else
ba4e851b 1276 return 1;
252b5132
RH
1277}
1278
8ebac3aa
AM
1279/* Check for legal values of a BO field. */
1280
1281static int
1282valid_bo (long value, ppc_cpu_t dialect, int extract)
1283{
1284 int valid_y = valid_bo_pre_v2 (value);
1285 int valid_at = valid_bo_post_v2 (value);
1286
1287 /* When disassembling with -Many, accept either encoding on the
1288 second pass through opcodes. */
1289 if (extract && dialect == ~(ppc_cpu_t) PPC_OPCODE_ANY)
1290 return valid_y || valid_at;
1291 if ((dialect & ISA_V2) == 0)
1292 return valid_y;
1293 else
1294 return valid_at;
1295}
1296
252b5132
RH
1297/* The BO field in a B form instruction. Warn about attempts to set
1298 the field to an illegal value. */
1299
1300static unsigned long
2fbfdc41
AM
1301insert_bo (unsigned long insn,
1302 long value,
fa452fa6 1303 ppc_cpu_t dialect,
2fbfdc41 1304 const char **errmsg)
252b5132 1305{
ba4e851b 1306 if (!valid_bo (value, dialect, 0))
252b5132 1307 *errmsg = _("invalid conditional option");
989993d8
JB
1308 else if (PPC_OP (insn) == 19 && (insn & 0x400) && ! (value & 4))
1309 *errmsg = _("invalid counter access");
252b5132
RH
1310 return insn | ((value & 0x1f) << 21);
1311}
1312
1313static long
2fbfdc41 1314extract_bo (unsigned long insn,
fa452fa6 1315 ppc_cpu_t dialect,
2fbfdc41 1316 int *invalid)
252b5132
RH
1317{
1318 long value;
1319
1320 value = (insn >> 21) & 0x1f;
ba4e851b 1321 if (!valid_bo (value, dialect, 1))
252b5132
RH
1322 *invalid = 1;
1323 return value;
1324}
1325
1326/* The BO field in a B form instruction when the + or - modifier is
1327 used. This is like the BO field, but it must be even. When
1328 extracting it, we force it to be even. */
1329
1330static unsigned long
2fbfdc41
AM
1331insert_boe (unsigned long insn,
1332 long value,
fa452fa6 1333 ppc_cpu_t dialect,
2fbfdc41 1334 const char **errmsg)
252b5132 1335{
ba4e851b 1336 if (!valid_bo (value, dialect, 0))
8427c424 1337 *errmsg = _("invalid conditional option");
989993d8
JB
1338 else if (PPC_OP (insn) == 19 && (insn & 0x400) && ! (value & 4))
1339 *errmsg = _("invalid counter access");
8427c424
AM
1340 else if ((value & 1) != 0)
1341 *errmsg = _("attempt to set y bit when using + or - modifier");
1342
252b5132
RH
1343 return insn | ((value & 0x1f) << 21);
1344}
1345
1346static long
2fbfdc41 1347extract_boe (unsigned long insn,
fa452fa6 1348 ppc_cpu_t dialect,
2fbfdc41 1349 int *invalid)
252b5132
RH
1350{
1351 long value;
1352
1353 value = (insn >> 21) & 0x1f;
ba4e851b 1354 if (!valid_bo (value, dialect, 1))
252b5132
RH
1355 *invalid = 1;
1356 return value & 0x1e;
1357}
1358
a680de9a
PB
1359/* The DCMX field in a X form instruction when the field is split
1360 into separate DC, DM and DX fields. */
1361
1362static unsigned long
1363insert_dcmxs (unsigned long insn,
1364 long value,
1365 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1366 const char **errmsg ATTRIBUTE_UNUSED)
1367{
1368 return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3) | (value & 0x40);
1369}
1370
1371static long
1372extract_dcmxs (unsigned long insn,
1373 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1374 int *invalid ATTRIBUTE_UNUSED)
1375{
1376 return (insn & 0x40) | ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
1377}
1378
1379/* The D field in a DX form instruction when the field is split
1380 into separate D0, D1 and D2 fields. */
1381
1382static unsigned long
1383insert_dxd (unsigned long insn,
1384 long value,
1385 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1386 const char **errmsg ATTRIBUTE_UNUSED)
1387{
1388 return insn | (value & 0xffc1) | ((value & 0x3e) << 15);
1389}
1390
1391static long
1392extract_dxd (unsigned long insn,
1393 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1394 int *invalid ATTRIBUTE_UNUSED)
1395{
1396 unsigned long dxd = (insn & 0xffc1) | ((insn >> 15) & 0x3e);
1397 return (dxd ^ 0x8000) - 0x8000;
1398}
1399
1400static unsigned long
1401insert_dxdn (unsigned long insn,
1402 long value,
1403 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1404 const char **errmsg ATTRIBUTE_UNUSED)
1405{
1406 return insert_dxd (insn, -value, dialect, errmsg);
1407}
1408
1409static long
1410extract_dxdn (unsigned long insn,
1411 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1412 int *invalid ATTRIBUTE_UNUSED)
1413{
1414 return -extract_dxd (insn, dialect, invalid);
1415}
1416
2fbfdc41
AM
1417/* FXM mask in mfcr and mtcrf instructions. */
1418
1419static unsigned long
1420insert_fxm (unsigned long insn,
1421 long value,
fa452fa6 1422 ppc_cpu_t dialect,
2fbfdc41 1423 const char **errmsg)
c168870a 1424{
98e69875
AM
1425 /* If we're handling the mfocrf and mtocrf insns ensure that exactly
1426 one bit of the mask field is set. */
1427 if ((insn & (1 << 20)) != 0)
1428 {
1429 if (value == 0 || (value & -value) != value)
1430 {
1431 *errmsg = _("invalid mask field");
1432 value = 0;
1433 }
1434 }
1435
c168870a 1436 /* If only one bit of the FXM field is set, we can use the new form
661bd698 1437 of the instruction, which is faster. Unlike the Power4 branch hint
a30e9cc4
AM
1438 encoding, this is not backward compatible. Do not generate the
1439 new form unless -mpower4 has been given, or -many and the two
1440 operand form of mfcr was used. */
11a0cf2e
PB
1441 else if (value > 0
1442 && (value & -value) == value
a30e9cc4
AM
1443 && ((dialect & PPC_OPCODE_POWER4) != 0
1444 || ((dialect & PPC_OPCODE_ANY) != 0
1445 && (insn & (0x3ff << 1)) == 19 << 1)))
c168870a
AM
1446 insn |= 1 << 20;
1447
1448 /* Any other value on mfcr is an error. */
1449 else if ((insn & (0x3ff << 1)) == 19 << 1)
1450 {
11a0cf2e
PB
1451 /* A value of -1 means we used the one operand form of
1452 mfcr which is valid. */
1453 if (value != -1)
b817670b 1454 *errmsg = _("invalid mfcr mask");
c168870a
AM
1455 value = 0;
1456 }
1457
1458 return insn | ((value & 0xff) << 12);
1459}
1460
2fbfdc41
AM
1461static long
1462extract_fxm (unsigned long insn,
fa452fa6 1463 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1464 int *invalid)
c168870a
AM
1465{
1466 long mask = (insn >> 12) & 0xff;
1467
1468 /* Is this a Power4 insn? */
1469 if ((insn & (1 << 20)) != 0)
1470 {
98e69875
AM
1471 /* Exactly one bit of MASK should be set. */
1472 if (mask == 0 || (mask & -mask) != mask)
8427c424 1473 *invalid = 1;
c168870a
AM
1474 }
1475
1476 /* Check that non-power4 form of mfcr has a zero MASK. */
1477 else if ((insn & (0x3ff << 1)) == 19 << 1)
1478 {
8427c424 1479 if (mask != 0)
c168870a 1480 *invalid = 1;
11a0cf2e
PB
1481 else
1482 mask = -1;
c168870a
AM
1483 }
1484
1485 return mask;
1486}
1487
b9c361e0
JL
1488static unsigned long
1489insert_li20 (unsigned long insn,
1490 long value,
1491 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1492 const char **errmsg ATTRIBUTE_UNUSED)
1493{
1494 return insn | ((value & 0xf0000) >> 5) | ((value & 0x0f800) << 5) | (value & 0x7ff);
1495}
1496
1497static long
1498extract_li20 (unsigned long insn,
1499 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1500 int *invalid ATTRIBUTE_UNUSED)
1501{
1502 long ext = ((insn & 0x4000) == 0x4000) ? 0xfff00000 : 0x00000000;
1503
1504 return ext
1505 | (((insn >> 11) & 0xf) << 16)
1506 | (((insn >> 17) & 0xf) << 12)
1507 | (((insn >> 16) & 0x1) << 11)
1508 | (insn & 0x7ff);
1509}
1510
7b934113
PB
1511/* The 2-bit L field in a SYNC or WC field in a WAIT instruction.
1512 For SYNC, some L values are reserved:
1513 * Value 3 is reserved on newer server cpus.
1514 * Values 2 and 3 are reserved on all other cpus. */
aea77599
AM
1515
1516static unsigned long
1517insert_ls (unsigned long insn,
1518 long value,
7b934113
PB
1519 ppc_cpu_t dialect,
1520 const char **errmsg)
1521{
1522 /* For SYNC, some L values are illegal. */
1523 if (((insn >> 1) & 0x3ff) == 598)
1524 {
1525 long max_lvalue = (dialect & PPC_OPCODE_POWER4) ? 2 : 1;
1526 if (value > max_lvalue)
1527 {
1528 *errmsg = _("illegal L operand value");
1529 return insn;
1530 }
1531 }
1532
1533 return insn | ((value & 0x3) << 21);
1534}
1535
1536/* The 4-bit E field in a sync instruction that accepts 2 operands.
1537 If ESYNC is non-zero, then the L field must be either 0 or 1 and
1538 the complement of ESYNC-bit2. */
1539
1540static unsigned long
1541insert_esync (unsigned long insn,
1542 long value,
a680de9a 1543 ppc_cpu_t dialect,
7b934113 1544 const char **errmsg)
aea77599 1545{
a680de9a 1546 unsigned long ls = (insn >> 21) & 0x03;
aea77599 1547
aea77599
AM
1548 if (value == 0)
1549 {
a680de9a
PB
1550 if (((dialect & PPC_OPCODE_E6500) != 0 && ls > 1)
1551 || ((dialect & PPC_OPCODE_POWER9) != 0 && ls > 2))
1552 *errmsg = _("illegal L operand value");
aea77599
AM
1553 return insn;
1554 }
7b934113
PB
1555
1556 if ((ls & ~0x1)
1557 || (((value >> 1) & 0x1) ^ ls) == 0)
1558 *errmsg = _("incompatible L operand value");
1559
1560 return insn | ((value & 0xf) << 16);
aea77599
AM
1561}
1562
252b5132
RH
1563/* The MB and ME fields in an M form instruction expressed as a single
1564 operand which is itself a bitmask. The extraction function always
1565 marks it as invalid, since we never want to recognize an
1566 instruction which uses a field of this type. */
1567
1568static unsigned long
2fbfdc41
AM
1569insert_mbe (unsigned long insn,
1570 long value,
fa452fa6 1571 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1572 const char **errmsg)
252b5132
RH
1573{
1574 unsigned long uval, mask;
1575 int mb, me, mx, count, last;
1576
1577 uval = value;
1578
1579 if (uval == 0)
1580 {
8427c424 1581 *errmsg = _("illegal bitmask");
252b5132
RH
1582 return insn;
1583 }
1584
1585 mb = 0;
1586 me = 32;
1587 if ((uval & 1) != 0)
1588 last = 1;
1589 else
1590 last = 0;
1591 count = 0;
1592
1593 /* mb: location of last 0->1 transition */
1594 /* me: location of last 1->0 transition */
1595 /* count: # transitions */
1596
0deb7ac5 1597 for (mx = 0, mask = 1L << 31; mx < 32; ++mx, mask >>= 1)
252b5132
RH
1598 {
1599 if ((uval & mask) && !last)
1600 {
1601 ++count;
1602 mb = mx;
1603 last = 1;
1604 }
1605 else if (!(uval & mask) && last)
1606 {
1607 ++count;
1608 me = mx;
1609 last = 0;
1610 }
1611 }
1612 if (me == 0)
1613 me = 32;
1614
1615 if (count != 2 && (count != 0 || ! last))
8427c424 1616 *errmsg = _("illegal bitmask");
252b5132
RH
1617
1618 return insn | (mb << 6) | ((me - 1) << 1);
1619}
1620
1621static long
2fbfdc41 1622extract_mbe (unsigned long insn,
fa452fa6 1623 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1624 int *invalid)
252b5132
RH
1625{
1626 long ret;
1627 int mb, me;
1628 int i;
1629
8427c424 1630 *invalid = 1;
252b5132
RH
1631
1632 mb = (insn >> 6) & 0x1f;
1633 me = (insn >> 1) & 0x1f;
1634 if (mb < me + 1)
1635 {
1636 ret = 0;
1637 for (i = mb; i <= me; i++)
0deb7ac5 1638 ret |= 1L << (31 - i);
252b5132
RH
1639 }
1640 else if (mb == me + 1)
8427c424 1641 ret = ~0;
252b5132
RH
1642 else /* (mb > me + 1) */
1643 {
2fbfdc41 1644 ret = ~0;
252b5132 1645 for (i = me + 1; i < mb; i++)
0deb7ac5 1646 ret &= ~(1L << (31 - i));
252b5132
RH
1647 }
1648 return ret;
1649}
1650
1651/* The MB or ME field in an MD or MDS form instruction. The high bit
1652 is wrapped to the low end. */
1653
252b5132 1654static unsigned long
2fbfdc41
AM
1655insert_mb6 (unsigned long insn,
1656 long value,
fa452fa6 1657 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1658 const char **errmsg ATTRIBUTE_UNUSED)
252b5132
RH
1659{
1660 return insn | ((value & 0x1f) << 6) | (value & 0x20);
1661}
1662
252b5132 1663static long
2fbfdc41 1664extract_mb6 (unsigned long insn,
fa452fa6 1665 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1666 int *invalid ATTRIBUTE_UNUSED)
252b5132
RH
1667{
1668 return ((insn >> 6) & 0x1f) | (insn & 0x20);
1669}
1670
1671/* The NB field in an X form instruction. The value 32 is stored as
1672 0. */
1673
252b5132 1674static long
2fbfdc41 1675extract_nb (unsigned long insn,
fa452fa6 1676 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1677 int *invalid ATTRIBUTE_UNUSED)
252b5132
RH
1678{
1679 long ret;
1680
1681 ret = (insn >> 11) & 0x1f;
1682 if (ret == 0)
1683 ret = 32;
1684 return ret;
1685}
1686
989993d8
JB
1687/* The NB field in an lswi instruction, which has special value
1688 restrictions. The value 32 is stored as 0. */
1689
1690static unsigned long
1691insert_nbi (unsigned long insn,
1692 long value,
1693 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1694 const char **errmsg ATTRIBUTE_UNUSED)
1695{
1696 long rtvalue = (insn & RT_MASK) >> 21;
1697 long ravalue = (insn & RA_MASK) >> 16;
1698
1699 if (value == 0)
1700 value = 32;
1701 if (rtvalue + (value + 3) / 4 > (rtvalue > ravalue ? ravalue + 32
1702 : ravalue))
1703 *errmsg = _("address register in load range");
1704 return insn | ((value & 0x1f) << 11);
1705}
1706
252b5132
RH
1707/* The NSI field in a D form instruction. This is the same as the SI
1708 field, only negated. The extraction function always marks it as
1709 invalid, since we never want to recognize an instruction which uses
1710 a field of this type. */
1711
252b5132 1712static unsigned long
2fbfdc41
AM
1713insert_nsi (unsigned long insn,
1714 long value,
fa452fa6 1715 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1716 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 1717{
2fbfdc41 1718 return insn | (-value & 0xffff);
252b5132
RH
1719}
1720
1721static long
2fbfdc41 1722extract_nsi (unsigned long insn,
fa452fa6 1723 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1724 int *invalid)
252b5132 1725{
8427c424 1726 *invalid = 1;
2fbfdc41 1727 return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
252b5132
RH
1728}
1729
1730/* The RA field in a D or X form instruction which is an updating
1731 load, which means that the RA field may not be zero and may not
1732 equal the RT field. */
1733
1734static unsigned long
2fbfdc41
AM
1735insert_ral (unsigned long insn,
1736 long value,
fa452fa6 1737 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1738 const char **errmsg)
252b5132
RH
1739{
1740 if (value == 0
1741 || (unsigned long) value == ((insn >> 21) & 0x1f))
1742 *errmsg = "invalid register operand when updating";
1743 return insn | ((value & 0x1f) << 16);
1744}
1745
1746/* The RA field in an lmw instruction, which has special value
1747 restrictions. */
1748
1749static unsigned long
2fbfdc41
AM
1750insert_ram (unsigned long insn,
1751 long value,
fa452fa6 1752 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1753 const char **errmsg)
252b5132
RH
1754{
1755 if ((unsigned long) value >= ((insn >> 21) & 0x1f))
1756 *errmsg = _("index register in load range");
1757 return insn | ((value & 0x1f) << 16);
1758}
1759
989993d8 1760/* The RA field in the DQ form lq or an lswx instruction, which have special
8427c424 1761 value restrictions. */
adadcc0c 1762
adadcc0c 1763static unsigned long
2fbfdc41
AM
1764insert_raq (unsigned long insn,
1765 long value,
fa452fa6 1766 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1767 const char **errmsg)
adadcc0c
AM
1768{
1769 long rtvalue = (insn & RT_MASK) >> 21;
1770
8427c424 1771 if (value == rtvalue)
adadcc0c
AM
1772 *errmsg = _("source and target register operands must be different");
1773 return insn | ((value & 0x1f) << 16);
1774}
1775
252b5132
RH
1776/* The RA field in a D or X form instruction which is an updating
1777 store or an updating floating point load, which means that the RA
1778 field may not be zero. */
1779
1780static unsigned long
2fbfdc41
AM
1781insert_ras (unsigned long insn,
1782 long value,
fa452fa6 1783 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1784 const char **errmsg)
252b5132
RH
1785{
1786 if (value == 0)
1787 *errmsg = _("invalid register operand when updating");
1788 return insn | ((value & 0x1f) << 16);
1789}
1790
1791/* The RB field in an X form instruction when it must be the same as
1792 the RS field in the instruction. This is used for extended
1793 mnemonics like mr. This operand is marked FAKE. The insertion
1794 function just copies the BT field into the BA field, and the
1795 extraction function just checks that the fields are the same. */
1796
252b5132 1797static unsigned long
2fbfdc41
AM
1798insert_rbs (unsigned long insn,
1799 long value ATTRIBUTE_UNUSED,
fa452fa6 1800 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1801 const char **errmsg ATTRIBUTE_UNUSED)
252b5132
RH
1802{
1803 return insn | (((insn >> 21) & 0x1f) << 11);
1804}
1805
1806static long
2fbfdc41 1807extract_rbs (unsigned long insn,
fa452fa6 1808 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1809 int *invalid)
252b5132 1810{
8427c424 1811 if (((insn >> 21) & 0x1f) != ((insn >> 11) & 0x1f))
252b5132
RH
1812 *invalid = 1;
1813 return 0;
1814}
1815
989993d8
JB
1816/* The RB field in an lswx instruction, which has special value
1817 restrictions. */
1818
1819static unsigned long
1820insert_rbx (unsigned long insn,
1821 long value,
1822 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1823 const char **errmsg)
1824{
1825 long rtvalue = (insn & RT_MASK) >> 21;
1826
1827 if (value == rtvalue)
1828 *errmsg = _("source and target register operands must be different");
1829 return insn | ((value & 0x1f) << 11);
1830}
1831
b9c361e0
JL
1832/* The SCI8 field is made up of SCL and {U,N}I8 fields. */
1833static unsigned long
1834insert_sci8 (unsigned long insn,
1835 long value,
1836 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1837 const char **errmsg)
1838{
943d398f
AM
1839 unsigned int fill_scale = 0;
1840 unsigned long ui8 = value;
b9c361e0 1841
943d398f
AM
1842 if ((ui8 & 0xffffff00) == 0)
1843 ;
1844 else if ((ui8 & 0xffffff00) == 0xffffff00)
1845 fill_scale = 0x400;
1846 else if ((ui8 & 0xffff00ff) == 0)
b9c361e0 1847 {
943d398f
AM
1848 fill_scale = 1 << 8;
1849 ui8 >>= 8;
b9c361e0 1850 }
943d398f 1851 else if ((ui8 & 0xffff00ff) == 0xffff00ff)
b9c361e0 1852 {
943d398f
AM
1853 fill_scale = 0x400 | (1 << 8);
1854 ui8 >>= 8;
b9c361e0 1855 }
943d398f 1856 else if ((ui8 & 0xff00ffff) == 0)
b9c361e0 1857 {
943d398f
AM
1858 fill_scale = 2 << 8;
1859 ui8 >>= 16;
b9c361e0 1860 }
943d398f 1861 else if ((ui8 & 0xff00ffff) == 0xff00ffff)
b9c361e0 1862 {
943d398f
AM
1863 fill_scale = 0x400 | (2 << 8);
1864 ui8 >>= 16;
b9c361e0 1865 }
943d398f 1866 else if ((ui8 & 0x00ffffff) == 0)
b9c361e0 1867 {
943d398f
AM
1868 fill_scale = 3 << 8;
1869 ui8 >>= 24;
b9c361e0 1870 }
943d398f 1871 else if ((ui8 & 0x00ffffff) == 0x00ffffff)
b9c361e0 1872 {
943d398f
AM
1873 fill_scale = 0x400 | (3 << 8);
1874 ui8 >>= 24;
b9c361e0 1875 }
943d398f 1876 else
b9c361e0 1877 {
943d398f
AM
1878 *errmsg = _("illegal immediate value");
1879 ui8 = 0;
b9c361e0 1880 }
b9c361e0 1881
943d398f 1882 return insn | fill_scale | (ui8 & 0xff);
b9c361e0
JL
1883}
1884
1885static long
1886extract_sci8 (unsigned long insn,
1887 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1888 int *invalid ATTRIBUTE_UNUSED)
1889{
943d398f
AM
1890 int fill = insn & 0x400;
1891 int scale_factor = (insn & 0x300) >> 5;
1892 long value = (insn & 0xff) << scale_factor;
1893
1894 if (fill != 0)
1895 value |= ~((long) 0xff << scale_factor);
1896 return value;
b9c361e0
JL
1897}
1898
1899static unsigned long
1900insert_sci8n (unsigned long insn,
1901 long value,
943d398f 1902 ppc_cpu_t dialect,
b9c361e0
JL
1903 const char **errmsg)
1904{
943d398f 1905 return insert_sci8 (insn, -value, dialect, errmsg);
b9c361e0
JL
1906}
1907
1908static long
1909extract_sci8n (unsigned long insn,
943d398f
AM
1910 ppc_cpu_t dialect,
1911 int *invalid)
b9c361e0 1912{
943d398f 1913 return -extract_sci8 (insn, dialect, invalid);
b9c361e0
JL
1914}
1915
1916static unsigned long
1917insert_sd4h (unsigned long insn,
1918 long value,
1919 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1920 const char **errmsg ATTRIBUTE_UNUSED)
1921{
1922 return insn | ((value & 0x1e) << 7);
1923}
1924
1925static long
1926extract_sd4h (unsigned long insn,
1927 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1928 int *invalid ATTRIBUTE_UNUSED)
1929{
1930 return ((insn >> 8) & 0xf) << 1;
1931}
1932
1933static unsigned long
1934insert_sd4w (unsigned long insn,
1935 long value,
1936 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1937 const char **errmsg ATTRIBUTE_UNUSED)
1938{
1939 return insn | ((value & 0x3c) << 6);
1940}
1941
1942static long
1943extract_sd4w (unsigned long insn,
1944 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1945 int *invalid ATTRIBUTE_UNUSED)
1946{
1947 return ((insn >> 8) & 0xf) << 2;
1948}
1949
1950static unsigned long
1951insert_oimm (unsigned long insn,
1952 long value,
1953 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1954 const char **errmsg ATTRIBUTE_UNUSED)
1955{
1956 return insn | (((value - 1) & 0x1f) << 4);
1957}
1958
1959static long
1960extract_oimm (unsigned long insn,
1961 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
1962 int *invalid ATTRIBUTE_UNUSED)
1963{
1964 return ((insn >> 4) & 0x1f) + 1;
1965}
1966
252b5132
RH
1967/* The SH field in an MD form instruction. This is split. */
1968
252b5132 1969static unsigned long
2fbfdc41
AM
1970insert_sh6 (unsigned long insn,
1971 long value,
fa452fa6 1972 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1973 const char **errmsg ATTRIBUTE_UNUSED)
252b5132 1974{
6fd3a02d
PB
1975 /* SH6 operand in the rldixor instructions. */
1976 if (PPC_OP (insn) == 4)
1977 return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 5);
1978 else
1979 return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
252b5132
RH
1980}
1981
252b5132 1982static long
2fbfdc41 1983extract_sh6 (unsigned long insn,
fa452fa6 1984 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 1985 int *invalid ATTRIBUTE_UNUSED)
252b5132 1986{
6fd3a02d
PB
1987 /* SH6 operand in the rldixor instructions. */
1988 if (PPC_OP (insn) == 4)
1989 return ((insn >> 6) & 0x1f) | ((insn << 5) & 0x20);
1990 else
1991 return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
252b5132
RH
1992}
1993
1994/* The SPR field in an XFX form instruction. This is flipped--the
1995 lower 5 bits are stored in the upper 5 and vice- versa. */
1996
1997static unsigned long
2fbfdc41
AM
1998insert_spr (unsigned long insn,
1999 long value,
fa452fa6 2000 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 2001 const char **errmsg ATTRIBUTE_UNUSED)
252b5132
RH
2002{
2003 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
2004}
2005
2006static long
2fbfdc41 2007extract_spr (unsigned long insn,
fa452fa6 2008 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2fbfdc41 2009 int *invalid ATTRIBUTE_UNUSED)
252b5132
RH
2010{
2011 return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
2012}
2013
da99ee72 2014/* Some dialects have 8 SPRG registers instead of the standard 4. */
14b57c7c 2015#define ALLOW8_SPRG (PPC_OPCODE_BOOKE | PPC_OPCODE_405)
da99ee72
AM
2016
2017static unsigned long
2018insert_sprg (unsigned long insn,
2019 long value,
fa452fa6 2020 ppc_cpu_t dialect,
da99ee72
AM
2021 const char **errmsg)
2022{
da99ee72 2023 if (value > 7
98c76446 2024 || (value > 3 && (dialect & ALLOW8_SPRG) == 0))
da99ee72
AM
2025 *errmsg = _("invalid sprg number");
2026
2027 /* If this is mfsprg4..7 then use spr 260..263 which can be read in
2028 user mode. Anything else must use spr 272..279. */
2029 if (value <= 3 || (insn & 0x100) != 0)
2030 value |= 0x10;
2031
2032 return insn | ((value & 0x17) << 16);
2033}
2034
2035static long
2036extract_sprg (unsigned long insn,
fa452fa6 2037 ppc_cpu_t dialect,
da99ee72
AM
2038 int *invalid)
2039{
2040 unsigned long val = (insn >> 16) & 0x1f;
2041
2042 /* mfsprg can use 260..263 and 272..279. mtsprg only uses spr 272..279
98c76446
AM
2043 If not BOOKE, 405 or VLE, then both use only 272..275. */
2044 if ((val - 0x10 > 3 && (dialect & ALLOW8_SPRG) == 0)
e1c93c69
AM
2045 || (val - 0x10 > 7 && (insn & 0x100) != 0)
2046 || val <= 3
2047 || (val & 8) != 0)
da99ee72
AM
2048 *invalid = 1;
2049 return val & 7;
2050}
2051
252b5132 2052/* The TBR field in an XFX instruction. This is just like SPR, but it
11a0cf2e 2053 is optional. */
252b5132 2054
252b5132 2055static unsigned long
2fbfdc41
AM
2056insert_tbr (unsigned long insn,
2057 long value,
fa452fa6 2058 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
8514e4db 2059 const char **errmsg)
252b5132 2060{
8514e4db
AM
2061 if (value != 268 && value != 269)
2062 *errmsg = _("invalid tbr number");
252b5132
RH
2063 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
2064}
2065
2066static long
2fbfdc41 2067extract_tbr (unsigned long insn,
fa452fa6 2068 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
8514e4db 2069 int *invalid)
252b5132
RH
2070{
2071 long ret;
2072
2073 ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
8514e4db
AM
2074 if (ret != 268 && ret != 269)
2075 *invalid = 1;
252b5132
RH
2076 return ret;
2077}
9b4e5766
PB
2078
2079/* The XT and XS fields in an XX1 or XX3 form instruction. This is split. */
2080
2081static unsigned long
2082insert_xt6 (unsigned long insn,
2083 long value,
2084 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2085 const char **errmsg ATTRIBUTE_UNUSED)
2086{
2087 return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 5);
2088}
2089
2090static long
2091extract_xt6 (unsigned long insn,
2092 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2093 int *invalid ATTRIBUTE_UNUSED)
2094{
2095 return ((insn << 5) & 0x20) | ((insn >> 21) & 0x1f);
2096}
2097
a680de9a
PB
2098/* The XT and XS fields in an DQ form VSX instruction. This is split. */
2099static unsigned long
2100insert_xtq6 (unsigned long insn,
2101 long value,
2102 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2103 const char **errmsg ATTRIBUTE_UNUSED)
2104{
2105 return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 2);
2106}
2107
2108static long
2109extract_xtq6 (unsigned long insn,
2110 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2111 int *invalid ATTRIBUTE_UNUSED)
2112{
2113 return ((insn << 2) & 0x20) | ((insn >> 21) & 0x1f);
2114}
2115
9b4e5766
PB
2116/* The XA field in an XX3 form instruction. This is split. */
2117
2118static unsigned long
2119insert_xa6 (unsigned long insn,
2120 long value,
2121 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2122 const char **errmsg ATTRIBUTE_UNUSED)
2123{
2124 return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3);
2125}
2126
2127static long
2128extract_xa6 (unsigned long insn,
2129 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2130 int *invalid ATTRIBUTE_UNUSED)
2131{
2132 return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
2133}
2134
2135/* The XB field in an XX3 form instruction. This is split. */
2136
2137static unsigned long
2138insert_xb6 (unsigned long insn,
2139 long value,
2140 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2141 const char **errmsg ATTRIBUTE_UNUSED)
2142{
2143 return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
2144}
2145
2146static long
2147extract_xb6 (unsigned long insn,
2148 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2149 int *invalid ATTRIBUTE_UNUSED)
2150{
2151 return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1f);
2152}
2153
2154/* The XB field in an XX3 form instruction when it must be the same as
2155 the XA field in the instruction. This is used for extended
2156 mnemonics like xvmovdp. This operand is marked FAKE. The insertion
2157 function just copies the XA field into the XB field, and the
2158 extraction function just checks that the fields are the same. */
2159
2160static unsigned long
2161insert_xb6s (unsigned long insn,
2162 long value ATTRIBUTE_UNUSED,
2163 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2164 const char **errmsg ATTRIBUTE_UNUSED)
2165{
2166 return insn | (((insn >> 16) & 0x1f) << 11) | (((insn >> 2) & 0x1) << 1);
2167}
2168
2169static long
2170extract_xb6s (unsigned long insn,
2171 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2172 int *invalid)
2173{
2174 if ((((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
2175 || (((insn >> 2) & 0x1) != ((insn >> 1) & 0x1)))
2176 *invalid = 1;
2177 return 0;
2178}
066be9f7
PB
2179
2180/* The XC field in an XX4 form instruction. This is split. */
2181
2182static unsigned long
2183insert_xc6 (unsigned long insn,
2184 long value,
2185 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2186 const char **errmsg ATTRIBUTE_UNUSED)
2187{
2188 return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 2);
2189}
2190
2191static long
2192extract_xc6 (unsigned long insn,
2193 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2194 int *invalid ATTRIBUTE_UNUSED)
2195{
2196 return ((insn << 2) & 0x20) | ((insn >> 6) & 0x1f);
2197}
2198
2199static unsigned long
2200insert_dm (unsigned long insn,
2201 long value,
2202 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2203 const char **errmsg)
2204{
2205 if (value != 0 && value != 1)
2206 *errmsg = _("invalid constant");
2207 return insn | (((value) ? 3 : 0) << 8);
2208}
2209
2210static long
2211extract_dm (unsigned long insn,
2212 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2213 int *invalid)
2214{
2215 long value;
2216
2217 value = (insn >> 8) & 3;
2218 if (value != 0 && value != 3)
2219 *invalid = 1;
2220 return (value) ? 1 : 0;
2221}
7b934113 2222
b9c361e0
JL
2223/* The VLESIMM field in an I16A form instruction. This is split. */
2224
2225static unsigned long
2226insert_vlesi (unsigned long insn,
2227 long value,
2228 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2229 const char **errmsg ATTRIBUTE_UNUSED)
2230{
2231 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2232}
2233
2234static long
2235extract_vlesi (unsigned long insn,
2236 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2237 int *invalid ATTRIBUTE_UNUSED)
2238{
b9c361e0 2239 long value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
9f0682fe 2240 value = (value ^ 0x8000) - 0x8000;
b9c361e0
JL
2241 return value;
2242}
2243
2244static unsigned long
2245insert_vlensi (unsigned long insn,
2246 long value,
2247 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2248 const char **errmsg ATTRIBUTE_UNUSED)
2249{
2250 value = -value;
2251 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2252}
2253static long
2254extract_vlensi (unsigned long insn,
2255 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2256 int *invalid ATTRIBUTE_UNUSED)
2257{
2258 long value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
9f0682fe
AM
2259 value = (value ^ 0x8000) - 0x8000;
2260 /* Don't use for disassembly. */
b9c361e0
JL
2261 *invalid = 1;
2262 return -value;
2263}
2264
2265/* The VLEUIMM field in an I16A form instruction. This is split. */
2266
2267static unsigned long
2268insert_vleui (unsigned long insn,
2269 long value,
2270 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2271 const char **errmsg ATTRIBUTE_UNUSED)
2272{
2273 return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
2274}
2275
2276static long
2277extract_vleui (unsigned long insn,
2278 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2279 int *invalid ATTRIBUTE_UNUSED)
2280{
2281 return ((insn >> 10) & 0xf800) | (insn & 0x7ff);
2282}
2283
2284/* The VLEUIMML field in an I16L form instruction. This is split. */
2285
2286static unsigned long
2287insert_vleil (unsigned long insn,
2288 long value,
2289 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2290 const char **errmsg ATTRIBUTE_UNUSED)
2291{
2292 return insn | ((value & 0xf800) << 5) | (value & 0x7ff);
2293}
2294
2295static long
2296extract_vleil (unsigned long insn,
2297 ppc_cpu_t dialect ATTRIBUTE_UNUSED,
2298 int *invalid ATTRIBUTE_UNUSED)
2299{
2300 return ((insn >> 5) & 0xf800) | (insn & 0x7ff);
2301}
2302
252b5132
RH
2303\f
2304/* Macros used to form opcodes. */
2305
2306/* The main opcode. */
2307#define OP(x) ((((unsigned long)(x)) & 0x3f) << 26)
2308#define OP_MASK OP (0x3f)
2309
2310/* The main opcode combined with a trap code in the TO field of a D
2311 form instruction. Used for extended mnemonics for the trap
2312 instructions. */
2313#define OPTO(x,to) (OP (x) | ((((unsigned long)(to)) & 0x1f) << 21))
2314#define OPTO_MASK (OP_MASK | TO_MASK)
2315
2316/* The main opcode combined with a comparison size bit in the L field
2317 of a D form or X form instruction. Used for extended mnemonics for
2318 the comparison instructions. */
2319#define OPL(x,l) (OP (x) | ((((unsigned long)(l)) & 1) << 21))
2320#define OPL_MASK OPL (0x3f,1)
2321
b9c361e0
JL
2322/* The main opcode combined with an update code in D form instruction.
2323 Used for extended mnemonics for VLE memory instructions. */
2324#define OPVUP(x,vup) (OP (x) | ((((unsigned long)(vup)) & 0xff) << 8))
2325#define OPVUP_MASK OPVUP (0x3f, 0xff)
2326
dfdaec14
AJ
2327/* The main opcode combined with an update code and the RT fields specified in
2328 D form instruction. Used for VLE volatile context save/restore
2329 instructions. */
2330#define OPVUPRT(x,vup,rt) (OPVUP (x, vup) | ((((unsigned long)(rt)) & 0x1f) << 21))
2331#define OPVUPRT_MASK OPVUPRT (0x3f, 0xff, 0x1f)
2332
252b5132
RH
2333/* An A form instruction. */
2334#define A(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1) | (((unsigned long)(rc)) & 1))
2335#define A_MASK A (0x3f, 0x1f, 1)
2336
2337/* An A_MASK with the FRB field fixed. */
2338#define AFRB_MASK (A_MASK | FRB_MASK)
2339
2340/* An A_MASK with the FRC field fixed. */
2341#define AFRC_MASK (A_MASK | FRC_MASK)
2342
2343/* An A_MASK with the FRA and FRC fields fixed. */
2344#define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
2345
702f0fb4
PB
2346/* An AFRAFRC_MASK, but with L bit clear. */
2347#define AFRALFRC_MASK (AFRAFRC_MASK & ~((unsigned long) 1 << 16))
2348
252b5132
RH
2349/* A B form instruction. */
2350#define B(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 1) | ((lk) & 1))
2351#define B_MASK B (0x3f, 1, 1)
2352
b9c361e0
JL
2353/* A BD8 form instruction. This is a 16-bit instruction. */
2354#define BD8(op, aa, lk) (((((unsigned long)(op)) & 0x3f) << 10) | (((aa) & 1) << 9) | (((lk) & 1) << 8))
2355#define BD8_MASK BD8 (0x3f, 1, 1)
2356
2357/* Another BD8 form instruction. This is a 16-bit instruction. */
2358#define BD8IO(op) ((((unsigned long)(op)) & 0x1f) << 11)
2359#define BD8IO_MASK BD8IO (0x1f)
2360
2361/* A BD8 form instruction for simplified mnemonics. */
2362#define EBD8IO(op, bo, bi) (BD8IO ((op)) | ((bo) << 10) | ((bi) << 8))
2363/* A mask that excludes BO32 and BI32. */
2364#define EBD8IO1_MASK 0xf800
2365/* A mask that includes BO32 and excludes BI32. */
2366#define EBD8IO2_MASK 0xfc00
2367/* A mask that include BO32 AND BI32. */
2368#define EBD8IO3_MASK 0xff00
2369
2370/* A BD15 form instruction. */
2371#define BD15(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 0xf) << 22) | ((lk) & 1))
2372#define BD15_MASK BD15 (0x3f, 0xf, 1)
2373
2374/* A BD15 form instruction for extended conditional branch mnemonics. */
2375#define EBD15(op, aa, bo, lk) (((op) & 0x3f) << 26) | (((aa) & 0xf) << 22) | (((bo) & 0x3) << 20) | ((lk) & 1)
2376#define EBD15_MASK 0xfff00001
2377
2378/* A BD15 form instruction for extended conditional branch mnemonics with BI. */
2379#define EBD15BI(op, aa, bo, bi, lk) (((op) & 0x3f) << 26) \
2380 | (((aa) & 0xf) << 22) \
2381 | (((bo) & 0x3) << 20) \
2382 | (((bi) & 0x3) << 16) \
2383 | ((lk) & 1)
2384#define EBD15BI_MASK 0xfff30001
2385
2386/* A BD24 form instruction. */
2387#define BD24(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 25) | ((lk) & 1))
2388#define BD24_MASK BD24 (0x3f, 1, 1)
2389
252b5132
RH
2390/* A B form instruction setting the BO field. */
2391#define BBO(op, bo, aa, lk) (B ((op), (aa), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
2392#define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
2393
2394/* A BBO_MASK with the y bit of the BO field removed. This permits
2395 matching a conditional branch regardless of the setting of the y
94efba12 2396 bit. Similarly for the 'at' bits used for power4 branch hints. */
de866fcc 2397#define Y_MASK (((unsigned long) 1) << 21)
802a735e
AM
2398#define AT1_MASK (((unsigned long) 3) << 21)
2399#define AT2_MASK (((unsigned long) 9) << 21)
2400#define BBOY_MASK (BBO_MASK &~ Y_MASK)
2401#define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
252b5132
RH
2402
2403/* A B form instruction setting the BO field and the condition bits of
2404 the BI field. */
2405#define BBOCB(op, bo, cb, aa, lk) \
2406 (BBO ((op), (bo), (aa), (lk)) | ((((unsigned long)(cb)) & 0x3) << 16))
2407#define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
2408
2409/* A BBOCB_MASK with the y bit of the BO field removed. */
2410#define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
802a735e
AM
2411#define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
2412#define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
252b5132
RH
2413
2414/* A BBOYCB_MASK in which the BI field is fixed. */
2415#define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
802a735e 2416#define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
252b5132 2417
b9c361e0
JL
2418/* A VLE C form instruction. */
2419#define C_LK(x, lk) (((((unsigned long)(x)) & 0x7fff) << 1) | ((lk) & 1))
2420#define C_LK_MASK C_LK(0x7fff, 1)
2421#define C(x) ((((unsigned long)(x)) & 0xffff))
2422#define C_MASK C(0xffff)
2423
23976049
EZ
2424/* An Context form instruction. */
2425#define CTX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7))
fdd12ef3 2426#define CTX_MASK CTX(0x3f, 0x7)
23976049
EZ
2427
2428/* An User Context form instruction. */
2429#define UCTX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f))
fdd12ef3 2430#define UCTX_MASK UCTX(0x3f, 0x1f)
23976049 2431
252b5132
RH
2432/* The main opcode mask with the RA field clear. */
2433#define DRA_MASK (OP_MASK | RA_MASK)
2434
a680de9a
PB
2435/* A DQ form VSX instruction. */
2436#define DQX(op, xop) (OP (op) | ((xop) & 0x7))
2437#define DQX_MASK DQX (0x3f, 7)
2438
252b5132
RH
2439/* A DS form instruction. */
2440#define DSO(op, xop) (OP (op) | ((xop) & 0x3))
2441#define DS_MASK DSO (0x3f, 3)
2442
a680de9a
PB
2443/* An DX form instruction. */
2444#define DX(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
2445#define DX_MASK DX (0x3f, 0x1f)
2446
23976049
EZ
2447/* An EVSEL form instruction. */
2448#define EVSEL(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xff) << 3)
2449#define EVSEL_MASK EVSEL(0x3f, 0xff)
2450
b9c361e0
JL
2451/* An IA16 form instruction. */
2452#define IA16(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11)
2453#define IA16_MASK IA16(0x3f, 0x1f)
2454
2455/* An I16A form instruction. */
2456#define I16A(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11)
2457#define I16A_MASK I16A(0x3f, 0x1f)
2458
2459/* An I16L form instruction. */
2460#define I16L(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11)
2461#define I16L_MASK I16L(0x3f, 0x1f)
2462
2463/* An IM7 form instruction. */
2464#define IM7(op) ((((unsigned long)(op)) & 0x1f) << 11)
2465#define IM7_MASK IM7(0x1f)
2466
252b5132
RH
2467/* An M form instruction. */
2468#define M(op, rc) (OP (op) | ((rc) & 1))
2469#define M_MASK M (0x3f, 1)
2470
b9c361e0
JL
2471/* An LI20 form instruction. */
2472#define LI20(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1) << 15)
2473#define LI20_MASK LI20(0x3f, 0x1)
2474
252b5132
RH
2475/* An M form instruction with the ME field specified. */
2476#define MME(op, me, rc) (M ((op), (rc)) | ((((unsigned long)(me)) & 0x1f) << 1))
2477
2478/* An M_MASK with the MB and ME fields fixed. */
2479#define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
2480
2481/* An M_MASK with the SH and ME fields fixed. */
2482#define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
2483
2484/* An MD form instruction. */
2485#define MD(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x7) << 2) | ((rc) & 1))
2486#define MD_MASK MD (0x3f, 0x7, 1)
2487
2488/* An MD_MASK with the MB field fixed. */
2489#define MDMB_MASK (MD_MASK | MB6_MASK)
2490
2491/* An MD_MASK with the SH field fixed. */
2492#define MDSH_MASK (MD_MASK | SH6_MASK)
2493
2494/* An MDS form instruction. */
2495#define MDS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0xf) << 1) | ((rc) & 1))
2496#define MDS_MASK MDS (0x3f, 0xf, 1)
2497
2498/* An MDS_MASK with the MB field fixed. */
2499#define MDSMB_MASK (MDS_MASK | MB6_MASK)
2500
2501/* An SC form instruction. */
2502#define SC(op, sa, lk) (OP (op) | ((((unsigned long)(sa)) & 1) << 1) | ((lk) & 1))
2503#define SC_MASK (OP_MASK | (((unsigned long)0x3ff) << 16) | (((unsigned long)1) << 1) | 1)
2504
b9c361e0
JL
2505/* An SCI8 form instruction. */
2506#define SCI8(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 11))
2507#define SCI8_MASK SCI8(0x3f, 0x1f)
2508
2509/* An SCI8 form instruction. */
2510#define SCI8BF(op, fop, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 11) | (((fop) & 7) << 23))
2511#define SCI8BF_MASK SCI8BF(0x3f, 7, 0x1f)
2512
2513/* An SD4 form instruction. This is a 16-bit instruction. */
43e65147 2514#define SD4(op) ((((unsigned long)(op)) & 0xf) << 12)
b9c361e0
JL
2515#define SD4_MASK SD4(0xf)
2516
2517/* An SE_IM5 form instruction. This is a 16-bit instruction. */
2518#define SE_IM5(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x1) << 9))
2519#define SE_IM5_MASK SE_IM5(0x3f, 1)
2520
2521/* An SE_R form instruction. This is a 16-bit instruction. */
2522#define SE_R(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x3f) << 4))
2523#define SE_R_MASK SE_R(0x3f, 0x3f)
2524
2525/* An SE_RR form instruction. This is a 16-bit instruction. */
2526#define SE_RR(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x3) << 8))
2527#define SE_RR_MASK SE_RR(0x3f, 3)
2528
2529/* A VX form instruction. */
786e2c0f
C
2530#define VX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
2531
112290ab 2532/* The mask for an VX form instruction. */
786e2c0f
C
2533#define VX_MASK VX(0x3f, 0x7ff)
2534
fb048c26
PB
2535/* A VX_MASK with the VA field fixed. */
2536#define VXVA_MASK (VX_MASK | (0x1f << 16))
2537
2538/* A VX_MASK with the VB field fixed. */
2539#define VXVB_MASK (VX_MASK | (0x1f << 11))
2540
2541/* A VX_MASK with the VA and VB fields fixed. */
2542#define VXVAVB_MASK (VX_MASK | (0x1f << 16) | (0x1f << 11))
2543
2544/* A VX_MASK with the VD and VA fields fixed. */
2545#define VXVDVA_MASK (VX_MASK | (0x1f << 21) | (0x1f << 16))
2546
2547/* A VX_MASK with a UIMM4 field. */
2548#define VXUIMM4_MASK (VX_MASK | (0x1 << 20))
2549
2550/* A VX_MASK with a UIMM3 field. */
2551#define VXUIMM3_MASK (VX_MASK | (0x3 << 19))
2552
2553/* A VX_MASK with a UIMM2 field. */
2554#define VXUIMM2_MASK (VX_MASK | (0x7 << 18))
2555
c0637f3a
PB
2556/* A VX_MASK with a PS field. */
2557#define VXPS_MASK (VX_MASK & ~(0x1 << 9))
2558
a680de9a
PB
2559/* A VX_MASK with the VA field fixed with a PS field. */
2560#define VXVAPS_MASK ((VX_MASK | (0x1f << 16)) & ~(0x1 << 9))
2561
b9c361e0 2562/* A VA form instruction. */
2613489e 2563#define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x03f))
786e2c0f 2564
112290ab 2565/* The mask for an VA form instruction. */
2613489e 2566#define VXA_MASK VXA(0x3f, 0x3f)
786e2c0f 2567
382c72e9
PB
2568/* A VXA_MASK with a SHB field. */
2569#define VXASHB_MASK (VXA_MASK | (1 << 10))
2570
b9c361e0 2571/* A VXR form instruction. */
786e2c0f
C
2572#define VXR(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | (((unsigned long)(xop)) & 0x3ff))
2573
112290ab 2574/* The mask for a VXR form instruction. */
786e2c0f
C
2575#define VXR_MASK VXR(0x3f, 0x3ff, 1)
2576
a680de9a
PB
2577/* A VX form instruction with a VA tertiary opcode. */
2578#define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16))
2579
6fd3a02d
PB
2580#define VXASH(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
2581#define VXASH_MASK VXASH (0x3f, 0x1f)
2582
252b5132
RH
2583/* An X form instruction. */
2584#define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
2585
a680de9a
PB
2586/* A X form instruction for Quad-Precision FP Instructions. */
2587#define XVA(op, xop, vaop) (X(op,xop) | (((vaop) & 0x1f) << 16))
2588
b9c361e0
JL
2589/* An EX form instruction. */
2590#define EX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
2591
2592/* The mask for an EX form instruction. */
2593#define EX_MASK EX (0x3f, 0x7ff)
2594
066be9f7
PB
2595/* An XX2 form instruction. */
2596#define XX2(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2))
2597
a680de9a
PB
2598/* A XX2 form instruction with the VA bits specified. */
2599#define XX2VA(op, xop, vaop) (XX2(op,xop) | (((vaop) & 0x1f) << 16))
2600
9b4e5766
PB
2601/* An XX3 form instruction. */
2602#define XX3(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0xff) << 3))
2603
066be9f7
PB
2604/* An XX3 form instruction with the RC bit specified. */
2605#define XX3RC(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | ((((unsigned long)(xop)) & 0x7f) << 3))
2606
2607/* An XX4 form instruction. */
2608#define XX4(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3) << 4))
9b4e5766 2609
702f0fb4
PB
2610/* A Z form instruction. */
2611#define Z(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1))
2612
252b5132
RH
2613/* An X form instruction with the RC bit specified. */
2614#define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
2615
a680de9a
PB
2616/* A X form instruction for Quad-Precision FP Instructions with RC bit. */
2617#define XVARC(op, xop, vaop, rc) (XVA ((op), (xop), (vaop)) | ((rc) & 1))
2618
6fd3a02d
PB
2619/* An X form instruction with the RA bits specified as two ops. */
2620#define XMMF(op, xop, mop0, mop1) (X ((op), (xop)) | ((mop0) & 3) << 19 | ((mop1) & 7) << 16)
2621
702f0fb4
PB
2622/* A Z form instruction with the RC bit specified. */
2623#define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
2624
252b5132
RH
2625/* The mask for an X form instruction. */
2626#define X_MASK XRC (0x3f, 0x3ff, 1)
2627
a680de9a
PB
2628/* The mask for an X form instruction with the BF bits specified. */
2629#define XBF_MASK (X_MASK | (3 << 21))
2630
e0d602ec
BE
2631/* An X form wait instruction with everything filled in except the WC field. */
2632#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
2633
9b4e5766
PB
2634/* The mask for an XX1 form instruction. */
2635#define XX1_MASK X (0x3f, 0x3ff)
2636
c0637f3a
PB
2637/* An XX1_MASK with the RB field fixed. */
2638#define XX1RB_MASK (XX1_MASK | RB_MASK)
2639
066be9f7
PB
2640/* The mask for an XX2 form instruction. */
2641#define XX2_MASK (XX2 (0x3f, 0x1ff) | (0x1f << 16))
2642
2643/* The mask for an XX2 form instruction with the UIM bits specified. */
2644#define XX2UIM_MASK (XX2 (0x3f, 0x1ff) | (7 << 18))
2645
a680de9a
PB
2646/* The mask for an XX2 form instruction with the 4 UIM bits specified. */
2647#define XX2UIM4_MASK (XX2 (0x3f, 0x1ff) | (1 << 20))
2648
066be9f7
PB
2649/* The mask for an XX2 form instruction with the BF bits specified. */
2650#define XX2BF_MASK (XX2_MASK | (3 << 21) | (1))
2651
a680de9a
PB
2652/* The mask for an XX2 form instruction with the BF and DCMX bits specified. */
2653#define XX2BFD_MASK (XX2 (0x3f, 0x1ff) | 1)
2654
2655/* The mask for an XX2 form instruction with a split DCMX bits specified. */
2656#define XX2DCMXS_MASK XX2 (0x3f, 0x1ee)
2657
9b4e5766
PB
2658/* The mask for an XX3 form instruction. */
2659#define XX3_MASK XX3 (0x3f, 0xff)
2660
066be9f7
PB
2661/* The mask for an XX3 form instruction with the BF bits specified. */
2662#define XX3BF_MASK (XX3 (0x3f, 0xff) | (3 << 21) | (1))
2663
2664/* The mask for an XX3 form instruction with the DM or SHW bits specified. */
9b4e5766 2665#define XX3DM_MASK (XX3 (0x3f, 0x1f) | (1 << 10))
066be9f7
PB
2666#define XX3SHW_MASK XX3DM_MASK
2667
2668/* The mask for an XX4 form instruction. */
2669#define XX4_MASK XX4 (0x3f, 0x3)
2670
2671/* An X form wait instruction with everything filled in except the WC field. */
2672#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
9b4e5766 2673
6fd3a02d
PB
2674/* The mask for an XMMF form instruction. */
2675#define XMMF_MASK (XMMF (0x3f, 0x3ff, 3, 7) | (1))
2676
702f0fb4
PB
2677/* The mask for a Z form instruction. */
2678#define Z_MASK ZRC (0x3f, 0x1ff, 1)
0bbdef92 2679#define Z2_MASK ZRC (0x3f, 0xff, 1)
702f0fb4 2680
a680de9a 2681/* An X_MASK with the RA/VA field fixed. */
252b5132 2682#define XRA_MASK (X_MASK | RA_MASK)
a680de9a 2683#define XVA_MASK XRA_MASK
252b5132 2684
a680de9a 2685/* An XRA_MASK with the A_L/W field clear. */
ea192fa3 2686#define XWRA_MASK (XRA_MASK & ~((unsigned long) 1 << 16))
a680de9a 2687#define XRLA_MASK XWRA_MASK
ea192fa3 2688
252b5132
RH
2689/* An X_MASK with the RB field fixed. */
2690#define XRB_MASK (X_MASK | RB_MASK)
2691
2692/* An X_MASK with the RT field fixed. */
2693#define XRT_MASK (X_MASK | RT_MASK)
2694
702f0fb4
PB
2695/* An XRT_MASK mask with the L bits clear. */
2696#define XLRT_MASK (XRT_MASK & ~((unsigned long) 0x3 << 21))
2697
252b5132
RH
2698/* An X_MASK with the RA and RB fields fixed. */
2699#define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
2700
a680de9a
PB
2701/* An XBF_MASK with the RA and RB fields fixed. */
2702#define XBFRARB_MASK (XBF_MASK | RA_MASK | RB_MASK)
2703
112290ab 2704/* An XRARB_MASK, but with the L bit clear. */
5ae2e65e
AM
2705#define XRLARB_MASK (XRARB_MASK & ~((unsigned long) 1 << 16))
2706
a680de9a
PB
2707/* An XRARB_MASK, but with the L bits in a darn instruction clear. */
2708#define XLRAND_MASK (XRARB_MASK & ~((unsigned long) 3 << 16))
2709
252b5132
RH
2710/* An X_MASK with the RT and RA fields fixed. */
2711#define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
2712
5817ffd1
PB
2713/* An X_MASK with the RT and RB fields fixed. */
2714#define XRTRB_MASK (X_MASK | RT_MASK | RB_MASK)
2715
98acc1c5
AM
2716/* An XRTRA_MASK, but with L bit clear. */
2717#define XRTLRA_MASK (XRTRA_MASK & ~((unsigned long) 1 << 21))
2718
5817ffd1
PB
2719/* An X_MASK with the RT, RA and RB fields fixed. */
2720#define XRTRARB_MASK (X_MASK | RT_MASK | RA_MASK | RB_MASK)
2721
2722/* An XRTRARB_MASK, but with L bit clear. */
2723#define XRTLRARB_MASK (XRTRARB_MASK & ~((unsigned long) 1 << 21))
2724
2725/* An XRTRARB_MASK, but with A bit clear. */
2726#define XRTARARB_MASK (XRTRARB_MASK & ~((unsigned long) 1 << 25))
2727
2728/* An XRTRARB_MASK, but with BF bits clear. */
2729#define XRTBFRARB_MASK (XRTRARB_MASK & ~((unsigned long) 7 << 23))
2730
f3806e43
BE
2731/* An X form instruction with the L bit specified. */
2732#define XOPL(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 1) << 21))
252b5132 2733
e0d602ec
BE
2734/* An X form instruction with the L bits specified. */
2735#define XOPL2(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 3) << 21))
2736
5817ffd1
PB
2737/* An X form instruction with the L bit and RC bit specified. */
2738#define XRCL(op, xop, l, rc) (XRC ((op), (xop), (rc)) | ((((unsigned long)(l)) & 1) << 21))
2739
19a6653c
AM
2740/* An X form instruction with RT fields specified */
2741#define XRT(op, xop, rt) (X ((op), (xop)) \
2742 | ((((unsigned long)(rt)) & 0x1f) << 21))
2743
2744/* An X form instruction with RT and RA fields specified */
2745#define XRTRA(op, xop, rt, ra) (X ((op), (xop)) \
2746 | ((((unsigned long)(rt)) & 0x1f) << 21) \
2747 | ((((unsigned long)(ra)) & 0x1f) << 16))
2748
252b5132
RH
2749/* The mask for an X form comparison instruction. */
2750#define XCMP_MASK (X_MASK | (((unsigned long)1) << 22))
2751
520ceea4
BE
2752/* The mask for an X form comparison instruction with the L field
2753 fixed. */
2754#define XCMPL_MASK (XCMP_MASK | (((unsigned long)1) << 21))
252b5132
RH
2755
2756/* An X form trap instruction with the TO field specified. */
2757#define XTO(op, xop, to) (X ((op), (xop)) | ((((unsigned long)(to)) & 0x1f) << 21))
2758#define XTO_MASK (X_MASK | TO_MASK)
2759
e0c21649
GK
2760/* An X form tlb instruction with the SH field specified. */
2761#define XTLB(op, xop, sh) (X ((op), (xop)) | ((((unsigned long)(sh)) & 0x1f) << 11))
2762#define XTLB_MASK (X_MASK | SH_MASK)
2763
6ba045b1
AM
2764/* An X form sync instruction. */
2765#define XSYNC(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 3) << 21))
2766
2767/* An X form sync instruction with everything filled in except the LS field. */
2768#define XSYNC_MASK (0xff9fffff)
2769
aea77599
AM
2770/* An X form sync instruction with everything filled in except the L and E fields. */
2771#define XSYNCLE_MASK (0xff90ffff)
2772
702f0fb4
PB
2773/* An X_MASK, but with the EH bit clear. */
2774#define XEH_MASK (X_MASK & ~((unsigned long )1))
2775
f5c120c5
MG
2776/* An X form AltiVec dss instruction. */
2777#define XDSS(op, xop, a) (X ((op), (xop)) | ((((unsigned long)(a)) & 1) << 25))
2778#define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
2779
252b5132
RH
2780/* An XFL form instruction. */
2781#define XFL(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1))
ea192fa3 2782#define XFL_MASK XFL (0x3f, 0x3ff, 1)
252b5132 2783
23976049 2784/* An X form isel instruction. */
de866fcc
AM
2785#define XISEL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
2786#define XISEL_MASK XISEL(0x3f, 0x1f)
23976049 2787
252b5132
RH
2788/* An XL form instruction with the LK field set to 0. */
2789#define XL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
2790
2791/* An XL form instruction which uses the LK field. */
2792#define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
2793
2794/* The mask for an XL form instruction. */
2795#define XL_MASK XLLK (0x3f, 0x3ff, 1)
2796
c0637f3a
PB
2797/* An XL_MASK with the RT, RA and RB fields fixed, but S bit clear. */
2798#define XLS_MASK ((XL_MASK | RT_MASK | RA_MASK | RB_MASK) & ~(1 << 11))
2799
252b5132
RH
2800/* An XL form instruction which explicitly sets the BO field. */
2801#define XLO(op, bo, xop, lk) \
2802 (XLLK ((op), (xop), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
2803#define XLO_MASK (XL_MASK | BO_MASK)
2804
2805/* An XL form instruction which explicitly sets the y bit of the BO
2806 field. */
2807#define XLYLK(op, xop, y, lk) (XLLK ((op), (xop), (lk)) | ((((unsigned long)(y)) & 1) << 21))
2808#define XLYLK_MASK (XL_MASK | Y_MASK)
2809
2810/* An XL form instruction which sets the BO field and the condition
2811 bits of the BI field. */
2812#define XLOCB(op, bo, cb, xop, lk) \
2813 (XLO ((op), (bo), (xop), (lk)) | ((((unsigned long)(cb)) & 3) << 16))
2814#define XLOCB_MASK XLOCB (0x3f, 0x1f, 0x3, 0x3ff, 1)
2815
2816/* An XL_MASK or XLYLK_MASK or XLOCB_MASK with the BB field fixed. */
2817#define XLBB_MASK (XL_MASK | BB_MASK)
2818#define XLYBB_MASK (XLYLK_MASK | BB_MASK)
2819#define XLBOCBBB_MASK (XLOCB_MASK | BB_MASK)
2820
d0618d1c
AM
2821/* A mask for branch instructions using the BH field. */
2822#define XLBH_MASK (XL_MASK | (0x1c << 11))
2823
252b5132
RH
2824/* An XL_MASK with the BO and BB fields fixed. */
2825#define XLBOBB_MASK (XL_MASK | BO_MASK | BB_MASK)
2826
2827/* An XL_MASK with the BO, BI and BB fields fixed. */
2828#define XLBOBIBB_MASK (XL_MASK | BO_MASK | BI_MASK | BB_MASK)
2829
e01d869a
AM
2830/* An X form mbar instruction with MO field. */
2831#define XMBAR(op, xop, mo) (X ((op), (xop)) | ((((unsigned long)(mo)) & 1) << 21))
2832
252b5132
RH
2833/* An XO form instruction. */
2834#define XO(op, xop, oe, rc) \
2835 (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1) | ((((unsigned long)(oe)) & 1) << 10) | (((unsigned long)(rc)) & 1))
2836#define XO_MASK XO (0x3f, 0x1ff, 1, 1)
2837
2838/* An XO_MASK with the RB field fixed. */
2839#define XORB_MASK (XO_MASK | RB_MASK)
2840
c3d65c1c
BE
2841/* An XOPS form instruction for paired singles. */
2842#define XOPS(op, xop, rc) \
2843 (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1))
2844#define XOPS_MASK XOPS (0x3f, 0x3ff, 1)
2845
2846
252b5132
RH
2847/* An XS form instruction. */
2848#define XS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2) | (((unsigned long)(rc)) & 1))
2849#define XS_MASK XS (0x3f, 0x1ff, 1)
2850
2851/* A mask for the FXM version of an XFX form instruction. */
98e69875 2852#define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
252b5132
RH
2853
2854/* An XFX form instruction with the FXM field filled in. */
98e69875
AM
2855#define XFXM(op, xop, fxm, p4) \
2856 (X ((op), (xop)) | ((((unsigned long)(fxm)) & 0xff) << 12) \
2857 | ((unsigned long)(p4) << 20))
252b5132
RH
2858
2859/* An XFX form instruction with the SPR field filled in. */
2860#define XSPR(op, xop, spr) \
2861 (X ((op), (xop)) | ((((unsigned long)(spr)) & 0x1f) << 16) | ((((unsigned long)(spr)) & 0x3e0) << 6))
2862#define XSPR_MASK (X_MASK | SPR_MASK)
2863
2864/* An XFX form instruction with the SPR field filled in except for the
2865 SPRBAT field. */
2866#define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
2867
2868/* An XFX form instruction with the SPR field filled in except for the
2869 SPRG field. */
b84bf58a 2870#define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16))
252b5132
RH
2871
2872/* An X form instruction with everything filled in except the E field. */
2873#define XE_MASK (0xffff7fff)
2874
23976049
EZ
2875/* An X form user context instruction. */
2876#define XUC(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f))
2877#define XUC_MASK XUC(0x3f, 0x1f)
2878
c3d65c1c
BE
2879/* An XW form instruction. */
2880#define XW(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3f) << 1) | ((rc) & 1))
2881/* The mask for a G form instruction. rc not supported at present. */
2882#define XW_MASK XW (0x3f, 0x3f, 0)
2883
081ba1b3
AM
2884/* An APU form instruction. */
2885#define APU(op, xop, rc) (OP (op) | (((unsigned long)(xop)) & 0x3ff) << 1 | ((rc) & 1))
2886
2887/* The mask for an APU form instruction. */
2888#define APU_MASK APU (0x3f, 0x3ff, 1)
2889#define APU_RT_MASK (APU_MASK | RT_MASK)
2890#define APU_RA_MASK (APU_MASK | RA_MASK)
2891
252b5132
RH
2892/* The BO encodings used in extended conditional branch mnemonics. */
2893#define BODNZF (0x0)
2894#define BODNZFP (0x1)
2895#define BODZF (0x2)
2896#define BODZFP (0x3)
252b5132
RH
2897#define BODNZT (0x8)
2898#define BODNZTP (0x9)
2899#define BODZT (0xa)
2900#define BODZTP (0xb)
802a735e
AM
2901
2902#define BOF (0x4)
2903#define BOFP (0x5)
94efba12
AM
2904#define BOFM4 (0x6)
2905#define BOFP4 (0x7)
252b5132
RH
2906#define BOT (0xc)
2907#define BOTP (0xd)
94efba12
AM
2908#define BOTM4 (0xe)
2909#define BOTP4 (0xf)
802a735e 2910
252b5132
RH
2911#define BODNZ (0x10)
2912#define BODNZP (0x11)
2913#define BODZ (0x12)
2914#define BODZP (0x13)
94efba12
AM
2915#define BODNZM4 (0x18)
2916#define BODNZP4 (0x19)
2917#define BODZM4 (0x1a)
2918#define BODZP4 (0x1b)
802a735e 2919
252b5132
RH
2920#define BOU (0x14)
2921
b9c361e0
JL
2922/* The BO16 encodings used in extended VLE conditional branch mnemonics. */
2923#define BO16F (0x0)
2924#define BO16T (0x1)
2925
2926/* The BO32 encodings used in extended VLE conditional branch mnemonics. */
2927#define BO32F (0x0)
2928#define BO32T (0x1)
2929#define BO32DNZ (0x2)
2930#define BO32DZ (0x3)
2931
252b5132
RH
2932/* The BI condition bit encodings used in extended conditional branch
2933 mnemonics. */
2934#define CBLT (0)
2935#define CBGT (1)
2936#define CBEQ (2)
2937#define CBSO (3)
2938
2939/* The TO encodings used in extended trap mnemonics. */
2940#define TOLGT (0x1)
2941#define TOLLT (0x2)
2942#define TOEQ (0x4)
2943#define TOLGE (0x5)
2944#define TOLNL (0x5)
2945#define TOLLE (0x6)
2946#define TOLNG (0x6)
2947#define TOGT (0x8)
2948#define TOGE (0xc)
2949#define TONL (0xc)
2950#define TOLT (0x10)
2951#define TOLE (0x14)
2952#define TONG (0x14)
2953#define TONE (0x18)
2954#define TOU (0x1f)
2955\f
2956/* Smaller names for the flags so each entry in the opcodes table will
2957 fit on a single line. */
2958#undef PPC
de866fcc 2959#define PPC PPC_OPCODE_PPC
661bd698 2960#define PPCCOM PPC_OPCODE_PPC | PPC_OPCODE_COMMON
661bd698 2961#define POWER4 PPC_OPCODE_POWER4
1ed8e1e4 2962#define POWER5 PPC_OPCODE_POWER5
702f0fb4 2963#define POWER6 PPC_OPCODE_POWER6
066be9f7 2964#define POWER7 PPC_OPCODE_POWER7
5817ffd1 2965#define POWER8 PPC_OPCODE_POWER8
a680de9a 2966#define POWER9 PPC_OPCODE_POWER9
ede602d7 2967#define CELL PPC_OPCODE_CELL
bdc70b4a 2968#define PPC64 PPC_OPCODE_64 | PPC_OPCODE_64_BRIDGE
6b069ee7 2969#define NON32 (PPC_OPCODE_64 | PPC_OPCODE_POWER4 \
bdc70b4a 2970 | PPC_OPCODE_EFS | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
418c1742 2971#define PPC403 PPC_OPCODE_403
081ba1b3 2972#define PPC405 PPC_OPCODE_405
7d5b217e 2973#define PPC440 PPC_OPCODE_440
c8187e15 2974#define PPC464 PPC440
9fe54b1c 2975#define PPC476 PPC_OPCODE_476
ef5a96d5
AM
2976#define PPC750 PPC_OPCODE_750
2977#define PPC7450 PPC_OPCODE_7450
2978#define PPC860 PPC_OPCODE_860
c3d65c1c 2979#define PPCPS PPC_OPCODE_PPCPS
a404d431 2980#define PPCVEC PPC_OPCODE_ALTIVEC
aea77599 2981#define PPCVEC2 PPC_OPCODE_ALTIVEC2
a680de9a 2982#define PPCVEC3 PPC_OPCODE_ALTIVEC2
9b4e5766 2983#define PPCVSX PPC_OPCODE_VSX
c0637f3a 2984#define PPCVSX2 PPC_OPCODE_VSX
a680de9a 2985#define PPCVSX3 PPC_OPCODE_VSX3
de866fcc
AM
2986#define POWER PPC_OPCODE_POWER
2987#define POWER2 PPC_OPCODE_POWER | PPC_OPCODE_POWER2
81a0b7e2
AM
2988#define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
2989#define PPCPWR2 PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
de866fcc 2990#define COM PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
de866fcc 2991#define M601 PPC_OPCODE_POWER | PPC_OPCODE_601
661bd698 2992#define PWRCOM PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
de866fcc 2993#define MFDEC1 PPC_OPCODE_POWER
bdc70b4a 2994#define MFDEC2 PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE | PPC_OPCODE_TITAN
418c1742 2995#define BOOKE PPC_OPCODE_BOOKE
14b57c7c 2996#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
36ae0db3 2997#define PPCE300 PPC_OPCODE_E300
14b57c7c
AM
2998#define PPCSPE PPC_OPCODE_SPE
2999#define PPCISEL PPC_OPCODE_ISEL
3000#define PPCEFS PPC_OPCODE_EFS
de866fcc 3001#define PPCBRLK PPC_OPCODE_BRLOCK
23976049 3002#define PPCPMR PPC_OPCODE_PMR
aea77599 3003#define PPCTMR PPC_OPCODE_TMR
de866fcc 3004#define PPCCHLK PPC_OPCODE_CACHELCK
23976049 3005#define PPCRFMCI PPC_OPCODE_RFMCI
19a6653c 3006#define E500MC PPC_OPCODE_E500MC
634b50f2 3007#define PPCA2 PPC_OPCODE_A2
43e65147 3008#define TITAN PPC_OPCODE_TITAN
14b57c7c 3009#define MULHW PPC_OPCODE_405 | PPC_OPCODE_440 | TITAN
e01d869a 3010#define E500 PPC_OPCODE_E500
aea77599 3011#define E6500 PPC_OPCODE_E6500
b9c361e0 3012#define PPCVLE PPC_OPCODE_VLE
5817ffd1 3013#define PPCHTM PPC_OPCODE_HTM
dfdaec14 3014#define E200Z4 PPC_OPCODE_E200Z4
4fff86c5
PB
3015/* The list of embedded processors that use the embedded operand ordering
3016 for the 3 operand dcbt and dcbtst instructions. */
3017#define DCBT_EO (PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \
14b57c7c 3018 | PPC_OPCODE_A2)
4fff86c5
PB
3019
3020
252b5132
RH
3021\f
3022/* The opcode table.
3023
3024 The format of the opcode table is:
3025
8ebac3aa 3026 NAME OPCODE MASK FLAGS ANTI {OPERANDS}
252b5132
RH
3027
3028 NAME is the name of the instruction.
3029 OPCODE is the instruction opcode.
3030 MASK is the opcode mask; this is used to tell the disassembler
3031 which bits in the actual opcode must match OPCODE.
8ebac3aa
AM
3032 FLAGS are flags indicating which processors support the instruction.
3033 ANTI indicates which processors don't support the instruction.
252b5132
RH
3034 OPERANDS is the list of operands.
3035
3036 The disassembler reads the table in order and prints the first
3037 instruction which matches, so this table is sorted to put more
de866fcc
AM
3038 specific instructions before more general instructions.
3039
3040 This table must be sorted by major opcode. Please try to keep it
3041 vaguely sorted within major opcode too, except of course where
3042 constrained otherwise by disassembler operation. */
252b5132
RH
3043
3044const struct powerpc_opcode powerpc_opcodes[] = {
14b57c7c
AM
3045{"attn", X(0,256), X_MASK, POWER4|PPCA2, PPC476|PPCVLE, {0}},
3046{"tdlgti", OPTO(2,TOLGT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3047{"tdllti", OPTO(2,TOLLT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3048{"tdeqi", OPTO(2,TOEQ), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3049{"tdlgei", OPTO(2,TOLGE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3050{"tdlnli", OPTO(2,TOLNL), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3051{"tdllei", OPTO(2,TOLLE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3052{"tdlngi", OPTO(2,TOLNG), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3053{"tdgti", OPTO(2,TOGT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3054{"tdgei", OPTO(2,TOGE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3055{"tdnli", OPTO(2,TONL), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3056{"tdlti", OPTO(2,TOLT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3057{"tdlei", OPTO(2,TOLE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3058{"tdngi", OPTO(2,TONG), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3059{"tdnei", OPTO(2,TONE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3060{"tdui", OPTO(2,TOU), OPTO_MASK, PPC64, PPCVLE, {RA, SI}},
3061{"tdi", OP(2), OP_MASK, PPC64, PPCVLE, {TO, RA, SI}},
3062
3063{"twlgti", OPTO(3,TOLGT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3064{"tlgti", OPTO(3,TOLGT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3065{"twllti", OPTO(3,TOLLT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3066{"tllti", OPTO(3,TOLLT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3067{"tweqi", OPTO(3,TOEQ), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3068{"teqi", OPTO(3,TOEQ), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3069{"twlgei", OPTO(3,TOLGE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3070{"tlgei", OPTO(3,TOLGE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3071{"twlnli", OPTO(3,TOLNL), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3072{"tlnli", OPTO(3,TOLNL), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3073{"twllei", OPTO(3,TOLLE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3074{"tllei", OPTO(3,TOLLE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3075{"twlngi", OPTO(3,TOLNG), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3076{"tlngi", OPTO(3,TOLNG), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3077{"twgti", OPTO(3,TOGT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3078{"tgti", OPTO(3,TOGT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3079{"twgei", OPTO(3,TOGE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3080{"tgei", OPTO(3,TOGE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3081{"twnli", OPTO(3,TONL), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3082{"tnli", OPTO(3,TONL), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3083{"twlti", OPTO(3,TOLT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3084{"tlti", OPTO(3,TOLT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3085{"twlei", OPTO(3,TOLE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3086{"tlei", OPTO(3,TOLE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3087{"twngi", OPTO(3,TONG), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3088{"tngi", OPTO(3,TONG), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3089{"twnei", OPTO(3,TONE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3090{"tnei", OPTO(3,TONE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3091{"twui", OPTO(3,TOU), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}},
3092{"tui", OPTO(3,TOU), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}},
3093{"twi", OP(3), OP_MASK, PPCCOM, PPCVLE, {TO, RA, SI}},
3094{"ti", OP(3), OP_MASK, PWRCOM, PPCVLE, {TO, RA, SI}},
3095
3096{"ps_cmpu0", X (4, 0), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
3097{"vaddubm", VX (4, 0), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3098{"vmul10cuq", VX (4, 1), VXVB_MASK, PPCVEC3, 0, {VD, VA}},
3099{"vmaxub", VX (4, 2), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3100{"vrlb", VX (4, 4), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3101{"vcmpequb", VXR(4, 6,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3102{"vcmpneb", VXR(4, 7,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3103{"vmuloub", VX (4, 8), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3104{"vaddfp", VX (4, 10), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3105{"psq_lx", XW (4, 6,0), XW_MASK, PPCPS, 0, {FRT,RA,RB,PSWM,PSQM}},
3106{"vmrghb", VX (4, 12), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3107{"psq_stx", XW (4, 7,0), XW_MASK, PPCPS, 0, {FRS,RA,RB,PSWM,PSQM}},
3108{"vpkuhum", VX (4, 14), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3109{"mulhhwu", XRC(4, 8,0), X_MASK, MULHW, 0, {RT, RA, RB}},
3110{"mulhhwu.", XRC(4, 8,1), X_MASK, MULHW, 0, {RT, RA, RB}},
3111{"ps_sum0", A (4, 10,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3112{"ps_sum0.", A (4, 10,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3113{"ps_sum1", A (4, 11,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3114{"ps_sum1.", A (4, 11,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3115{"ps_muls0", A (4, 12,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3116{"machhwu", XO (4, 12,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3117{"ps_muls0.", A (4, 12,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3118{"machhwu.", XO (4, 12,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3119{"ps_muls1", A (4, 13,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3120{"ps_muls1.", A (4, 13,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3121{"ps_madds0", A (4, 14,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3122{"ps_madds0.", A (4, 14,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3123{"ps_madds1", A (4, 15,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3124{"ps_madds1.", A (4, 15,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3125{"vmhaddshs", VXA(4, 32), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3126{"vmhraddshs", VXA(4, 33), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3127{"vmladduhm", VXA(4, 34), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3128{"vmsumudm", VXA(4, 35), VXA_MASK, PPCVEC3, 0, {VD, VA, VB, VC}},
3129{"ps_div", A (4, 18,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3130{"vmsumubm", VXA(4, 36), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3131{"ps_div.", A (4, 18,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3132{"vmsummbm", VXA(4, 37), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3133{"vmsumuhm", VXA(4, 38), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3134{"vmsumuhs", VXA(4, 39), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3135{"ps_sub", A (4, 20,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3136{"vmsumshm", VXA(4, 40), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3137{"ps_sub.", A (4, 20,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3138{"vmsumshs", VXA(4, 41), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3139{"ps_add", A (4, 21,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3140{"vsel", VXA(4, 42), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3141{"ps_add.", A (4, 21,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3142{"vperm", VXA(4, 43), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}},
3143{"vsldoi", VXA(4, 44), VXASHB_MASK, PPCVEC, 0, {VD, VA, VB, SHB}},
3144{"vpermxor", VXA(4, 45), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3145{"ps_sel", A (4, 23,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3146{"vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC, 0, {VD, VA, VC, VB}},
3147{"ps_sel.", A (4, 23,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3148{"vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC, 0, {VD, VA, VC, VB}},
3149{"ps_res", A (4, 24,0), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
3150{"maddhd", VXA(4, 48), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
3151{"ps_res.", A (4, 24,1), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
3152{"maddhdu", VXA(4, 49), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
3153{"ps_mul", A (4, 25,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3154{"ps_mul.", A (4, 25,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}},
3155{"maddld", VXA(4, 51), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}},
3156{"ps_rsqrte", A (4, 26,0), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
3157{"ps_rsqrte.", A (4, 26,1), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}},
3158{"ps_msub", A (4, 28,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3159{"ps_msub.", A (4, 28,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3160{"ps_madd", A (4, 29,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3161{"ps_madd.", A (4, 29,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3162{"vpermr", VXA(4, 59), VXA_MASK, PPCVEC3, 0, {VD, VA, VB, VC}},
3163{"ps_nmsub", A (4, 30,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3164{"vaddeuqm", VXA(4, 60), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3165{"ps_nmsub.", A (4, 30,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3166{"vaddecuq", VXA(4, 61), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3167{"ps_nmadd", A (4, 31,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3168{"vsubeuqm", VXA(4, 62), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3169{"ps_nmadd.", A (4, 31,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}},
3170{"vsubecuq", VXA(4, 63), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}},
3171{"ps_cmpo0", X (4, 32), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
3172{"vadduhm", VX (4, 64), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3173{"vmul10ecuq", VX (4, 65), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3174{"vmaxuh", VX (4, 66), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3175{"vrlh", VX (4, 68), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3176{"vcmpequh", VXR(4, 70,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3177{"vcmpneh", VXR(4, 71,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3178{"vmulouh", VX (4, 72), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3179{"vsubfp", VX (4, 74), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3180{"psq_lux", XW (4, 38,0), XW_MASK, PPCPS, 0, {FRT,RA,RB,PSWM,PSQM}},
3181{"vmrghh", VX (4, 76), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3182{"psq_stux", XW (4, 39,0), XW_MASK, PPCPS, 0, {FRS,RA,RB,PSWM,PSQM}},
3183{"vpkuwum", VX (4, 78), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3184{"ps_neg", XRC(4, 40,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3185{"mulhhw", XRC(4, 40,0), X_MASK, MULHW, 0, {RT, RA, RB}},
3186{"ps_neg.", XRC(4, 40,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3187{"mulhhw.", XRC(4, 40,1), X_MASK, MULHW, 0, {RT, RA, RB}},
3188{"machhw", XO (4, 44,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3189{"machhw.", XO (4, 44,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3190{"nmachhw", XO (4, 46,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3191{"nmachhw.", XO (4, 46,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3192{"ps_cmpu1", X (4, 64), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
3193{"vadduwm", VX (4, 128), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3194{"vmaxuw", VX (4, 130), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3195{"vrlw", VX (4, 132), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3196{"vrlwmi", VX (4, 133), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3197{"vcmpequw", VXR(4, 134,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3198{"vcmpnew", VXR(4, 135,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3199{"vmulouw", VX (4, 136), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3200{"vmuluwm", VX (4, 137), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3201{"vmrghw", VX (4, 140), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3202{"vpkuhus", VX (4, 142), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3203{"ps_mr", XRC(4, 72,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3204{"ps_mr.", XRC(4, 72,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3205{"machhwsu", XO (4, 76,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3206{"machhwsu.", XO (4, 76,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3207{"ps_cmpo1", X (4, 96), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}},
3208{"vaddudm", VX (4, 192), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3209{"vmaxud", VX (4, 194), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3210{"vrld", VX (4, 196), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3211{"vrldmi", VX (4, 197), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3212{"vcmpeqfp", VXR(4, 198,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3213{"vcmpequd", VXR(4, 199,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
3214{"vpkuwus", VX (4, 206), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3215{"machhws", XO (4, 108,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3216{"machhws.", XO (4, 108,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3217{"nmachhws", XO (4, 110,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3218{"nmachhws.", XO (4, 110,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3219{"vadduqm", VX (4, 256), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3220{"vmaxsb", VX (4, 258), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3221{"vslb", VX (4, 260), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3222{"vcmpnezb", VXR(4, 263,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3223{"vmulosb", VX (4, 264), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3224{"vrefp", VX (4, 266), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3225{"vmrglb", VX (4, 268), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3226{"vpkshus", VX (4, 270), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3227{"ps_nabs", XRC(4, 136,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3228{"mulchwu", XRC(4, 136,0), X_MASK, MULHW, 0, {RT, RA, RB}},
3229{"ps_nabs.", XRC(4, 136,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3230{"mulchwu.", XRC(4, 136,1), X_MASK, MULHW, 0, {RT, RA, RB}},
3231{"macchwu", XO (4, 140,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3232{"macchwu.", XO (4, 140,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3233{"vaddcuq", VX (4, 320), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3234{"vmaxsh", VX (4, 322), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3235{"vslh", VX (4, 324), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3236{"vcmpnezh", VXR(4, 327,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3237{"vmulosh", VX (4, 328), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3238{"vrsqrtefp", VX (4, 330), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3239{"vmrglh", VX (4, 332), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3240{"vpkswus", VX (4, 334), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3241{"mulchw", XRC(4, 168,0), X_MASK, MULHW, 0, {RT, RA, RB}},
3242{"mulchw.", XRC(4, 168,1), X_MASK, MULHW, 0, {RT, RA, RB}},
3243{"macchw", XO (4, 172,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3244{"macchw.", XO (4, 172,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3245{"nmacchw", XO (4, 174,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3246{"nmacchw.", XO (4, 174,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3247{"vaddcuw", VX (4, 384), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3248{"vmaxsw", VX (4, 386), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3249{"vslw", VX (4, 388), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3250{"vrlwnm", VX (4, 389), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3251{"vcmpnezw", VXR(4, 391,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3252{"vmulosw", VX (4, 392), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3253{"vexptefp", VX (4, 394), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3254{"vmrglw", VX (4, 396), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3255{"vpkshss", VX (4, 398), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3256{"macchwsu", XO (4, 204,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3257{"macchwsu.", XO (4, 204,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3258{"vmaxsd", VX (4, 450), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3259{"vsl", VX (4, 452), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3260{"vrldnm", VX (4, 453), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3261{"vcmpgefp", VXR(4, 454,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3262{"vlogefp", VX (4, 458), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3263{"vpkswss", VX (4, 462), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3264{"macchws", XO (4, 236,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3265{"macchws.", XO (4, 236,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3266{"nmacchws", XO (4, 238,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3267{"nmacchws.", XO (4, 238,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3268{"evaddw", VX (4, 512), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3269{"vaddubs", VX (4, 512), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3270{"vmul10uq", VX (4, 513), VXVB_MASK, PPCVEC3, 0, {VD, VA}},
3271{"evaddiw", VX (4, 514), VX_MASK, PPCSPE, 0, {RS, RB, UIMM}},
3272{"vminub", VX (4, 514), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3273{"evsubfw", VX (4, 516), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3274{"evsubw", VX (4, 516), VX_MASK, PPCSPE, 0, {RS, RB, RA}},
3275{"vsrb", VX (4, 516), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3276{"evsubifw", VX (4, 518), VX_MASK, PPCSPE, 0, {RS, UIMM, RB}},
3277{"evsubiw", VX (4, 518), VX_MASK, PPCSPE, 0, {RS, RB, UIMM}},
3278{"vcmpgtub", VXR(4, 518,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3279{"evabs", VX (4, 520), VX_MASK, PPCSPE, 0, {RS, RA}},
3280{"vmuleub", VX (4, 520), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3281{"evneg", VX (4, 521), VX_MASK, PPCSPE, 0, {RS, RA}},
3282{"evextsb", VX (4, 522), VX_MASK, PPCSPE, 0, {RS, RA}},
3283{"vrfin", VX (4, 522), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3284{"evextsh", VX (4, 523), VX_MASK, PPCSPE, 0, {RS, RA}},
3285{"evrndw", VX (4, 524), VX_MASK, PPCSPE, 0, {RS, RA}},
3286{"vspltb", VX (4, 524), VXUIMM4_MASK, PPCVEC, 0, {VD, VB, UIMM4}},
3287{"vextractub", VX (4, 525), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3288{"evcntlzw", VX (4, 525), VX_MASK, PPCSPE, 0, {RS, RA}},
3289{"evcntlsw", VX (4, 526), VX_MASK, PPCSPE, 0, {RS, RA}},
3290{"vupkhsb", VX (4, 526), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3291{"brinc", VX (4, 527), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3292{"ps_abs", XRC(4, 264,0), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3293{"ps_abs.", XRC(4, 264,1), XRA_MASK, PPCPS, 0, {FRT, FRB}},
3294{"evand", VX (4, 529), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3295{"evandc", VX (4, 530), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3296{"evxor", VX (4, 534), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3297{"evmr", VX (4, 535), VX_MASK, PPCSPE, 0, {RS, RA, BBA}},
3298{"evor", VX (4, 535), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3299{"evnor", VX (4, 536), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3300{"evnot", VX (4, 536), VX_MASK, PPCSPE, 0, {RS, RA, BBA}},
3301{"get", APU(4, 268,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
3302{"eveqv", VX (4, 537), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3303{"evorc", VX (4, 539), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3304{"evnand", VX (4, 542), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3305{"evsrwu", VX (4, 544), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3306{"evsrws", VX (4, 545), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3307{"evsrwiu", VX (4, 546), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
3308{"evsrwis", VX (4, 547), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
3309{"evslw", VX (4, 548), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3310{"evslwi", VX (4, 550), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
3311{"evrlw", VX (4, 552), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3312{"evsplati", VX (4, 553), VX_MASK, PPCSPE, 0, {RS, SIMM}},
3313{"evrlwi", VX (4, 554), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}},
3314{"evsplatfi", VX (4, 555), VX_MASK, PPCSPE, 0, {RS, SIMM}},
3315{"evmergehi", VX (4, 556), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3316{"evmergelo", VX (4, 557), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3317{"evmergehilo", VX (4, 558), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3318{"evmergelohi", VX (4, 559), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3319{"evcmpgtu", VX (4, 560), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3320{"evcmpgts", VX (4, 561), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3321{"evcmpltu", VX (4, 562), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3322{"evcmplts", VX (4, 563), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3323{"evcmpeq", VX (4, 564), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3324{"cget", APU(4, 284,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
3325{"vadduhs", VX (4, 576), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3326{"vmul10euq", VX (4, 577), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3327{"vminuh", VX (4, 578), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3328{"vsrh", VX (4, 580), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3329{"vcmpgtuh", VXR(4, 582,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3330{"vmuleuh", VX (4, 584), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3331{"vrfiz", VX (4, 586), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3332{"vsplth", VX (4, 588), VXUIMM3_MASK, PPCVEC, 0, {VD, VB, UIMM3}},
3333{"vextractuh", VX (4, 589), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3334{"vupkhsh", VX (4, 590), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3335{"nget", APU(4, 300,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
3336{"evsel", EVSEL(4,79), EVSEL_MASK, PPCSPE, 0, {RS, RA, RB, CRFS}},
3337{"ncget", APU(4, 316,0), APU_RA_MASK, PPC405, 0, {RT, FSL}},
3338{"evfsadd", VX (4, 640), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3339{"vadduws", VX (4, 640), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3340{"evfssub", VX (4, 641), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3341{"vminuw", VX (4, 642), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3342{"evfsabs", VX (4, 644), VX_MASK, PPCSPE, 0, {RS, RA}},
3343{"vsrw", VX (4, 644), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3344{"evfsnabs", VX (4, 645), VX_MASK, PPCSPE, 0, {RS, RA}},
3345{"evfsneg", VX (4, 646), VX_MASK, PPCSPE, 0, {RS, RA}},
3346{"vcmpgtuw", VXR(4, 646,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3347{"vmuleuw", VX (4, 648), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3348{"evfsmul", VX (4, 648), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3349{"evfsdiv", VX (4, 649), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3350{"vrfip", VX (4, 650), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3351{"evfscmpgt", VX (4, 652), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3352{"vspltw", VX (4, 652), VXUIMM2_MASK, PPCVEC, 0, {VD, VB, UIMM2}},
3353{"vextractuw", VX (4, 653), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3354{"evfscmplt", VX (4, 653), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3355{"evfscmpeq", VX (4, 654), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3356{"vupklsb", VX (4, 654), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3357{"evfscfui", VX (4, 656), VX_MASK, PPCSPE, 0, {RS, RB}},
3358{"evfscfsi", VX (4, 657), VX_MASK, PPCSPE, 0, {RS, RB}},
3359{"evfscfuf", VX (4, 658), VX_MASK, PPCSPE, 0, {RS, RB}},
3360{"evfscfsf", VX (4, 659), VX_MASK, PPCSPE, 0, {RS, RB}},
3361{"evfsctui", VX (4, 660), VX_MASK, PPCSPE, 0, {RS, RB}},
3362{"evfsctsi", VX (4, 661), VX_MASK, PPCSPE, 0, {RS, RB}},
3363{"evfsctuf", VX (4, 662), VX_MASK, PPCSPE, 0, {RS, RB}},
3364{"evfsctsf", VX (4, 663), VX_MASK, PPCSPE, 0, {RS, RB}},
3365{"evfsctuiz", VX (4, 664), VX_MASK, PPCSPE, 0, {RS, RB}},
3366{"put", APU(4, 332,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
3367{"evfsctsiz", VX (4, 666), VX_MASK, PPCSPE, 0, {RS, RB}},
3368{"evfststgt", VX (4, 668), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3369{"evfststlt", VX (4, 669), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3370{"evfststeq", VX (4, 670), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}},
3371{"cput", APU(4, 348,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
3372{"efsadd", VX (4, 704), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3373{"efssub", VX (4, 705), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3374{"vminud", VX (4, 706), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3375{"efsabs", VX (4, 708), VX_MASK, PPCEFS, 0, {RS, RA}},
3376{"vsr", VX (4, 708), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3377{"efsnabs", VX (4, 709), VX_MASK, PPCEFS, 0, {RS, RA}},
3378{"efsneg", VX (4, 710), VX_MASK, PPCEFS, 0, {RS, RA}},
3379{"vcmpgtfp", VXR(4, 710,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3380{"vcmpgtud", VXR(4, 711,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
3381{"efsmul", VX (4, 712), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3382{"efsdiv", VX (4, 713), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3383{"vrfim", VX (4, 714), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3384{"efscmpgt", VX (4, 716), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3385{"vextractd", VX (4, 717), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3386{"efscmplt", VX (4, 717), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3387{"efscmpeq", VX (4, 718), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3388{"vupklsh", VX (4, 718), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3389{"efscfd", VX (4, 719), VX_MASK, PPCEFS, 0, {RS, RB}},
3390{"efscfui", VX (4, 720), VX_MASK, PPCEFS, 0, {RS, RB}},
3391{"efscfsi", VX (4, 721), VX_MASK, PPCEFS, 0, {RS, RB}},
3392{"efscfuf", VX (4, 722), VX_MASK, PPCEFS, 0, {RS, RB}},
3393{"efscfsf", VX (4, 723), VX_MASK, PPCEFS, 0, {RS, RB}},
3394{"efsctui", VX (4, 724), VX_MASK, PPCEFS, 0, {RS, RB}},
3395{"efsctsi", VX (4, 725), VX_MASK, PPCEFS, 0, {RS, RB}},
3396{"efsctuf", VX (4, 726), VX_MASK, PPCEFS, 0, {RS, RB}},
3397{"efsctsf", VX (4, 727), VX_MASK, PPCEFS, 0, {RS, RB}},
3398{"efsctuiz", VX (4, 728), VX_MASK, PPCEFS, 0, {RS, RB}},
3399{"nput", APU(4, 364,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
3400{"efsctsiz", VX (4, 730), VX_MASK, PPCEFS, 0, {RS, RB}},
3401{"efststgt", VX (4, 732), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3402{"efststlt", VX (4, 733), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3403{"efststeq", VX (4, 734), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3404{"efdadd", VX (4, 736), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3405{"efdsub", VX (4, 737), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3406{"efdcfuid", VX (4, 738), VX_MASK, PPCEFS, 0, {RS, RB}},
3407{"efdcfsid", VX (4, 739), VX_MASK, PPCEFS, 0, {RS, RB}},
3408{"efdabs", VX (4, 740), VX_MASK, PPCEFS, 0, {RS, RA}},
3409{"efdnabs", VX (4, 741), VX_MASK, PPCEFS, 0, {RS, RA}},
3410{"efdneg", VX (4, 742), VX_MASK, PPCEFS, 0, {RS, RA}},
3411{"efdmul", VX (4, 744), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3412{"efddiv", VX (4, 745), VX_MASK, PPCEFS, 0, {RS, RA, RB}},
3413{"efdctuidz", VX (4, 746), VX_MASK, PPCEFS, 0, {RS, RB}},
3414{"efdctsidz", VX (4, 747), VX_MASK, PPCEFS, 0, {RS, RB}},
3415{"efdcmpgt", VX (4, 748), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3416{"efdcmplt", VX (4, 749), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3417{"efdcmpeq", VX (4, 750), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3418{"efdcfs", VX (4, 751), VX_MASK, PPCEFS, 0, {RS, RB}},
3419{"efdcfui", VX (4, 752), VX_MASK, PPCEFS, 0, {RS, RB}},
3420{"efdcfsi", VX (4, 753), VX_MASK, PPCEFS, 0, {RS, RB}},
3421{"efdcfuf", VX (4, 754), VX_MASK, PPCEFS, 0, {RS, RB}},
3422{"efdcfsf", VX (4, 755), VX_MASK, PPCEFS, 0, {RS, RB}},
3423{"efdctui", VX (4, 756), VX_MASK, PPCEFS, 0, {RS, RB}},
3424{"efdctsi", VX (4, 757), VX_MASK, PPCEFS, 0, {RS, RB}},
3425{"efdctuf", VX (4, 758), VX_MASK, PPCEFS, 0, {RS, RB}},
3426{"efdctsf", VX (4, 759), VX_MASK, PPCEFS, 0, {RS, RB}},
3427{"efdctuiz", VX (4, 760), VX_MASK, PPCEFS, 0, {RS, RB}},
3428{"ncput", APU(4, 380,0), APU_RT_MASK, PPC405, 0, {RA, FSL}},
3429{"efdctsiz", VX (4, 762), VX_MASK, PPCEFS, 0, {RS, RB}},
3430{"efdtstgt", VX (4, 764), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3431{"efdtstlt", VX (4, 765), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3432{"efdtsteq", VX (4, 766), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}},
3433{"evlddx", VX (4, 768), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3434{"vaddsbs", VX (4, 768), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3435{"evldd", VX (4, 769), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
3436{"evldwx", VX (4, 770), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3437{"vminsb", VX (4, 770), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3438{"evldw", VX (4, 771), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
3439{"evldhx", VX (4, 772), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3440{"vsrab", VX (4, 772), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3441{"evldh", VX (4, 773), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
3442{"vcmpgtsb", VXR(4, 774,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3443{"evlhhesplatx",VX (4, 776), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3444{"vmulesb", VX (4, 776), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3445{"evlhhesplat", VX (4, 777), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
3446{"vcfux", VX (4, 778), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3447{"vcuxwfp", VX (4, 778), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3448{"evlhhousplatx",VX(4, 780), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3449{"vspltisb", VX (4, 780), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
3450{"vinsertb", VX (4, 781), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3451{"evlhhousplat",VX (4, 781), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
3452{"evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3453{"vpkpx", VX (4, 782), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3454{"evlhhossplat",VX (4, 783), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}},
3455{"mullhwu", XRC(4, 392,0), X_MASK, MULHW, 0, {RT, RA, RB}},
3456{"evlwhex", VX (4, 784), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3457{"mullhwu.", XRC(4, 392,1), X_MASK, MULHW, 0, {RT, RA, RB}},
3458{"evlwhe", VX (4, 785), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3459{"evlwhoux", VX (4, 788), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3460{"evlwhou", VX (4, 789), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3461{"evlwhosx", VX (4, 790), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3462{"evlwhos", VX (4, 791), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3463{"maclhwu", XO (4, 396,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
3464{"evlwwsplatx", VX (4, 792), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3465{"maclhwu.", XO (4, 396,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
3466{"evlwwsplat", VX (4, 793), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3467{"evlwhsplatx", VX (4, 796), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3468{"evlwhsplat", VX (4, 797), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3469{"evstddx", VX (4, 800), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3470{"evstdd", VX (4, 801), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
3471{"evstdwx", VX (4, 802), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3472{"evstdw", VX (4, 803), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
3473{"evstdhx", VX (4, 804), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3474{"evstdh", VX (4, 805), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}},
3475{"evstwhex", VX (4, 816), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3476{"evstwhe", VX (4, 817), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3477{"evstwhox", VX (4, 820), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3478{"evstwho", VX (4, 821), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3479{"evstwwex", VX (4, 824), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3480{"evstwwe", VX (4, 825), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3481{"evstwwox", VX (4, 828), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3482{"evstwwo", VX (4, 829), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}},
3483{"vaddshs", VX (4, 832), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3484{"bcdcpsgn.", VX (4, 833), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3485{"vminsh", VX (4, 834), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3486{"vsrah", VX (4, 836), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3487{"vcmpgtsh", VXR(4, 838,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3488{"vmulesh", VX (4, 840), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3489{"vcfsx", VX (4, 842), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3490{"vcsxwfp", VX (4, 842), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3491{"vspltish", VX (4, 844), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
3492{"vinserth", VX (4, 845), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3493{"vupkhpx", VX (4, 846), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3494{"mullhw", XRC(4, 424,0), X_MASK, MULHW, 0, {RT, RA, RB}},
3495{"mullhw.", XRC(4, 424,1), X_MASK, MULHW, 0, {RT, RA, RB}},
3496{"maclhw", XO (4, 428,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
3497{"maclhw.", XO (4, 428,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
3498{"nmaclhw", XO (4, 430,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}},
3499{"nmaclhw.", XO (4, 430,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}},
3500{"vaddsws", VX (4, 896), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3501{"vminsw", VX (4, 898), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3502{"vsraw", VX (4, 900), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3503{"vcmpgtsw", VXR(4, 902,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3504{"vmulesw", VX (4, 904), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3505{"vctuxs", VX (4, 906), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3506{"vcfpuxws", VX (4, 906), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3507{"vspltisw", VX (4, 908), VXVB_MASK, PPCVEC, 0, {VD, SIMM}},
3508{"vinsertw", VX (4, 909), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3509{"maclhwsu", XO (4, 460,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3510{"maclhwsu.", XO (4, 460,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3511{"vminsd", VX (4, 962), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3512{"vsrad", VX (4, 964), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3513{"vcmpbfp", VXR(4, 966,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3514{"vcmpgtsd", VXR(4, 967,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
3515{"vctsxs", VX (4, 970), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3516{"vcfpsxws", VX (4, 970), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}},
3517{"vinsertd", VX (4, 973), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}},
3518{"vupklpx", VX (4, 974), VXVA_MASK, PPCVEC, 0, {VD, VB}},
3519{"maclhws", XO (4, 492,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3520{"maclhws.", XO (4, 492,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3521{"nmaclhws", XO (4, 494,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3522{"nmaclhws.", XO (4, 494,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3523{"vsububm", VX (4,1024), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3524{"bcdadd.", VX (4,1025), VXPS_MASK, PPCVEC2, 0, {VD, VA, VB, PS}},
3525{"vavgub", VX (4,1026), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3526{"vabsdub", VX (4,1027), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3527{"evmhessf", VX (4,1027), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3528{"vand", VX (4,1028), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3529{"vcmpequb.", VXR(4, 6,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3530{"vcmpneb.", VXR(4, 7,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3531{"udi0fcm.", APU(4, 515,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3532{"udi0fcm", APU(4, 515,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3533{"evmhossf", VX (4,1031), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3534{"vpmsumb", VX (4,1032), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3535{"evmheumi", VX (4,1032), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3536{"evmhesmi", VX (4,1033), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3537{"vmaxfp", VX (4,1034), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3538{"evmhesmf", VX (4,1035), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3539{"evmhoumi", VX (4,1036), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3540{"vslo", VX (4,1036), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3541{"evmhosmi", VX (4,1037), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3542{"evmhosmf", VX (4,1039), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3543{"machhwuo", XO (4, 12,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3544{"machhwuo.", XO (4, 12,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3545{"ps_merge00", XOPS(4,528,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3546{"ps_merge00.", XOPS(4,528,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3547{"evmhessfa", VX (4,1059), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3548{"evmhossfa", VX (4,1063), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3549{"evmheumia", VX (4,1064), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3550{"evmhesmia", VX (4,1065), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3551{"evmhesmfa", VX (4,1067), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3552{"evmhoumia", VX (4,1068), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3553{"evmhosmia", VX (4,1069), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3554{"evmhosmfa", VX (4,1071), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3555{"vsubuhm", VX (4,1088), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3556{"bcdsub.", VX (4,1089), VXPS_MASK, PPCVEC2, 0, {VD, VA, VB, PS}},
3557{"vavguh", VX (4,1090), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3558{"vabsduh", VX (4,1091), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3559{"vandc", VX (4,1092), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3560{"vcmpequh.", VXR(4, 70,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3561{"udi1fcm.", APU(4, 547,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3562{"udi1fcm", APU(4, 547,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3563{"vcmpneh.", VXR(4, 71,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3564{"evmwhssf", VX (4,1095), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3565{"vpmsumh", VX (4,1096), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3566{"evmwlumi", VX (4,1096), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3567{"vminfp", VX (4,1098), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3568{"evmwhumi", VX (4,1100), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3569{"vsro", VX (4,1100), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3570{"evmwhsmi", VX (4,1101), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3571{"vpkudum", VX (4,1102), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3572{"evmwhsmf", VX (4,1103), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3573{"evmwssf", VX (4,1107), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3574{"machhwo", XO (4, 44,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3575{"evmwumi", VX (4,1112), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3576{"machhwo.", XO (4, 44,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3577{"evmwsmi", VX (4,1113), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3578{"evmwsmf", VX (4,1115), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3579{"nmachhwo", XO (4, 46,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3580{"nmachhwo.", XO (4, 46,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3581{"ps_merge01", XOPS(4,560,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3582{"ps_merge01.", XOPS(4,560,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3583{"evmwhssfa", VX (4,1127), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3584{"evmwlumia", VX (4,1128), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3585{"evmwhumia", VX (4,1132), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3586{"evmwhsmia", VX (4,1133), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3587{"evmwhsmfa", VX (4,1135), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3588{"evmwssfa", VX (4,1139), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3589{"evmwumia", VX (4,1144), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3590{"evmwsmia", VX (4,1145), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3591{"evmwsmfa", VX (4,1147), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3592{"vsubuwm", VX (4,1152), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3593{"bcdus.", VX (4,1153), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3594{"vavguw", VX (4,1154), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3595{"vabsduw", VX (4,1155), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3596{"vmr", VX (4,1156), VX_MASK, PPCVEC, 0, {VD, VA, VBA}},
3597{"vor", VX (4,1156), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3598{"vcmpnew.", VXR(4, 135,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3599{"vpmsumw", VX (4,1160), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3600{"vcmpequw.", VXR(4, 134,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3601{"udi2fcm.", APU(4, 579,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3602{"udi2fcm", APU(4, 579,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3603{"machhwsuo", XO (4, 76,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3604{"machhwsuo.", XO (4, 76,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3605{"ps_merge10", XOPS(4,592,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3606{"ps_merge10.", XOPS(4,592,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3607{"vsubudm", VX (4,1216), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3608{"evaddusiaaw", VX (4,1216), VX_MASK, PPCSPE, 0, {RS, RA}},
3609{"bcds.", VX (4,1217), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
3610{"evaddssiaaw", VX (4,1217), VX_MASK, PPCSPE, 0, {RS, RA}},
3611{"evsubfusiaaw",VX (4,1218), VX_MASK, PPCSPE, 0, {RS, RA}},
3612{"evsubfssiaaw",VX (4,1219), VX_MASK, PPCSPE, 0, {RS, RA}},
3613{"evmra", VX (4,1220), VX_MASK, PPCSPE, 0, {RS, RA}},
3614{"vxor", VX (4,1220), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3615{"evdivws", VX (4,1222), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3616{"vcmpeqfp.", VXR(4, 198,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3617{"udi3fcm.", APU(4, 611,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3618{"vcmpequd.", VXR(4, 199,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
3619{"udi3fcm", APU(4, 611,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3620{"evdivwu", VX (4,1223), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3621{"vpmsumd", VX (4,1224), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3622{"evaddumiaaw", VX (4,1224), VX_MASK, PPCSPE, 0, {RS, RA}},
3623{"evaddsmiaaw", VX (4,1225), VX_MASK, PPCSPE, 0, {RS, RA}},
3624{"evsubfumiaaw",VX (4,1226), VX_MASK, PPCSPE, 0, {RS, RA}},
3625{"evsubfsmiaaw",VX (4,1227), VX_MASK, PPCSPE, 0, {RS, RA}},
3626{"vpkudus", VX (4,1230), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3627{"machhwso", XO (4, 108,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3628{"machhwso.", XO (4, 108,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3629{"nmachhwso", XO (4, 110,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3630{"nmachhwso.", XO (4, 110,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3631{"ps_merge11", XOPS(4,624,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3632{"ps_merge11.", XOPS(4,624,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}},
3633{"vsubuqm", VX (4,1280), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3634{"evmheusiaaw", VX (4,1280), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3635{"bcdtrunc.", VX (4,1281), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
3636{"evmhessiaaw", VX (4,1281), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3637{"vavgsb", VX (4,1282), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3638{"evmhessfaaw", VX (4,1283), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3639{"evmhousiaaw", VX (4,1284), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3640{"vnot", VX (4,1284), VX_MASK, PPCVEC, 0, {VD, VA, VBA}},
3641{"vnor", VX (4,1284), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3642{"evmhossiaaw", VX (4,1285), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3643{"udi4fcm.", APU(4, 643,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3644{"udi4fcm", APU(4, 643,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3645{"vcmpnezb.", VXR(4, 263,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3646{"evmhossfaaw", VX (4,1287), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3647{"evmheumiaaw", VX (4,1288), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3648{"vcipher", VX (4,1288), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3649{"vcipherlast", VX (4,1289), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3650{"evmhesmiaaw", VX (4,1289), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3651{"evmhesmfaaw", VX (4,1291), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3652{"vgbbd", VX (4,1292), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
3653{"evmhoumiaaw", VX (4,1292), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3654{"evmhosmiaaw", VX (4,1293), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3655{"evmhosmfaaw", VX (4,1295), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3656{"macchwuo", XO (4, 140,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3657{"macchwuo.", XO (4, 140,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3658{"evmhegumiaa", VX (4,1320), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3659{"evmhegsmiaa", VX (4,1321), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3660{"evmhegsmfaa", VX (4,1323), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3661{"evmhogumiaa", VX (4,1324), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3662{"evmhogsmiaa", VX (4,1325), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3663{"evmhogsmfaa", VX (4,1327), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3664{"vsubcuq", VX (4,1344), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3665{"evmwlusiaaw", VX (4,1344), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3666{"bcdutrunc.", VX (4,1345), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3667{"evmwlssiaaw", VX (4,1345), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3668{"vavgsh", VX (4,1346), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3669{"vorc", VX (4,1348), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3670{"udi5fcm.", APU(4, 675,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3671{"udi5fcm", APU(4, 675,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3672{"vcmpnezh.", VXR(4, 327,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3673{"vncipher", VX (4,1352), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3674{"evmwlumiaaw", VX (4,1352), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3675{"vncipherlast",VX (4,1353), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3676{"evmwlsmiaaw", VX (4,1353), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3677{"vbpermq", VX (4,1356), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3678{"vpksdus", VX (4,1358), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3679{"evmwssfaa", VX (4,1363), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3680{"macchwo", XO (4, 172,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3681{"evmwumiaa", VX (4,1368), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3682{"macchwo.", XO (4, 172,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3683{"evmwsmiaa", VX (4,1369), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3684{"evmwsmfaa", VX (4,1371), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3685{"nmacchwo", XO (4, 174,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3686{"nmacchwo.", XO (4, 174,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3687{"evmheusianw", VX (4,1408), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3688{"vsubcuw", VX (4,1408), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3689{"evmhessianw", VX (4,1409), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3690{"bcdctsq.", VXVA(4,1409,0), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3691{"bcdcfsq.", VXVA(4,1409,2), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
3692{"bcdctz.", VXVA(4,1409,4), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
3693{"bcdctn.", VXVA(4,1409,5), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3694{"bcdcfz.", VXVA(4,1409,6), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
3695{"bcdcfn.", VXVA(4,1409,7), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
3696{"bcdsetsgn.", VXVA(4,1409,31), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}},
3697{"vavgsw", VX (4,1410), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3698{"evmhessfanw", VX (4,1411), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3699{"vnand", VX (4,1412), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3700{"evmhousianw", VX (4,1412), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3701{"evmhossianw", VX (4,1413), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3702{"udi6fcm.", APU(4, 707,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3703{"udi6fcm", APU(4, 707,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3704{"vcmpnezw.", VXR(4, 391,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}},
3705{"evmhossfanw", VX (4,1415), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3706{"evmheumianw", VX (4,1416), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3707{"evmhesmianw", VX (4,1417), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3708{"evmhesmfanw", VX (4,1419), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3709{"evmhoumianw", VX (4,1420), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3710{"evmhosmianw", VX (4,1421), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3711{"evmhosmfanw", VX (4,1423), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3712{"macchwsuo", XO (4, 204,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3713{"macchwsuo.", XO (4, 204,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3714{"evmhegumian", VX (4,1448), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3715{"evmhegsmian", VX (4,1449), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3716{"evmhegsmfan", VX (4,1451), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3717{"evmhogumian", VX (4,1452), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3718{"evmhogsmian", VX (4,1453), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3719{"evmhogsmfan", VX (4,1455), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3720{"evmwlusianw", VX (4,1472), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3721{"bcdsr.", VX (4,1473), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}},
3722{"evmwlssianw", VX (4,1473), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3723{"vsld", VX (4,1476), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3724{"vcmpgefp.", VXR(4, 454,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3725{"udi7fcm.", APU(4, 739,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3726{"udi7fcm", APU(4, 739,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}},
3727{"vsbox", VX (4,1480), VXVB_MASK, PPCVEC2, 0, {VD, VA}},
3728{"evmwlumianw", VX (4,1480), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3729{"evmwlsmianw", VX (4,1481), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3730{"vbpermd", VX (4,1484), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3731{"vpksdss", VX (4,1486), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3732{"evmwssfan", VX (4,1491), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3733{"macchwso", XO (4, 236,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3734{"evmwumian", VX (4,1496), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3735{"macchwso.", XO (4, 236,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3736{"evmwsmian", VX (4,1497), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3737{"evmwsmfan", VX (4,1499), VX_MASK, PPCSPE, 0, {RS, RA, RB}},
3738{"nmacchwso", XO (4, 238,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3739{"nmacchwso.", XO (4, 238,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3740{"vsububs", VX (4,1536), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3741{"vclzlsbb", VXVA(4,1538,0), VXVA_MASK, PPCVEC3, 0, {RT, VB}},
3742{"vctzlsbb", VXVA(4,1538,1), VXVA_MASK, PPCVEC3, 0, {RT, VB}},
3743{"vnegw", VXVA(4,1538,6), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3744{"vnegd", VXVA(4,1538,7), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3745{"vprtybw", VXVA(4,1538,8), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3746{"vprtybd", VXVA(4,1538,9), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3747{"vprtybq", VXVA(4,1538,10), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3748{"vextsb2w", VXVA(4,1538,16), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3749{"vextsh2w", VXVA(4,1538,17), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3750{"vextsb2d", VXVA(4,1538,24), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3751{"vextsh2d", VXVA(4,1538,25), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3752{"vextsw2d", VXVA(4,1538,26), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3753{"vctzb", VXVA(4,1538,28), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3754{"vctzh", VXVA(4,1538,29), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3755{"vctzw", VXVA(4,1538,30), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3756{"vctzd", VXVA(4,1538,31), VXVA_MASK, PPCVEC3, 0, {VD, VB}},
3757{"mfvscr", VX (4,1540), VXVAVB_MASK, PPCVEC, 0, {VD}},
3758{"vcmpgtub.", VXR(4, 518,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
9fe54b1c
PB
3759{"udi8fcm.", APU(4, 771,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
3760{"udi8fcm", APU(4, 771,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
14b57c7c
AM
3761{"vsum4ubs", VX (4,1544), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3762{"vextublx", VX (4,1549), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
3763{"vsubuhs", VX (4,1600), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3764{"mtvscr", VX (4,1604), VXVDVA_MASK, PPCVEC, 0, {VB}},
3765{"vcmpgtuh.", VXR(4, 582,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3766{"vsum4shs", VX (4,1608), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
9fe54b1c
PB
3767{"udi9fcm.", APU(4, 804,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
3768{"udi9fcm", APU(4, 804,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
14b57c7c
AM
3769{"vextuhlx", VX (4,1613), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
3770{"vupkhsw", VX (4,1614), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
3771{"vsubuws", VX (4,1664), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3772{"vshasigmaw", VX (4,1666), VX_MASK, PPCVEC2, 0, {VD, VA, ST, SIX}},
3773{"veqv", VX (4,1668), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3774{"vcmpgtuw.", VXR(4, 646,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
9fe54b1c
PB
3775{"udi10fcm.", APU(4, 835,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
3776{"udi10fcm", APU(4, 835,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
14b57c7c
AM
3777{"vsum2sws", VX (4,1672), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3778{"vmrgow", VX (4,1676), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3779{"vextuwlx", VX (4,1677), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
3780{"vshasigmad", VX (4,1730), VX_MASK, PPCVEC2, 0, {VD, VA, ST, SIX}},
3781{"vsrd", VX (4,1732), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3782{"vcmpgtfp.", VXR(4, 710,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
9fe54b1c 3783{"udi11fcm.", APU(4, 867,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
14b57c7c 3784{"vcmpgtud.", VXR(4, 711,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
9fe54b1c 3785{"udi11fcm", APU(4, 867,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
14b57c7c
AM
3786{"vupklsw", VX (4,1742), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
3787{"vsubsbs", VX (4,1792), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3788{"vclzb", VX (4,1794), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
3789{"vpopcntb", VX (4,1795), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
3790{"vsrv", VX (4,1796), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3791{"vcmpgtsb.", VXR(4, 774,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
9fe54b1c
PB
3792{"udi12fcm.", APU(4, 899,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
3793{"udi12fcm", APU(4, 899,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
14b57c7c
AM
3794{"vsum4sbs", VX (4,1800), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3795{"vextubrx", VX (4,1805), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
3796{"maclhwuo", XO (4, 396,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3797{"maclhwuo.", XO (4, 396,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3798{"vsubshs", VX (4,1856), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3799{"vclzh", VX (4,1858), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
3800{"vpopcnth", VX (4,1859), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
3801{"vslv", VX (4,1860), VX_MASK, PPCVEC3, 0, {VD, VA, VB}},
3802{"vcmpgtsh.", VXR(4, 838,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
3803{"vextuhrx", VX (4,1869), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
9fe54b1c
PB
3804{"udi13fcm.", APU(4, 931,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
3805{"udi13fcm", APU(4, 931,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
14b57c7c
AM
3806{"maclhwo", XO (4, 428,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3807{"maclhwo.", XO (4, 428,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3808{"nmaclhwo", XO (4, 430,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3809{"nmaclhwo.", XO (4, 430,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3810{"vsubsws", VX (4,1920), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3811{"vclzw", VX (4,1922), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
3812{"vpopcntw", VX (4,1923), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
3813{"vcmpgtsw.", VXR(4, 902,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
9fe54b1c
PB
3814{"udi14fcm.", APU(4, 963,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
3815{"udi14fcm", APU(4, 963,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
14b57c7c
AM
3816{"vsumsws", VX (4,1928), VX_MASK, PPCVEC, 0, {VD, VA, VB}},
3817{"vmrgew", VX (4,1932), VX_MASK, PPCVEC2, 0, {VD, VA, VB}},
3818{"vextuwrx", VX (4,1933), VX_MASK, PPCVEC3, 0, {RT, RA, VB}},
3819{"maclhwsuo", XO (4, 460,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3820{"maclhwsuo.", XO (4, 460,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3821{"vclzd", VX (4,1986), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
3822{"vpopcntd", VX (4,1987), VXVA_MASK, PPCVEC2, 0, {VD, VB}},
3823{"vcmpbfp.", VXR(4, 966,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}},
9fe54b1c 3824{"udi15fcm.", APU(4, 995,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
14b57c7c 3825{"vcmpgtsd.", VXR(4, 967,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}},
9fe54b1c 3826{"udi15fcm", APU(4, 995,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}},
14b57c7c
AM
3827{"maclhwso", XO (4, 492,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3828{"maclhwso.", XO (4, 492,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3829{"nmaclhwso", XO (4, 494,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}},
3830{"nmaclhwso.", XO (4, 494,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}},
3831{"dcbz_l", X (4,1014), XRT_MASK, PPCPS, 0, {RA, RB}},
3832
3833{"mulli", OP(7), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
3834{"muli", OP(7), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
3835
3836{"subfic", OP(8), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
3837{"sfi", OP(8), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
3838
3839{"dozi", OP(9), OP_MASK, M601, PPCVLE, {RT, RA, SI}},
3840
3841{"cmplwi", OPL(10,0), OPL_MASK, PPCCOM, PPCVLE, {OBF, RA, UISIGNOPT}},
3842{"cmpldi", OPL(10,1), OPL_MASK, PPC64, PPCVLE, {OBF, RA, UISIGNOPT}},
a5721ba2 3843{"cmpli", OP(10), OP_MASK, PPC, PPCVLE, {BF, L32OPT, RA, UISIGNOPT}},
14b57c7c
AM
3844{"cmpli", OP(10), OP_MASK, PWRCOM, PPC|PPCVLE, {BF, RA, UISIGNOPT}},
3845
3846{"cmpwi", OPL(11,0), OPL_MASK, PPCCOM, PPCVLE, {OBF, RA, SI}},
3847{"cmpdi", OPL(11,1), OPL_MASK, PPC64, PPCVLE, {OBF, RA, SI}},
a5721ba2 3848{"cmpi", OP(11), OP_MASK, PPC, PPCVLE, {BF, L32OPT, RA, SI}},
14b57c7c
AM
3849{"cmpi", OP(11), OP_MASK, PWRCOM, PPC|PPCVLE, {BF, RA, SI}},
3850
3851{"addic", OP(12), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
3852{"ai", OP(12), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
3853{"subic", OP(12), OP_MASK, PPCCOM, PPCVLE, {RT, RA, NSI}},
3854
3855{"addic.", OP(13), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}},
3856{"ai.", OP(13), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}},
3857{"subic.", OP(13), OP_MASK, PPCCOM, PPCVLE, {RT, RA, NSI}},
3858
3859{"li", OP(14), DRA_MASK, PPCCOM, PPCVLE, {RT, SI}},
3860{"lil", OP(14), DRA_MASK, PWRCOM, PPCVLE, {RT, SI}},
3861{"addi", OP(14), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, SI}},
3862{"cal", OP(14), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
3863{"subi", OP(14), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, NSI}},
3864{"la", OP(14), OP_MASK, PPCCOM, PPCVLE, {RT, D, RA0}},
3865
3866{"lis", OP(15), DRA_MASK, PPCCOM, PPCVLE, {RT, SISIGNOPT}},
3867{"liu", OP(15), DRA_MASK, PWRCOM, PPCVLE, {RT, SISIGNOPT}},
3868{"addis", OP(15), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, SISIGNOPT}},
3869{"cau", OP(15), OP_MASK, PWRCOM, PPCVLE, {RT, RA0, SISIGNOPT}},
3870{"subis", OP(15), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, NSISIGNOPT}},
3871
3872{"bdnz-", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}},
3873{"bdnz+", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}},
3874{"bdnz", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BD}},
3875{"bdn", BBO(16,BODNZ,0,0), BBOATBI_MASK, PWRCOM, PPCVLE, {BD}},
3876{"bdnzl-", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}},
3877{"bdnzl+", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}},
3878{"bdnzl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BD}},
3879{"bdnl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PWRCOM, PPCVLE, {BD}},
3880{"bdnza-", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}},
3881{"bdnza+", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}},
3882{"bdnza", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDA}},
3883{"bdna", BBO(16,BODNZ,1,0), BBOATBI_MASK, PWRCOM, PPCVLE, {BDA}},
3884{"bdnzla-", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}},
3885{"bdnzla+", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}},
3886{"bdnzla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDA}},
3887{"bdnla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PWRCOM, PPCVLE, {BDA}},
3888{"bdz-", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}},
3889{"bdz+", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}},
3890{"bdz", BBO(16,BODZ,0,0), BBOATBI_MASK, COM, PPCVLE, {BD}},
3891{"bdzl-", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}},
3892{"bdzl+", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}},
3893{"bdzl", BBO(16,BODZ,0,1), BBOATBI_MASK, COM, PPCVLE, {BD}},
3894{"bdza-", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}},
3895{"bdza+", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}},
3896{"bdza", BBO(16,BODZ,1,0), BBOATBI_MASK, COM, PPCVLE, {BDA}},
3897{"bdzla-", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}},
3898{"bdzla+", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}},
3899{"bdzla", BBO(16,BODZ,1,1), BBOATBI_MASK, COM, PPCVLE, {BDA}},
3900
3901{"bge-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3902{"bge+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3903{"bge", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
3904{"bnl-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3905{"bnl+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3906{"bnl", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
3907{"bgel-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3908{"bgel+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3909{"bgel", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
3910{"bnll-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3911{"bnll+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3912{"bnll", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
3913{"bgea-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3914{"bgea+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3915{"bgea", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
3916{"bnla-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3917{"bnla+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3918{"bnla", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
3919{"bgela-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3920{"bgela+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3921{"bgela", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
3922{"bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3923{"bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3924{"bnlla", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
3925{"ble-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3926{"ble+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3927{"ble", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
3928{"bng-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3929{"bng+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3930{"bng", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
3931{"blel-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3932{"blel+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3933{"blel", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
3934{"bngl-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3935{"bngl+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3936{"bngl", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
3937{"blea-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3938{"blea+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3939{"blea", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
3940{"bnga-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3941{"bnga+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3942{"bnga", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
3943{"blela-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3944{"blela+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3945{"blela", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
3946{"bngla-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3947{"bngla+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3948{"bngla", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
3949{"bne-", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3950{"bne+", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3951{"bne", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
3952{"bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3953{"bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3954{"bnel", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
3955{"bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3956{"bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3957{"bnea", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
3958{"bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3959{"bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3960{"bnela", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
3961{"bns-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3962{"bns+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3963{"bns", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
3964{"bnu-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3965{"bnu+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3966{"bnu", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}},
3967{"bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3968{"bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3969{"bnsl", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
3970{"bnul-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3971{"bnul+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3972{"bnul", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}},
3973{"bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3974{"bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3975{"bnsa", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
3976{"bnua-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3977{"bnua+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3978{"bnua", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}},
3979{"bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3980{"bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3981{"bnsla", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
3982{"bnula-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3983{"bnula+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3984{"bnula", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}},
3985
3986{"blt-", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3987{"blt+", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3988{"blt", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
3989{"bltl-", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3990{"bltl+", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
3991{"bltl", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
3992{"blta-", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3993{"blta+", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3994{"blta", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
3995{"bltla-", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
3996{"bltla+", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
3997{"bltla", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
3998{"bgt-", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
3999{"bgt+", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4000{"bgt", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4001{"bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4002{"bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4003{"bgtl", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4004{"bgta-", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4005{"bgta+", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4006{"bgta", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4007{"bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4008{"bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4009{"bgtla", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4010{"beq-", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4011{"beq+", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4012{"beq", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4013{"beql-", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4014{"beql+", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4015{"beql", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4016{"beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4017{"beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4018{"beqa", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4019{"beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4020{"beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4021{"beqla", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4022{"bso-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4023{"bso+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4024{"bso", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4025{"bun-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4026{"bun+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4027{"bun", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}},
4028{"bsol-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4029{"bsol+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4030{"bsol", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}},
4031{"bunl-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}},
4032{"bunl+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}},
4033{"bunl", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}},
4034{"bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4035{"bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4036{"bsoa", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4037{"buna-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4038{"buna+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4039{"buna", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}},
4040{"bsola-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4041{"bsola+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4042{"bsola", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}},
4043{"bunla-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}},
4044{"bunla+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}},
4045{"bunla", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}},
4046
4047{"bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4048{"bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4049{"bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4050{"bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4051{"bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4052{"bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4053{"bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4054{"bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4055{"bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4056{"bdnzfla-", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4057{"bdnzfla+", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4058{"bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4059{"bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4060{"bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4061{"bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4062{"bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4063{"bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4064{"bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4065{"bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4066{"bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4067{"bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4068{"bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4069{"bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4070{"bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4071
4072{"bf-", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}},
4073{"bf+", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}},
4074{"bf", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}},
4075{"bbf", BBO(16,BOF,0,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}},
4076{"bfl-", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}},
4077{"bfl+", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}},
4078{"bfl", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}},
4079{"bbfl", BBO(16,BOF,0,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}},
4080{"bfa-", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}},
4081{"bfa+", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}},
4082{"bfa", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4083{"bbfa", BBO(16,BOF,1,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}},
4084{"bfla-", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}},
4085{"bfla+", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}},
4086{"bfla", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4087{"bbfla", BBO(16,BOF,1,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}},
4088
4089{"bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4090{"bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4091{"bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4092{"bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4093{"bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4094{"bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4095{"bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4096{"bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4097{"bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4098{"bdnztla-", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4099{"bdnztla+", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4100{"bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4101{"bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4102{"bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4103{"bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4104{"bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}},
4105{"bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}},
4106{"bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}},
4107{"bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4108{"bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4109{"bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4110{"bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}},
4111{"bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}},
4112{"bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4113
4114{"bt-", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}},
4115{"bt+", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}},
4116{"bt", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}},
4117{"bbt", BBO(16,BOT,0,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}},
4118{"btl-", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}},
4119{"btl+", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}},
4120{"btl", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}},
4121{"bbtl", BBO(16,BOT,0,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}},
4122{"bta-", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}},
4123{"bta+", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}},
4124{"bta", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4125{"bbta", BBO(16,BOT,1,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}},
4126{"btla-", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}},
4127{"btla+", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}},
4128{"btla", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}},
4129{"bbtla", BBO(16,BOT,1,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}},
4130
4131{"bc-", B(16,0,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDM}},
4132{"bc+", B(16,0,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDP}},
4133{"bc", B(16,0,0), B_MASK, COM, PPCVLE, {BO, BI, BD}},
4134{"bcl-", B(16,0,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDM}},
4135{"bcl+", B(16,0,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDP}},
4136{"bcl", B(16,0,1), B_MASK, COM, PPCVLE, {BO, BI, BD}},
4137{"bca-", B(16,1,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDMA}},
4138{"bca+", B(16,1,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDPA}},
4139{"bca", B(16,1,0), B_MASK, COM, PPCVLE, {BO, BI, BDA}},
4140{"bcla-", B(16,1,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDMA}},
4141{"bcla+", B(16,1,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDPA}},
4142{"bcla", B(16,1,1), B_MASK, COM, PPCVLE, {BO, BI, BDA}},
4143
4144{"svc", SC(17,0,0), SC_MASK, POWER, PPCVLE, {SVC_LEV, FL1, FL2}},
dce75bf9 4145{"scv", SC(17,0,1), SC_MASK, POWER9, PPCVLE, {SVC_LEV}},
14b57c7c
AM
4146{"svcl", SC(17,0,1), SC_MASK, POWER, PPCVLE, {SVC_LEV, FL1, FL2}},
4147{"sc", SC(17,1,0), SC_MASK, PPC, PPCVLE, {LEV}},
4148{"svca", SC(17,1,0), SC_MASK, PWRCOM, PPCVLE, {SV}},
4149{"svcla", SC(17,1,1), SC_MASK, POWER, PPCVLE, {SV}},
4150
4151{"b", B(18,0,0), B_MASK, COM, PPCVLE, {LI}},
4152{"bl", B(18,0,1), B_MASK, COM, PPCVLE, {LI}},
4153{"ba", B(18,1,0), B_MASK, COM, PPCVLE, {LIA}},
4154{"bla", B(18,1,1), B_MASK, COM, PPCVLE, {LIA}},
4155
4156{"mcrf", XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM, PPCVLE, {BF, BFA}},
4157
4158{"addpcis", DX(19,2), DX_MASK, POWER9, PPCVLE, {RT, DXD}},
4159{"subpcis", DX(19,2), DX_MASK, POWER9, PPCVLE, {RT, NDXD}},
4160
4161{"bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
4162{"bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4163{"bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
4164{"bdnzlrl-", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4165{"bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4166{"bdnzlrl+", XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4167{"bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
4168{"bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4169{"bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
4170{"bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4171{"bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4172{"bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}},
4173{"blr", XLO(19,BOU,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
4174{"br", XLO(19,BOU,16,0), XLBOBIBB_MASK, PWRCOM, PPCVLE, {0}},
4175{"blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}},
4176{"brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM, PPCVLE, {0}},
4177{"bdnzlr-", XLO(19,BODNZM4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4178{"bdnzlrl-", XLO(19,BODNZM4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4179{"bdnzlr+", XLO(19,BODNZP4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4180{"bdnzlrl+", XLO(19,BODNZP4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4181{"bdzlr-", XLO(19,BODZM4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4182{"bdzlrl-", XLO(19,BODZM4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4183{"bdzlr+", XLO(19,BODZP4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4184{"bdzlrl+", XLO(19,BODZP4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}},
4185
4186{"bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4187{"bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4188{"bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4189{"bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4190{"bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4191{"bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4192{"bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4193{"bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4194{"bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4195{"bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4196{"bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4197{"bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4198{"blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4199{"blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4200{"bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4201{"bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4202{"bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4203{"bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4204{"blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4205{"blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4206{"blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4207{"bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4208{"bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4209{"bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4210{"bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4211{"bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4212{"bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4213{"bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4214{"bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4215{"bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4216{"bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4217{"bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4218{"bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4219{"bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4220{"bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4221{"bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4222{"bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4223{"bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4224{"bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4225{"bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4226{"bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4227{"bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4228{"bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4229{"bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4230{"blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4231{"bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4232{"blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4233{"bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4234{"bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4235{"bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4236{"bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4237{"bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4238{"bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4239{"bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4240{"bgelr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4241{"bnllr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4242{"bgelrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4243{"bnllrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4244{"blelr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4245{"bnglr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4246{"blelrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4247{"bnglrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4248{"bnelr-", XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4249{"bnelrl-", XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4250{"bnslr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4251{"bnulr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4252{"bnslrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4253{"bnulrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4254{"bgelr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4255{"bnllr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4256{"bgelrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4257{"bnllrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4258{"blelr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4259{"bnglr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4260{"blelrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4261{"bnglrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4262{"bnelr+", XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4263{"bnelrl+", XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4264{"bnslr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4265{"bnulr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4266{"bnslrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4267{"bnulrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4268{"bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4269{"bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4270{"bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4271{"bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4272{"bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4273{"bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4274{"bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4275{"bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4276{"bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4277{"bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4278{"bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4279{"bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4280{"beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4281{"beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4282{"beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4283{"beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4284{"beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4285{"beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4286{"bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4287{"bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4288{"bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4289{"bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4290{"bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4291{"bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4292{"bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4293{"bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}},
4294{"bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4295{"bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4296{"bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4297{"bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4298{"bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4299{"bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4300{"beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4301{"beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4302{"bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4303{"bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4304{"bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4305{"bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4306{"bltlr-", XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4307{"bltlrl-", XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4308{"bgtlr-", XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4309{"bgtlrl-", XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4310{"beqlr-", XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4311{"beqlrl-", XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4312{"bsolr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4313{"bunlr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4314{"bsolrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4315{"bunlrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4316{"bltlr+", XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4317{"bltlrl+", XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4318{"bgtlr+", XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4319{"bgtlrl+", XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4320{"beqlr+", XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4321{"beqlrl+", XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4322{"bsolr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4323{"bunlr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4324{"bsolrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4325{"bunlrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4326
4327{"bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4328{"bdnzflr-", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4329{"bdnzflrl", XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4330{"bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4331{"bdnzflr+", XLO(19,BODNZFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4332{"bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4333{"bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4334{"bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4335{"bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4336{"bdzflrl-", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4337{"bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4338{"bdzflrl+", XLO(19,BODZFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4339{"bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4340{"bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4341{"bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}},
4342{"bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4343{"bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4344{"bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}},
4345{"bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4346{"bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4347{"bflr-", XLO(19,BOFM4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4348{"bflrl-", XLO(19,BOFM4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4349{"bflr+", XLO(19,BOFP4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4350{"bflrl+", XLO(19,BOFP4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4351{"bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4352{"bdnztlr-", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4353{"bdnztlrl", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4354{"bdnztlrl-", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4355{"bdnztlr+", XLO(19,BODNZTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4356{"bdnztlrl+", XLO(19,BODNZTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4357{"bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4358{"bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4359{"bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4360{"bdztlrl-", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4361{"bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4362{"bdztlrl+", XLO(19,BODZTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4363{"btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4364{"btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4365{"bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}},
4366{"btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4367{"btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4368{"bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}},
4369{"btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4370{"btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4371{"btlr-", XLO(19,BOTM4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4372{"btlrl-", XLO(19,BOTM4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4373{"btlr+", XLO(19,BOTP4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4374{"btlrl+", XLO(19,BOTP4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4375
4376{"bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4377{"bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4378{"bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4379{"bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4380{"bclr", XLLK(19,16,0), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
4381{"bcr", XLLK(19,16,0), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}},
4382{"bclrl", XLLK(19,16,1), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
4383{"bcrl", XLLK(19,16,1), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}},
4384
4385{"rfid", XL(19,18), 0xffffffff, PPC64, PPCVLE, {0}},
4386
4387{"crnot", XL(19,33), XL_MASK, PPCCOM, PPCVLE, {BT, BA, BBA}},
4388{"crnor", XL(19,33), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4389{"rfmci", X(19,38), 0xffffffff, PPCRFMCI|PPCA2|PPC476, PPCVLE, {0}},
4390
4391{"rfdi", XL(19,39), 0xffffffff, E500MC, PPCVLE, {0}},
4392{"rfi", XL(19,50), 0xffffffff, COM, PPCVLE, {0}},
4393{"rfci", XL(19,51), 0xffffffff, PPC403|BOOKE|PPCE300|PPCA2|PPC476, PPCVLE, {0}},
4394
dce75bf9 4395{"rfscv", XL(19,82), 0xffffffff, POWER9, PPCVLE, {0}},
14b57c7c
AM
4396{"rfsvc", XL(19,82), 0xffffffff, POWER, PPCVLE, {0}},
4397
4398{"rfgi", XL(19,102), 0xffffffff, E500MC|PPCA2, PPCVLE, {0}},
4399
4400{"crandc", XL(19,129), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4401
4402{"rfebb", XL(19,146), XLS_MASK, POWER8, PPCVLE, {SXL}},
4403
4404{"isync", XL(19,150), 0xffffffff, PPCCOM, PPCVLE, {0}},
4405{"ics", XL(19,150), 0xffffffff, PWRCOM, PPCVLE, {0}},
4406
4407{"crclr", XL(19,193), XL_MASK, PPCCOM, PPCVLE, {BT, BAT, BBA}},
4408{"crxor", XL(19,193), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4409
4410{"dnh", X(19,198), X_MASK, E500MC, PPCVLE, {DUI, DUIS}},
4411
4412{"crnand", XL(19,225), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4413
4414{"crand", XL(19,257), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4415
4416{"hrfid", XL(19,274), 0xffffffff, POWER5|CELL, PPC476|PPCVLE, {0}},
4417
4418{"crset", XL(19,289), XL_MASK, PPCCOM, PPCVLE, {BT, BAT, BBA}},
4419{"creqv", XL(19,289), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4420
4421{"urfid", XL(19,306), 0xffffffff, POWER9, PPCVLE, {0}},
4422{"stop", XL(19,370), 0xffffffff, POWER9, PPCVLE, {0}},
4423
4424{"doze", XL(19,402), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
4425
4426{"crorc", XL(19,417), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4427
4428{"nap", XL(19,434), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
4429
4430{"crmove", XL(19,449), XL_MASK, PPCCOM, PPCVLE, {BT, BA, BBA}},
4431{"cror", XL(19,449), XL_MASK, COM, PPCVLE, {BT, BA, BB}},
4432
4433{"sleep", XL(19,466), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
4434{"rvwinkle", XL(19,498), 0xffffffff, POWER6, POWER9|PPCVLE, {0}},
4435
4436{"bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, COM, PPCVLE, {0}},
4437{"bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, COM, PPCVLE, {0}},
4438
4439{"bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4440{"bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4441{"bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4442{"bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4443{"bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4444{"bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4445{"bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4446{"bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4447{"blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4448{"blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4449{"bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4450{"bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4451{"blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4452{"blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4453{"bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4454{"bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4455{"bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4456{"bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4457{"bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4458{"bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4459{"bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4460{"bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4461{"bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4462{"bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4463{"bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4464{"bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4465{"bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4466{"bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4467{"bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4468{"bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4469{"bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4470{"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4471{"blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4472{"bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4473{"blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4474{"bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4475{"bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4476{"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4477{"bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4478{"bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4479{"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4480{"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4481{"bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4482{"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4483{"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4484{"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4485{"blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4486{"bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4487{"blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4488{"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4489{"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4490{"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4491{"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4492{"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4493{"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4494{"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4495{"bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4496{"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4497{"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4498{"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4499{"blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4500{"bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4501{"blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4502{"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4503{"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4504{"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4505{"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4506{"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4507{"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4508{"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4509{"bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4510{"bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4511{"bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4512{"bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4513{"bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4514{"bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4515{"bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4516{"bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4517{"beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4518{"beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4519{"beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4520{"beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4521{"bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4522{"bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4523{"bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4524{"bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4525{"bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4526{"bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4527{"bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}},
4528{"bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4529{"bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4530{"bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4531{"bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4532{"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4533{"beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4534{"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4535{"bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4536{"bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4537{"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4538{"bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}},
4539{"bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4540{"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4541{"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4542{"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4543{"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4544{"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4545{"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4546{"bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4547{"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4548{"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4549{"bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4550{"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4551{"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4552{"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4553{"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4554{"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4555{"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4556{"bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4557{"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4558{"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}},
4559
4560{"bfctr", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4561{"bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4562{"bfctrl", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4563{"bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4564{"bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4565{"bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4566{"bfctr-", XLO(19,BOFM4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4567{"bfctrl-", XLO(19,BOFM4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4568{"bfctr+", XLO(19,BOFP4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4569{"bfctrl+", XLO(19,BOFP4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4570{"btctr", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4571{"btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4572{"btctrl", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}},
4573{"btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4574{"btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4575{"btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}},
4576{"btctr-", XLO(19,BOTM4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4577{"btctrl-", XLO(19,BOTM4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4578{"btctr+", XLO(19,BOTP4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4579{"btctrl+", XLO(19,BOTP4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
4580
4581{"bcctr-", XLYLK(19,528,0,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4582{"bcctrl-", XLYLK(19,528,0,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4583{"bcctr+", XLYLK(19,528,1,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4584{"bcctrl+", XLYLK(19,528,1,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
4585{"bcctr", XLLK(19,528,0), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
4586{"bcc", XLLK(19,528,0), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}},
4587{"bcctrl", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
4588{"bccl", XLLK(19,528,1), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}},
4589
4590{"bctar-", XLYLK(19,560,0,0), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}},
4591{"bctarl-", XLYLK(19,560,0,1), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}},
4592{"bctar+", XLYLK(19,560,1,0), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}},
4593{"bctarl+", XLYLK(19,560,1,1), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}},
4594{"bctar", XLLK(19,560,0), XLBH_MASK, POWER8, PPCVLE, {BO, BI, BH}},
4595{"bctarl", XLLK(19,560,1), XLBH_MASK, POWER8, PPCVLE, {BO, BI, BH}},
4596
4597{"rlwimi", M(20,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4598{"rlimi", M(20,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4599
4600{"rlwimi.", M(20,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4601{"rlimi.", M(20,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4602
4603{"rotlwi", MME(21,31,0), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, SH}},
4604{"clrlwi", MME(21,31,0), MSHME_MASK, PPCCOM, PPCVLE, {RA, RS, MB}},
4605{"rlwinm", M(21,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4606{"rlinm", M(21,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4607{"rotlwi.", MME(21,31,1), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, SH}},
4608{"clrlwi.", MME(21,31,1), MSHME_MASK, PPCCOM, PPCVLE, {RA, RS, MB}},
4609{"rlwinm.", M(21,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4610{"rlinm.", M(21,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}},
4611
4612{"rlmi", M(22,0), M_MASK, M601, PPCVLE, {RA, RS, RB, MBE, ME}},
4613{"rlmi.", M(22,1), M_MASK, M601, PPCVLE, {RA, RS, RB, MBE, ME}},
4614
4615{"rotlw", MME(23,31,0), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, RB}},
4616{"rlwnm", M(23,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
4617{"rlnm", M(23,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
4618{"rotlw.", MME(23,31,1), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, RB}},
4619{"rlwnm.", M(23,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
4620{"rlnm.", M(23,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, RB, MBE, ME}},
4621
4622{"nop", OP(24), 0xffffffff, PPCCOM, PPCVLE, {0}},
4623{"ori", OP(24), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
4624{"oril", OP(24), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
4625
4626{"oris", OP(25), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
4627{"oriu", OP(25), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
4628
4629{"xnop", OP(26), 0xffffffff, PPCCOM, PPCVLE, {0}},
4630{"xori", OP(26), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
4631{"xoril", OP(26), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
4632
4633{"xoris", OP(27), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
4634{"xoriu", OP(27), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
4635
4636{"andi.", OP(28), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
4637{"andil.", OP(28), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
4638
4639{"andis.", OP(29), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}},
4640{"andiu.", OP(29), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}},
4641
4642{"rotldi", MD(30,0,0), MDMB_MASK, PPC64, PPCVLE, {RA, RS, SH6}},
4643{"clrldi", MD(30,0,0), MDSH_MASK, PPC64, PPCVLE, {RA, RS, MB6}},
4644{"rldicl", MD(30,0,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
4645{"rotldi.", MD(30,0,1), MDMB_MASK, PPC64, PPCVLE, {RA, RS, SH6}},
4646{"clrldi.", MD(30,0,1), MDSH_MASK, PPC64, PPCVLE, {RA, RS, MB6}},
4647{"rldicl.", MD(30,0,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
4648
4649{"rldicr", MD(30,1,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, ME6}},
4650{"rldicr.", MD(30,1,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, ME6}},
4651
4652{"rldic", MD(30,2,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
4653{"rldic.", MD(30,2,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
4654
4655{"rldimi", MD(30,3,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
4656{"rldimi.", MD(30,3,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}},
4657
4658{"rotld", MDS(30,8,0), MDSMB_MASK, PPC64, PPCVLE, {RA, RS, RB}},
4659{"rldcl", MDS(30,8,0), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, MB6}},
4660{"rotld.", MDS(30,8,1), MDSMB_MASK, PPC64, PPCVLE, {RA, RS, RB}},
4661{"rldcl.", MDS(30,8,1), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, MB6}},
4662
4663{"rldcr", MDS(30,9,0), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, ME6}},
4664{"rldcr.", MDS(30,9,1), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, ME6}},
4665
4666{"cmpw", XOPL(31,0,0), XCMPL_MASK, PPCCOM, 0, {OBF, RA, RB}},
4667{"cmpd", XOPL(31,0,1), XCMPL_MASK, PPC64, 0, {OBF, RA, RB}},
a5721ba2 4668{"cmp", X(31,0), XCMP_MASK, PPC, 0, {BF, L32OPT, RA, RB}},
bdc70b4a 4669{"cmp", X(31,0), XCMPL_MASK, PWRCOM, PPC, {BF, RA, RB}},
1cb0a767 4670
14b57c7c
AM
4671{"twlgt", XTO(31,4,TOLGT), XTO_MASK, PPCCOM, 0, {RA, RB}},
4672{"tlgt", XTO(31,4,TOLGT), XTO_MASK, PWRCOM, 0, {RA, RB}},
4673{"twllt", XTO(31,4,TOLLT), XTO_MASK, PPCCOM, 0, {RA, RB}},
4674{"tllt", XTO(31,4,TOLLT), XTO_MASK, PWRCOM, 0, {RA, RB}},
4675{"tweq", XTO(31,4,TOEQ), XTO_MASK, PPCCOM, 0, {RA, RB}},
4676{"teq", XTO(31,4,TOEQ), XTO_MASK, PWRCOM, 0, {RA, RB}},
4677{"twlge", XTO(31,4,TOLGE), XTO_MASK, PPCCOM, 0, {RA, RB}},
4678{"tlge", XTO(31,4,TOLGE), XTO_MASK, PWRCOM, 0, {RA, RB}},
4679{"twlnl", XTO(31,4,TOLNL), XTO_MASK, PPCCOM, 0, {RA, RB}},
4680{"tlnl", XTO(31,4,TOLNL), XTO_MASK, PWRCOM, 0, {RA, RB}},
4681{"twlle", XTO(31,4,TOLLE), XTO_MASK, PPCCOM, 0, {RA, RB}},
4682{"tlle", XTO(31,4,TOLLE), XTO_MASK, PWRCOM, 0, {RA, RB}},
4683{"twlng", XTO(31,4,TOLNG), XTO_MASK, PPCCOM, 0, {RA, RB}},
4684{"tlng", XTO(31,4,TOLNG), XTO_MASK, PWRCOM, 0, {RA, RB}},
4685{"twgt", XTO(31,4,TOGT), XTO_MASK, PPCCOM, 0, {RA, RB}},
4686{"tgt", XTO(31,4,TOGT), XTO_MASK, PWRCOM, 0, {RA, RB}},
4687{"twge", XTO(31,4,TOGE), XTO_MASK, PPCCOM, 0, {RA, RB}},
4688{"tge", XTO(31,4,TOGE), XTO_MASK, PWRCOM, 0, {RA, RB}},
4689{"twnl", XTO(31,4,TONL), XTO_MASK, PPCCOM, 0, {RA, RB}},
4690{"tnl", XTO(31,4,TONL), XTO_MASK, PWRCOM, 0, {RA, RB}},
4691{"twlt", XTO(31,4,TOLT), XTO_MASK, PPCCOM, 0, {RA, RB}},
4692{"tlt", XTO(31,4,TOLT), XTO_MASK, PWRCOM, 0, {RA, RB}},
4693{"twle", XTO(31,4,TOLE), XTO_MASK, PPCCOM, 0, {RA, RB}},
4694{"tle", XTO(31,4,TOLE), XTO_MASK, PWRCOM, 0, {RA, RB}},
4695{"twng", XTO(31,4,TONG), XTO_MASK, PPCCOM, 0, {RA, RB}},
4696{"tng", XTO(31,4,TONG), XTO_MASK, PWRCOM, 0, {RA, RB}},
4697{"twne", XTO(31,4,TONE), XTO_MASK, PPCCOM, 0, {RA, RB}},
4698{"tne", XTO(31,4,TONE), XTO_MASK, PWRCOM, 0, {RA, RB}},
4699{"trap", XTO(31,4,TOU), 0xffffffff, PPCCOM, 0, {0}},
4700{"twu", XTO(31,4,TOU), XTO_MASK, PPCCOM, 0, {RA, RB}},
4701{"tu", XTO(31,4,TOU), XTO_MASK, PWRCOM, 0, {RA, RB}},
4702{"tw", X(31,4), X_MASK, PPCCOM, 0, {TO, RA, RB}},
4703{"t", X(31,4), X_MASK, PWRCOM, 0, {TO, RA, RB}},
4704
4705{"lvsl", X(31,6), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
4706{"lvebx", X(31,7), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
4707{"lbfcmx", APU(31,7,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
4708
4709{"subfc", XO(31,8,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
4710{"sf", XO(31,8,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
4711{"subc", XO(31,8,0,0), XO_MASK, PPCCOM, 0, {RT, RB, RA}},
4712{"subfc.", XO(31,8,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
4713{"sf.", XO(31,8,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
4714{"subc.", XO(31,8,0,1), XO_MASK, PPCCOM, 0, {RT, RB, RA}},
4715
4716{"mulhdu", XO(31,9,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
4717{"mulhdu.", XO(31,9,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
4718
4719{"addc", XO(31,10,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
4720{"a", XO(31,10,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
4721{"addc.", XO(31,10,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
4722{"a.", XO(31,10,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
4723
4724{"mulhwu", XO(31,11,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
4725{"mulhwu.", XO(31,11,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
4726
4727{"lxsiwzx", X(31,12), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
4728
4729{"isellt", X(31,15), X_MASK, PPCISEL, 0, {RT, RA0, RB}},
4730
4731{"tlbilxlpid", XTO(31,18,0), XTO_MASK, E500MC|PPCA2, 0, {0}},
4732{"tlbilxpid", XTO(31,18,1), XTO_MASK, E500MC|PPCA2, 0, {0}},
4733{"tlbilxva", XTO(31,18,3), XTO_MASK, E500MC|PPCA2, 0, {RA0, RB}},
4734{"tlbilx", X(31,18), X_MASK, E500MC|PPCA2, 0, {T, RA0, RB}},
4735
4736{"mfcr", XFXM(31,19,0,0), XFXFXM_MASK, COM, 0, {RT, FXM4}},
4737{"mfocrf", XFXM(31,19,0,1), XFXFXM_MASK, COM, 0, {RT, FXM}},
4738
4739{"lwarx", X(31,20), XEH_MASK, PPC, 0, {RT, RA0, RB, EH}},
4740
4741{"ldx", X(31,21), X_MASK, PPC64, 0, {RT, RA0, RB}},
4742
4743{"icbt", X(31,22), X_MASK, BOOKE|PPCE300|PPCA2|PPC476, 0, {CT, RA0, RB}},
4744
4745{"lwzx", X(31,23), X_MASK, PPCCOM, 0, {RT, RA0, RB}},
4746{"lx", X(31,23), X_MASK, PWRCOM, 0, {RT, RA, RB}},
4747
4748{"slw", XRC(31,24,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
4749{"sl", XRC(31,24,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
4750{"slw.", XRC(31,24,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
4751{"sl.", XRC(31,24,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
4752
4753{"cntlzw", XRC(31,26,0), XRB_MASK, PPCCOM, 0, {RA, RS}},
4754{"cntlz", XRC(31,26,0), XRB_MASK, PWRCOM, 0, {RA, RS}},
4755{"cntlzw.", XRC(31,26,1), XRB_MASK, PPCCOM, 0, {RA, RS}},
4756{"cntlz.", XRC(31,26,1), XRB_MASK, PWRCOM, 0, {RA, RS}},
4757
4758{"sld", XRC(31,27,0), X_MASK, PPC64, 0, {RA, RS, RB}},
4759{"sld.", XRC(31,27,1), X_MASK, PPC64, 0, {RA, RS, RB}},
4760
4761{"and", XRC(31,28,0), X_MASK, COM, 0, {RA, RS, RB}},
4762{"and.", XRC(31,28,1), X_MASK, COM, 0, {RA, RS, RB}},
4763
4764{"maskg", XRC(31,29,0), X_MASK, M601, PPCA2, {RA, RS, RB}},
4765{"maskg.", XRC(31,29,1), X_MASK, M601, PPCA2, {RA, RS, RB}},
4766
4767{"ldepx", X(31,29), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
4768
4769{"waitasec", X(31,30), XRTRARB_MASK, POWER8, POWER9, {0}},
4770{"wait", X(31,30), XWC_MASK, POWER9, 0, {WC}},
4771
4772{"lwepx", X(31,31), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
4773
4774{"cmplw", XOPL(31,32,0), XCMPL_MASK, PPCCOM, 0, {OBF, RA, RB}},
4775{"cmpld", XOPL(31,32,1), XCMPL_MASK, PPC64, 0, {OBF, RA, RB}},
a5721ba2 4776{"cmpl", X(31,32), XCMP_MASK, PPC, 0, {BF, L32OPT, RA, RB}},
bdc70b4a 4777{"cmpl", X(31,32), XCMPL_MASK, PWRCOM, PPC, {BF, RA, RB}},
de866fcc 4778
14b57c7c
AM
4779{"lvsr", X(31,38), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
4780{"lvehx", X(31,39), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
4781{"lhfcmx", APU(31,39,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
de866fcc 4782
14b57c7c 4783{"mviwsplt", X(31,46), X_MASK, PPCVEC2, 0, {VD, RA, RB}},
e67ed0e8 4784
14b57c7c 4785{"iselgt", X(31,47), X_MASK, PPCISEL, 0, {RT, RA0, RB}},
de866fcc 4786
14b57c7c 4787{"lvewx", X(31,71), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
de866fcc 4788
14b57c7c 4789{"addg6s", XO(31,74,0,0), XO_MASK, POWER6, 0, {RT, RA, RB}},
066be9f7 4790
14b57c7c 4791{"lxsiwax", X(31,76), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
c0637f3a 4792
14b57c7c 4793{"iseleq", X(31,79), X_MASK, PPCISEL, 0, {RT, RA0, RB}},
de866fcc 4794
14b57c7c 4795{"isel", XISEL(31,15), XISEL_MASK, PPCISEL|TITAN, 0, {RT, RA0, RB, CRB}},
de866fcc 4796
14b57c7c
AM
4797{"subf", XO(31,40,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
4798{"sub", XO(31,40,0,0), XO_MASK, PPC, 0, {RT, RB, RA}},
4799{"subf.", XO(31,40,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
4800{"sub.", XO(31,40,0,1), XO_MASK, PPC, 0, {RT, RB, RA}},
de866fcc 4801
14b57c7c
AM
4802{"mfvsrd", X(31,51), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}},
4803{"mffprd", X(31,51), XX1RB_MASK|1, PPCVSX2, 0, {RA, FRS}},
4804{"mfvrd", X(31,51)|1, XX1RB_MASK|1, PPCVSX2, 0, {RA, VS}},
4805{"eratilx", X(31,51), X_MASK, PPCA2, 0, {ERAT_T, RA, RB}},
e0d602ec 4806
14b57c7c 4807{"lbarx", X(31,52), XEH_MASK, POWER8|E6500, 0, {RT, RA0, RB, EH}},
066be9f7 4808
14b57c7c 4809{"ldux", X(31,53), X_MASK, PPC64, 0, {RT, RAL, RB}},
43e65147 4810
14b57c7c 4811{"dcbst", X(31,54), XRT_MASK, PPC, 0, {RA0, RB}},
43e65147 4812
14b57c7c
AM
4813{"lwzux", X(31,55), X_MASK, PPCCOM, 0, {RT, RAL, RB}},
4814{"lux", X(31,55), X_MASK, PWRCOM, 0, {RT, RA, RB}},
de866fcc 4815
14b57c7c
AM
4816{"cntlzd", XRC(31,58,0), XRB_MASK, PPC64, 0, {RA, RS}},
4817{"cntlzd.", XRC(31,58,1), XRB_MASK, PPC64, 0, {RA, RS}},
de866fcc 4818
14b57c7c
AM
4819{"andc", XRC(31,60,0), X_MASK, COM, 0, {RA, RS, RB}},
4820{"andc.", XRC(31,60,1), X_MASK, COM, 0, {RA, RS, RB}},
de866fcc 4821
14b57c7c
AM
4822{"waitrsv", X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, 0, {0}},
4823{"waitimpl", X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, 0, {0}},
4824{"wait", X(31,62), XWC_MASK, E500MC|PPCA2, 0, {WC}},
43e65147 4825
14b57c7c 4826{"dcbstep", XRT(31,63,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
19a6653c 4827
14b57c7c
AM
4828{"tdlgt", XTO(31,68,TOLGT), XTO_MASK, PPC64, 0, {RA, RB}},
4829{"tdllt", XTO(31,68,TOLLT), XTO_MASK, PPC64, 0, {RA, RB}},
4830{"tdeq", XTO(31,68,TOEQ), XTO_MASK, PPC64, 0, {RA, RB}},
4831{"tdlge", XTO(31,68,TOLGE), XTO_MASK, PPC64, 0, {RA, RB}},
4832{"tdlnl", XTO(31,68,TOLNL), XTO_MASK, PPC64, 0, {RA, RB}},
4833{"tdlle", XTO(31,68,TOLLE), XTO_MASK, PPC64, 0, {RA, RB}},
4834{"tdlng", XTO(31,68,TOLNG), XTO_MASK, PPC64, 0, {RA, RB}},
4835{"tdgt", XTO(31,68,TOGT), XTO_MASK, PPC64, 0, {RA, RB}},
4836{"tdge", XTO(31,68,TOGE), XTO_MASK, PPC64, 0, {RA, RB}},
4837{"tdnl", XTO(31,68,TONL), XTO_MASK, PPC64, 0, {RA, RB}},
4838{"tdlt", XTO(31,68,TOLT), XTO_MASK, PPC64, 0, {RA, RB}},
4839{"tdle", XTO(31,68,TOLE), XTO_MASK, PPC64, 0, {RA, RB}},
4840{"tdng", XTO(31,68,TONG), XTO_MASK, PPC64, 0, {RA, RB}},
4841{"tdne", XTO(31,68,TONE), XTO_MASK, PPC64, 0, {RA, RB}},
4842{"tdu", XTO(31,68,TOU), XTO_MASK, PPC64, 0, {RA, RB}},
4843{"td", X(31,68), X_MASK, PPC64, 0, {TO, RA, RB}},
de866fcc 4844
14b57c7c
AM
4845{"lwfcmx", APU(31,71,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
4846{"mulhd", XO(31,73,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
4847{"mulhd.", XO(31,73,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
43e65147 4848
14b57c7c
AM
4849{"mulhw", XO(31,75,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
4850{"mulhw.", XO(31,75,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
de866fcc 4851
14b57c7c
AM
4852{"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440|TITAN, 0, {RA, RS, RB}},
4853{"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440|TITAN, 0, {RA, RS, RB}},
de866fcc 4854
14b57c7c 4855{"mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, 0, {SR, RS}},
de866fcc 4856
14b57c7c 4857{"mfmsr", X(31,83), XRARB_MASK, COM, 0, {RT}},
43e65147 4858
14b57c7c 4859{"ldarx", X(31,84), XEH_MASK, PPC64, 0, {RT, RA0, RB, EH}},
de866fcc 4860
c7a8dbf9 4861{"dcbfl", XOPL(31,86,1), XRT_MASK, POWER5, PPC476, {RA0, RB}},
a5721ba2 4862{"dcbf", X(31,86), XLRT_MASK, PPC, 0, {RA0, RB, L2OPT}},
de866fcc 4863
14b57c7c 4864{"lbzx", X(31,87), X_MASK, COM, 0, {RT, RA0, RB}},
43e65147 4865
14b57c7c 4866{"lbepx", X(31,95), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
de866fcc 4867
14b57c7c 4868{"dni", XRC(31,97,1), XRB_MASK, E6500, 0, {DUI, DCTL}},
aea77599 4869
14b57c7c
AM
4870{"lvx", X(31,103), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
4871{"lqfcmx", APU(31,103,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
de866fcc 4872
14b57c7c
AM
4873{"neg", XO(31,104,0,0), XORB_MASK, COM, 0, {RT, RA}},
4874{"neg.", XO(31,104,0,1), XORB_MASK, COM, 0, {RT, RA}},
de866fcc 4875
14b57c7c
AM
4876{"mul", XO(31,107,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
4877{"mul.", XO(31,107,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
de866fcc 4878
14b57c7c 4879{"mvidsplt", X(31,110), X_MASK, PPCVEC2, 0, {VD, RA, RB}},
aea77599 4880
14b57c7c 4881{"mtsrdin", X(31,114), XRA_MASK, PPC64, 0, {RS, RB}},
de866fcc 4882
14b57c7c
AM
4883{"mffprwz", X(31,115), XX1RB_MASK|1, PPCVSX2, 0, {RA, FRS}},
4884{"mfvrwz", X(31,115)|1, XX1RB_MASK|1, PPCVSX2, 0, {RA, VS}},
4885{"mfvsrwz", X(31,115), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}},
c0637f3a 4886
14b57c7c 4887{"lharx", X(31,116), XEH_MASK, POWER8|E6500, 0, {RT, RA0, RB, EH}},
066be9f7 4888
14b57c7c 4889{"clf", X(31,118), XTO_MASK, POWER, 0, {RA, RB}},
de866fcc 4890
14b57c7c 4891{"lbzux", X(31,119), X_MASK, COM, 0, {RT, RAL, RB}},
43e65147 4892
14b57c7c 4893{"popcntb", X(31,122), XRB_MASK, POWER5, 0, {RA, RS}},
de866fcc 4894
14b57c7c
AM
4895{"not", XRC(31,124,0), X_MASK, COM, 0, {RA, RS, RBS}},
4896{"nor", XRC(31,124,0), X_MASK, COM, 0, {RA, RS, RB}},
4897{"not.", XRC(31,124,1), X_MASK, COM, 0, {RA, RS, RBS}},
4898{"nor.", XRC(31,124,1), X_MASK, COM, 0, {RA, RS, RB}},
19a6653c 4899
14b57c7c 4900{"dcbfep", XRT(31,127,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
43e65147 4901
fd486b63 4902{"setb", X(31,128), XRB_MASK|(3<<16), POWER9, 0, {RT, BFA}},
a680de9a 4903
14b57c7c 4904{"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RS}},
43e65147 4905
14b57c7c 4906{"dcbtstls", X(31,134), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
de866fcc 4907
14b57c7c
AM
4908{"stvebx", X(31,135), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
4909{"stbfcmx", APU(31,135,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
de866fcc 4910
14b57c7c
AM
4911{"subfe", XO(31,136,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
4912{"sfe", XO(31,136,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
4913{"subfe.", XO(31,136,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
4914{"sfe.", XO(31,136,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
de866fcc 4915
14b57c7c
AM
4916{"adde", XO(31,138,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
4917{"ae", XO(31,138,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
4918{"adde.", XO(31,138,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
4919{"ae.", XO(31,138,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
de866fcc 4920
14b57c7c 4921{"stxsiwx", X(31,140), XX1_MASK, PPCVSX2, 0, {XS6, RA0, RB}},
c0637f3a 4922
14b57c7c
AM
4923{"msgsndp", XRTRA(31,142,0,0), XRTRA_MASK, POWER8, 0, {RB}},
4924{"dcbtstlse", X(31,142), X_MASK, PPCCHLK, E500MC, {CT, RA0, RB}},
de866fcc 4925
14b57c7c
AM
4926{"mtcr", XFXM(31,144,0xff,0), XRARB_MASK, COM, 0, {RS}},
4927{"mtcrf", XFXM(31,144,0,0), XFXFXM_MASK, COM, 0, {FXM, RS}},
4928{"mtocrf", XFXM(31,144,0,1), XFXFXM_MASK, COM, 0, {FXM, RS}},
de866fcc 4929
14b57c7c 4930{"mtmsr", X(31,146), XRLARB_MASK, COM, 0, {RS, A_L}},
de866fcc 4931
14b57c7c 4932{"mtsle", X(31,147), XRTLRARB_MASK, POWER8, 0, {L}},
c0637f3a 4933
14b57c7c
AM
4934{"eratsx", XRC(31,147,0), X_MASK, PPCA2, 0, {RT, RA0, RB}},
4935{"eratsx.", XRC(31,147,1), X_MASK, PPCA2, 0, {RT, RA0, RB}},
e0d602ec 4936
14b57c7c 4937{"stdx", X(31,149), X_MASK, PPC64, 0, {RS, RA0, RB}},
43e65147 4938
14b57c7c 4939{"stwcx.", XRC(31,150,1), X_MASK, PPC, 0, {RS, RA0, RB}},
43e65147 4940
14b57c7c
AM
4941{"stwx", X(31,151), X_MASK, PPCCOM, 0, {RS, RA0, RB}},
4942{"stx", X(31,151), X_MASK, PWRCOM, 0, {RS, RA, RB}},
de866fcc 4943
14b57c7c
AM
4944{"slq", XRC(31,152,0), X_MASK, M601, 0, {RA, RS, RB}},
4945{"slq.", XRC(31,152,1), X_MASK, M601, 0, {RA, RS, RB}},
de866fcc 4946
14b57c7c
AM
4947{"sle", XRC(31,153,0), X_MASK, M601, 0, {RA, RS, RB}},
4948{"sle.", XRC(31,153,1), X_MASK, M601, 0, {RA, RS, RB}},
de866fcc 4949
14b57c7c 4950{"prtyw", X(31,154), XRB_MASK, POWER6|PPCA2|PPC476, 0, {RA, RS}},
de866fcc 4951
14b57c7c 4952{"stdepx", X(31,157), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
43e65147 4953
14b57c7c 4954{"stwepx", X(31,159), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
43e65147 4955
14b57c7c 4956{"wrteei", X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {E}},
43e65147 4957
14b57c7c 4958{"dcbtls", X(31,166), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
de866fcc 4959
14b57c7c
AM
4960{"stvehx", X(31,167), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
4961{"sthfcmx", APU(31,167,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
de866fcc 4962
14b57c7c 4963{"addex", ZRC(31,170,0), Z2_MASK, POWER9, 0, {RT, RA, RB, CY}},
19dfcc89 4964
14b57c7c
AM
4965{"msgclrp", XRTRA(31,174,0,0), XRTRA_MASK, POWER8, 0, {RB}},
4966{"dcbtlse", X(31,174), X_MASK, PPCCHLK, E500MC, {CT, RA0, RB}},
de866fcc 4967
14b57c7c 4968{"mtmsrd", X(31,178), XRLARB_MASK, PPC64, 0, {RS, A_L}},
de866fcc 4969
14b57c7c
AM
4970{"mtvsrd", X(31,179), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
4971{"mtfprd", X(31,179), XX1RB_MASK|1, PPCVSX2, 0, {FRT, RA}},
4972{"mtvrd", X(31,179)|1, XX1RB_MASK|1, PPCVSX2, 0, {VD, RA}},
4973{"eratre", X(31,179), X_MASK, PPCA2, 0, {RT, RA, WS}},
e0d602ec 4974
14b57c7c 4975{"stdux", X(31,181), X_MASK, PPC64, 0, {RS, RAS, RB}},
de866fcc 4976
14b57c7c
AM
4977{"stqcx.", XRC(31,182,1), X_MASK, POWER8, 0, {RSQ, RA0, RB}},
4978{"wchkall", X(31,182), X_MASK, PPCA2, 0, {OBF}},
e0d602ec 4979
14b57c7c
AM
4980{"stwux", X(31,183), X_MASK, PPCCOM, 0, {RS, RAS, RB}},
4981{"stux", X(31,183), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
de866fcc 4982
14b57c7c
AM
4983{"sliq", XRC(31,184,0), X_MASK, M601, 0, {RA, RS, SH}},
4984{"sliq.", XRC(31,184,1), X_MASK, M601, 0, {RA, RS, SH}},
de866fcc 4985
14b57c7c 4986{"prtyd", X(31,186), XRB_MASK, POWER6|PPCA2, 0, {RA, RS}},
252b5132 4987
14b57c7c 4988{"cmprb", X(31,192), XCMP_MASK, POWER9, 0, {BF, L, RA, RB}},
a680de9a 4989
14b57c7c 4990{"icblq.", XRC(31,198,1), X_MASK, E6500, 0, {CT, RA0, RB}},
aea77599 4991
14b57c7c
AM
4992{"stvewx", X(31,199), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
4993{"stwfcmx", APU(31,199,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 4994
14b57c7c
AM
4995{"subfze", XO(31,200,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
4996{"sfze", XO(31,200,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
4997{"subfze.", XO(31,200,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
4998{"sfze.", XO(31,200,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
252b5132 4999
14b57c7c
AM
5000{"addze", XO(31,202,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
5001{"aze", XO(31,202,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
5002{"addze.", XO(31,202,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
5003{"aze.", XO(31,202,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
418c1742 5004
14b57c7c 5005{"msgsnd", XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0, {RB}},
19a6653c 5006
14b57c7c 5007{"mtsr", X(31,210), XRB_MASK|(1<<20), COM, NON32, {SR, RS}},
418c1742 5008
14b57c7c
AM
5009{"mtfprwa", X(31,211), XX1RB_MASK|1, PPCVSX2, 0, {FRT, RA}},
5010{"mtvrwa", X(31,211)|1, XX1RB_MASK|1, PPCVSX2, 0, {VD, RA}},
5011{"mtvsrwa", X(31,211), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
5012{"eratwe", X(31,211), X_MASK, PPCA2, 0, {RS, RA, WS}},
e0d602ec 5013
14b57c7c 5014{"ldawx.", XRC(31,212,1), X_MASK, PPCA2, 0, {RT, RA0, RB}},
e0d602ec 5015
14b57c7c 5016{"stdcx.", XRC(31,214,1), X_MASK, PPC64, 0, {RS, RA0, RB}},
43e65147 5017
14b57c7c 5018{"stbx", X(31,215), X_MASK, COM, 0, {RS, RA0, RB}},
252b5132 5019
14b57c7c
AM
5020{"sllq", XRC(31,216,0), X_MASK, M601, 0, {RA, RS, RB}},
5021{"sllq.", XRC(31,216,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 5022
14b57c7c
AM
5023{"sleq", XRC(31,217,0), X_MASK, M601, 0, {RA, RS, RB}},
5024{"sleq.", XRC(31,217,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 5025
14b57c7c 5026{"stbepx", X(31,223), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
43e65147 5027
14b57c7c 5028{"cmpeqb", X(31,224), XCMPL_MASK, POWER9, 0, {BF, RA, RB}},
a680de9a 5029
14b57c7c 5030{"icblc", X(31,230), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
7d5b217e 5031
14b57c7c
AM
5032{"stvx", X(31,231), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
5033{"stqfcmx", APU(31,231,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
f509565f 5034
14b57c7c
AM
5035{"subfme", XO(31,232,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
5036{"sfme", XO(31,232,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
5037{"subfme.", XO(31,232,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
5038{"sfme.", XO(31,232,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
252b5132 5039
14b57c7c
AM
5040{"mulld", XO(31,233,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
5041{"mulld.", XO(31,233,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
43e65147 5042
14b57c7c
AM
5043{"addme", XO(31,234,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
5044{"ame", XO(31,234,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
5045{"addme.", XO(31,234,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
5046{"ame.", XO(31,234,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
252b5132 5047
14b57c7c
AM
5048{"mullw", XO(31,235,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5049{"muls", XO(31,235,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5050{"mullw.", XO(31,235,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5051{"muls.", XO(31,235,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 5052
14b57c7c
AM
5053{"icblce", X(31,238), X_MASK, PPCCHLK, E500MC|PPCA2, {CT, RA, RB}},
5054{"msgclr", XRTRA(31,238,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0, {RB}},
5055{"mtsrin", X(31,242), XRA_MASK, PPC, NON32, {RS, RB}},
bdc70b4a 5056{"mtsri", X(31,242), XRA_MASK, POWER, NON32, {RS, RB}},
418c1742 5057
14b57c7c
AM
5058{"mtfprwz", X(31,243), XX1RB_MASK|1, PPCVSX2, 0, {FRT, RA}},
5059{"mtvrwz", X(31,243)|1, XX1RB_MASK|1, PPCVSX2, 0, {VD, RA}},
5060{"mtvsrwz", X(31,243), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
c0637f3a 5061
14b57c7c
AM
5062{"dcbtstt", XRT(31,246,0x10), XRT_MASK, POWER7, 0, {RA0, RB}},
5063{"dcbtst", X(31,246), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}},
5064{"dcbtst", X(31,246), X_MASK, DCBT_EO, 0, {CT, RA0, RB}},
5065{"dcbtst", X(31,246), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}},
4fff86c5 5066
14b57c7c 5067{"stbux", X(31,247), X_MASK, COM, 0, {RS, RAS, RB}},
252b5132 5068
14b57c7c
AM
5069{"slliq", XRC(31,248,0), X_MASK, M601, 0, {RA, RS, SH}},
5070{"slliq.", XRC(31,248,1), X_MASK, M601, 0, {RA, RS, SH}},
252b5132 5071
14b57c7c 5072{"bpermd", X(31,252), X_MASK, POWER7|PPCA2, 0, {RA, RS, RB}},
066be9f7 5073
14b57c7c 5074{"dcbtstep", XRT(31,255,0), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
19a6653c 5075
14b57c7c
AM
5076{"mfdcrx", X(31,259), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RS, RA}},
5077{"mfdcrx.", XRC(31,259,1), X_MASK, PPCA2, 0, {RS, RA}},
252b5132 5078
14b57c7c 5079{"lvexbx", X(31,261), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
aea77599 5080
14b57c7c 5081{"icbt", X(31,262), XRT_MASK, PPC403, 0, {RA, RB}},
1ed8e1e4 5082
14b57c7c 5083{"lvepxl", X(31,263), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
aea77599 5084
14b57c7c
AM
5085{"ldfcmx", APU(31,263,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
5086{"doz", XO(31,264,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
5087{"doz.", XO(31,264,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 5088
14b57c7c 5089{"modud", X(31,265), X_MASK, POWER9, 0, {RT, RA, RB}},
a680de9a 5090
14b57c7c
AM
5091{"add", XO(31,266,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5092{"cax", XO(31,266,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5093{"add.", XO(31,266,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5094{"cax.", XO(31,266,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
418c1742 5095
14b57c7c 5096{"moduw", X(31,267), X_MASK, POWER9, 0, {RT, RA, RB}},
a680de9a 5097
14b57c7c
AM
5098{"lxvx", X(31,268), XX1_MASK|1<<6, PPCVSX3, 0, {XT6, RA0, RB}},
5099{"lxvl", X(31,269), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 5100
14b57c7c 5101{"ehpriv", X(31,270), 0xffffffff, E500MC|PPCA2, 0, {0}},
19a6653c 5102
14b57c7c 5103{"tlbiel", X(31,274), X_MASK|1<<20,POWER9, PPC476, {RB, RSO, RIC, PRS, X_R}},
a5721ba2 5104{"tlbiel", X(31,274), XRTLRA_MASK, POWER4, POWER9|PPC476, {RB, LOPT}},
418c1742 5105
14b57c7c 5106{"mfapidi", X(31,275), X_MASK, BOOKE, E500|TITAN, {RT, RA}},
1cb0a767 5107
14b57c7c 5108{"lqarx", X(31,276), XEH_MASK, POWER8, 0, {RTQ, RAX, RBX, EH}},
c0637f3a 5109
14b57c7c
AM
5110{"lscbx", XRC(31,277,0), X_MASK, M601, 0, {RT, RA, RB}},
5111{"lscbx.", XRC(31,277,1), X_MASK, M601, 0, {RT, RA, RB}},
1cb0a767 5112
14b57c7c
AM
5113{"dcbtt", XRT(31,278,0x10), XRT_MASK, POWER7, 0, {RA0, RB}},
5114{"dcbt", X(31,278), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}},
5115{"dcbt", X(31,278), X_MASK, DCBT_EO, 0, {CT, RA0, RB}},
5116{"dcbt", X(31,278), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}},
4fff86c5 5117
14b57c7c 5118{"lhzx", X(31,279), X_MASK, COM, 0, {RT, RA0, RB}},
1cb0a767 5119
14b57c7c 5120{"cdtbcd", X(31,282), XRB_MASK, POWER6, 0, {RA, RS}},
066be9f7 5121
14b57c7c
AM
5122{"eqv", XRC(31,284,0), X_MASK, COM, 0, {RA, RS, RB}},
5123{"eqv.", XRC(31,284,1), X_MASK, COM, 0, {RA, RS, RB}},
1cb0a767 5124
14b57c7c 5125{"lhepx", X(31,287), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
1cb0a767 5126
14b57c7c 5127{"mfdcrux", X(31,291), X_MASK, PPC464, 0, {RS, RA}},
1cb0a767 5128
14b57c7c
AM
5129{"lvexhx", X(31,293), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
5130{"lvepx", X(31,295), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
aea77599 5131
14b57c7c 5132{"lxvll", X(31,301), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 5133
14b57c7c 5134{"mfbhrbe", X(31,302), X_MASK, POWER8, 0, {RT, BHRBE}},
c0637f3a 5135
14b57c7c
AM
5136{"tlbie", X(31,306), X_MASK|1<<20,POWER9, TITAN, {RB, RS, RIC, PRS, X_R}},
5137{"tlbie", X(31,306), XRA_MASK, POWER7, POWER9|TITAN, {RB, RS}},
a5721ba2 5138{"tlbie", X(31,306), XRTLRA_MASK, PPC, E500|POWER7|TITAN, {RB, LOPT}},
14b57c7c 5139{"tlbi", X(31,306), XRT_MASK, POWER, 0, {RA0, RB}},
1cb0a767 5140
14b57c7c 5141{"mfvsrld", X(31,307), XX1RB_MASK, PPCVSX3, 0, {RA, XS6}},
a680de9a 5142
14b57c7c 5143{"ldmx", X(31,309), X_MASK, POWER9, 0, {RT, RA0, RB}},
a680de9a 5144
14b57c7c 5145{"eciwx", X(31,310), X_MASK, PPC, E500|TITAN, {RT, RA0, RB}},
1cb0a767 5146
14b57c7c 5147{"lhzux", X(31,311), X_MASK, COM, 0, {RT, RAL, RB}},
1cb0a767 5148
14b57c7c 5149{"cbcdtd", X(31,314), XRB_MASK, POWER6, 0, {RA, RS}},
066be9f7 5150
14b57c7c
AM
5151{"xor", XRC(31,316,0), X_MASK, COM, 0, {RA, RS, RB}},
5152{"xor.", XRC(31,316,1), X_MASK, COM, 0, {RA, RS, RB}},
1cb0a767 5153
14b57c7c 5154{"dcbtep", XRT(31,319,0), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
1cb0a767 5155
14b57c7c
AM
5156{"mfexisr", XSPR(31,323, 64), XSPR_MASK, PPC403, 0, {RT}},
5157{"mfexier", XSPR(31,323, 66), XSPR_MASK, PPC403, 0, {RT}},
5158{"mfbr0", XSPR(31,323,128), XSPR_MASK, PPC403, 0, {RT}},
5159{"mfbr1", XSPR(31,323,129), XSPR_MASK, PPC403, 0, {RT}},
5160{"mfbr2", XSPR(31,323,130), XSPR_MASK, PPC403, 0, {RT}},
5161{"mfbr3", XSPR(31,323,131), XSPR_MASK, PPC403, 0, {RT}},
5162{"mfbr4", XSPR(31,323,132), XSPR_MASK, PPC403, 0, {RT}},
5163{"mfbr5", XSPR(31,323,133), XSPR_MASK, PPC403, 0, {RT}},
5164{"mfbr6", XSPR(31,323,134), XSPR_MASK, PPC403, 0, {RT}},
5165{"mfbr7", XSPR(31,323,135), XSPR_MASK, PPC403, 0, {RT}},
5166{"mfbear", XSPR(31,323,144), XSPR_MASK, PPC403, 0, {RT}},
5167{"mfbesr", XSPR(31,323,145), XSPR_MASK, PPC403, 0, {RT}},
5168{"mfiocr", XSPR(31,323,160), XSPR_MASK, PPC403, 0, {RT}},
5169{"mfdmacr0", XSPR(31,323,192), XSPR_MASK, PPC403, 0, {RT}},
5170{"mfdmact0", XSPR(31,323,193), XSPR_MASK, PPC403, 0, {RT}},
5171{"mfdmada0", XSPR(31,323,194), XSPR_MASK, PPC403, 0, {RT}},
5172{"mfdmasa0", XSPR(31,323,195), XSPR_MASK, PPC403, 0, {RT}},
5173{"mfdmacc0", XSPR(31,323,196), XSPR_MASK, PPC403, 0, {RT}},
5174{"mfdmacr1", XSPR(31,323,200), XSPR_MASK, PPC403, 0, {RT}},
5175{"mfdmact1", XSPR(31,323,201), XSPR_MASK, PPC403, 0, {RT}},
5176{"mfdmada1", XSPR(31,323,202), XSPR_MASK, PPC403, 0, {RT}},
5177{"mfdmasa1", XSPR(31,323,203), XSPR_MASK, PPC403, 0, {RT}},
5178{"mfdmacc1", XSPR(31,323,204), XSPR_MASK, PPC403, 0, {RT}},
5179{"mfdmacr2", XSPR(31,323,208), XSPR_MASK, PPC403, 0, {RT}},
5180{"mfdmact2", XSPR(31,323,209), XSPR_MASK, PPC403, 0, {RT}},
5181{"mfdmada2", XSPR(31,323,210), XSPR_MASK, PPC403, 0, {RT}},
5182{"mfdmasa2", XSPR(31,323,211), XSPR_MASK, PPC403, 0, {RT}},
5183{"mfdmacc2", XSPR(31,323,212), XSPR_MASK, PPC403, 0, {RT}},
5184{"mfdmacr3", XSPR(31,323,216), XSPR_MASK, PPC403, 0, {RT}},
5185{"mfdmact3", XSPR(31,323,217), XSPR_MASK, PPC403, 0, {RT}},
5186{"mfdmada3", XSPR(31,323,218), XSPR_MASK, PPC403, 0, {RT}},
5187{"mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, 0, {RT}},
5188{"mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, 0, {RT}},
5189{"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, 0, {RT}},
5190{"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {RT, SPR}},
5191{"mfdcr.", XRC(31,323,1), X_MASK, PPCA2, 0, {RT, SPR}},
1cb0a767 5192
14b57c7c 5193{"lvexwx", X(31,325), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
aea77599 5194
14b57c7c 5195{"dcread", X(31,326), X_MASK, PPC476|TITAN, 0, {RT, RA0, RB}},
9fe54b1c 5196
14b57c7c
AM
5197{"div", XO(31,331,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
5198{"div.", XO(31,331,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
1cb0a767 5199
14b57c7c 5200{"lxvdsx", X(31,332), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
066be9f7 5201
14b57c7c
AM
5202{"mfpmr", X(31,334), X_MASK, PPCPMR|PPCE300, 0, {RT, PMR}},
5203{"mftmr", X(31,366), X_MASK, PPCTMR|E6500, 0, {RT, TMR}},
1cb0a767 5204
14b57c7c
AM
5205{"slbsync", X(31,338), 0xffffffff, POWER9, 0, {0}},
5206
5207{"mfmq", XSPR(31,339, 0), XSPR_MASK, M601, 0, {RT}},
5208{"mfxer", XSPR(31,339, 1), XSPR_MASK, COM, 0, {RT}},
5209{"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, TITAN, {RT}},
5210{"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, TITAN, {RT}},
5211{"mfdec", XSPR(31,339, 6), XSPR_MASK, MFDEC1, 0, {RT}},
5212{"mflr", XSPR(31,339, 8), XSPR_MASK, COM, 0, {RT}},
5213{"mfctr", XSPR(31,339, 9), XSPR_MASK, COM, 0, {RT}},
5214{"mfdscr", XSPR(31,339, 17), XSPR_MASK, POWER6, 0, {RT}},
5215{"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, 0, {RT}},
5216{"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, TITAN, {RT}},
5217{"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, TITAN, {RT}},
bdc70b4a 5218{"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2, MFDEC1, {RT}},
14b57c7c
AM
5219{"mfsdr0", XSPR(31,339, 24), XSPR_MASK, POWER, 0, {RT}},
5220{"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, TITAN, {RT}},
5221{"mfsrr0", XSPR(31,339, 26), XSPR_MASK, COM, 0, {RT}},
5222{"mfsrr1", XSPR(31,339, 27), XSPR_MASK, COM, 0, {RT}},
5223{"mfcfar", XSPR(31,339, 28), XSPR_MASK, POWER6, 0, {RT}},
5224{"mfpid", XSPR(31,339, 48), XSPR_MASK, BOOKE, 0, {RT}},
5225{"mfcsrr0", XSPR(31,339, 58), XSPR_MASK, BOOKE, 0, {RT}},
5226{"mfcsrr1", XSPR(31,339, 59), XSPR_MASK, BOOKE, 0, {RT}},
5227{"mfdear", XSPR(31,339, 61), XSPR_MASK, BOOKE, 0, {RT}},
5228{"mfesr", XSPR(31,339, 62), XSPR_MASK, BOOKE, 0, {RT}},
5229{"mfivpr", XSPR(31,339, 63), XSPR_MASK, BOOKE, 0, {RT}},
5230{"mfctrl", XSPR(31,339,136), XSPR_MASK, POWER4, 0, {RT}},
5231{"mfcmpa", XSPR(31,339,144), XSPR_MASK, PPC860, 0, {RT}},
5232{"mfcmpb", XSPR(31,339,145), XSPR_MASK, PPC860, 0, {RT}},
5233{"mfcmpc", XSPR(31,339,146), XSPR_MASK, PPC860, 0, {RT}},
5234{"mfcmpd", XSPR(31,339,147), XSPR_MASK, PPC860, 0, {RT}},
5235{"mficr", XSPR(31,339,148), XSPR_MASK, PPC860, 0, {RT}},
5236{"mfder", XSPR(31,339,149), XSPR_MASK, PPC860, 0, {RT}},
5237{"mfcounta", XSPR(31,339,150), XSPR_MASK, PPC860, 0, {RT}},
5238{"mfcountb", XSPR(31,339,151), XSPR_MASK, PPC860, 0, {RT}},
5239{"mfcmpe", XSPR(31,339,152), XSPR_MASK, PPC860, 0, {RT}},
5240{"mfcmpf", XSPR(31,339,153), XSPR_MASK, PPC860, 0, {RT}},
5241{"mfcmpg", XSPR(31,339,154), XSPR_MASK, PPC860, 0, {RT}},
5242{"mfcmph", XSPR(31,339,155), XSPR_MASK, PPC860, 0, {RT}},
5243{"mflctrl1", XSPR(31,339,156), XSPR_MASK, PPC860, 0, {RT}},
5244{"mflctrl2", XSPR(31,339,157), XSPR_MASK, PPC860, 0, {RT}},
5245{"mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860, 0, {RT}},
5246{"mfbar", XSPR(31,339,159), XSPR_MASK, PPC860, 0, {RT}},
5247{"mfvrsave", XSPR(31,339,256), XSPR_MASK, PPCVEC, 0, {RT}},
5248{"mfusprg0", XSPR(31,339,256), XSPR_MASK, BOOKE, 0, {RT}},
5249{"mfsprg", XSPR(31,339,256), XSPRG_MASK, PPC, 0, {RT, SPRG}},
5250{"mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
5251{"mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
5252{"mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
5253{"mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, 0, {RT}},
5254{"mftbu", XSPR(31,339,269), XSPR_MASK, POWER4|BOOKE, 0, {RT}},
5255{"mftb", X(31,339), X_MASK, POWER4|BOOKE, 0, {RT, TBR}},
5256{"mftbl", XSPR(31,339,268), XSPR_MASK, POWER4|BOOKE, 0, {RT}},
5257{"mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, 0, {RT}},
5258{"mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, 0, {RT}},
5259{"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, 0, {RT}},
5260{"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, 0, {RT}},
5261{"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, 0, {RT}},
5262{"mfear", XSPR(31,339,282), XSPR_MASK, PPC, TITAN, {RT}},
5263{"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, 0, {RT}},
5264{"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, 0, {RT}},
5265{"mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, 0, {RT}},
5266{"mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, 0, {RT}},
5267{"mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, 0, {RT}},
5268{"mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, 0, {RT}},
5269{"mfiac1", XSPR(31,339,312), XSPR_MASK, BOOKE, 0, {RT}},
5270{"mfiac2", XSPR(31,339,313), XSPR_MASK, BOOKE, 0, {RT}},
5271{"mfiac3", XSPR(31,339,314), XSPR_MASK, BOOKE, 0, {RT}},
5272{"mfiac4", XSPR(31,339,315), XSPR_MASK, BOOKE, 0, {RT}},
5273{"mfdac1", XSPR(31,339,316), XSPR_MASK, BOOKE, 0, {RT}},
5274{"mfdac2", XSPR(31,339,317), XSPR_MASK, BOOKE, 0, {RT}},
5275{"mfdvc1", XSPR(31,339,318), XSPR_MASK, BOOKE, 0, {RT}},
5276{"mfdvc2", XSPR(31,339,319), XSPR_MASK, BOOKE, 0, {RT}},
5277{"mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, 0, {RT}},
5278{"mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, 0, {RT}},
5279{"mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, 0, {RT}},
5280{"mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, 0, {RT}},
5281{"mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, 0, {RT}},
5282{"mfivor3", XSPR(31,339,403), XSPR_MASK, BOOKE, 0, {RT}},
5283{"mfivor4", XSPR(31,339,404), XSPR_MASK, BOOKE, 0, {RT}},
5284{"mfivor5", XSPR(31,339,405), XSPR_MASK, BOOKE, 0, {RT}},
5285{"mfivor6", XSPR(31,339,406), XSPR_MASK, BOOKE, 0, {RT}},
5286{"mfivor7", XSPR(31,339,407), XSPR_MASK, BOOKE, 0, {RT}},
5287{"mfivor8", XSPR(31,339,408), XSPR_MASK, BOOKE, 0, {RT}},
5288{"mfivor9", XSPR(31,339,409), XSPR_MASK, BOOKE, 0, {RT}},
5289{"mfivor10", XSPR(31,339,410), XSPR_MASK, BOOKE, 0, {RT}},
5290{"mfivor11", XSPR(31,339,411), XSPR_MASK, BOOKE, 0, {RT}},
5291{"mfivor12", XSPR(31,339,412), XSPR_MASK, BOOKE, 0, {RT}},
5292{"mfivor13", XSPR(31,339,413), XSPR_MASK, BOOKE, 0, {RT}},
5293{"mfivor14", XSPR(31,339,414), XSPR_MASK, BOOKE, 0, {RT}},
5294{"mfivor15", XSPR(31,339,415), XSPR_MASK, BOOKE, 0, {RT}},
5295{"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE, 0, {RT}},
5296{"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, 0, {RT}},
5297{"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, 0, {RT}},
5298{"mfivor32", XSPR(31,339,528), XSPR_MASK, PPCSPE, 0, {RT}},
5299{"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
5300{"mfivor33", XSPR(31,339,529), XSPR_MASK, PPCSPE, 0, {RT}},
5301{"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
5302{"mfivor34", XSPR(31,339,530), XSPR_MASK, PPCSPE, 0, {RT}},
5303{"mfivor35", XSPR(31,339,531), XSPR_MASK, PPCPMR, 0, {RT}},
5304{"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
5305{"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}},
5306{"mfic_cst", XSPR(31,339,560), XSPR_MASK, PPC860, 0, {RT}},
5307{"mfic_adr", XSPR(31,339,561), XSPR_MASK, PPC860, 0, {RT}},
5308{"mfic_dat", XSPR(31,339,562), XSPR_MASK, PPC860, 0, {RT}},
5309{"mfdc_cst", XSPR(31,339,568), XSPR_MASK, PPC860, 0, {RT}},
5310{"mfdc_adr", XSPR(31,339,569), XSPR_MASK, PPC860, 0, {RT}},
5311{"mfdc_dat", XSPR(31,339,570), XSPR_MASK, PPC860, 0, {RT}},
5312{"mfmcsrr0", XSPR(31,339,570), XSPR_MASK, PPCRFMCI, 0, {RT}},
5313{"mfmcsrr1", XSPR(31,339,571), XSPR_MASK, PPCRFMCI, 0, {RT}},
5314{"mfmcsr", XSPR(31,339,572), XSPR_MASK, PPCRFMCI, 0, {RT}},
5315{"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, TITAN, {RT}},
5316{"mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, 0, {RT}},
5317{"mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, 0, {RT}},
5318{"mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, 0, {RT}},
5319{"mfmi_ctr", XSPR(31,339,784), XSPR_MASK, PPC860, 0, {RT}},
5320{"mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860, 0, {RT}},
5321{"mfmi_epn", XSPR(31,339,787), XSPR_MASK, PPC860, 0, {RT}},
5322{"mfmi_twc", XSPR(31,339,789), XSPR_MASK, PPC860, 0, {RT}},
5323{"mfmi_rpn", XSPR(31,339,790), XSPR_MASK, PPC860, 0, {RT}},
5324{"mfmd_ctr", XSPR(31,339,792), XSPR_MASK, PPC860, 0, {RT}},
5325{"mfm_casid", XSPR(31,339,793), XSPR_MASK, PPC860, 0, {RT}},
5326{"mfmd_ap", XSPR(31,339,794), XSPR_MASK, PPC860, 0, {RT}},
5327{"mfmd_epn", XSPR(31,339,795), XSPR_MASK, PPC860, 0, {RT}},
5328{"mfmd_twb", XSPR(31,339,796), XSPR_MASK, PPC860, 0, {RT}},
5329{"mfmd_twc", XSPR(31,339,797), XSPR_MASK, PPC860, 0, {RT}},
5330{"mfmd_rpn", XSPR(31,339,798), XSPR_MASK, PPC860, 0, {RT}},
5331{"mfm_tw", XSPR(31,339,799), XSPR_MASK, PPC860, 0, {RT}},
5332{"mfmi_dbcam", XSPR(31,339,816), XSPR_MASK, PPC860, 0, {RT}},
5333{"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860, 0, {RT}},
5334{"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860, 0, {RT}},
5335{"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, 0, {RT}},
5336{"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860, 0, {RT}},
5337{"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860, 0, {RT}},
5338{"mfivndx", XSPR(31,339,880), XSPR_MASK, TITAN, 0, {RT}},
5339{"mfdvndx", XSPR(31,339,881), XSPR_MASK, TITAN, 0, {RT}},
5340{"mfivlim", XSPR(31,339,882), XSPR_MASK, TITAN, 0, {RT}},
5341{"mfdvlim", XSPR(31,339,883), XSPR_MASK, TITAN, 0, {RT}},
5342{"mfclcsr", XSPR(31,339,884), XSPR_MASK, TITAN, 0, {RT}},
5343{"mfccr1", XSPR(31,339,888), XSPR_MASK, TITAN, 0, {RT}},
5344{"mfppr", XSPR(31,339,896), XSPR_MASK, POWER7, 0, {RT}},
5345{"mfppr32", XSPR(31,339,898), XSPR_MASK, POWER7, 0, {RT}},
5346{"mfrstcfg", XSPR(31,339,923), XSPR_MASK, TITAN, 0, {RT}},
5347{"mfdcdbtrl", XSPR(31,339,924), XSPR_MASK, TITAN, 0, {RT}},
5348{"mfdcdbtrh", XSPR(31,339,925), XSPR_MASK, TITAN, 0, {RT}},
5349{"mficdbtr", XSPR(31,339,927), XSPR_MASK, TITAN, 0, {RT}},
5350{"mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, 0, {RT}},
5351{"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, 0, {RT}},
5352{"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, 0, {RT}},
5353{"mfusia", XSPR(31,339,939), XSPR_MASK, PPC750, 0, {RT}},
5354{"mfummcr1", XSPR(31,339,940), XSPR_MASK, PPC750, 0, {RT}},
5355{"mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750, 0, {RT}},
5356{"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, 0, {RT}},
5357{"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, 0, {RT}},
5358{"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, 0, {RT}},
5359{"mfmmucr", XSPR(31,339,946), XSPR_MASK, TITAN, 0, {RT}},
5360{"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, 0, {RT}},
5361{"mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, 0, {RT}},
5362{"mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, 0, {RT}},
5363{"mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, 0, {RT}},
5364{"mfdvc2", XSPR(31,339,951), XSPR_MASK, PPC405, 0, {RT}},
5365{"mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750, 0, {RT}},
5366{"mfpmc1", XSPR(31,339,953), XSPR_MASK, PPC750, 0, {RT}},
5367{"mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403, 0, {RT}},
5368{"mfdcwr", XSPR(31,339,954), XSPR_MASK, PPC403, 0, {RT}},
5369{"mfpmc2", XSPR(31,339,954), XSPR_MASK, PPC750, 0, {RT}},
5370{"mfsia", XSPR(31,339,955), XSPR_MASK, PPC750, 0, {RT}},
5371{"mfsler", XSPR(31,339,955), XSPR_MASK, PPC405, 0, {RT}},
5372{"mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750, 0, {RT}},
5373{"mfsu0r", XSPR(31,339,956), XSPR_MASK, PPC405, 0, {RT}},
5374{"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, 0, {RT}},
5375{"mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, 0, {RT}},
5376{"mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, 0, {RT}},
5377{"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, 0, {RT}},
5378{"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, 0, {RT}},
5379{"mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, 0, {RT}},
5380{"mfevpr", XSPR(31,339,982), XSPR_MASK, PPC403, 0, {RT}},
5381{"mfcdbcr", XSPR(31,339,983), XSPR_MASK, PPC403, 0, {RT}},
5382{"mftsr", XSPR(31,339,984), XSPR_MASK, PPC403, 0, {RT}},
5383{"mftcr", XSPR(31,339,986), XSPR_MASK, PPC403, 0, {RT}},
5384{"mfpit", XSPR(31,339,987), XSPR_MASK, PPC403, 0, {RT}},
5385{"mftbhi", XSPR(31,339,988), XSPR_MASK, PPC403, 0, {RT}},
5386{"mftblo", XSPR(31,339,989), XSPR_MASK, PPC403, 0, {RT}},
5387{"mfsrr2", XSPR(31,339,990), XSPR_MASK, PPC403, 0, {RT}},
5388{"mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, 0, {RT}},
5389{"mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, 0, {RT}},
5390{"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, 0, {RT}},
5391{"mfdbdr", XSPR(31,339,1011), XSPR_MASK, TITAN, 0, {RS}},
5392{"mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, 0, {RT}},
5393{"mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, 0, {RT}},
5394{"mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, 0, {RT}},
5395{"mfdac2", XSPR(31,339,1015), XSPR_MASK, PPC403, 0, {RT}},
5396{"mfl2cr", XSPR(31,339,1017), XSPR_MASK, PPC750, 0, {RT}},
5397{"mfdccr", XSPR(31,339,1018), XSPR_MASK, PPC403, 0, {RT}},
5398{"mficcr", XSPR(31,339,1019), XSPR_MASK, PPC403, 0, {RT}},
5399{"mfictc", XSPR(31,339,1019), XSPR_MASK, PPC750, 0, {RT}},
5400{"mfpbl1", XSPR(31,339,1020), XSPR_MASK, PPC403, 0, {RT}},
5401{"mfthrm1", XSPR(31,339,1020), XSPR_MASK, PPC750, 0, {RT}},
5402{"mfpbu1", XSPR(31,339,1021), XSPR_MASK, PPC403, 0, {RT}},
5403{"mfthrm2", XSPR(31,339,1021), XSPR_MASK, PPC750, 0, {RT}},
5404{"mfpbl2", XSPR(31,339,1022), XSPR_MASK, PPC403, 0, {RT}},
5405{"mfthrm3", XSPR(31,339,1022), XSPR_MASK, PPC750, 0, {RT}},
5406{"mfpbu2", XSPR(31,339,1023), XSPR_MASK, PPC403, 0, {RT}},
5407{"mfspr", X(31,339), X_MASK, COM, 0, {RT, SPR}},
5408
5409{"lwax", X(31,341), X_MASK, PPC64, 0, {RT, RA0, RB}},
5410
5411{"dst", XDSS(31,342,0), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
5412
5413{"lhax", X(31,343), X_MASK, COM, 0, {RT, RA0, RB}},
5414
5415{"lvxl", X(31,359), X_MASK, PPCVEC, 0, {VD, RA0, RB}},
5416
5417{"abs", XO(31,360,0,0), XORB_MASK, M601, 0, {RT, RA}},
5418{"abs.", XO(31,360,0,1), XORB_MASK, M601, 0, {RT, RA}},
5419
5420{"divs", XO(31,363,0,0), XO_MASK, M601, 0, {RT, RA, RB}},
5421{"divs.", XO(31,363,0,1), XO_MASK, M601, 0, {RT, RA, RB}},
5422
5423{"lxvwsx", X(31,364), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
5424
5425{"tlbia", X(31,370), 0xffffffff, PPC, E500|TITAN, {0}},
1cb0a767 5426
db76a700 5427{"mftbu", XSPR(31,371,269), XSPR_MASK, PPC, NO371|POWER4, {RT}},
14b57c7c 5428{"mftb", X(31,371), X_MASK, PPC, NO371|POWER4, {RT, TBR}},
db76a700 5429{"mftbl", XSPR(31,371,268), XSPR_MASK, PPC, NO371|POWER4, {RT}},
1cb0a767 5430
14b57c7c 5431{"lwaux", X(31,373), X_MASK, PPC64, 0, {RT, RAL, RB}},
1cb0a767 5432
14b57c7c 5433{"dstst", XDSS(31,374,0), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
1cb0a767 5434
14b57c7c 5435{"lhaux", X(31,375), X_MASK, COM, 0, {RT, RAL, RB}},
1cb0a767 5436
14b57c7c 5437{"popcntw", X(31,378), XRB_MASK, POWER7|PPCA2, 0, {RA, RS}},
066be9f7 5438
14b57c7c
AM
5439{"mtdcrx", X(31,387), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RA, RS}},
5440{"mtdcrx.", XRC(31,387,1), X_MASK, PPCA2, 0, {RA, RS}},
1cb0a767 5441
14b57c7c 5442{"stvexbx", X(31,389), X_MASK, PPCVEC2, 0, {VS, RA0, RB}},
aea77599 5443
14b57c7c
AM
5444{"dcblc", X(31,390), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
5445{"stdfcmx", APU(31,391,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
1cb0a767 5446
14b57c7c
AM
5447{"divdeu", XO(31,393,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
5448{"divdeu.", XO(31,393,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
5449{"divweu", XO(31,395,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
5450{"divweu.", XO(31,395,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
066be9f7 5451
14b57c7c
AM
5452{"stxvx", X(31,396), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
5453{"stxvl", X(31,397), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
a680de9a 5454
14b57c7c 5455{"dcblce", X(31,398), X_MASK, PPCCHLK, E500MC, {CT, RA, RB}},
1cb0a767 5456
14b57c7c 5457{"slbmte", X(31,402), XRA_MASK, PPC64, 0, {RS, RB}},
1cb0a767 5458
14b57c7c 5459{"mtvsrws", X(31,403), XX1RB_MASK, PPCVSX3, 0, {XT6, RA}},
a680de9a 5460
14b57c7c 5461{"pbt.", XRC(31,404,1), X_MASK, POWER8, 0, {RS, RA0, RB}},
c0637f3a 5462
14b57c7c
AM
5463{"icswx", XRC(31,406,0), X_MASK, POWER7|PPCA2, 0, {RS, RA, RB}},
5464{"icswx.", XRC(31,406,1), X_MASK, POWER7|PPCA2, 0, {RS, RA, RB}},
e0d602ec 5465
14b57c7c 5466{"sthx", X(31,407), X_MASK, COM, 0, {RS, RA0, RB}},
1cb0a767 5467
14b57c7c
AM
5468{"orc", XRC(31,412,0), X_MASK, COM, 0, {RA, RS, RB}},
5469{"orc.", XRC(31,412,1), X_MASK, COM, 0, {RA, RS, RB}},
1cb0a767 5470
14b57c7c 5471{"sthepx", X(31,415), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}},
1cb0a767 5472
14b57c7c 5473{"mtdcrux", X(31,419), X_MASK, PPC464, 0, {RA, RS}},
1cb0a767 5474
14b57c7c 5475{"stvexhx", X(31,421), X_MASK, PPCVEC2, 0, {VS, RA0, RB}},
aea77599 5476
14b57c7c 5477{"dcblq.", XRC(31,422,1), X_MASK, E6500, 0, {CT, RA0, RB}},
aea77599 5478
14b57c7c
AM
5479{"divde", XO(31,425,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
5480{"divde.", XO(31,425,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
5481{"divwe", XO(31,427,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
5482{"divwe.", XO(31,427,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
066be9f7 5483
14b57c7c 5484{"stxvll", X(31,429), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
a680de9a 5485
14b57c7c 5486{"clrbhrb", X(31,430), 0xffffffff, POWER8, 0, {0}},
c0637f3a 5487
14b57c7c 5488{"slbie", X(31,434), XRTRA_MASK, PPC64, 0, {RB}},
1cb0a767 5489
14b57c7c 5490{"mtvsrdd", X(31,435), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 5491
14b57c7c 5492{"ecowx", X(31,438), X_MASK, PPC, E500|TITAN, {RT, RA0, RB}},
1cb0a767 5493
14b57c7c 5494{"sthux", X(31,439), X_MASK, COM, 0, {RS, RAS, RB}},
1cb0a767 5495
14b57c7c 5496{"mdors", 0x7f9ce378, 0xffffffff, E500MC, 0, {0}},
1cb0a767 5497
14b57c7c 5498{"miso", 0x7f5ad378, 0xffffffff, E6500, 0, {0}},
aea77599 5499
9f6a6cc0 5500/* The "yield", "mdoio" and "mdoom" instructions are extended mnemonics for
14b57c7c
AM
5501 "or rX,rX,rX", with rX being r27, r29 and r30 respectively. */
5502{"yield", 0x7f7bdb78, 0xffffffff, POWER7, 0, {0}},
5503{"mdoio", 0x7fbdeb78, 0xffffffff, POWER7, 0, {0}},
5504{"mdoom", 0x7fdef378, 0xffffffff, POWER7, 0, {0}},
5505{"mr", XRC(31,444,0), X_MASK, COM, 0, {RA, RS, RBS}},
5506{"or", XRC(31,444,0), X_MASK, COM, 0, {RA, RS, RB}},
5507{"mr.", XRC(31,444,1), X_MASK, COM, 0, {RA, RS, RBS}},
5508{"or.", XRC(31,444,1), X_MASK, COM, 0, {RA, RS, RB}},
5509
5510{"mtexisr", XSPR(31,451, 64), XSPR_MASK, PPC403, 0, {RS}},
5511{"mtexier", XSPR(31,451, 66), XSPR_MASK, PPC403, 0, {RS}},
5512{"mtbr0", XSPR(31,451,128), XSPR_MASK, PPC403, 0, {RS}},
5513{"mtbr1", XSPR(31,451,129), XSPR_MASK, PPC403, 0, {RS}},
5514{"mtbr2", XSPR(31,451,130), XSPR_MASK, PPC403, 0, {RS}},
5515{"mtbr3", XSPR(31,451,131), XSPR_MASK, PPC403, 0, {RS}},
5516{"mtbr4", XSPR(31,451,132), XSPR_MASK, PPC403, 0, {RS}},
5517{"mtbr5", XSPR(31,451,133), XSPR_MASK, PPC403, 0, {RS}},
5518{"mtbr6", XSPR(31,451,134), XSPR_MASK, PPC403, 0, {RS}},
5519{"mtbr7", XSPR(31,451,135), XSPR_MASK, PPC403, 0, {RS}},
5520{"mtbear", XSPR(31,451,144), XSPR_MASK, PPC403, 0, {RS}},
5521{"mtbesr", XSPR(31,451,145), XSPR_MASK, PPC403, 0, {RS}},
5522{"mtiocr", XSPR(31,451,160), XSPR_MASK, PPC403, 0, {RS}},
5523{"mtdmacr0", XSPR(31,451,192), XSPR_MASK, PPC403, 0, {RS}},
5524{"mtdmact0", XSPR(31,451,193), XSPR_MASK, PPC403, 0, {RS}},
5525{"mtdmada0", XSPR(31,451,194), XSPR_MASK, PPC403, 0, {RS}},
5526{"mtdmasa0", XSPR(31,451,195), XSPR_MASK, PPC403, 0, {RS}},
5527{"mtdmacc0", XSPR(31,451,196), XSPR_MASK, PPC403, 0, {RS}},
5528{"mtdmacr1", XSPR(31,451,200), XSPR_MASK, PPC403, 0, {RS}},
5529{"mtdmact1", XSPR(31,451,201), XSPR_MASK, PPC403, 0, {RS}},
5530{"mtdmada1", XSPR(31,451,202), XSPR_MASK, PPC403, 0, {RS}},
5531{"mtdmasa1", XSPR(31,451,203), XSPR_MASK, PPC403, 0, {RS}},
5532{"mtdmacc1", XSPR(31,451,204), XSPR_MASK, PPC403, 0, {RS}},
5533{"mtdmacr2", XSPR(31,451,208), XSPR_MASK, PPC403, 0, {RS}},
5534{"mtdmact2", XSPR(31,451,209), XSPR_MASK, PPC403, 0, {RS}},
5535{"mtdmada2", XSPR(31,451,210), XSPR_MASK, PPC403, 0, {RS}},
5536{"mtdmasa2", XSPR(31,451,211), XSPR_MASK, PPC403, 0, {RS}},
5537{"mtdmacc2", XSPR(31,451,212), XSPR_MASK, PPC403, 0, {RS}},
5538{"mtdmacr3", XSPR(31,451,216), XSPR_MASK, PPC403, 0, {RS}},
5539{"mtdmact3", XSPR(31,451,217), XSPR_MASK, PPC403, 0, {RS}},
5540{"mtdmada3", XSPR(31,451,218), XSPR_MASK, PPC403, 0, {RS}},
5541{"mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403, 0, {RS}},
5542{"mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403, 0, {RS}},
5543{"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403, 0, {RS}},
5544{"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {SPR, RS}},
5545{"mtdcr.", XRC(31,451,1), X_MASK, PPCA2, 0, {SPR, RS}},
5546
5547{"stvexwx", X(31,453), X_MASK, PPCVEC2, 0, {VS, RA0, RB}},
5548
5549{"dccci", X(31,454), XRT_MASK, PPC403|PPC440|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
5550{"dci", X(31,454), XRARB_MASK, PPCA2|PPC476, 0, {CT}},
5551
5552{"divdu", XO(31,457,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
5553{"divdu.", XO(31,457,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
5554
5555{"divwu", XO(31,459,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
5556{"divwu.", XO(31,459,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
5557
5558{"mtpmr", X(31,462), X_MASK, PPCPMR|PPCE300, 0, {PMR, RS}},
5559{"mttmr", X(31,494), X_MASK, PPCTMR|E6500, 0, {TMR, RS}},
5560
5561{"slbieg", X(31,466), XRA_MASK, POWER9, 0, {RS, RB}},
5562
5563{"mtmq", XSPR(31,467, 0), XSPR_MASK, M601, 0, {RS}},
5564{"mtxer", XSPR(31,467, 1), XSPR_MASK, COM, 0, {RS}},
5565{"mtlr", XSPR(31,467, 8), XSPR_MASK, COM, 0, {RS}},
5566{"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, 0, {RS}},
5567{"mtdscr", XSPR(31,467, 17), XSPR_MASK, POWER6, 0, {RS}},
5568{"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, 0, {RS}},
5569{"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, TITAN, {RS}},
5570{"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, TITAN, {RS}},
5571{"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, TITAN, {RS}},
5572{"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, TITAN, {RS}},
5573{"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, 0, {RS}},
5574{"mtsdr0", XSPR(31,467, 24), XSPR_MASK, POWER, 0, {RS}},
5575{"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, TITAN, {RS}},
5576{"mtsrr0", XSPR(31,467, 26), XSPR_MASK, COM, 0, {RS}},
5577{"mtsrr1", XSPR(31,467, 27), XSPR_MASK, COM, 0, {RS}},
5578{"mtcfar", XSPR(31,467, 28), XSPR_MASK, POWER6, 0, {RS}},
5579{"mtpid", XSPR(31,467, 48), XSPR_MASK, BOOKE, 0, {RS}},
5580{"mtdecar", XSPR(31,467, 54), XSPR_MASK, BOOKE, 0, {RS}},
5581{"mtcsrr0", XSPR(31,467, 58), XSPR_MASK, BOOKE, 0, {RS}},
5582{"mtcsrr1", XSPR(31,467, 59), XSPR_MASK, BOOKE, 0, {RS}},
5583{"mtdear", XSPR(31,467, 61), XSPR_MASK, BOOKE, 0, {RS}},
5584{"mtesr", XSPR(31,467, 62), XSPR_MASK, BOOKE, 0, {RS}},
5585{"mtivpr", XSPR(31,467, 63), XSPR_MASK, BOOKE, 0, {RS}},
5586{"mtcmpa", XSPR(31,467,144), XSPR_MASK, PPC860, 0, {RS}},
5587{"mtcmpb", XSPR(31,467,145), XSPR_MASK, PPC860, 0, {RS}},
5588{"mtcmpc", XSPR(31,467,146), XSPR_MASK, PPC860, 0, {RS}},
5589{"mtcmpd", XSPR(31,467,147), XSPR_MASK, PPC860, 0, {RS}},
5590{"mticr", XSPR(31,467,148), XSPR_MASK, PPC860, 0, {RS}},
5591{"mtder", XSPR(31,467,149), XSPR_MASK, PPC860, 0, {RS}},
5592{"mtcounta", XSPR(31,467,150), XSPR_MASK, PPC860, 0, {RS}},
5593{"mtcountb", XSPR(31,467,151), XSPR_MASK, PPC860, 0, {RS}},
5594{"mtctrl", XSPR(31,467,152), XSPR_MASK, POWER4, 0, {RS}},
5595{"mtcmpe", XSPR(31,467,152), XSPR_MASK, PPC860, 0, {RS}},
5596{"mtcmpf", XSPR(31,467,153), XSPR_MASK, PPC860, 0, {RS}},
5597{"mtcmpg", XSPR(31,467,154), XSPR_MASK, PPC860, 0, {RS}},
5598{"mtcmph", XSPR(31,467,155), XSPR_MASK, PPC860, 0, {RS}},
5599{"mtlctrl1", XSPR(31,467,156), XSPR_MASK, PPC860, 0, {RS}},
5600{"mtlctrl2", XSPR(31,467,157), XSPR_MASK, PPC860, 0, {RS}},
5601{"mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860, 0, {RS}},
5602{"mtbar", XSPR(31,467,159), XSPR_MASK, PPC860, 0, {RS}},
5603{"mtvrsave", XSPR(31,467,256), XSPR_MASK, PPCVEC, 0, {RS}},
5604{"mtusprg0", XSPR(31,467,256), XSPR_MASK, BOOKE, 0, {RS}},
5605{"mtsprg", XSPR(31,467,256), XSPRG_MASK, PPC, 0, {SPRG, RS}},
5606{"mtsprg0", XSPR(31,467,272), XSPR_MASK, PPC, 0, {RS}},
5607{"mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, 0, {RS}},
5608{"mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, 0, {RS}},
5609{"mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, 0, {RS}},
5610{"mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, 0, {RS}},
5611{"mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, 0, {RS}},
5612{"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, 0, {RS}},
5613{"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, 0, {RS}},
5614{"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, 0, {RS}},
5615{"mtear", XSPR(31,467,282), XSPR_MASK, PPC, TITAN, {RS}},
5616{"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, 0, {RS}},
5617{"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, 0, {RS}},
5618{"mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, 0, {RS}},
5619{"mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, 0, {RS}},
5620{"mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, 0, {RS}},
5621{"mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, 0, {RS}},
5622{"mtiac1", XSPR(31,467,312), XSPR_MASK, BOOKE, 0, {RS}},
5623{"mtiac2", XSPR(31,467,313), XSPR_MASK, BOOKE, 0, {RS}},
5624{"mtiac3", XSPR(31,467,314), XSPR_MASK, BOOKE, 0, {RS}},
5625{"mtiac4", XSPR(31,467,315), XSPR_MASK, BOOKE, 0, {RS}},
5626{"mtdac1", XSPR(31,467,316), XSPR_MASK, BOOKE, 0, {RS}},
5627{"mtdac2", XSPR(31,467,317), XSPR_MASK, BOOKE, 0, {RS}},
5628{"mtdvc1", XSPR(31,467,318), XSPR_MASK, BOOKE, 0, {RS}},
5629{"mtdvc2", XSPR(31,467,319), XSPR_MASK, BOOKE, 0, {RS}},
5630{"mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, 0, {RS}},
5631{"mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, 0, {RS}},
5632{"mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, 0, {RS}},
5633{"mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, 0, {RS}},
5634{"mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, 0, {RS}},
5635{"mtivor3", XSPR(31,467,403), XSPR_MASK, BOOKE, 0, {RS}},
5636{"mtivor4", XSPR(31,467,404), XSPR_MASK, BOOKE, 0, {RS}},
5637{"mtivor5", XSPR(31,467,405), XSPR_MASK, BOOKE, 0, {RS}},
5638{"mtivor6", XSPR(31,467,406), XSPR_MASK, BOOKE, 0, {RS}},
5639{"mtivor7", XSPR(31,467,407), XSPR_MASK, BOOKE, 0, {RS}},
5640{"mtivor8", XSPR(31,467,408), XSPR_MASK, BOOKE, 0, {RS}},
5641{"mtivor9", XSPR(31,467,409), XSPR_MASK, BOOKE, 0, {RS}},
5642{"mtivor10", XSPR(31,467,410), XSPR_MASK, BOOKE, 0, {RS}},
5643{"mtivor11", XSPR(31,467,411), XSPR_MASK, BOOKE, 0, {RS}},
5644{"mtivor12", XSPR(31,467,412), XSPR_MASK, BOOKE, 0, {RS}},
5645{"mtivor13", XSPR(31,467,413), XSPR_MASK, BOOKE, 0, {RS}},
5646{"mtivor14", XSPR(31,467,414), XSPR_MASK, BOOKE, 0, {RS}},
5647{"mtivor15", XSPR(31,467,415), XSPR_MASK, BOOKE, 0, {RS}},
5648{"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE, 0, {RS}},
5649{"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, 0, {RS}},
5650{"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, 0, {RS}},
5651{"mtivor32", XSPR(31,467,528), XSPR_MASK, PPCSPE, 0, {RS}},
5652{"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
5653{"mtivor33", XSPR(31,467,529), XSPR_MASK, PPCSPE, 0, {RS}},
5654{"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
5655{"mtivor34", XSPR(31,467,530), XSPR_MASK, PPCSPE, 0, {RS}},
5656{"mtivor35", XSPR(31,467,531), XSPR_MASK, PPCPMR, 0, {RS}},
5657{"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
5658{"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}},
5659{"mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, 0, {RS}},
5660{"mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, 0, {RS}},
5661{"mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, 0, {RS}},
5662{"mtivndx", XSPR(31,467,880), XSPR_MASK, TITAN, 0, {RS}},
5663{"mtdvndx", XSPR(31,467,881), XSPR_MASK, TITAN, 0, {RS}},
5664{"mtivlim", XSPR(31,467,882), XSPR_MASK, TITAN, 0, {RS}},
5665{"mtdvlim", XSPR(31,467,883), XSPR_MASK, TITAN, 0, {RS}},
5666{"mtclcsr", XSPR(31,467,884), XSPR_MASK, TITAN, 0, {RS}},
5667{"mtccr1", XSPR(31,467,888), XSPR_MASK, TITAN, 0, {RS}},
5668{"mtppr", XSPR(31,467,896), XSPR_MASK, POWER7, 0, {RS}},
5669{"mtppr32", XSPR(31,467,898), XSPR_MASK, POWER7, 0, {RS}},
5670{"mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, 0, {RS}},
5671{"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, 0, {RS}},
5672{"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, 0, {RS}},
5673{"mtusia", XSPR(31,467,939), XSPR_MASK, PPC750, 0, {RS}},
5674{"mtummcr1", XSPR(31,467,940), XSPR_MASK, PPC750, 0, {RS}},
5675{"mtupmc3", XSPR(31,467,941), XSPR_MASK, PPC750, 0, {RS}},
5676{"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750, 0, {RS}},
5677{"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, 0, {RS}},
5678{"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, 0, {RS}},
5679{"mtrmmucr", XSPR(31,467,946), XSPR_MASK, TITAN, 0, {RS}},
5680{"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, 0, {RS}},
5681{"mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, 0, {RS}},
5682{"mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, 0, {RS}},
5683{"mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, 0, {RS}},
5684{"mtdvc2", XSPR(31,467,951), XSPR_MASK, PPC405, 0, {RS}},
5685{"mtmmcr0", XSPR(31,467,952), XSPR_MASK, PPC750, 0, {RS}},
5686{"mtpmc1", XSPR(31,467,953), XSPR_MASK, PPC750, 0, {RS}},
5687{"mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403, 0, {RS}},
5688{"mtdcwr", XSPR(31,467,954), XSPR_MASK, PPC403, 0, {RS}},
5689{"mtpmc2", XSPR(31,467,954), XSPR_MASK, PPC750, 0, {RS}},
5690{"mtsia", XSPR(31,467,955), XSPR_MASK, PPC750, 0, {RS}},
5691{"mtsler", XSPR(31,467,955), XSPR_MASK, PPC405, 0, {RS}},
5692{"mtmmcr1", XSPR(31,467,956), XSPR_MASK, PPC750, 0, {RS}},
5693{"mtsu0r", XSPR(31,467,956), XSPR_MASK, PPC405, 0, {RS}},
5694{"mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405, 0, {RS}},
5695{"mtpmc3", XSPR(31,467,957), XSPR_MASK, PPC750, 0, {RS}},
5696{"mtpmc4", XSPR(31,467,958), XSPR_MASK, PPC750, 0, {RS}},
5697{"mticdbdr", XSPR(31,467,979), XSPR_MASK, PPC403, 0, {RS}},
5698{"mtesr", XSPR(31,467,980), XSPR_MASK, PPC403, 0, {RS}},
5699{"mtdear", XSPR(31,467,981), XSPR_MASK, PPC403, 0, {RS}},
5700{"mtevpr", XSPR(31,467,982), XSPR_MASK, PPC403, 0, {RS}},
5701{"mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403, 0, {RS}},
5702{"mttsr", XSPR(31,467,984), XSPR_MASK, PPC403, 0, {RS}},
5703{"mttcr", XSPR(31,467,986), XSPR_MASK, PPC403, 0, {RS}},
5704{"mtpit", XSPR(31,467,987), XSPR_MASK, PPC403, 0, {RS}},
5705{"mttbhi", XSPR(31,467,988), XSPR_MASK, PPC403, 0, {RS}},
5706{"mttblo", XSPR(31,467,989), XSPR_MASK, PPC403, 0, {RS}},
5707{"mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, 0, {RS}},
5708{"mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, 0, {RS}},
5709{"mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, 0, {RS}},
5710{"mtdbdr", XSPR(31,467,1011), XSPR_MASK, TITAN, 0, {RS}},
5711{"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, 0, {RS}},
5712{"mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, 0, {RS}},
5713{"mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, 0, {RS}},
5714{"mtdac1", XSPR(31,467,1014), XSPR_MASK, PPC403, 0, {RS}},
5715{"mtdac2", XSPR(31,467,1015), XSPR_MASK, PPC403, 0, {RS}},
5716{"mtl2cr", XSPR(31,467,1017), XSPR_MASK, PPC750, 0, {RS}},
5717{"mtdccr", XSPR(31,467,1018), XSPR_MASK, PPC403, 0, {RS}},
5718{"mticcr", XSPR(31,467,1019), XSPR_MASK, PPC403, 0, {RS}},
5719{"mtictc", XSPR(31,467,1019), XSPR_MASK, PPC750, 0, {RS}},
5720{"mtpbl1", XSPR(31,467,1020), XSPR_MASK, PPC403, 0, {RS}},
5721{"mtthrm1", XSPR(31,467,1020), XSPR_MASK, PPC750, 0, {RS}},
5722{"mtpbu1", XSPR(31,467,1021), XSPR_MASK, PPC403, 0, {RS}},
5723{"mtthrm2", XSPR(31,467,1021), XSPR_MASK, PPC750, 0, {RS}},
5724{"mtpbl2", XSPR(31,467,1022), XSPR_MASK, PPC403, 0, {RS}},
5725{"mtthrm3", XSPR(31,467,1022), XSPR_MASK, PPC750, 0, {RS}},
5726{"mtpbu2", XSPR(31,467,1023), XSPR_MASK, PPC403, 0, {RS}},
5727{"mtspr", X(31,467), X_MASK, COM, 0, {SPR, RS}},
5728
5729{"dcbi", X(31,470), XRT_MASK, PPC, 0, {RA0, RB}},
5730
5731{"nand", XRC(31,476,0), X_MASK, COM, 0, {RA, RS, RB}},
5732{"nand.", XRC(31,476,1), X_MASK, COM, 0, {RA, RS, RB}},
5733
5734{"dsn", X(31,483), XRT_MASK, E500MC, 0, {RA, RB}},
5735
5736{"dcread", X(31,486), X_MASK, PPC403|PPC440, PPCA2|PPC476, {RT, RA0, RB}},
5737
5738{"icbtls", X(31,486), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}},
5739
5740{"stvxl", X(31,487), X_MASK, PPCVEC, 0, {VS, RA0, RB}},
5741
5742{"nabs", XO(31,488,0,0), XORB_MASK, M601, 0, {RT, RA}},
5743{"nabs.", XO(31,488,0,1), XORB_MASK, M601, 0, {RT, RA}},
5744
5745{"divd", XO(31,489,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
5746{"divd.", XO(31,489,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
5747
5748{"divw", XO(31,491,0,0), XO_MASK, PPC, 0, {RT, RA, RB}},
5749{"divw.", XO(31,491,0,1), XO_MASK, PPC, 0, {RT, RA, RB}},
5750
5751{"icbtlse", X(31,494), X_MASK, PPCCHLK, E500MC, {CT, RA, RB}},
5752
5753{"slbia", X(31,498), 0xff1fffff, POWER6, 0, {IH}},
4bc0608a 5754{"slbia", X(31,498), 0xffffffff, PPC64, POWER6, {0}},
1cb0a767 5755
14b57c7c 5756{"cli", X(31,502), XRB_MASK, POWER, 0, {RT, RA}},
1cb0a767 5757
14b57c7c 5758{"popcntd", X(31,506), XRB_MASK, POWER7|PPCA2, 0, {RA, RS}},
066be9f7 5759
14b57c7c 5760{"cmpb", X(31,508), X_MASK, POWER6|PPCA2|PPC476, 0, {RA, RS, RB}},
1cb0a767 5761
14b57c7c 5762{"mcrxr", X(31,512), XBFRARB_MASK, COM, POWER7, {BF}},
252b5132 5763
dfdaec14 5764{"lbdcbx", X(31,514), X_MASK, E200Z4, 0, {RT, RA, RB}},
14b57c7c 5765{"lbdx", X(31,515), X_MASK, E500MC, 0, {RT, RA, RB}},
19a6653c 5766
14b57c7c 5767{"bblels", X(31,518), X_MASK, PPCBRLK, 0, {0}},
252b5132 5768
14b57c7c
AM
5769{"lvlx", X(31,519), X_MASK, CELL, 0, {VD, RA0, RB}},
5770{"lbfcmux", APU(31,519,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 5771
14b57c7c
AM
5772{"subfco", XO(31,8,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5773{"sfo", XO(31,8,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5774{"subco", XO(31,8,1,0), XO_MASK, PPCCOM, 0, {RT, RB, RA}},
5775{"subfco.", XO(31,8,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5776{"sfo.", XO(31,8,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5777{"subco.", XO(31,8,1,1), XO_MASK, PPCCOM, 0, {RT, RB, RA}},
43e65147 5778
14b57c7c
AM
5779{"addco", XO(31,10,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5780{"ao", XO(31,10,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5781{"addco.", XO(31,10,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5782{"ao.", XO(31,10,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 5783
14b57c7c 5784{"lxsspx", X(31,524), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}},
c0637f3a 5785
14b57c7c 5786{"clcs", X(31,531), XRB_MASK, M601, 0, {RT, RA}},
418c1742 5787
14b57c7c 5788{"ldbrx", X(31,532), X_MASK, CELL|POWER7|PPCA2, 0, {RT, RA0, RB}},
418c1742 5789
14b57c7c
AM
5790{"lswx", X(31,533), X_MASK, PPCCOM, E500|E500MC, {RT, RAX, RBX}},
5791{"lsx", X(31,533), X_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 5792
14b57c7c
AM
5793{"lwbrx", X(31,534), X_MASK, PPCCOM, 0, {RT, RA0, RB}},
5794{"lbrx", X(31,534), X_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 5795
14b57c7c 5796{"lfsx", X(31,535), X_MASK, COM, PPCEFS, {FRT, RA0, RB}},
702f0fb4 5797
14b57c7c
AM
5798{"srw", XRC(31,536,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
5799{"sr", XRC(31,536,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
5800{"srw.", XRC(31,536,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
5801{"sr.", XRC(31,536,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
252b5132 5802
14b57c7c
AM
5803{"rrib", XRC(31,537,0), X_MASK, M601, 0, {RA, RS, RB}},
5804{"rrib.", XRC(31,537,1), X_MASK, M601, 0, {RA, RS, RB}},
23976049 5805
14b57c7c
AM
5806{"cnttzw", XRC(31,538,0), XRB_MASK, POWER9, 0, {RA, RS}},
5807{"cnttzw.", XRC(31,538,1), XRB_MASK, POWER9, 0, {RA, RS}},
a680de9a 5808
14b57c7c
AM
5809{"srd", XRC(31,539,0), X_MASK, PPC64, 0, {RA, RS, RB}},
5810{"srd.", XRC(31,539,1), X_MASK, PPC64, 0, {RA, RS, RB}},
f509565f 5811
14b57c7c
AM
5812{"maskir", XRC(31,541,0), X_MASK, M601, 0, {RA, RS, RB}},
5813{"maskir.", XRC(31,541,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 5814
dfdaec14 5815{"lhdcbx", X(31,546), X_MASK, E200Z4, 0, {RT, RA, RB}},
14b57c7c 5816{"lhdx", X(31,547), X_MASK, E500MC, 0, {RT, RA, RB}},
19a6653c 5817
14b57c7c 5818{"lvtrx", X(31,549), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
aea77599 5819
14b57c7c 5820{"bbelr", X(31,550), X_MASK, PPCBRLK, 0, {0}},
418c1742 5821
14b57c7c
AM
5822{"lvrx", X(31,551), X_MASK, CELL, 0, {VD, RA0, RB}},
5823{"lhfcmux", APU(31,551,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 5824
14b57c7c
AM
5825{"subfo", XO(31,40,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
5826{"subo", XO(31,40,1,0), XO_MASK, PPC, 0, {RT, RB, RA}},
5827{"subfo.", XO(31,40,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
5828{"subo.", XO(31,40,1,1), XO_MASK, PPC, 0, {RT, RB, RA}},
252b5132 5829
14b57c7c 5830{"tlbsync", X(31,566), 0xffffffff, PPC, 0, {0}},
252b5132 5831
14b57c7c 5832{"lfsux", X(31,567), X_MASK, COM, PPCEFS, {FRT, RAS, RB}},
252b5132 5833
14b57c7c
AM
5834{"cnttzd", XRC(31,570,0), XRB_MASK, POWER9, 0, {RA, RS}},
5835{"cnttzd.", XRC(31,570,1), XRB_MASK, POWER9, 0, {RA, RS}},
a680de9a 5836
14b57c7c 5837{"mcrxrx", X(31,576), XBFRARB_MASK, POWER9, 0, {BF}},
a680de9a 5838
dfdaec14 5839{"lwdcbx", X(31,578), X_MASK, E200Z4, 0, {RT, RA, RB}},
14b57c7c 5840{"lwdx", X(31,579), X_MASK, E500MC, 0, {RT, RA, RB}},
19a6653c 5841
14b57c7c 5842{"lvtlx", X(31,581), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
aea77599 5843
14b57c7c 5844{"lwat", X(31,582), X_MASK, POWER9, 0, {RT, RA0, FC}},
a680de9a 5845
14b57c7c 5846{"lwfcmux", APU(31,583,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
081ba1b3 5847
14b57c7c 5848{"lxsdx", X(31,588), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
066be9f7 5849
14b57c7c 5850{"mfsr", X(31,595), XRB_MASK|(1<<20), COM, NON32, {RT, SR}},
252b5132 5851
14b57c7c
AM
5852{"lswi", X(31,597), X_MASK, PPCCOM, E500|E500MC, {RT, RAX, NBI}},
5853{"lsi", X(31,597), X_MASK, PWRCOM, 0, {RT, RA0, NB}},
252b5132 5854
dc302c00 5855{"hwsync", XSYNC(31,598,0), 0xffffffff, POWER4, BOOKE|PPC476, {0}},
e01d869a 5856{"lwsync", XSYNC(31,598,1), 0xffffffff, PPC, E500, {0}},
14b57c7c 5857{"ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, 0, {0}},
fd486b63
PB
5858{"sync", X(31,598), XSYNCLE_MASK, E6500, 0, {LS, ESYNC}},
5859{"sync", X(31,598), XSYNC_MASK, PPCCOM, BOOKE|PPC476, {LS}},
14b57c7c
AM
5860{"msync", X(31,598), 0xffffffff, BOOKE|PPCA2|PPC476, 0, {0}},
5861{"sync", X(31,598), 0xffffffff, BOOKE|PPC476, E6500, {0}},
5862{"lwsync", X(31,598), 0xffffffff, E500, 0, {0}},
5863{"dcs", X(31,598), 0xffffffff, PWRCOM, 0, {0}},
418c1742 5864
14b57c7c 5865{"lfdx", X(31,599), X_MASK, COM, PPCEFS, {FRT, RA0, RB}},
23976049 5866
066be9f7 5867{"mffgpr", XRC(31,607,0), XRA_MASK, POWER6, POWER7, {FRT, RB}},
14b57c7c 5868{"lfdepx", X(31,607), X_MASK, E500MC|PPCA2, 0, {FRT, RA0, RB}},
252b5132 5869
14b57c7c 5870{"lddx", X(31,611), X_MASK, E500MC, 0, {RT, RA, RB}},
19a6653c 5871
14b57c7c 5872{"lvswx", X(31,613), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
aea77599 5873
14b57c7c 5874{"ldat", X(31,614), X_MASK, POWER9, 0, {RT, RA0, FC}},
a680de9a 5875
14b57c7c 5876{"lqfcmux", APU(31,615,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
081ba1b3 5877
14b57c7c
AM
5878{"nego", XO(31,104,1,0), XORB_MASK, COM, 0, {RT, RA}},
5879{"nego.", XO(31,104,1,1), XORB_MASK, COM, 0, {RT, RA}},
252b5132 5880
14b57c7c
AM
5881{"mulo", XO(31,107,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
5882{"mulo.", XO(31,107,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 5883
14b57c7c 5884{"mfsri", X(31,627), X_MASK, M601, 0, {RT, RA, RB}},
252b5132 5885
14b57c7c 5886{"dclst", X(31,630), XRB_MASK, M601, 0, {RS, RA}},
252b5132 5887
14b57c7c 5888{"lfdux", X(31,631), X_MASK, COM, PPCEFS, {FRT, RAS, RB}},
252b5132 5889
dfdaec14 5890{"stbdcbx", X(31,642), X_MASK, E200Z4, 0, {RS, RA, RB}},
14b57c7c 5891{"stbdx", X(31,643), X_MASK, E500MC, 0, {RS, RA, RB}},
19a6653c 5892
14b57c7c
AM
5893{"stvlx", X(31,647), X_MASK, CELL, 0, {VS, RA0, RB}},
5894{"stbfcmux", APU(31,647,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
23976049 5895
14b57c7c 5896{"stxsspx", X(31,652), XX1_MASK, PPCVSX2, 0, {XS6, RA0, RB}},
c0637f3a 5897
14b57c7c 5898{"tbegin.", XRC(31,654,1), XRTLRARB_MASK, PPCHTM, 0, {HTM_R}},
5817ffd1 5899
14b57c7c
AM
5900{"subfeo", XO(31,136,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5901{"sfeo", XO(31,136,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5902{"subfeo.", XO(31,136,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5903{"sfeo.", XO(31,136,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 5904
14b57c7c
AM
5905{"addeo", XO(31,138,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5906{"aeo", XO(31,138,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
5907{"addeo.", XO(31,138,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
5908{"aeo.", XO(31,138,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 5909
14b57c7c 5910{"mfsrin", X(31,659), XRA_MASK, PPC, NON32, {RT, RB}},
418c1742 5911
14b57c7c 5912{"stdbrx", X(31,660), X_MASK, CELL|POWER7|PPCA2, 0, {RS, RA0, RB}},
252b5132 5913
14b57c7c
AM
5914{"stswx", X(31,661), X_MASK, PPCCOM, E500|E500MC, {RS, RA0, RB}},
5915{"stsx", X(31,661), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
418c1742 5916
14b57c7c
AM
5917{"stwbrx", X(31,662), X_MASK, PPCCOM, 0, {RS, RA0, RB}},
5918{"stbrx", X(31,662), X_MASK, PWRCOM, 0, {RS, RA0, RB}},
252b5132 5919
14b57c7c 5920{"stfsx", X(31,663), X_MASK, COM, PPCEFS, {FRS, RA0, RB}},
ede602d7 5921
14b57c7c
AM
5922{"srq", XRC(31,664,0), X_MASK, M601, 0, {RA, RS, RB}},
5923{"srq.", XRC(31,664,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 5924
14b57c7c
AM
5925{"sre", XRC(31,665,0), X_MASK, M601, 0, {RA, RS, RB}},
5926{"sre.", XRC(31,665,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 5927
dfdaec14 5928{"sthdcbx", X(31,674), X_MASK, E200Z4, 0, {RS, RA, RB}},
14b57c7c 5929{"sthdx", X(31,675), X_MASK, E500MC, 0, {RS, RA, RB}},
19a6653c 5930
14b57c7c 5931{"stvfrx", X(31,677), X_MASK, PPCVEC2, 0, {VS, RA0, RB}},
aea77599 5932
14b57c7c
AM
5933{"stvrx", X(31,679), X_MASK, CELL, 0, {VS, RA0, RB}},
5934{"sthfcmux", APU(31,679,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 5935
14b57c7c
AM
5936{"tendall.", XRC(31,686,1)|(1<<25), XRTRARB_MASK, PPCHTM, 0, {0}},
5937{"tend.", XRC(31,686,1), XRTARARB_MASK, PPCHTM, 0, {HTM_A}},
5817ffd1 5938
14b57c7c 5939{"stbcx.", XRC(31,694,1), X_MASK, POWER8|E6500, 0, {RS, RA0, RB}},
066be9f7 5940
14b57c7c 5941{"stfsux", X(31,695), X_MASK, COM, PPCEFS, {FRS, RAS, RB}},
252b5132 5942
14b57c7c
AM
5943{"sriq", XRC(31,696,0), X_MASK, M601, 0, {RA, RS, SH}},
5944{"sriq.", XRC(31,696,1), X_MASK, M601, 0, {RA, RS, SH}},
252b5132 5945
dfdaec14 5946{"stwdcbx", X(31,706), X_MASK, E200Z4, 0, {RS, RA, RB}},
14b57c7c 5947{"stwdx", X(31,707), X_MASK, E500MC, 0, {RS, RA, RB}},
19a6653c 5948
14b57c7c 5949{"stvflx", X(31,709), X_MASK, PPCVEC2, 0, {VS, RA0, RB}},
aea77599 5950
14b57c7c 5951{"stwat", X(31,710), X_MASK, POWER9, 0, {RS, RA0, FC}},
a680de9a 5952
14b57c7c 5953{"stwfcmux", APU(31,711,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
081ba1b3 5954
14b57c7c 5955{"stxsdx", X(31,716), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
066be9f7 5956
14b57c7c 5957{"tcheck", X(31,718), XRTBFRARB_MASK, PPCHTM, 0, {BF}},
5817ffd1 5958
14b57c7c
AM
5959{"subfzeo", XO(31,200,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
5960{"sfzeo", XO(31,200,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
5961{"subfzeo.", XO(31,200,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
5962{"sfzeo.", XO(31,200,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
418c1742 5963
14b57c7c
AM
5964{"addzeo", XO(31,202,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
5965{"azeo", XO(31,202,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
5966{"addzeo.", XO(31,202,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
5967{"azeo.", XO(31,202,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
fdd12ef3 5968
14b57c7c
AM
5969{"stswi", X(31,725), X_MASK, PPCCOM, E500|E500MC, {RS, RA0, NB}},
5970{"stsi", X(31,725), X_MASK, PWRCOM, 0, {RS, RA0, NB}},
252b5132 5971
14b57c7c 5972{"sthcx.", XRC(31,726,1), X_MASK, POWER8|E6500, 0, {RS, RA0, RB}},
066be9f7 5973
14b57c7c 5974{"stfdx", X(31,727), X_MASK, COM, PPCEFS, {FRS, RA0, RB}},
252b5132 5975
14b57c7c
AM
5976{"srlq", XRC(31,728,0), X_MASK, M601, 0, {RA, RS, RB}},
5977{"srlq.", XRC(31,728,1), X_MASK, M601, 0, {RA, RS, RB}},
418c1742 5978
14b57c7c
AM
5979{"sreq", XRC(31,729,0), X_MASK, M601, 0, {RA, RS, RB}},
5980{"sreq.", XRC(31,729,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 5981
066be9f7 5982{"mftgpr", XRC(31,735,0), XRA_MASK, POWER6, POWER7, {RT, FRB}},
14b57c7c 5983{"stfdepx", X(31,735), X_MASK, E500MC|PPCA2, 0, {FRS, RA0, RB}},
252b5132 5984
14b57c7c 5985{"stddx", X(31,739), X_MASK, E500MC, 0, {RS, RA, RB}},
19a6653c 5986
14b57c7c 5987{"stvswx", X(31,741), X_MASK, PPCVEC2, 0, {VS, RA0, RB}},
aea77599 5988
14b57c7c 5989{"stdat", X(31,742), X_MASK, POWER9, 0, {RS, RA0, FC}},
a680de9a 5990
14b57c7c 5991{"stqfcmux", APU(31,743,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
081ba1b3 5992
14b57c7c
AM
5993{"subfmeo", XO(31,232,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
5994{"sfmeo", XO(31,232,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
5995{"subfmeo.", XO(31,232,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
5996{"sfmeo.", XO(31,232,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
252b5132 5997
14b57c7c
AM
5998{"mulldo", XO(31,233,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
5999{"mulldo.", XO(31,233,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
252b5132 6000
14b57c7c
AM
6001{"addmeo", XO(31,234,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}},
6002{"ameo", XO(31,234,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}},
6003{"addmeo.", XO(31,234,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}},
6004{"ameo.", XO(31,234,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}},
418c1742 6005
14b57c7c
AM
6006{"mullwo", XO(31,235,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6007{"mulso", XO(31,235,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6008{"mullwo.", XO(31,235,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6009{"mulso.", XO(31,235,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
702f0fb4 6010
14b57c7c
AM
6011{"tsuspend.", XRCL(31,750,0,1), XRTRARB_MASK,PPCHTM, 0, {0}},
6012{"tresume.", XRCL(31,750,1,1), XRTRARB_MASK,PPCHTM, 0, {0}},
6013{"tsr.", XRC(31,750,1), XRTLRARB_MASK,PPCHTM, 0, {L}},
5817ffd1 6014
14b57c7c 6015{"darn", X(31,755), XLRAND_MASK, POWER9, 0, {RT, LRAND}},
a680de9a 6016
14b57c7c
AM
6017{"dcba", X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
6018{"dcbal", XOPL(31,758,1), XRT_MASK, E500MC, 0, {RA0, RB}},
252b5132 6019
14b57c7c 6020{"stfdux", X(31,759), X_MASK, COM, PPCEFS, {FRS, RAS, RB}},
252b5132 6021
14b57c7c
AM
6022{"srliq", XRC(31,760,0), X_MASK, M601, 0, {RA, RS, SH}},
6023{"srliq.", XRC(31,760,1), X_MASK, M601, 0, {RA, RS, SH}},
252b5132 6024
14b57c7c 6025{"lvsm", X(31,773), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
a680de9a 6026
fd486b63 6027{"copy", XOPL(31,774,1), XRT_MASK, POWER9, 0, {RA0, RB}},
a680de9a 6028
14b57c7c
AM
6029{"stvepxl", X(31,775), X_MASK, PPCVEC2, 0, {VS, RA0, RB}},
6030{"lvlxl", X(31,775), X_MASK, CELL, 0, {VD, RA0, RB}},
6031{"ldfcmux", APU(31,775,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
ede602d7 6032
14b57c7c
AM
6033{"dozo", XO(31,264,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
6034{"dozo.", XO(31,264,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 6035
14b57c7c
AM
6036{"addo", XO(31,266,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6037{"caxo", XO(31,266,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
6038{"addo.", XO(31,266,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}},
6039{"caxo.", XO(31,266,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}},
252b5132 6040
14b57c7c
AM
6041{"modsd", X(31,777), X_MASK, POWER9, 0, {RT, RA, RB}},
6042{"modsw", X(31,779), X_MASK, POWER9, 0, {RT, RA, RB}},
a680de9a 6043
14b57c7c
AM
6044{"lxvw4x", X(31,780), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
6045{"lxsibzx", X(31,781), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
066be9f7 6046
14b57c7c 6047{"tabortwc.", XRC(31,782,1), X_MASK, PPCHTM, 0, {TO, RA, RB}},
5817ffd1 6048
14b57c7c 6049{"tlbivax", X(31,786), XRT_MASK, BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
252b5132 6050
14b57c7c 6051{"lwzcix", X(31,789), X_MASK, POWER6, 0, {RT, RA0, RB}},
252b5132 6052
14b57c7c 6053{"lhbrx", X(31,790), X_MASK, COM, 0, {RT, RA0, RB}},
252b5132 6054
14b57c7c
AM
6055{"lfdpx", X(31,791), X_MASK, POWER6, POWER7, {FRTp, RA0, RB}},
6056{"lfqx", X(31,791), X_MASK, POWER2, 0, {FRT, RA, RB}},
418c1742 6057
14b57c7c
AM
6058{"sraw", XRC(31,792,0), X_MASK, PPCCOM, 0, {RA, RS, RB}},
6059{"sra", XRC(31,792,0), X_MASK, PWRCOM, 0, {RA, RS, RB}},
6060{"sraw.", XRC(31,792,1), X_MASK, PPCCOM, 0, {RA, RS, RB}},
6061{"sra.", XRC(31,792,1), X_MASK, PWRCOM, 0, {RA, RS, RB}},
fdd12ef3 6062
14b57c7c
AM
6063{"srad", XRC(31,794,0), X_MASK, PPC64, 0, {RA, RS, RB}},
6064{"srad.", XRC(31,794,1), X_MASK, PPC64, 0, {RA, RS, RB}},
252b5132 6065
14b57c7c 6066{"lfddx", X(31,803), X_MASK, E500MC, 0, {FRT, RA, RB}},
19a6653c 6067
14b57c7c
AM
6068{"lvtrxl", X(31,805), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
6069{"stvepx", X(31,807), X_MASK, PPCVEC2, 0, {VS, RA0, RB}},
6070{"lvrxl", X(31,807), X_MASK, CELL, 0, {VD, RA0, RB}},
252b5132 6071
14b57c7c
AM
6072{"lxvh8x", X(31,812), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
6073{"lxsihzx", X(31,813), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 6074
14b57c7c 6075{"tabortdc.", XRC(31,814,1), X_MASK, PPCHTM, 0, {TO, RA, RB}},
5817ffd1 6076
14b57c7c 6077{"rac", X(31,818), X_MASK, M601, 0, {RT, RA, RB}},
252b5132 6078
14b57c7c 6079{"erativax", X(31,819), X_MASK, PPCA2, 0, {RS, RA0, RB}},
e0d602ec 6080
14b57c7c 6081{"lhzcix", X(31,821), X_MASK, POWER6, 0, {RT, RA0, RB}},
252b5132 6082
14b57c7c 6083{"dss", XDSS(31,822,0), XDSS_MASK, PPCVEC, 0, {STRM}},
252b5132 6084
14b57c7c 6085{"lfqux", X(31,823), X_MASK, POWER2, 0, {FRT, RA, RB}},
fdd12ef3 6086
14b57c7c
AM
6087{"srawi", XRC(31,824,0), X_MASK, PPCCOM, 0, {RA, RS, SH}},
6088{"srai", XRC(31,824,0), X_MASK, PWRCOM, 0, {RA, RS, SH}},
6089{"srawi.", XRC(31,824,1), X_MASK, PPCCOM, 0, {RA, RS, SH}},
6090{"srai.", XRC(31,824,1), X_MASK, PWRCOM, 0, {RA, RS, SH}},
702f0fb4 6091
14b57c7c
AM
6092{"sradi", XS(31,413,0), XS_MASK, PPC64, 0, {RA, RS, SH6}},
6093{"sradi.", XS(31,413,1), XS_MASK, PPC64, 0, {RA, RS, SH6}},
e0c21649 6094
14b57c7c 6095{"lvtlxl", X(31,837), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
aea77599 6096
fd486b63 6097{"cpabort", X(31,838), XRTRARB_MASK,POWER9, 0, {0}},
a680de9a 6098
14b57c7c
AM
6099{"divo", XO(31,331,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
6100{"divo.", XO(31,331,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 6101
14b57c7c 6102{"lxvd2x", X(31,844), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}},
a680de9a 6103{"lxvx", X(31,844), XX1_MASK, POWER8, POWER9|PPCVSX3, {XT6, RA0, RB}},
9b4e5766 6104
14b57c7c 6105{"tabortwci.", XRC(31,846,1), X_MASK, PPCHTM, 0, {TO, RA, HTM_SI}},
5817ffd1 6106
14b57c7c 6107{"tlbsrx.", XRC(31,850,1), XRT_MASK, PPCA2, 0, {RA0, RB}},
e0d602ec 6108
fd486b63 6109{"slbiag", X(31,850), XRARB_MASK, POWER9, 0, {RS}},
14b57c7c 6110{"slbmfev", X(31,851), XRLA_MASK, POWER9, 0, {RT, RB, A_L}},
a680de9a 6111{"slbmfev", X(31,851), XRA_MASK, PPC64, POWER9, {RT, RB}},
252b5132 6112
14b57c7c 6113{"lbzcix", X(31,853), X_MASK, POWER6, 0, {RT, RA0, RB}},
418c1742 6114
9fe54b1c 6115{"eieio", X(31,854), 0xffffffff, PPC, BOOKE|PPCA2|PPC476, {0}},
14b57c7c
AM
6116{"mbar", X(31,854), X_MASK, BOOKE|PPCA2|PPC476, 0, {MO}},
6117{"eieio", XMBAR(31,854,1),0xffffffff, E500, 0, {0}},
6118{"eieio", X(31,854), 0xffffffff, PPCA2|PPC476, 0, {0}},
418c1742 6119
14b57c7c 6120{"lfiwax", X(31,855), X_MASK, POWER6|PPCA2|PPC476, 0, {FRT, RA0, RB}},
418c1742 6121
14b57c7c 6122{"lvswxl", X(31,869), X_MASK, PPCVEC2, 0, {VD, RA0, RB}},
aea77599 6123
14b57c7c
AM
6124{"abso", XO(31,360,1,0), XORB_MASK, M601, 0, {RT, RA}},
6125{"abso.", XO(31,360,1,1), XORB_MASK, M601, 0, {RT, RA}},
702f0fb4 6126
14b57c7c
AM
6127{"divso", XO(31,363,1,0), XO_MASK, M601, 0, {RT, RA, RB}},
6128{"divso.", XO(31,363,1,1), XO_MASK, M601, 0, {RT, RA, RB}},
252b5132 6129
14b57c7c 6130{"lxvb16x", X(31,876), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}},
a680de9a 6131
14b57c7c 6132{"tabortdci.", XRC(31,878,1), X_MASK, PPCHTM, 0, {TO, RA, HTM_SI}},
5817ffd1 6133
14b57c7c 6134{"rmieg", X(31,882), XRTRA_MASK, POWER9, 0, {RB}},
a680de9a 6135
14b57c7c 6136{"ldcix", X(31,885), X_MASK, POWER6, 0, {RT, RA0, RB}},
252b5132 6137
14b57c7c 6138{"msgsync", X(31,886), 0xffffffff, POWER9, 0, {0}},
a680de9a 6139
14b57c7c 6140{"lfiwzx", X(31,887), X_MASK, POWER7|PPCA2, 0, {FRT, RA0, RB}},
066be9f7 6141
14b57c7c
AM
6142{"extswsli", XS(31,445,0), XS_MASK, POWER9, 0, {RA, RS, SH6}},
6143{"extswsli.", XS(31,445,1), XS_MASK, POWER9, 0, {RA, RS, SH6}},
a680de9a 6144
fd486b63 6145{"paste.", XRCL(31,902,1,1),XRT_MASK, POWER9, 0, {RA0, RB}},
a680de9a 6146
14b57c7c
AM
6147{"stvlxl", X(31,903), X_MASK, CELL, 0, {VS, RA0, RB}},
6148{"stdfcmux", APU(31,903,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}},
252b5132 6149
14b57c7c
AM
6150{"divdeuo", XO(31,393,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6151{"divdeuo.", XO(31,393,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6152{"divweuo", XO(31,395,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6153{"divweuo.", XO(31,395,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
066be9f7 6154
14b57c7c
AM
6155{"stxvw4x", X(31,908), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
6156{"stxsibx", X(31,909), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
066be9f7 6157
14b57c7c 6158{"tabort.", XRC(31,910,1), XRTRB_MASK, PPCHTM, 0, {RA}},
5817ffd1 6159
14b57c7c
AM
6160{"tlbsx", XRC(31,914,0), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
6161{"tlbsx.", XRC(31,914,1), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}},
252b5132 6162
14b57c7c 6163{"slbmfee", X(31,915), XRLA_MASK, POWER9, 0, {RT, RB, A_L}},
a680de9a 6164{"slbmfee", X(31,915), XRA_MASK, PPC64, POWER9, {RT, RB}},
702f0fb4 6165
14b57c7c 6166{"stwcix", X(31,917), X_MASK, POWER6, 0, {RS, RA0, RB}},
f5c120c5 6167
14b57c7c 6168{"sthbrx", X(31,918), X_MASK, COM, 0, {RS, RA0, RB}},
252b5132 6169
14b57c7c
AM
6170{"stfdpx", X(31,919), X_MASK, POWER6, POWER7, {FRSp, RA0, RB}},
6171{"stfqx", X(31,919), X_MASK, POWER2, 0, {FRS, RA0, RB}},
6ba045b1 6172
14b57c7c
AM
6173{"sraq", XRC(31,920,0), X_MASK, M601, 0, {RA, RS, RB}},
6174{"sraq.", XRC(31,920,1), X_MASK, M601, 0, {RA, RS, RB}},
702f0fb4 6175
14b57c7c
AM
6176{"srea", XRC(31,921,0), X_MASK, M601, 0, {RA, RS, RB}},
6177{"srea.", XRC(31,921,1), X_MASK, M601, 0, {RA, RS, RB}},
252b5132 6178
14b57c7c
AM
6179{"extsh", XRC(31,922,0), XRB_MASK, PPCCOM, 0, {RA, RS}},
6180{"exts", XRC(31,922,0), XRB_MASK, PWRCOM, 0, {RA, RS}},
6181{"extsh.", XRC(31,922,1), XRB_MASK, PPCCOM, 0, {RA, RS}},
6182{"exts.", XRC(31,922,1), XRB_MASK, PWRCOM, 0, {RA, RS}},
702f0fb4 6183
14b57c7c 6184{"stfddx", X(31,931), X_MASK, E500MC, 0, {FRS, RA, RB}},
19a6653c 6185
14b57c7c 6186{"stvfrxl", X(31,933), X_MASK, PPCVEC2, 0, {VS, RA0, RB}},
aea77599 6187
14b57c7c 6188{"wclrone", XOPL2(31,934,2),XRT_MASK, PPCA2, 0, {RA0, RB}},
a5721ba2
AM
6189{"wclrall", X(31,934), XRARB_MASK, PPCA2, 0, {L2}},
6190{"wclr", X(31,934), X_MASK, PPCA2, 0, {L2, RA0, RB}},
85d4ac0b 6191
14b57c7c 6192{"stvrxl", X(31,935), X_MASK, CELL, 0, {VS, RA0, RB}},
6ba045b1 6193
14b57c7c
AM
6194{"divdeo", XO(31,425,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6195{"divdeo.", XO(31,425,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6196{"divweo", XO(31,427,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
6197{"divweo.", XO(31,427,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}},
066be9f7 6198
14b57c7c
AM
6199{"stxvh8x", X(31,940), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
6200{"stxsihx", X(31,941), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
a680de9a 6201
14b57c7c 6202{"treclaim.", XRC(31,942,1), XRTRB_MASK, PPCHTM, 0, {RA}},
5817ffd1 6203
e0d602ec
BE
6204{"tlbrehi", XTLB(31,946,0), XTLB_MASK, PPC403, PPCA2, {RT, RA}},
6205{"tlbrelo", XTLB(31,946,1), XTLB_MASK, PPC403, PPCA2, {RT, RA}},
14b57c7c 6206{"tlbre", X(31,946), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
702f0fb4 6207
14b57c7c 6208{"sthcix", X(31,949), X_MASK, POWER6, 0, {RS, RA0, RB}},
252b5132 6209
14b57c7c
AM
6210{"icswepx", XRC(31,950,0), X_MASK, PPCA2, 0, {RS, RA, RB}},
6211{"icswepx.", XRC(31,950,1), X_MASK, PPCA2, 0, {RS, RA, RB}},
51b5d4a8 6212
14b57c7c 6213{"stfqux", X(31,951), X_MASK, POWER2, 0, {FRS, RA, RB}},
252b5132 6214
14b57c7c
AM
6215{"sraiq", XRC(31,952,0), X_MASK, M601, 0, {RA, RS, SH}},
6216{"sraiq.", XRC(31,952,1), X_MASK, M601, 0, {RA, RS, SH}},
252b5132 6217
14b57c7c
AM
6218{"extsb", XRC(31,954,0), XRB_MASK, PPC, 0, {RA, RS}},
6219{"extsb.", XRC(31,954,1), XRB_MASK, PPC, 0, {RA, RS}},
252b5132 6220
14b57c7c 6221{"stvflxl", X(31,965), X_MASK, PPCVEC2, 0, {VS, RA0, RB}},
aea77599 6222
14b57c7c
AM
6223{"iccci", X(31,966), XRT_MASK, PPC403|PPC440|TITAN|PPCA2, 0, {RAOPT, RBOPT}},
6224{"ici", X(31,966), XRARB_MASK, PPCA2|PPC476, 0, {CT}},
43e65147 6225
14b57c7c
AM
6226{"divduo", XO(31,457,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
6227{"divduo.", XO(31,457,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
43e65147 6228
14b57c7c
AM
6229{"divwuo", XO(31,459,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
6230{"divwuo.", XO(31,459,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
252b5132 6231
14b57c7c 6232{"stxvd2x", X(31,972), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}},
a680de9a 6233{"stxvx", X(31,972), XX1_MASK, POWER8, POWER9|PPCVSX3, {XS6, RA0, RB}},
9b4e5766 6234
9fe54b1c 6235{"tlbld", X(31,978), XRTRA_MASK, PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}},
14b57c7c
AM
6236{"tlbwehi", XTLB(31,978,0), XTLB_MASK, PPC403, 0, {RT, RA}},
6237{"tlbwelo", XTLB(31,978,1), XTLB_MASK, PPC403, 0, {RT, RA}},
6238{"tlbwe", X(31,978), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}},
418c1742 6239
14b57c7c 6240{"slbfee.", XRC(31,979,1), XRA_MASK, POWER6, 0, {RT, RB}},
c4e676f1 6241
14b57c7c 6242{"stbcix", X(31,981), X_MASK, POWER6, 0, {RS, RA0, RB}},
252b5132 6243
14b57c7c 6244{"icbi", X(31,982), XRT_MASK, PPC, 0, {RA0, RB}},
252b5132 6245
14b57c7c 6246{"stfiwx", X(31,983), X_MASK, PPC, PPCEFS, {FRS, RA0, RB}},
702f0fb4 6247
14b57c7c
AM
6248{"extsw", XRC(31,986,0), XRB_MASK, PPC64, 0, {RA, RS}},
6249{"extsw.", XRC(31,986,1), XRB_MASK, PPC64, 0, {RA, RS}},
252b5132 6250
14b57c7c 6251{"icbiep", XRT(31,991,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
19a6653c 6252
14b57c7c 6253{"stvswxl", X(31,997), X_MASK, PPCVEC2, 0, {VS, RA0, RB}},
aea77599 6254
14b57c7c 6255{"icread", X(31,998), XRT_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA0, RB}},
252b5132 6256
14b57c7c
AM
6257{"nabso", XO(31,488,1,0), XORB_MASK, M601, 0, {RT, RA}},
6258{"nabso.", XO(31,488,1,1), XORB_MASK, M601, 0, {RT, RA}},
252b5132 6259
14b57c7c
AM
6260{"divdo", XO(31,489,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}},
6261{"divdo.", XO(31,489,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}},
43e65147 6262
14b57c7c
AM
6263{"divwo", XO(31,491,1,0), XO_MASK, PPC, 0, {RT, RA, RB}},
6264{"divwo.", XO(31,491,1,1), XO_MASK, PPC, 0, {RT, RA, RB}},
418c1742 6265
14b57c7c 6266{"stxvb16x", X(31,1004), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}},
a680de9a 6267
14b57c7c 6268{"trechkpt.", XRC(31,1006,1), XRTRARB_MASK,PPCHTM, 0, {0}},
702f0fb4 6269
14b57c7c 6270{"tlbli", X(31,1010), XRTRA_MASK, PPC, TITAN, {RB}},
252b5132 6271
14b57c7c 6272{"stdcix", X(31,1013), X_MASK, POWER6, 0, {RS, RA0, RB}},
418c1742 6273
14b57c7c
AM
6274{"dcbz", X(31,1014), XRT_MASK, PPC, 0, {RA0, RB}},
6275{"dclz", X(31,1014), XRT_MASK, PPC, 0, {RA0, RB}},
786e2c0f 6276
14b57c7c 6277{"dcbzep", XRT(31,1023,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
ede602d7 6278
14b57c7c 6279{"dcbzl", XOPL(31,1014,1), XRT_MASK, POWER4|E500MC, PPC476, {RA0, RB}},
252b5132 6280
14b57c7c
AM
6281{"cctpl", 0x7c210b78, 0xffffffff, CELL, 0, {0}},
6282{"cctpm", 0x7c421378, 0xffffffff, CELL, 0, {0}},
6283{"cctph", 0x7c631b78, 0xffffffff, CELL, 0, {0}},
252b5132 6284
14b57c7c
AM
6285{"dstt", XDSS(31,342,1), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
6286{"dststt", XDSS(31,374,1), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}},
6287{"dssall", XDSS(31,822,1), XDSS_MASK, PPCVEC, 0, {0}},
252b5132 6288
14b57c7c
AM
6289{"db8cyc", 0x7f9ce378, 0xffffffff, CELL, 0, {0}},
6290{"db10cyc", 0x7fbdeb78, 0xffffffff, CELL, 0, {0}},
6291{"db12cyc", 0x7fdef378, 0xffffffff, CELL, 0, {0}},
6292{"db16cyc", 0x7ffffb78, 0xffffffff, CELL, 0, {0}},
252b5132 6293
14b57c7c
AM
6294{"lwz", OP(32), OP_MASK, PPCCOM, PPCVLE, {RT, D, RA0}},
6295{"l", OP(32), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
252b5132 6296
14b57c7c
AM
6297{"lwzu", OP(33), OP_MASK, PPCCOM, PPCVLE, {RT, D, RAL}},
6298{"lu", OP(33), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
252b5132 6299
14b57c7c 6300{"lbz", OP(34), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
252b5132 6301
14b57c7c 6302{"lbzu", OP(35), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
252b5132 6303
14b57c7c
AM
6304{"stw", OP(36), OP_MASK, PPCCOM, PPCVLE, {RS, D, RA0}},
6305{"st", OP(36), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
252b5132 6306
14b57c7c
AM
6307{"stwu", OP(37), OP_MASK, PPCCOM, PPCVLE, {RS, D, RAS}},
6308{"stu", OP(37), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
252b5132 6309
14b57c7c 6310{"stb", OP(38), OP_MASK, COM, PPCVLE, {RS, D, RA0}},
252b5132 6311
14b57c7c 6312{"stbu", OP(39), OP_MASK, COM, PPCVLE, {RS, D, RAS}},
252b5132 6313
14b57c7c 6314{"lhz", OP(40), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
252b5132 6315
14b57c7c 6316{"lhzu", OP(41), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
252b5132 6317
14b57c7c 6318{"lha", OP(42), OP_MASK, COM, PPCVLE, {RT, D, RA0}},
252b5132 6319
14b57c7c 6320{"lhau", OP(43), OP_MASK, COM, PPCVLE, {RT, D, RAL}},
252b5132 6321
14b57c7c 6322{"sth", OP(44), OP_MASK, COM, PPCVLE, {RS, D, RA0}},
252b5132 6323
14b57c7c 6324{"sthu", OP(45), OP_MASK, COM, PPCVLE, {RS, D, RAS}},
252b5132 6325
14b57c7c
AM
6326{"lmw", OP(46), OP_MASK, PPCCOM, PPCVLE, {RT, D, RAM}},
6327{"lm", OP(46), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}},
252b5132 6328
14b57c7c
AM
6329{"stmw", OP(47), OP_MASK, PPCCOM, PPCVLE, {RS, D, RA0}},
6330{"stm", OP(47), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}},
252b5132 6331
14b57c7c 6332{"lfs", OP(48), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RA0}},
252b5132 6333
14b57c7c 6334{"lfsu", OP(49), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RAS}},
252b5132 6335
14b57c7c 6336{"lfd", OP(50), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RA0}},
252b5132 6337
14b57c7c 6338{"lfdu", OP(51), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RAS}},
252b5132 6339
14b57c7c 6340{"stfs", OP(52), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RA0}},
adadcc0c 6341
14b57c7c 6342{"stfsu", OP(53), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RAS}},
252b5132 6343
14b57c7c 6344{"stfd", OP(54), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RA0}},
c3d65c1c 6345
14b57c7c 6346{"stfdu", OP(55), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RAS}},
252b5132 6347
14b57c7c
AM
6348{"lq", OP(56), OP_MASK, POWER4, PPC476|PPCVLE, {RTQ, DQ, RAQ}},
6349{"psq_l", OP(56), OP_MASK, PPCPS, PPCVLE, {FRT,PSD,RA,PSW,PSQ}},
6350{"lfq", OP(56), OP_MASK, POWER2, PPCVLE, {FRT, D, RA0}},
418c1742 6351
14b57c7c
AM
6352{"lxsd", DSO(57,2), DS_MASK, PPCVSX3, PPCVLE, {VD, DS, RA0}},
6353{"lxssp", DSO(57,3), DS_MASK, PPCVSX3, PPCVLE, {VD, DS, RA0}},
6354{"lfdp", OP(57), OP_MASK, POWER6, POWER7|PPCVLE, {FRTp, DS, RA0}},
6355{"psq_lu", OP(57), OP_MASK, PPCPS, PPCVLE, {FRT,PSD,RA,PSW,PSQ}},
6356{"lfqu", OP(57), OP_MASK, POWER2, PPCVLE, {FRT, D, RA0}},
802a735e 6357
14b57c7c
AM
6358{"ld", DSO(58,0), DS_MASK, PPC64, PPCVLE, {RT, DS, RA0}},
6359{"ldu", DSO(58,1), DS_MASK, PPC64, PPCVLE, {RT, DS, RAL}},
6360{"lwa", DSO(58,2), DS_MASK, PPC64, PPCVLE, {RT, DS, RA0}},
702f0fb4 6361
14b57c7c
AM
6362{"dadd", XRC(59,2,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6363{"dadd.", XRC(59,2,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
252b5132 6364
14b57c7c
AM
6365{"dqua", ZRC(59,3,0), Z2_MASK, POWER6, PPCVLE, {FRT,FRA,FRB,RMC}},
6366{"dqua.", ZRC(59,3,1), Z2_MASK, POWER6, PPCVLE, {FRT,FRA,FRB,RMC}},
252b5132 6367
14b57c7c
AM
6368{"fdivs", A(59,18,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6369{"fdivs.", A(59,18,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
252b5132 6370
14b57c7c
AM
6371{"fsubs", A(59,20,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6372{"fsubs.", A(59,20,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
252b5132 6373
14b57c7c
AM
6374{"fadds", A(59,21,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6375{"fadds.", A(59,21,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
252b5132 6376
14b57c7c
AM
6377{"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
6378{"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}},
252b5132 6379
14b57c7c
AM
6380{"fres", A(59,24,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
6381{"fres", A(59,24,0), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
6382{"fres.", A(59,24,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
6383{"fres.", A(59,24,1), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
1ed8e1e4 6384
14b57c7c
AM
6385{"fmuls", A(59,25,0), AFRB_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
6386{"fmuls.", A(59,25,1), AFRB_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
252b5132 6387
14b57c7c
AM
6388{"frsqrtes", A(59,26,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
6389{"frsqrtes", A(59,26,0), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
6390{"frsqrtes.", A(59,26,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
6391{"frsqrtes.", A(59,26,1), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
252b5132 6392
14b57c7c
AM
6393{"fmsubs", A(59,28,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6394{"fmsubs.", A(59,28,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 6395
14b57c7c
AM
6396{"fmadds", A(59,29,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6397{"fmadds.", A(59,29,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 6398
14b57c7c
AM
6399{"fnmsubs", A(59,30,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6400{"fnmsubs.", A(59,30,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
702f0fb4 6401
14b57c7c
AM
6402{"fnmadds", A(59,31,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6403{"fnmadds.", A(59,31,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
702f0fb4 6404
14b57c7c
AM
6405{"dmul", XRC(59,34,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6406{"dmul.", XRC(59,34,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
702f0fb4 6407
14b57c7c
AM
6408{"drrnd", ZRC(59,35,0), Z2_MASK, POWER6, PPCVLE, {FRT, FRA, FRB, RMC}},
6409{"drrnd.", ZRC(59,35,1), Z2_MASK, POWER6, PPCVLE, {FRT, FRA, FRB, RMC}},
702f0fb4 6410
14b57c7c
AM
6411{"dscli", ZRC(59,66,0), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
6412{"dscli.", ZRC(59,66,1), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
702f0fb4 6413
14b57c7c
AM
6414{"dquai", ZRC(59,67,0), Z2_MASK, POWER6, PPCVLE, {TE, FRT,FRB,RMC}},
6415{"dquai.", ZRC(59,67,1), Z2_MASK, POWER6, PPCVLE, {TE, FRT,FRB,RMC}},
702f0fb4 6416
14b57c7c
AM
6417{"dscri", ZRC(59,98,0), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
6418{"dscri.", ZRC(59,98,1), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}},
702f0fb4 6419
14b57c7c
AM
6420{"drintx", ZRC(59,99,0), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
6421{"drintx.", ZRC(59,99,1), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
702f0fb4 6422
14b57c7c 6423{"dcmpo", X(59,130), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
702f0fb4 6424
14b57c7c
AM
6425{"dtstex", X(59,162), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
6426{"dtstdc", Z(59,194), Z_MASK, POWER6, PPCVLE, {BF, FRA, DCM}},
6427{"dtstdg", Z(59,226), Z_MASK, POWER6, PPCVLE, {BF, FRA, DGM}},
6428
6429{"drintn", ZRC(59,227,0), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
6430{"drintn.", ZRC(59,227,1), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}},
6431
6432{"dctdp", XRC(59,258,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6433{"dctdp.", XRC(59,258,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6434
6435{"dctfix", XRC(59,290,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6436{"dctfix.", XRC(59,290,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6437
6438{"ddedpd", XRC(59,322,0), X_MASK, POWER6, PPCVLE, {SP, FRT, FRB}},
6439{"ddedpd.", XRC(59,322,1), X_MASK, POWER6, PPCVLE, {SP, FRT, FRB}},
6440
6441{"dxex", XRC(59,354,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6442{"dxex.", XRC(59,354,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6443
6444{"dsub", XRC(59,514,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6445{"dsub.", XRC(59,514,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6446
6447{"ddiv", XRC(59,546,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6448{"ddiv.", XRC(59,546,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6449
6450{"dcmpu", X(59,642), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
6451
6452{"dtstsf", X(59,674), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}},
6453{"dtstsfi", X(59,675), X_MASK|1<<22,POWER9, PPCVLE, {BF, UIM6, FRB}},
6454
6455{"drsp", XRC(59,770,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6456{"drsp.", XRC(59,770,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}},
6457
6458{"dcffix", XRC(59,802,0), X_MASK|FRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
6459{"dcffix.", XRC(59,802,1), X_MASK|FRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
6460
6461{"denbcd", XRC(59,834,0), X_MASK, POWER6, PPCVLE, {S, FRT, FRB}},
6462{"denbcd.", XRC(59,834,1), X_MASK, POWER6, PPCVLE, {S, FRT, FRB}},
6463
6464{"fcfids", XRC(59,846,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
6465{"fcfids.", XRC(59,846,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
6466
6467{"diex", XRC(59,866,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6468{"diex.", XRC(59,866,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}},
6469
6470{"fcfidus", XRC(59,974,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
6471{"fcfidus.", XRC(59,974,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
6472
6473{"xsaddsp", XX3(60,0), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6474{"xsmaddasp", XX3(60,1), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6475{"xxsldwi", XX3(60,2), XX3SHW_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, SHW}},
6476{"xscmpeqdp", XX3(60,3), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6477{"xsrsqrtesp", XX2(60,10), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6478{"xssqrtsp", XX2(60,11), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6479{"xxsel", XX4(60,3), XX4_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, XC6}},
6480{"xssubsp", XX3(60,8), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6481{"xsmaddmsp", XX3(60,9), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6482{"xxspltd", XX3(60,10), XX3DM_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6S, DMEX}},
6483{"xxmrghd", XX3(60,10), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6484{"xxswapd", XX3(60,10)|(2<<8), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6S}},
6485{"xxmrgld", XX3(60,10)|(3<<8), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6486{"xxpermdi", XX3(60,10), XX3DM_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, DM}},
6487{"xscmpgtdp", XX3(60,11), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6488{"xsresp", XX2(60,26), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6489{"xsmulsp", XX3(60,16), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6490{"xsmsubasp", XX3(60,17), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6491{"xxmrghw", XX3(60,18), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6492{"xscmpgedp", XX3(60,19), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6493{"xsdivsp", XX3(60,24), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6494{"xsmsubmsp", XX3(60,25), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6495{"xxperm", XX3(60,26), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6496{"xsadddp", XX3(60,32), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6497{"xsmaddadp", XX3(60,33), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6498{"xscmpudp", XX3(60,35), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
6499{"xscvdpuxws", XX2(60,72), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6500{"xsrdpi", XX2(60,73), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6501{"xsrsqrtedp", XX2(60,74), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6502{"xssqrtdp", XX2(60,75), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6503{"xssubdp", XX3(60,40), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6504{"xsmaddmdp", XX3(60,41), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6505{"xscmpodp", XX3(60,43), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
6506{"xscvdpsxws", XX2(60,88), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6507{"xsrdpiz", XX2(60,89), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6508{"xsredp", XX2(60,90), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6509{"xsmuldp", XX3(60,48), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6510{"xsmsubadp", XX3(60,49), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6511{"xxmrglw", XX3(60,50), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6512{"xsrdpip", XX2(60,105), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6513{"xstsqrtdp", XX2(60,106), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
6514{"xsrdpic", XX2(60,107), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6515{"xsdivdp", XX3(60,56), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6516{"xsmsubmdp", XX3(60,57), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6517{"xxpermr", XX3(60,58), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6518{"xscmpexpdp", XX3(60,59), XX3BF_MASK, PPCVSX3, PPCVLE, {BF, XA6, XB6}},
6519{"xsrdpim", XX2(60,121), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6520{"xstdivdp", XX3(60,61), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
6521{"xvaddsp", XX3(60,64), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6522{"xvmaddasp", XX3(60,65), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6523{"xvcmpeqsp", XX3RC(60,67,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6524{"xvcmpeqsp.", XX3RC(60,67,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6525{"xvcvspuxws", XX2(60,136), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6526{"xvrspi", XX2(60,137), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6527{"xvrsqrtesp", XX2(60,138), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6528{"xvsqrtsp", XX2(60,139), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6529{"xvsubsp", XX3(60,72), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6530{"xvmaddmsp", XX3(60,73), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6531{"xvcmpgtsp", XX3RC(60,75,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6532{"xvcmpgtsp.", XX3RC(60,75,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6533{"xvcvspsxws", XX2(60,152), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6534{"xvrspiz", XX2(60,153), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6535{"xvresp", XX2(60,154), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6536{"xvmulsp", XX3(60,80), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6537{"xvmsubasp", XX3(60,81), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6538{"xxspltw", XX2(60,164), XX2UIM_MASK, PPCVSX, PPCVLE, {XT6, XB6, UIM}},
6539{"xxextractuw", XX2(60,165), XX2UIM4_MASK, PPCVSX3, PPCVLE, {XT6, XB6, UIMM4}},
6540{"xvcmpgesp", XX3RC(60,83,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6541{"xvcmpgesp.", XX3RC(60,83,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6542{"xvcvuxwsp", XX2(60,168), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6543{"xvrspip", XX2(60,169), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6544{"xvtsqrtsp", XX2(60,170), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
6545{"xvrspic", XX2(60,171), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6546{"xvdivsp", XX3(60,88), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6547{"xvmsubmsp", XX3(60,89), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6548{"xxspltib", X(60,360), XX1_MASK|3<<19, PPCVSX3, PPCVLE, {XT6, IMM8}},
6549{"xxinsertw", XX2(60,181), XX2UIM4_MASK, PPCVSX3, PPCVLE, {XT6, XB6, UIMM4}},
6550{"xvcvsxwsp", XX2(60,184), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6551{"xvrspim", XX2(60,185), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6552{"xvtdivsp", XX3(60,93), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
6553{"xvadddp", XX3(60,96), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6554{"xvmaddadp", XX3(60,97), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6555{"xvcmpeqdp", XX3RC(60,99,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6556{"xvcmpeqdp.", XX3RC(60,99,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6557{"xvcvdpuxws", XX2(60,200), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6558{"xvrdpi", XX2(60,201), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6559{"xvrsqrtedp", XX2(60,202), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6560{"xvsqrtdp", XX2(60,203), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6561{"xvsubdp", XX3(60,104), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6562{"xvmaddmdp", XX3(60,105), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6563{"xvcmpgtdp", XX3RC(60,107,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6564{"xvcmpgtdp.", XX3RC(60,107,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6565{"xvcvdpsxws", XX2(60,216), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6566{"xvrdpiz", XX2(60,217), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6567{"xvredp", XX2(60,218), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6568{"xvmuldp", XX3(60,112), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6569{"xvmsubadp", XX3(60,113), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6570{"xvcmpgedp", XX3RC(60,115,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6571{"xvcmpgedp.", XX3RC(60,115,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6572{"xvcvuxwdp", XX2(60,232), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6573{"xvrdpip", XX2(60,233), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6574{"xvtsqrtdp", XX2(60,234), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}},
6575{"xvrdpic", XX2(60,235), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6576{"xvdivdp", XX3(60,120), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6577{"xvmsubmdp", XX3(60,121), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6578{"xvcvsxwdp", XX2(60,248), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6579{"xvrdpim", XX2(60,249), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6580{"xvtdivdp", XX3(60,125), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}},
6581{"xsmaxcdp", XX3(60,128), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6582{"xsnmaddasp", XX3(60,129), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6583{"xxland", XX3(60,130), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6584{"xscvdpsp", XX2(60,265), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6585{"xscvdpspn", XX2(60,267), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6586{"xsmincdp", XX3(60,136), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6587{"xsnmaddmsp", XX3(60,137), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6588{"xxlandc", XX3(60,138), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6589{"xsrsp", XX2(60,281), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6590{"xsmaxjdp", XX3(60,144), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6591{"xsnmsubasp", XX3(60,145), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6592{"xxlor", XX3(60,146), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6593{"xscvuxdsp", XX2(60,296), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6594{"xststdcsp", XX2(60,298), XX2BFD_MASK, PPCVSX3, PPCVLE, {BF, XB6, DCMX}},
6595{"xsminjdp", XX3(60,152), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6596{"xsnmsubmsp", XX3(60,153), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6597{"xxlxor", XX3(60,154), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6598{"xscvsxdsp", XX2(60,312), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6599{"xsmaxdp", XX3(60,160), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6600{"xsnmaddadp", XX3(60,161), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6601{"xxlnor", XX3(60,162), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6602{"xscvdpuxds", XX2(60,328), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6603{"xscvspdp", XX2(60,329), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6604{"xscvspdpn", XX2(60,331), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}},
6605{"xsmindp", XX3(60,168), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6606{"xsnmaddmdp", XX3(60,169), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6607{"xxlorc", XX3(60,170), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6608{"xscvdpsxds", XX2(60,344), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6609{"xsabsdp", XX2(60,345), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6610{"xsxexpdp", XX2VA(60,347,0),XX2_MASK|1, PPCVSX3, PPCVLE, {RT, XB6}},
6611{"xsxsigdp", XX2VA(60,347,1),XX2_MASK|1, PPCVSX3, PPCVLE, {RT, XB6}},
6612{"xscvhpdp", XX2VA(60,347,16),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6613{"xscvdphp", XX2VA(60,347,17),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6614{"xscpsgndp", XX3(60,176), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6615{"xsnmsubadp", XX3(60,177), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6616{"xxlnand", XX3(60,178), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6617{"xscvuxddp", XX2(60,360), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6618{"xsnabsdp", XX2(60,361), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6619{"xststdcdp", XX2(60,362), XX2BFD_MASK, PPCVSX3, PPCVLE, {BF, XB6, DCMX}},
6620{"xsnmsubmdp", XX3(60,185), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6621{"xxleqv", XX3(60,186), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}},
6622{"xscvsxddp", XX2(60,376), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6623{"xsnegdp", XX2(60,377), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6624{"xvmaxsp", XX3(60,192), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6625{"xvnmaddasp", XX3(60,193), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6626{"xvcvspuxds", XX2(60,392), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6627{"xvcvdpsp", XX2(60,393), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6628{"xvminsp", XX3(60,200), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6629{"xvnmaddmsp", XX3(60,201), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6630{"xvcvspsxds", XX2(60,408), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6631{"xvabssp", XX2(60,409), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6632{"xvmovsp", XX3(60,208), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6S}},
6633{"xvcpsgnsp", XX3(60,208), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6634{"xvnmsubasp", XX3(60,209), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6635{"xvcvuxdsp", XX2(60,424), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6636{"xvnabssp", XX2(60,425), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6637{"xvtstdcsp", XX2(60,426), XX2DCMXS_MASK, PPCVSX3, PPCVLE, {XT6, XB6, DCMXS}},
6638{"xviexpsp", XX3(60,216), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6639{"xvnmsubmsp", XX3(60,217), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6640{"xvcvsxdsp", XX2(60,440), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6641{"xvnegsp", XX2(60,441), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6642{"xvmaxdp", XX3(60,224), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6643{"xvnmaddadp", XX3(60,225), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6644{"xvcvdpuxds", XX2(60,456), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6645{"xvcvspdp", XX2(60,457), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6646{"xsiexpdp", X(60,918), XX1_MASK, PPCVSX3, PPCVLE, {XT6, RA, RB}},
6647{"xvmindp", XX3(60,232), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6648{"xvnmaddmdp", XX3(60,233), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6649{"xvcvdpsxds", XX2(60,472), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6650{"xvabsdp", XX2(60,473), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6651{"xvxexpdp", XX2VA(60,475,0),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6652{"xvxsigdp", XX2VA(60,475,1),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6653{"xxbrh", XX2VA(60,475,7),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6654{"xvxexpsp", XX2VA(60,475,8),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6655{"xvxsigsp", XX2VA(60,475,9),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6656{"xxbrw", XX2VA(60,475,15),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6657{"xxbrd", XX2VA(60,475,23),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6658{"xvcvhpsp", XX2VA(60,475,24),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6659{"xvcvsphp", XX2VA(60,475,25),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6660{"xxbrq", XX2VA(60,475,31),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}},
6661{"xvmovdp", XX3(60,240), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6S}},
6662{"xvcpsgndp", XX3(60,240), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6663{"xvnmsubadp", XX3(60,241), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6664{"xvcvuxddp", XX2(60,488), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6665{"xvnabsdp", XX2(60,489), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6666{"xvtstdcdp", XX2(60,490), XX2DCMXS_MASK, PPCVSX3, PPCVLE, {XT6, XB6, DCMXS}},
6667{"xviexpdp", XX3(60,248), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}},
6668{"xvnmsubmdp", XX3(60,249), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}},
6669{"xvcvsxddp", XX2(60,504), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6670{"xvnegdp", XX2(60,505), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}},
6671
6672{"psq_st", OP(60), OP_MASK, PPCPS, PPCVLE, {FRS,PSD,RA,PSW,PSQ}},
6673{"stfq", OP(60), OP_MASK, POWER2, PPCVLE, {FRS, D, RA}},
6674
6675{"lxv", DQX(61,1), DQX_MASK, PPCVSX3, PPCVLE, {XTQ6, DQ, RA0}},
6676{"stxv", DQX(61,5), DQX_MASK, PPCVSX3, PPCVLE, {XSQ6, DQ, RA0}},
6677{"stxsd", DSO(61,2), DS_MASK, PPCVSX3, PPCVLE, {VS, DS, RA0}},
6678{"stxssp", DSO(61,3), DS_MASK, PPCVSX3, PPCVLE, {VS, DS, RA0}},
6679{"stfdp", OP(61), OP_MASK, POWER6, POWER7|PPCVLE, {FRSp, DS, RA0}},
6680{"psq_stu", OP(61), OP_MASK, PPCPS, PPCVLE, {FRS,PSD,RA,PSW,PSQ}},
6681{"stfqu", OP(61), OP_MASK, POWER2, PPCVLE, {FRS, D, RA}},
6682
6683{"std", DSO(62,0), DS_MASK, PPC64, PPCVLE, {RS, DS, RA0}},
6684{"stdu", DSO(62,1), DS_MASK, PPC64, PPCVLE, {RS, DS, RAS}},
6685{"stq", DSO(62,2), DS_MASK, POWER4, PPC476|PPCVLE, {RSQ, DS, RA0}},
6686
6687{"fcmpu", X(63,0), XBF_MASK, COM, PPCEFS|PPCVLE, {BF, FRA, FRB}},
6688
6689{"daddq", XRC(63,2,0), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
6690{"daddq.", XRC(63,2,1), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
6691
6692{"dquaq", ZRC(63,3,0), Z2_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp, RMC}},
6693{"dquaq.", ZRC(63,3,1), Z2_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp, RMC}},
6694
6695{"xsaddqp", XRC(63,4,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
6696{"xsaddqpo", XRC(63,4,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
6697
6698{"xsrqpi", ZRC(63,5,0), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
6699{"xsrqpix", ZRC(63,5,1), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
6700
6701{"fcpsgn", XRC(63,8,0), X_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FRT, FRA, FRB}},
6702{"fcpsgn.", XRC(63,8,1), X_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FRT, FRA, FRB}},
6703
6704{"frsp", XRC(63,12,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
6705{"frsp.", XRC(63,12,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
6706
6707{"fctiw", XRC(63,14,0), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
6708{"fcir", XRC(63,14,0), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
6709{"fctiw.", XRC(63,14,1), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
6710{"fcir.", XRC(63,14,1), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
6711
6712{"fctiwz", XRC(63,15,0), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
6713{"fcirz", XRC(63,15,0), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
6714{"fctiwz.", XRC(63,15,1), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}},
6715{"fcirz.", XRC(63,15,1), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}},
6716
6717{"fdiv", A(63,18,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6718{"fd", A(63,18,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
6719{"fdiv.", A(63,18,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6720{"fd.", A(63,18,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
6721
6722{"fsub", A(63,20,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6723{"fs", A(63,20,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
6724{"fsub.", A(63,20,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6725{"fs.", A(63,20,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
6726
6727{"fadd", A(63,21,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6728{"fa", A(63,21,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
6729{"fadd.", A(63,21,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}},
6730{"fa.", A(63,21,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}},
6731
6732{"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
6733{"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}},
6734
6735{"fsel", A(63,23,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6736{"fsel.", A(63,23,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6737
6738{"fre", A(63,24,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
6739{"fre", A(63,24,0), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
6740{"fre.", A(63,24,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
6741{"fre.", A(63,24,1), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}},
1ed8e1e4 6742
14b57c7c
AM
6743{"fmul", A(63,25,0), AFRB_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
6744{"fm", A(63,25,0), AFRB_MASK, PWRCOM, PPCVLE|PPCVLE, {FRT, FRA, FRC}},
6745{"fmul.", A(63,25,1), AFRB_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC}},
6746{"fm.", A(63,25,1), AFRB_MASK, PWRCOM, PPCVLE|PPCVLE, {FRT, FRA, FRC}},
252b5132 6747
14b57c7c
AM
6748{"frsqrte", A(63,26,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
6749{"frsqrte", A(63,26,0), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
6750{"frsqrte.", A(63,26,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}},
6751{"frsqrte.", A(63,26,1), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}},
252b5132 6752
14b57c7c
AM
6753{"fmsub", A(63,28,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6754{"fms", A(63,28,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
6755{"fmsub.", A(63,28,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6756{"fms.", A(63,28,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 6757
14b57c7c
AM
6758{"fmadd", A(63,29,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6759{"fma", A(63,29,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
6760{"fmadd.", A(63,29,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6761{"fma.", A(63,29,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 6762
14b57c7c
AM
6763{"fnmsub", A(63,30,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6764{"fnms", A(63,30,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
6765{"fnmsub.", A(63,30,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6766{"fnms.", A(63,30,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 6767
14b57c7c
AM
6768{"fnmadd", A(63,31,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6769{"fnma", A(63,31,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
6770{"fnmadd.", A(63,31,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}},
6771{"fnma.", A(63,31,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}},
252b5132 6772
14b57c7c 6773{"fcmpo", X(63,32), XBF_MASK, COM, PPCEFS|PPCVLE, {BF, FRA, FRB}},
252b5132 6774
14b57c7c
AM
6775{"dmulq", XRC(63,34,0), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
6776{"dmulq.", XRC(63,34,1), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
702f0fb4 6777
14b57c7c
AM
6778{"drrndq", ZRC(63,35,0), Z2_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp, RMC}},
6779{"drrndq.", ZRC(63,35,1), Z2_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp, RMC}},
702f0fb4 6780
14b57c7c
AM
6781{"xsmulqp", XRC(63,36,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
6782{"xsmulqpo", XRC(63,36,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 6783
14b57c7c 6784{"xsrqpxp", Z(63,37), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}},
a680de9a 6785
14b57c7c
AM
6786{"mtfsb1", XRC(63,38,0), XRARB_MASK, COM, PPCVLE, {BT}},
6787{"mtfsb1.", XRC(63,38,1), XRARB_MASK, COM, PPCVLE, {BT}},
252b5132 6788
14b57c7c
AM
6789{"fneg", XRC(63,40,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
6790{"fneg.", XRC(63,40,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
252b5132 6791
14b57c7c 6792{"mcrfs", X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, PPCVLE, {BF, BFA}},
252b5132 6793
14b57c7c
AM
6794{"dscliq", ZRC(63,66,0), Z_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
6795{"dscliq.", ZRC(63,66,1), Z_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
702f0fb4 6796
14b57c7c
AM
6797{"dquaiq", ZRC(63,67,0), Z2_MASK, POWER6, PPCVLE, {TE, FRTp, FRBp, RMC}},
6798{"dquaiq.", ZRC(63,67,1), Z2_MASK, POWER6, PPCVLE, {TE, FRTp, FRBp, RMC}},
702f0fb4 6799
14b57c7c
AM
6800{"mtfsb0", XRC(63,70,0), XRARB_MASK, COM, PPCVLE, {BT}},
6801{"mtfsb0.", XRC(63,70,1), XRARB_MASK, COM, PPCVLE, {BT}},
252b5132 6802
14b57c7c
AM
6803{"fmr", XRC(63,72,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
6804{"fmr.", XRC(63,72,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
252b5132 6805
14b57c7c
AM
6806{"dscriq", ZRC(63,98,0), Z_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
6807{"dscriq.", ZRC(63,98,1), Z_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}},
702f0fb4 6808
14b57c7c
AM
6809{"drintxq", ZRC(63,99,0), Z2_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
6810{"drintxq.", ZRC(63,99,1), Z2_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
702f0fb4 6811
14b57c7c 6812{"xscpsgnqp", X(63,100), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 6813
14b57c7c 6814{"ftdiv", X(63,128), XBF_MASK, POWER7, PPCVLE, {BF, FRA, FRB}},
066be9f7 6815
14b57c7c 6816{"dcmpoq", X(63,130), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
702f0fb4 6817
14b57c7c 6818{"xscmpoqp", X(63,132), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
a680de9a 6819
14b57c7c
AM
6820{"mtfsfi", XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
6821{"mtfsfi", XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
6822{"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
6823{"mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
252b5132 6824
14b57c7c
AM
6825{"fnabs", XRC(63,136,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
6826{"fnabs.", XRC(63,136,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
252b5132 6827
14b57c7c
AM
6828{"fctiwu", XRC(63,142,0), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
6829{"fctiwu.", XRC(63,142,1), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
6830{"fctiwuz", XRC(63,143,0), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
6831{"fctiwuz.", XRC(63,143,1), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}},
066be9f7 6832
14b57c7c 6833{"ftsqrt", X(63,160), XBF_MASK|FRA_MASK, POWER7, PPCVLE, {BF, FRB}},
066be9f7 6834
14b57c7c 6835{"dtstexq", X(63,162), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
a680de9a 6836
14b57c7c 6837{"xscmpexpqp", X(63,164), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
a680de9a 6838
14b57c7c
AM
6839{"dtstdcq", Z(63,194), Z_MASK, POWER6, PPCVLE, {BF, FRAp, DCM}},
6840{"dtstdgq", Z(63,226), Z_MASK, POWER6, PPCVLE, {BF, FRAp, DGM}},
702f0fb4 6841
14b57c7c
AM
6842{"drintnq", ZRC(63,227,0), Z2_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
6843{"drintnq.", ZRC(63,227,1), Z2_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}},
702f0fb4 6844
14b57c7c
AM
6845{"dctqpq", XRC(63,258,0), X_MASK, POWER6, PPCVLE, {FRTp, FRB}},
6846{"dctqpq.", XRC(63,258,1), X_MASK, POWER6, PPCVLE, {FRTp, FRB}},
702f0fb4 6847
14b57c7c
AM
6848{"fabs", XRC(63,264,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
6849{"fabs.", XRC(63,264,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}},
252b5132 6850
14b57c7c
AM
6851{"dctfixq", XRC(63,290,0), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
6852{"dctfixq.", XRC(63,290,1), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
702f0fb4 6853
14b57c7c
AM
6854{"ddedpdq", XRC(63,322,0), X_MASK, POWER6, PPCVLE, {SP, FRTp, FRBp}},
6855{"ddedpdq.", XRC(63,322,1), X_MASK, POWER6, PPCVLE, {SP, FRTp, FRBp}},
702f0fb4 6856
14b57c7c
AM
6857{"dxexq", XRC(63,354,0), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
6858{"dxexq.", XRC(63,354,1), X_MASK, POWER6, PPCVLE, {FRT, FRBp}},
702f0fb4 6859
14b57c7c
AM
6860{"xsmaddqp", XRC(63,388,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
6861{"xsmaddqpo", XRC(63,388,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 6862
14b57c7c
AM
6863{"frin", XRC(63,392,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
6864{"frin.", XRC(63,392,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
a680de9a 6865
14b57c7c
AM
6866{"xsmsubqp", XRC(63,420,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
6867{"xsmsubqpo", XRC(63,420,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 6868
14b57c7c
AM
6869{"friz", XRC(63,424,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
6870{"friz.", XRC(63,424,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
a680de9a 6871
14b57c7c
AM
6872{"xsnmaddqp", XRC(63,452,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
6873{"xsnmaddqpo", XRC(63,452,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 6874
14b57c7c
AM
6875{"frip", XRC(63,456,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
6876{"frip.", XRC(63,456,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
a680de9a 6877
14b57c7c
AM
6878{"xsnmsubqp", XRC(63,484,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
6879{"xsnmsubqpo", XRC(63,484,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 6880
14b57c7c
AM
6881{"frim", XRC(63,488,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
6882{"frim.", XRC(63,488,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}},
ce7a772b 6883
14b57c7c
AM
6884{"dsubq", XRC(63,514,0), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
6885{"dsubq.", XRC(63,514,1), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
702f0fb4 6886
14b57c7c
AM
6887{"xssubqp", XRC(63,516,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
6888{"xssubqpo", XRC(63,516,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 6889
14b57c7c
AM
6890{"ddivq", XRC(63,546,0), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
6891{"ddivq.", XRC(63,546,1), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}},
702f0fb4 6892
14b57c7c
AM
6893{"xsdivqp", XRC(63,548,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
6894{"xsdivqpo", XRC(63,548,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 6895
14b57c7c
AM
6896{"mffs", XRC(63,583,0), XRARB_MASK, COM, PPCEFS|PPCVLE, {FRT}},
6897{"mffs.", XRC(63,583,1), XRARB_MASK, COM, PPCEFS|PPCVLE, {FRT}},
252b5132 6898
6fd3a02d
PB
6899{"mffsce", XMMF(63,583,0,1), XMMF_MASK|RB_MASK, POWER9, PPCVLE, {FRT}},
6900{"mffscdrn", XMMF(63,583,2,4), XMMF_MASK, POWER9, PPCVLE, {FRT, FRB}},
6901{"mffscdrni", XMMF(63,583,2,5), XMMF_MASK|(3<<14), POWER9, PPCVLE, {FRT, DRM}},
6902{"mffscrn", XMMF(63,583,2,6), XMMF_MASK, POWER9, PPCVLE, {FRT, FRB}},
6903{"mffscrni", XMMF(63,583,2,7), XMMF_MASK|(7<<13), POWER9, PPCVLE, {FRT, RM}},
6904{"mffsl", XMMF(63,583,3,0), XMMF_MASK|RB_MASK, POWER9, PPCVLE, {FRT}},
6905
14b57c7c 6906{"dcmpuq", X(63,642), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}},
702f0fb4 6907
14b57c7c 6908{"xscmpuqp", X(63,644), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}},
a680de9a 6909
14b57c7c
AM
6910{"dtstsfq", X(63,674), X_MASK, POWER6, PPCVLE, {BF, FRA, FRBp}},
6911{"dtstsfiq", X(63,675), X_MASK|1<<22,POWER9, PPCVLE, {BF, UIM6, FRBp}},
a680de9a 6912
14b57c7c 6913{"xststdcqp", X(63,708), X_MASK, PPCVSX3, PPCVLE, {BF, VB, DCMX}},
702f0fb4 6914
14b57c7c
AM
6915{"mtfsf", XFL(63,711,0), XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FLM, FRB, XFL_L, W}},
6916{"mtfsf", XFL(63,711,0), XFL_MASK, COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
6917{"mtfsf.", XFL(63,711,1), XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FLM, FRB, XFL_L, W}},
6918{"mtfsf.", XFL(63,711,1), XFL_MASK, COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
252b5132 6919
14b57c7c
AM
6920{"drdpq", XRC(63,770,0), X_MASK, POWER6, PPCVLE, {FRTp, FRBp}},
6921{"drdpq.", XRC(63,770,1), X_MASK, POWER6, PPCVLE, {FRTp, FRBp}},
702f0fb4 6922
14b57c7c
AM
6923{"dcffixq", XRC(63,802,0), X_MASK, POWER6, PPCVLE, {FRTp, FRB}},
6924{"dcffixq.", XRC(63,802,1), X_MASK, POWER6, PPCVLE, {FRTp, FRB}},
702f0fb4 6925
14b57c7c
AM
6926{"xsabsqp", XVA(63,804,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
6927{"xsxexpqp", XVA(63,804,2), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
6928{"xsnabsqp", XVA(63,804,8), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
6929{"xsnegqp", XVA(63,804,16), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
6930{"xsxsigqp", XVA(63,804,18), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
6931{"xssqrtqp", XVARC(63,804,27,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
6932{"xssqrtqpo", XVARC(63,804,27,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
a680de9a 6933
14b57c7c
AM
6934{"fctid", XRC(63,814,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
6935{"fctid", XRC(63,814,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
6936{"fctid.", XRC(63,814,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
6937{"fctid.", XRC(63,814,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
252b5132 6938
14b57c7c
AM
6939{"fctidz", XRC(63,815,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
6940{"fctidz", XRC(63,815,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
6941{"fctidz.", XRC(63,815,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
6942{"fctidz.", XRC(63,815,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
252b5132 6943
14b57c7c
AM
6944{"denbcdq", XRC(63,834,0), X_MASK, POWER6, PPCVLE, {S, FRTp, FRBp}},
6945{"denbcdq.", XRC(63,834,1), X_MASK, POWER6, PPCVLE, {S, FRTp, FRBp}},
702f0fb4 6946
14b57c7c
AM
6947{"xscvqpuwz", XVA(63,836,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
6948{"xscvudqp", XVA(63,836,2), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
6949{"xscvqpswz", XVA(63,836,9), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
6950{"xscvsdqp", XVA(63,836,10), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
6951{"xscvqpudz", XVA(63,836,17), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
6952{"xscvqpdp", XVARC(63,836,20,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
6953{"xscvqpdpo", XVARC(63,836,20,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
6954{"xscvdpqp", XVA(63,836,22), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
6955{"xscvqpsdz", XVA(63,836,25), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}},
a680de9a 6956
14b57c7c 6957{"fmrgow", X(63,838), X_MASK, PPCVSX2, PPCVLE, {FRT, FRA, FRB}},
c0637f3a 6958
14b57c7c
AM
6959{"fcfid", XRC(63,846,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
6960{"fcfid", XRC(63,846,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
6961{"fcfid.", XRC(63,846,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}},
6962{"fcfid.", XRC(63,846,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}},
252b5132 6963
14b57c7c
AM
6964{"diexq", XRC(63,866,0), X_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp}},
6965{"diexq.", XRC(63,866,1), X_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp}},
702f0fb4 6966
14b57c7c 6967{"xsiexpqp", X(63,868), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}},
a680de9a 6968
14b57c7c
AM
6969{"fctidu", XRC(63,942,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
6970{"fctidu.", XRC(63,942,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
066be9f7 6971
14b57c7c
AM
6972{"fctiduz", XRC(63,943,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
6973{"fctiduz.", XRC(63,943,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
066be9f7 6974
14b57c7c 6975{"fmrgew", X(63,966), X_MASK, PPCVSX2, PPCVLE, {FRT, FRA, FRB}},
c0637f3a 6976
14b57c7c
AM
6977{"fcfidu", XRC(63,974,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
6978{"fcfidu.", XRC(63,974,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}},
252b5132
RH
6979};
6980
6981const int powerpc_num_opcodes =
6982 sizeof (powerpc_opcodes) / sizeof (powerpc_opcodes[0]);
6983\f
b9c361e0
JL
6984/* The VLE opcode table.
6985
6986 The format of this opcode table is the same as the main opcode table. */
6987
6988const struct powerpc_opcode vle_opcodes[] = {
14b57c7c
AM
6989{"se_illegal", C(0), C_MASK, PPCVLE, 0, {}},
6990{"se_isync", C(1), C_MASK, PPCVLE, 0, {}},
6991{"se_sc", C(2), C_MASK, PPCVLE, 0, {}},
6992{"se_blr", C_LK(2,0), C_LK_MASK, PPCVLE, 0, {}},
6993{"se_blrl", C_LK(2,1), C_LK_MASK, PPCVLE, 0, {}},
6994{"se_bctr", C_LK(3,0), C_LK_MASK, PPCVLE, 0, {}},
6995{"se_bctrl", C_LK(3,1), C_LK_MASK, PPCVLE, 0, {}},
6996{"se_rfi", C(8), C_MASK, PPCVLE, 0, {}},
6997{"se_rfci", C(9), C_MASK, PPCVLE, 0, {}},
6998{"se_rfdi", C(10), C_MASK, PPCVLE, 0, {}},
6999{"se_rfmci", C(11), C_MASK, PPCRFMCI|PPCVLE, 0, {}},
7000{"se_not", SE_R(0,2), SE_R_MASK, PPCVLE, 0, {RX}},
7001{"se_neg", SE_R(0,3), SE_R_MASK, PPCVLE, 0, {RX}},
7002{"se_mflr", SE_R(0,8), SE_R_MASK, PPCVLE, 0, {RX}},
7003{"se_mtlr", SE_R(0,9), SE_R_MASK, PPCVLE, 0, {RX}},
7004{"se_mfctr", SE_R(0,10), SE_R_MASK, PPCVLE, 0, {RX}},
7005{"se_mtctr", SE_R(0,11), SE_R_MASK, PPCVLE, 0, {RX}},
7006{"se_extzb", SE_R(0,12), SE_R_MASK, PPCVLE, 0, {RX}},
7007{"se_extsb", SE_R(0,13), SE_R_MASK, PPCVLE, 0, {RX}},
7008{"se_extzh", SE_R(0,14), SE_R_MASK, PPCVLE, 0, {RX}},
7009{"se_extsh", SE_R(0,15), SE_R_MASK, PPCVLE, 0, {RX}},
7010{"se_mr", SE_RR(0,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7011{"se_mtar", SE_RR(0,2), SE_RR_MASK, PPCVLE, 0, {ARX, RY}},
7012{"se_mfar", SE_RR(0,3), SE_RR_MASK, PPCVLE, 0, {RX, ARY}},
7013{"se_add", SE_RR(1,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7014{"se_mullw", SE_RR(1,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7015{"se_sub", SE_RR(1,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7016{"se_subf", SE_RR(1,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7017{"se_cmp", SE_RR(3,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7018{"se_cmpl", SE_RR(3,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7019{"se_cmph", SE_RR(3,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7020{"se_cmphl", SE_RR(3,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7021
7022{"e_cmpi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
dfdaec14 7023{"e_cmpwi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
14b57c7c 7024{"e_cmpli", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
dfdaec14 7025{"e_cmplwi", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}},
14b57c7c
AM
7026{"e_addi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
7027{"e_subi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}},
7028{"e_addi.", SCI8(6,17), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
7029{"e_addic", SCI8(6,18), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
7030{"e_subic", SCI8(6,18), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}},
7031{"e_addic.", SCI8(6,19), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
7032{"e_subic.", SCI8(6,19), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}},
7033{"e_mulli", SCI8(6,20), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
7034{"e_subfic", SCI8(6,22), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
7035{"e_subfic.", SCI8(6,23), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}},
7036{"e_andi", SCI8(6,24), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
7037{"e_andi.", SCI8(6,25), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
7038{"e_nop", SCI8(6,26), 0xffffffff, PPCVLE, 0, {0}},
7039{"e_ori", SCI8(6,26), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
7040{"e_ori.", SCI8(6,27), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
7041{"e_xori", SCI8(6,28), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
7042{"e_xori.", SCI8(6,29), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}},
7043{"e_lbzu", OPVUP(6,0), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
7044{"e_lhau", OPVUP(6,3), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
7045{"e_lhzu", OPVUP(6,1), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
7046{"e_lmw", OPVUP(6,8), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
7047{"e_lwzu", OPVUP(6,2), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
7048{"e_stbu", OPVUP(6,4), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
7049{"e_sthu", OPVUP(6,5), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
7050{"e_stwu", OPVUP(6,6), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
7051{"e_stmw", OPVUP(6,9), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}},
dfdaec14
AJ
7052{"e_ldmvgprw", OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
7053{"e_stmvgprw", OPVUPRT(6,17,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
7054{"e_ldmvsprw", OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
7055{"e_stmvsprw", OPVUPRT(6,17,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
7056{"e_ldmvsrrw", OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
7057{"e_stmvsrrw", OPVUPRT(6,17,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
7058{"e_ldmvcsrrw", OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
7059{"e_stmvcsrrw", OPVUPRT(6,17,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
7060{"e_ldmvdsrrw", OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
7061{"e_stmvdsrrw", OPVUPRT(6,17,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}},
14b57c7c
AM
7062{"e_add16i", OP(7), OP_MASK, PPCVLE, 0, {RT, RA, SI}},
7063{"e_la", OP(7), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
7064{"e_sub16i", OP(7), OP_MASK, PPCVLE, 0, {RT, RA, NSI}},
7065
7066{"se_addi", SE_IM5(8,0), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
7067{"se_cmpli", SE_IM5(8,1), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
7068{"se_subi", SE_IM5(9,0), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
7069{"se_subi.", SE_IM5(9,1), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}},
7070{"se_cmpi", SE_IM5(10,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
7071{"se_bmaski", SE_IM5(11,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
7072{"se_andi", SE_IM5(11,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
7073
7074{"e_lbz", OP(12), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
7075{"e_stb", OP(13), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
7076{"e_lha", OP(14), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
7077
7078{"se_srw", SE_RR(16,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7079{"se_sraw", SE_RR(16,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7080{"se_slw", SE_RR(16,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7081{"se_nop", SE_RR(17,0), 0xffff, PPCVLE, 0, {0}},
7082{"se_or", SE_RR(17,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7083{"se_andc", SE_RR(17,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7084{"se_and", SE_RR(17,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7085{"se_and.", SE_RR(17,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}},
7086{"se_li", IM7(9), IM7_MASK, PPCVLE, 0, {RX, UI7}},
7087
7088{"e_lwz", OP(20), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
7089{"e_stw", OP(21), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
7090{"e_lhz", OP(22), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
7091{"e_sth", OP(23), OP_MASK, PPCVLE, 0, {RT, D, RA0}},
7092
7093{"se_bclri", SE_IM5(24,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
7094{"se_bgeni", SE_IM5(24,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
7095{"se_bseti", SE_IM5(25,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
7096{"se_btsti", SE_IM5(25,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
7097{"se_srwi", SE_IM5(26,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
7098{"se_srawi", SE_IM5(26,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
7099{"se_slwi", SE_IM5(27,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}},
7100
7101{"e_lis", I16L(28,28), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
7102{"e_and2is.", I16L(28,29), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
7103{"e_or2is", I16L(28,26), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
7104{"e_and2i.", I16L(28,25), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
7105{"e_or2i", I16L(28,24), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}},
7106{"e_cmphl16i", IA16(28,23), IA16_MASK, PPCVLE, 0, {RA, VLEUIMM}},
7107{"e_cmph16i", IA16(28,22), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}},
7108{"e_cmpl16i", I16A(28,21), I16A_MASK, PPCVLE, 0, {RA, VLEUIMM}},
14b57c7c
AM
7109{"e_mull2i", I16A(28,20), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
7110{"e_cmp16i", IA16(28,19), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}},
14b57c7c
AM
7111{"e_sub2is", I16A(28,18), I16A_MASK, PPCVLE, 0, {RA, VLENSIMM}},
7112{"e_add2is", I16A(28,18), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
7113{"e_sub2i.", I16A(28,17), I16A_MASK, PPCVLE, 0, {RA, VLENSIMM}},
7114{"e_add2i.", I16A(28,17), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}},
7115{"e_li", LI20(28,0), LI20_MASK, PPCVLE, 0, {RT, IMM20}},
7116{"e_rlwimi", M(29,0), M_MASK, PPCVLE, 0, {RA, RS, SH, MB, ME}},
7117{"e_rlwinm", M(29,1), M_MASK, PPCVLE, 0, {RA, RT, SH, MBE, ME}},
7118{"e_b", BD24(30,0,0), BD24_MASK, PPCVLE, 0, {B24}},
7119{"e_bl", BD24(30,0,1), BD24_MASK, PPCVLE, 0, {B24}},
7120{"e_bdnz", EBD15(30,8,BO32DNZ,0), EBD15_MASK, PPCVLE, 0, {B15}},
7121{"e_bdnzl", EBD15(30,8,BO32DNZ,1), EBD15_MASK, PPCVLE, 0, {B15}},
7122{"e_bdz", EBD15(30,8,BO32DZ,0), EBD15_MASK, PPCVLE, 0, {B15}},
7123{"e_bdzl", EBD15(30,8,BO32DZ,1), EBD15_MASK, PPCVLE, 0, {B15}},
7124{"e_bge", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7125{"e_bgel", EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7126{"e_bnl", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7127{"e_bnll", EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7128{"e_blt", EBD15BI(30,8,BO32T,CBLT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7129{"e_bltl", EBD15BI(30,8,BO32T,CBLT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7130{"e_bgt", EBD15BI(30,8,BO32T,CBGT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7131{"e_bgtl", EBD15BI(30,8,BO32T,CBGT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7132{"e_ble", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7133{"e_blel", EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7134{"e_bng", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7135{"e_bngl", EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7136{"e_bne", EBD15BI(30,8,BO32F,CBEQ,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7137{"e_bnel", EBD15BI(30,8,BO32F,CBEQ,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7138{"e_beq", EBD15BI(30,8,BO32T,CBEQ,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7139{"e_beql", EBD15BI(30,8,BO32T,CBEQ,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7140{"e_bso", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7141{"e_bsol", EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7142{"e_bun", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7143{"e_bunl", EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7144{"e_bns", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7145{"e_bnsl", EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7146{"e_bnu", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7147{"e_bnul", EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}},
7148{"e_bc", BD15(30,8,0), BD15_MASK, PPCVLE, 0, {BO32, BI32, B15}},
7149{"e_bcl", BD15(30,8,1), BD15_MASK, PPCVLE, 0, {BO32, BI32, B15}},
7150
7151{"e_bf", EBD15(30,8,BO32F,0), EBD15_MASK, PPCVLE, 0, {BI32,B15}},
7152{"e_bfl", EBD15(30,8,BO32F,1), EBD15_MASK, PPCVLE, 0, {BI32,B15}},
7153{"e_bt", EBD15(30,8,BO32T,0), EBD15_MASK, PPCVLE, 0, {BI32,B15}},
7154{"e_btl", EBD15(30,8,BO32T,1), EBD15_MASK, PPCVLE, 0, {BI32,B15}},
7155
7156{"e_cmph", X(31,14), X_MASK, PPCVLE, 0, {CRD, RA, RB}},
7157{"e_cmphl", X(31,46), X_MASK, PPCVLE, 0, {CRD, RA, RB}},
7158{"e_crandc", XL(31,129), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
7159{"e_crnand", XL(31,225), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
7160{"e_crnot", XL(31,33), XL_MASK, PPCVLE, 0, {BT, BA, BBA}},
7161{"e_crnor", XL(31,33), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
7162{"e_crclr", XL(31,193), XL_MASK, PPCVLE, 0, {BT, BAT, BBA}},
7163{"e_crxor", XL(31,193), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
7164{"e_mcrf", XL(31,16), XL_MASK, PPCVLE, 0, {CRD, CR}},
7165{"e_slwi", EX(31,112), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
7166{"e_slwi.", EX(31,113), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
7167
7168{"e_crand", XL(31,257), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
7169
7170{"e_rlw", EX(31,560), EX_MASK, PPCVLE, 0, {RA, RS, RB}},
7171{"e_rlw.", EX(31,561), EX_MASK, PPCVLE, 0, {RA, RS, RB}},
7172
7173{"e_crset", XL(31,289), XL_MASK, PPCVLE, 0, {BT, BAT, BBA}},
7174{"e_creqv", XL(31,289), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
7175
7176{"e_rlwi", EX(31,624), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
7177{"e_rlwi.", EX(31,625), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
7178
7179{"e_crorc", XL(31,417), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
7180
7181{"e_crmove", XL(31,449), XL_MASK, PPCVLE, 0, {BT, BA, BBA}},
7182{"e_cror", XL(31,449), XL_MASK, PPCVLE, 0, {BT, BA, BB}},
7183
7184{"mtmas1", XSPR(31,467,625), XSPR_MASK, PPCVLE, 0, {RS}},
7185
7186{"e_srwi", EX(31,1136), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
7187{"e_srwi.", EX(31,1137), EX_MASK, PPCVLE, 0, {RA, RS, SH}},
7188
7189{"se_lbz", SD4(8), SD4_MASK, PPCVLE, 0, {RZ, SE_SD, RX}},
7190
7191{"se_stb", SD4(9), SD4_MASK, PPCVLE, 0, {RZ, SE_SD, RX}},
7192
7193{"se_lhz", SD4(10), SD4_MASK, PPCVLE, 0, {RZ, SE_SDH, RX}},
7194
7195{"se_sth", SD4(11), SD4_MASK, PPCVLE, 0, {RZ, SE_SDH, RX}},
7196
7197{"se_lwz", SD4(12), SD4_MASK, PPCVLE, 0, {RZ, SE_SDW, RX}},
7198
7199{"se_stw", SD4(13), SD4_MASK, PPCVLE, 0, {RZ, SE_SDW, RX}},
7200
7201{"se_bge", EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, 0, {B8}},
7202{"se_bnl", EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, 0, {B8}},
7203{"se_ble", EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, 0, {B8}},
7204{"se_bng", EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, 0, {B8}},
7205{"se_bne", EBD8IO(28,0,2), EBD8IO3_MASK, PPCVLE, 0, {B8}},
7206{"se_bns", EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, 0, {B8}},
7207{"se_bnu", EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, 0, {B8}},
7208{"se_bf", EBD8IO(28,0,0), EBD8IO2_MASK, PPCVLE, 0, {BI16, B8}},
7209{"se_blt", EBD8IO(28,1,0), EBD8IO3_MASK, PPCVLE, 0, {B8}},
7210{"se_bgt", EBD8IO(28,1,1), EBD8IO3_MASK, PPCVLE, 0, {B8}},
7211{"se_beq", EBD8IO(28,1,2), EBD8IO3_MASK, PPCVLE, 0, {B8}},
7212{"se_bso", EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, 0, {B8}},
7213{"se_bun", EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, 0, {B8}},
7214{"se_bt", EBD8IO(28,1,0), EBD8IO2_MASK, PPCVLE, 0, {BI16, B8}},
7215{"se_bc", BD8IO(28), BD8IO_MASK, PPCVLE, 0, {BO16, BI16, B8}},
7216{"se_b", BD8(58,0,0), BD8_MASK, PPCVLE, 0, {B8}},
7217{"se_bl", BD8(58,0,1), BD8_MASK, PPCVLE, 0, {B8}},
b9c361e0
JL
7218};
7219
7220const int vle_num_opcodes =
7221 sizeof (vle_opcodes) / sizeof (vle_opcodes[0]);
7222\f
252b5132
RH
7223/* The macro table. This is only used by the assembler. */
7224
7225/* The expressions of the form (-x ! 31) & (x | 31) have the value 0
7226 when x=0; 32-x when x is between 1 and 31; are negative if x is
7227 negative; and are 32 or more otherwise. This is what you want
7228 when, for instance, you are emulating a right shift by a
7229 rotate-left-and-mask, because the underlying instructions support
7230 shifts of size 0 but not shifts of size 32. By comparison, when
7231 extracting x bits from some word you want to use just 32-x, because
7232 the underlying instructions don't support extracting 0 bits but do
7233 support extracting the whole word (32 bits in this case). */
7234
7235const struct powerpc_macro powerpc_macros[] = {
de866fcc
AM
7236{"extldi", 4, PPC64, "rldicr %0,%1,%3,(%2)-1"},
7237{"extldi.", 4, PPC64, "rldicr. %0,%1,%3,(%2)-1"},
bdc7fcfe
AM
7238{"extrdi", 4, PPC64, "rldicl %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"},
7239{"extrdi.", 4, PPC64, "rldicl. %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"},
de866fcc
AM
7240{"insrdi", 4, PPC64, "rldimi %0,%1,64-((%2)+(%3)),%3"},
7241{"insrdi.", 4, PPC64, "rldimi. %0,%1,64-((%2)+(%3)),%3"},
7242{"rotrdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),0"},
7243{"rotrdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),0"},
7244{"sldi", 3, PPC64, "rldicr %0,%1,%2,63-(%2)"},
7245{"sldi.", 3, PPC64, "rldicr. %0,%1,%2,63-(%2)"},
7246{"srdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),%2"},
7247{"srdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),%2"},
7248{"clrrdi", 3, PPC64, "rldicr %0,%1,0,63-(%2)"},
7249{"clrrdi.", 3, PPC64, "rldicr. %0,%1,0,63-(%2)"},
7250{"clrlsldi", 4, PPC64, "rldic %0,%1,%3,(%2)-(%3)"},
14b57c7c 7251{"clrlsldi.",4, PPC64, "rldic. %0,%1,%3,(%2)-(%3)"},
de866fcc
AM
7252
7253{"extlwi", 4, PPCCOM, "rlwinm %0,%1,%3,0,(%2)-1"},
7254{"extlwi.", 4, PPCCOM, "rlwinm. %0,%1,%3,0,(%2)-1"},
7255{"extrwi", 4, PPCCOM, "rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
7256{"extrwi.", 4, PPCCOM, "rlwinm. %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
7257{"inslwi", 4, PPCCOM, "rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
7258{"inslwi.", 4, PPCCOM, "rlwimi. %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
7259{"insrwi", 4, PPCCOM, "rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
7260{"insrwi.", 4, PPCCOM, "rlwimi. %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
7261{"rotrwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
7262{"rotrwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),0,31"},
7263{"slwi", 3, PPCCOM, "rlwinm %0,%1,%2,0,31-(%2)"},
7264{"sli", 3, PWRCOM, "rlinm %0,%1,%2,0,31-(%2)"},
7265{"slwi.", 3, PPCCOM, "rlwinm. %0,%1,%2,0,31-(%2)"},
7266{"sli.", 3, PWRCOM, "rlinm. %0,%1,%2,0,31-(%2)"},
7267{"srwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
7268{"sri", 3, PWRCOM, "rlinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
7269{"srwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
7270{"sri.", 3, PWRCOM, "rlinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
7271{"clrrwi", 3, PPCCOM, "rlwinm %0,%1,0,0,31-(%2)"},
7272{"clrrwi.", 3, PPCCOM, "rlwinm. %0,%1,0,0,31-(%2)"},
7273{"clrlslwi", 4, PPCCOM, "rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
7274{"clrlslwi.",4, PPCCOM, "rlwinm. %0,%1,%3,(%2)-(%3),31-(%3)"},
a4ebc835
AM
7275
7276{"e_extlwi", 4, PPCVLE, "e_rlwinm %0,%1,%3,0,(%2)-1"},
7277{"e_extrwi", 4, PPCVLE, "e_rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
7278{"e_inslwi", 4, PPCVLE, "e_rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
7279{"e_insrwi", 4, PPCVLE, "e_rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
7280{"e_rotlwi", 3, PPCVLE, "e_rlwinm %0,%1,%2,0,31"},
7281{"e_rotrwi", 3, PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
7282{"e_slwi", 3, PPCVLE, "e_rlwinm %0,%1,%2,0,31-(%2)"},
7283{"e_srwi", 3, PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
7284{"e_clrlwi", 3, PPCVLE, "e_rlwinm %0,%1,0,%2,31"},
7285{"e_clrrwi", 3, PPCVLE, "e_rlwinm %0,%1,0,0,31-(%2)"},
7286{"e_clrlslwi",4, PPCVLE, "e_rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
252b5132
RH
7287};
7288
7289const int powerpc_num_macros =
7290 sizeof (powerpc_macros) / sizeof (powerpc_macros[0]);
This page took 1.529949 seconds and 4 git commands to generate.