162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later
262306a36Sopenharmony_ci/* ppc-opc.c -- PowerPC opcode list
362306a36Sopenharmony_ci   Copyright (C) 1994-2016 Free Software Foundation, Inc.
462306a36Sopenharmony_ci   Written by Ian Lance Taylor, Cygnus Support
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci   This file is part of GDB, GAS, and the GNU binutils.
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#include <linux/stddef.h>
1162306a36Sopenharmony_ci#include <linux/kernel.h>
1262306a36Sopenharmony_ci#include <linux/bug.h>
1362306a36Sopenharmony_ci#include "nonstdio.h"
1462306a36Sopenharmony_ci#include "ppc.h"
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#define ATTRIBUTE_UNUSED
1762306a36Sopenharmony_ci#define _(x)	x
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci/* This file holds the PowerPC opcode table.  The opcode table
2062306a36Sopenharmony_ci   includes almost all of the extended instruction mnemonics.  This
2162306a36Sopenharmony_ci   permits the disassembler to use them, and simplifies the assembler
2262306a36Sopenharmony_ci   logic, at the cost of increasing the table size.  The table is
2362306a36Sopenharmony_ci   strictly constant data, so the compiler should be able to put it in
2462306a36Sopenharmony_ci   the .text section.
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci   This file also holds the operand table.  All knowledge about
2762306a36Sopenharmony_ci   inserting operands into instructions and vice-versa is kept in this
2862306a36Sopenharmony_ci   file.  */
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci/* Local insertion and extraction functions.  */
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_cistatic unsigned long insert_arx (unsigned long, long, ppc_cpu_t, const char **);
3362306a36Sopenharmony_cistatic long extract_arx (unsigned long, ppc_cpu_t, int *);
3462306a36Sopenharmony_cistatic unsigned long insert_ary (unsigned long, long, ppc_cpu_t, const char **);
3562306a36Sopenharmony_cistatic long extract_ary (unsigned long, ppc_cpu_t, int *);
3662306a36Sopenharmony_cistatic unsigned long insert_bat (unsigned long, long, ppc_cpu_t, const char **);
3762306a36Sopenharmony_cistatic long extract_bat (unsigned long, ppc_cpu_t, int *);
3862306a36Sopenharmony_cistatic unsigned long insert_bba (unsigned long, long, ppc_cpu_t, const char **);
3962306a36Sopenharmony_cistatic long extract_bba (unsigned long, ppc_cpu_t, int *);
4062306a36Sopenharmony_cistatic unsigned long insert_bdm (unsigned long, long, ppc_cpu_t, const char **);
4162306a36Sopenharmony_cistatic long extract_bdm (unsigned long, ppc_cpu_t, int *);
4262306a36Sopenharmony_cistatic unsigned long insert_bdp (unsigned long, long, ppc_cpu_t, const char **);
4362306a36Sopenharmony_cistatic long extract_bdp (unsigned long, ppc_cpu_t, int *);
4462306a36Sopenharmony_cistatic unsigned long insert_bo (unsigned long, long, ppc_cpu_t, const char **);
4562306a36Sopenharmony_cistatic long extract_bo (unsigned long, ppc_cpu_t, int *);
4662306a36Sopenharmony_cistatic unsigned long insert_boe (unsigned long, long, ppc_cpu_t, const char **);
4762306a36Sopenharmony_cistatic long extract_boe (unsigned long, ppc_cpu_t, int *);
4862306a36Sopenharmony_cistatic unsigned long insert_esync (unsigned long, long, ppc_cpu_t, const char **);
4962306a36Sopenharmony_cistatic unsigned long insert_dcmxs (unsigned long, long, ppc_cpu_t, const char **);
5062306a36Sopenharmony_cistatic long extract_dcmxs (unsigned long, ppc_cpu_t, int *);
5162306a36Sopenharmony_cistatic unsigned long insert_dxd (unsigned long, long, ppc_cpu_t, const char **);
5262306a36Sopenharmony_cistatic long extract_dxd (unsigned long, ppc_cpu_t, int *);
5362306a36Sopenharmony_cistatic unsigned long insert_dxdn (unsigned long, long, ppc_cpu_t, const char **);
5462306a36Sopenharmony_cistatic long extract_dxdn (unsigned long, ppc_cpu_t, int *);
5562306a36Sopenharmony_cistatic unsigned long insert_fxm (unsigned long, long, ppc_cpu_t, const char **);
5662306a36Sopenharmony_cistatic long extract_fxm (unsigned long, ppc_cpu_t, int *);
5762306a36Sopenharmony_cistatic unsigned long insert_li20 (unsigned long, long, ppc_cpu_t, const char **);
5862306a36Sopenharmony_cistatic long extract_li20 (unsigned long, ppc_cpu_t, int *);
5962306a36Sopenharmony_cistatic unsigned long insert_ls (unsigned long, long, ppc_cpu_t, const char **);
6062306a36Sopenharmony_cistatic unsigned long insert_mbe (unsigned long, long, ppc_cpu_t, const char **);
6162306a36Sopenharmony_cistatic long extract_mbe (unsigned long, ppc_cpu_t, int *);
6262306a36Sopenharmony_cistatic unsigned long insert_mb6 (unsigned long, long, ppc_cpu_t, const char **);
6362306a36Sopenharmony_cistatic long extract_mb6 (unsigned long, ppc_cpu_t, int *);
6462306a36Sopenharmony_cistatic long extract_nb (unsigned long, ppc_cpu_t, int *);
6562306a36Sopenharmony_cistatic unsigned long insert_nbi (unsigned long, long, ppc_cpu_t, const char **);
6662306a36Sopenharmony_cistatic unsigned long insert_nsi (unsigned long, long, ppc_cpu_t, const char **);
6762306a36Sopenharmony_cistatic long extract_nsi (unsigned long, ppc_cpu_t, int *);
6862306a36Sopenharmony_cistatic unsigned long insert_oimm (unsigned long, long, ppc_cpu_t, const char **);
6962306a36Sopenharmony_cistatic long extract_oimm (unsigned long, ppc_cpu_t, int *);
7062306a36Sopenharmony_cistatic unsigned long insert_ral (unsigned long, long, ppc_cpu_t, const char **);
7162306a36Sopenharmony_cistatic unsigned long insert_ram (unsigned long, long, ppc_cpu_t, const char **);
7262306a36Sopenharmony_cistatic unsigned long insert_raq (unsigned long, long, ppc_cpu_t, const char **);
7362306a36Sopenharmony_cistatic unsigned long insert_ras (unsigned long, long, ppc_cpu_t, const char **);
7462306a36Sopenharmony_cistatic unsigned long insert_rbs (unsigned long, long, ppc_cpu_t, const char **);
7562306a36Sopenharmony_cistatic long extract_rbs (unsigned long, ppc_cpu_t, int *);
7662306a36Sopenharmony_cistatic unsigned long insert_rbx (unsigned long, long, ppc_cpu_t, const char **);
7762306a36Sopenharmony_cistatic unsigned long insert_rx (unsigned long, long, ppc_cpu_t, const char **);
7862306a36Sopenharmony_cistatic long extract_rx (unsigned long, ppc_cpu_t, int *);
7962306a36Sopenharmony_cistatic unsigned long insert_ry (unsigned long, long, ppc_cpu_t, const char **);
8062306a36Sopenharmony_cistatic long extract_ry (unsigned long, ppc_cpu_t, int *);
8162306a36Sopenharmony_cistatic unsigned long insert_sh6 (unsigned long, long, ppc_cpu_t, const char **);
8262306a36Sopenharmony_cistatic long extract_sh6 (unsigned long, ppc_cpu_t, int *);
8362306a36Sopenharmony_cistatic unsigned long insert_sci8 (unsigned long, long, ppc_cpu_t, const char **);
8462306a36Sopenharmony_cistatic long extract_sci8 (unsigned long, ppc_cpu_t, int *);
8562306a36Sopenharmony_cistatic unsigned long insert_sci8n (unsigned long, long, ppc_cpu_t, const char **);
8662306a36Sopenharmony_cistatic long extract_sci8n (unsigned long, ppc_cpu_t, int *);
8762306a36Sopenharmony_cistatic unsigned long insert_sd4h (unsigned long, long, ppc_cpu_t, const char **);
8862306a36Sopenharmony_cistatic long extract_sd4h (unsigned long, ppc_cpu_t, int *);
8962306a36Sopenharmony_cistatic unsigned long insert_sd4w (unsigned long, long, ppc_cpu_t, const char **);
9062306a36Sopenharmony_cistatic long extract_sd4w (unsigned long, ppc_cpu_t, int *);
9162306a36Sopenharmony_cistatic unsigned long insert_spr (unsigned long, long, ppc_cpu_t, const char **);
9262306a36Sopenharmony_cistatic long extract_spr (unsigned long, ppc_cpu_t, int *);
9362306a36Sopenharmony_cistatic unsigned long insert_sprg (unsigned long, long, ppc_cpu_t, const char **);
9462306a36Sopenharmony_cistatic long extract_sprg (unsigned long, ppc_cpu_t, int *);
9562306a36Sopenharmony_cistatic unsigned long insert_tbr (unsigned long, long, ppc_cpu_t, const char **);
9662306a36Sopenharmony_cistatic long extract_tbr (unsigned long, ppc_cpu_t, int *);
9762306a36Sopenharmony_cistatic unsigned long insert_xt6 (unsigned long, long, ppc_cpu_t, const char **);
9862306a36Sopenharmony_cistatic long extract_xt6 (unsigned long, ppc_cpu_t, int *);
9962306a36Sopenharmony_cistatic unsigned long insert_xtq6 (unsigned long, long, ppc_cpu_t, const char **);
10062306a36Sopenharmony_cistatic long extract_xtq6 (unsigned long, ppc_cpu_t, int *);
10162306a36Sopenharmony_cistatic unsigned long insert_xa6 (unsigned long, long, ppc_cpu_t, const char **);
10262306a36Sopenharmony_cistatic long extract_xa6 (unsigned long, ppc_cpu_t, int *);
10362306a36Sopenharmony_cistatic unsigned long insert_xb6 (unsigned long, long, ppc_cpu_t, const char **);
10462306a36Sopenharmony_cistatic long extract_xb6 (unsigned long, ppc_cpu_t, int *);
10562306a36Sopenharmony_cistatic unsigned long insert_xb6s (unsigned long, long, ppc_cpu_t, const char **);
10662306a36Sopenharmony_cistatic long extract_xb6s (unsigned long, ppc_cpu_t, int *);
10762306a36Sopenharmony_cistatic unsigned long insert_xc6 (unsigned long, long, ppc_cpu_t, const char **);
10862306a36Sopenharmony_cistatic long extract_xc6 (unsigned long, ppc_cpu_t, int *);
10962306a36Sopenharmony_cistatic unsigned long insert_dm (unsigned long, long, ppc_cpu_t, const char **);
11062306a36Sopenharmony_cistatic long extract_dm (unsigned long, ppc_cpu_t, int *);
11162306a36Sopenharmony_cistatic unsigned long insert_vlesi (unsigned long, long, ppc_cpu_t, const char **);
11262306a36Sopenharmony_cistatic long extract_vlesi (unsigned long, ppc_cpu_t, int *);
11362306a36Sopenharmony_cistatic unsigned long insert_vlensi (unsigned long, long, ppc_cpu_t, const char **);
11462306a36Sopenharmony_cistatic long extract_vlensi (unsigned long, ppc_cpu_t, int *);
11562306a36Sopenharmony_cistatic unsigned long insert_vleui (unsigned long, long, ppc_cpu_t, const char **);
11662306a36Sopenharmony_cistatic long extract_vleui (unsigned long, ppc_cpu_t, int *);
11762306a36Sopenharmony_cistatic unsigned long insert_vleil (unsigned long, long, ppc_cpu_t, const char **);
11862306a36Sopenharmony_cistatic long extract_vleil (unsigned long, ppc_cpu_t, int *);
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci/* The operands table.
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci   The fields are bitm, shift, insert, extract, flags.
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci   We used to put parens around the various additions, like the one
12562306a36Sopenharmony_ci   for BA just below.  However, that caused trouble with feeble
12662306a36Sopenharmony_ci   compilers with a limit on depth of a parenthesized expression, like
12762306a36Sopenharmony_ci   (reportedly) the compiler in Microsoft Developer Studio 5.  So we
12862306a36Sopenharmony_ci   omit the parens, since the macros are never used in a context where
12962306a36Sopenharmony_ci   the addition will be ambiguous.  */
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ciconst struct powerpc_operand powerpc_operands[] =
13262306a36Sopenharmony_ci{
13362306a36Sopenharmony_ci  /* The zero index is used to indicate the end of the list of
13462306a36Sopenharmony_ci     operands.  */
13562306a36Sopenharmony_ci#define UNUSED 0
13662306a36Sopenharmony_ci  { 0, 0, NULL, NULL, 0 },
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci  /* The BA field in an XL form instruction.  */
13962306a36Sopenharmony_ci#define BA UNUSED + 1
14062306a36Sopenharmony_ci  /* The BI field in a B form or XL form instruction.  */
14162306a36Sopenharmony_ci#define BI BA
14262306a36Sopenharmony_ci#define BI_MASK (0x1f << 16)
14362306a36Sopenharmony_ci  { 0x1f, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci  /* The BA field in an XL form instruction when it must be the same
14662306a36Sopenharmony_ci     as the BT field in the same instruction.  */
14762306a36Sopenharmony_ci#define BAT BA + 1
14862306a36Sopenharmony_ci  { 0x1f, 16, insert_bat, extract_bat, PPC_OPERAND_FAKE },
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ci  /* The BB field in an XL form instruction.  */
15162306a36Sopenharmony_ci#define BB BAT + 1
15262306a36Sopenharmony_ci#define BB_MASK (0x1f << 11)
15362306a36Sopenharmony_ci  { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR_BIT },
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci  /* The BB field in an XL form instruction when it must be the same
15662306a36Sopenharmony_ci     as the BA field in the same instruction.  */
15762306a36Sopenharmony_ci#define BBA BB + 1
15862306a36Sopenharmony_ci  /* The VB field in a VX form instruction when it must be the same
15962306a36Sopenharmony_ci     as the VA field in the same instruction.  */
16062306a36Sopenharmony_ci#define VBA BBA
16162306a36Sopenharmony_ci  { 0x1f, 11, insert_bba, extract_bba, PPC_OPERAND_FAKE },
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci  /* The BD field in a B form instruction.  The lower two bits are
16462306a36Sopenharmony_ci     forced to zero.  */
16562306a36Sopenharmony_ci#define BD BBA + 1
16662306a36Sopenharmony_ci  { 0xfffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ci  /* The BD field in a B form instruction when absolute addressing is
16962306a36Sopenharmony_ci     used.  */
17062306a36Sopenharmony_ci#define BDA BD + 1
17162306a36Sopenharmony_ci  { 0xfffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci  /* The BD field in a B form instruction when the - modifier is used.
17462306a36Sopenharmony_ci     This sets the y bit of the BO field appropriately.  */
17562306a36Sopenharmony_ci#define BDM BDA + 1
17662306a36Sopenharmony_ci  { 0xfffc, 0, insert_bdm, extract_bdm,
17762306a36Sopenharmony_ci    PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
17862306a36Sopenharmony_ci
17962306a36Sopenharmony_ci  /* The BD field in a B form instruction when the - modifier is used
18062306a36Sopenharmony_ci     and absolute address is used.  */
18162306a36Sopenharmony_ci#define BDMA BDM + 1
18262306a36Sopenharmony_ci  { 0xfffc, 0, insert_bdm, extract_bdm,
18362306a36Sopenharmony_ci    PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci  /* The BD field in a B form instruction when the + modifier is used.
18662306a36Sopenharmony_ci     This sets the y bit of the BO field appropriately.  */
18762306a36Sopenharmony_ci#define BDP BDMA + 1
18862306a36Sopenharmony_ci  { 0xfffc, 0, insert_bdp, extract_bdp,
18962306a36Sopenharmony_ci    PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci  /* The BD field in a B form instruction when the + modifier is used
19262306a36Sopenharmony_ci     and absolute addressing is used.  */
19362306a36Sopenharmony_ci#define BDPA BDP + 1
19462306a36Sopenharmony_ci  { 0xfffc, 0, insert_bdp, extract_bdp,
19562306a36Sopenharmony_ci    PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_ci  /* The BF field in an X or XL form instruction.  */
19862306a36Sopenharmony_ci#define BF BDPA + 1
19962306a36Sopenharmony_ci  /* The CRFD field in an X form instruction.  */
20062306a36Sopenharmony_ci#define CRFD BF
20162306a36Sopenharmony_ci  /* The CRD field in an XL form instruction.  */
20262306a36Sopenharmony_ci#define CRD BF
20362306a36Sopenharmony_ci  { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG },
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ci  /* The BF field in an X or XL form instruction.  */
20662306a36Sopenharmony_ci#define BFF BF + 1
20762306a36Sopenharmony_ci  { 0x7, 23, NULL, NULL, 0 },
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ci  /* An optional BF field.  This is used for comparison instructions,
21062306a36Sopenharmony_ci     in which an omitted BF field is taken as zero.  */
21162306a36Sopenharmony_ci#define OBF BFF + 1
21262306a36Sopenharmony_ci  { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci  /* The BFA field in an X or XL form instruction.  */
21562306a36Sopenharmony_ci#define BFA OBF + 1
21662306a36Sopenharmony_ci  { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG },
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ci  /* The BO field in a B form instruction.  Certain values are
21962306a36Sopenharmony_ci     illegal.  */
22062306a36Sopenharmony_ci#define BO BFA + 1
22162306a36Sopenharmony_ci#define BO_MASK (0x1f << 21)
22262306a36Sopenharmony_ci  { 0x1f, 21, insert_bo, extract_bo, 0 },
22362306a36Sopenharmony_ci
22462306a36Sopenharmony_ci  /* The BO field in a B form instruction when the + or - modifier is
22562306a36Sopenharmony_ci     used.  This is like the BO field, but it must be even.  */
22662306a36Sopenharmony_ci#define BOE BO + 1
22762306a36Sopenharmony_ci  { 0x1e, 21, insert_boe, extract_boe, 0 },
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci  /* The RM field in an X form instruction.  */
23062306a36Sopenharmony_ci#define RM BOE + 1
23162306a36Sopenharmony_ci  { 0x3, 11, NULL, NULL, 0 },
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_ci#define BH RM + 1
23462306a36Sopenharmony_ci  { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
23562306a36Sopenharmony_ci
23662306a36Sopenharmony_ci  /* The BT field in an X or XL form instruction.  */
23762306a36Sopenharmony_ci#define BT BH + 1
23862306a36Sopenharmony_ci  { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT },
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_ci  /* The BI16 field in a BD8 form instruction.  */
24162306a36Sopenharmony_ci#define BI16 BT + 1
24262306a36Sopenharmony_ci  { 0x3, 8, NULL, NULL, PPC_OPERAND_CR_BIT },
24362306a36Sopenharmony_ci
24462306a36Sopenharmony_ci  /* The BI32 field in a BD15 form instruction.  */
24562306a36Sopenharmony_ci#define BI32 BI16 + 1
24662306a36Sopenharmony_ci  { 0xf, 16, NULL, NULL, PPC_OPERAND_CR_BIT },
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci  /* The BO32 field in a BD15 form instruction.  */
24962306a36Sopenharmony_ci#define BO32 BI32 + 1
25062306a36Sopenharmony_ci  { 0x3, 20, NULL, NULL, 0 },
25162306a36Sopenharmony_ci
25262306a36Sopenharmony_ci  /* The B8 field in a BD8 form instruction.  */
25362306a36Sopenharmony_ci#define B8 BO32 + 1
25462306a36Sopenharmony_ci  { 0x1fe, -1, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
25562306a36Sopenharmony_ci
25662306a36Sopenharmony_ci  /* The B15 field in a BD15 form instruction.  The lowest bit is
25762306a36Sopenharmony_ci     forced to zero.  */
25862306a36Sopenharmony_ci#define B15 B8 + 1
25962306a36Sopenharmony_ci  { 0xfffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
26062306a36Sopenharmony_ci
26162306a36Sopenharmony_ci  /* The B24 field in a BD24 form instruction.  The lowest bit is
26262306a36Sopenharmony_ci     forced to zero.  */
26362306a36Sopenharmony_ci#define B24 B15 + 1
26462306a36Sopenharmony_ci  { 0x1fffffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
26562306a36Sopenharmony_ci
26662306a36Sopenharmony_ci  /* The condition register number portion of the BI field in a B form
26762306a36Sopenharmony_ci     or XL form instruction.  This is used for the extended
26862306a36Sopenharmony_ci     conditional branch mnemonics, which set the lower two bits of the
26962306a36Sopenharmony_ci     BI field.  This field is optional.  */
27062306a36Sopenharmony_ci#define CR B24 + 1
27162306a36Sopenharmony_ci  { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
27262306a36Sopenharmony_ci
27362306a36Sopenharmony_ci  /* The CRB field in an X form instruction.  */
27462306a36Sopenharmony_ci#define CRB CR + 1
27562306a36Sopenharmony_ci  /* The MB field in an M form instruction.  */
27662306a36Sopenharmony_ci#define MB CRB
27762306a36Sopenharmony_ci#define MB_MASK (0x1f << 6)
27862306a36Sopenharmony_ci  { 0x1f, 6, NULL, NULL, 0 },
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ci  /* The CRD32 field in an XL form instruction.  */
28162306a36Sopenharmony_ci#define CRD32 CRB + 1
28262306a36Sopenharmony_ci  { 0x3, 21, NULL, NULL, PPC_OPERAND_CR_REG },
28362306a36Sopenharmony_ci
28462306a36Sopenharmony_ci  /* The CRFS field in an X form instruction.  */
28562306a36Sopenharmony_ci#define CRFS CRD32 + 1
28662306a36Sopenharmony_ci  { 0x7, 0, NULL, NULL, PPC_OPERAND_CR_REG },
28762306a36Sopenharmony_ci
28862306a36Sopenharmony_ci#define CRS CRFS + 1
28962306a36Sopenharmony_ci  { 0x3, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL },
29062306a36Sopenharmony_ci
29162306a36Sopenharmony_ci  /* The CT field in an X form instruction.  */
29262306a36Sopenharmony_ci#define CT CRS + 1
29362306a36Sopenharmony_ci  /* The MO field in an mbar instruction.  */
29462306a36Sopenharmony_ci#define MO CT
29562306a36Sopenharmony_ci  { 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
29662306a36Sopenharmony_ci
29762306a36Sopenharmony_ci  /* The D field in a D form instruction.  This is a displacement off
29862306a36Sopenharmony_ci     a register, and implies that the next operand is a register in
29962306a36Sopenharmony_ci     parentheses.  */
30062306a36Sopenharmony_ci#define D CT + 1
30162306a36Sopenharmony_ci  { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
30262306a36Sopenharmony_ci
30362306a36Sopenharmony_ci  /* The D8 field in a D form instruction.  This is a displacement off
30462306a36Sopenharmony_ci     a register, and implies that the next operand is a register in
30562306a36Sopenharmony_ci     parentheses.  */
30662306a36Sopenharmony_ci#define D8 D + 1
30762306a36Sopenharmony_ci  { 0xff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
30862306a36Sopenharmony_ci
30962306a36Sopenharmony_ci  /* The DCMX field in an X form instruction.  */
31062306a36Sopenharmony_ci#define DCMX D8 + 1
31162306a36Sopenharmony_ci  { 0x7f, 16, NULL, NULL, 0 },
31262306a36Sopenharmony_ci
31362306a36Sopenharmony_ci  /* The split DCMX field in an X form instruction.  */
31462306a36Sopenharmony_ci#define DCMXS DCMX + 1
31562306a36Sopenharmony_ci  { 0x7f, PPC_OPSHIFT_INV, insert_dcmxs, extract_dcmxs, 0 },
31662306a36Sopenharmony_ci
31762306a36Sopenharmony_ci  /* The DQ field in a DQ form instruction.  This is like D, but the
31862306a36Sopenharmony_ci     lower four bits are forced to zero. */
31962306a36Sopenharmony_ci#define DQ DCMXS + 1
32062306a36Sopenharmony_ci  { 0xfff0, 0, NULL, NULL,
32162306a36Sopenharmony_ci    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
32262306a36Sopenharmony_ci
32362306a36Sopenharmony_ci  /* The DS field in a DS form instruction.  This is like D, but the
32462306a36Sopenharmony_ci     lower two bits are forced to zero.  */
32562306a36Sopenharmony_ci#define DS DQ + 1
32662306a36Sopenharmony_ci  { 0xfffc, 0, NULL, NULL,
32762306a36Sopenharmony_ci    PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS },
32862306a36Sopenharmony_ci
32962306a36Sopenharmony_ci  /* The DUIS or BHRBE fields in a XFX form instruction, 10 bits
33062306a36Sopenharmony_ci     unsigned imediate */
33162306a36Sopenharmony_ci#define DUIS DS + 1
33262306a36Sopenharmony_ci#define BHRBE DUIS
33362306a36Sopenharmony_ci  { 0x3ff, 11, NULL, NULL, 0 },
33462306a36Sopenharmony_ci
33562306a36Sopenharmony_ci  /* The split D field in a DX form instruction.  */
33662306a36Sopenharmony_ci#define DXD DUIS + 1
33762306a36Sopenharmony_ci  { 0xffff, PPC_OPSHIFT_INV, insert_dxd, extract_dxd,
33862306a36Sopenharmony_ci    PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
33962306a36Sopenharmony_ci
34062306a36Sopenharmony_ci  /* The split ND field in a DX form instruction.
34162306a36Sopenharmony_ci     This is the same as the DX field, only negated.  */
34262306a36Sopenharmony_ci#define NDXD DXD + 1
34362306a36Sopenharmony_ci  { 0xffff, PPC_OPSHIFT_INV, insert_dxdn, extract_dxdn,
34462306a36Sopenharmony_ci    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT},
34562306a36Sopenharmony_ci
34662306a36Sopenharmony_ci  /* The E field in a wrteei instruction.  */
34762306a36Sopenharmony_ci  /* And the W bit in the pair singles instructions.  */
34862306a36Sopenharmony_ci  /* And the ST field in a VX form instruction.  */
34962306a36Sopenharmony_ci#define E NDXD + 1
35062306a36Sopenharmony_ci#define PSW E
35162306a36Sopenharmony_ci#define ST E
35262306a36Sopenharmony_ci  { 0x1, 15, NULL, NULL, 0 },
35362306a36Sopenharmony_ci
35462306a36Sopenharmony_ci  /* The FL1 field in a POWER SC form instruction.  */
35562306a36Sopenharmony_ci#define FL1 E + 1
35662306a36Sopenharmony_ci  /* The U field in an X form instruction.  */
35762306a36Sopenharmony_ci#define U FL1
35862306a36Sopenharmony_ci  { 0xf, 12, NULL, NULL, 0 },
35962306a36Sopenharmony_ci
36062306a36Sopenharmony_ci  /* The FL2 field in a POWER SC form instruction.  */
36162306a36Sopenharmony_ci#define FL2 FL1 + 1
36262306a36Sopenharmony_ci  { 0x7, 2, NULL, NULL, 0 },
36362306a36Sopenharmony_ci
36462306a36Sopenharmony_ci  /* The FLM field in an XFL form instruction.  */
36562306a36Sopenharmony_ci#define FLM FL2 + 1
36662306a36Sopenharmony_ci  { 0xff, 17, NULL, NULL, 0 },
36762306a36Sopenharmony_ci
36862306a36Sopenharmony_ci  /* The FRA field in an X or A form instruction.  */
36962306a36Sopenharmony_ci#define FRA FLM + 1
37062306a36Sopenharmony_ci#define FRA_MASK (0x1f << 16)
37162306a36Sopenharmony_ci  { 0x1f, 16, NULL, NULL, PPC_OPERAND_FPR },
37262306a36Sopenharmony_ci
37362306a36Sopenharmony_ci  /* The FRAp field of DFP instructions.  */
37462306a36Sopenharmony_ci#define FRAp FRA + 1
37562306a36Sopenharmony_ci  { 0x1e, 16, NULL, NULL, PPC_OPERAND_FPR },
37662306a36Sopenharmony_ci
37762306a36Sopenharmony_ci  /* The FRB field in an X or A form instruction.  */
37862306a36Sopenharmony_ci#define FRB FRAp + 1
37962306a36Sopenharmony_ci#define FRB_MASK (0x1f << 11)
38062306a36Sopenharmony_ci  { 0x1f, 11, NULL, NULL, PPC_OPERAND_FPR },
38162306a36Sopenharmony_ci
38262306a36Sopenharmony_ci  /* The FRBp field of DFP instructions.  */
38362306a36Sopenharmony_ci#define FRBp FRB + 1
38462306a36Sopenharmony_ci  { 0x1e, 11, NULL, NULL, PPC_OPERAND_FPR },
38562306a36Sopenharmony_ci
38662306a36Sopenharmony_ci  /* The FRC field in an A form instruction.  */
38762306a36Sopenharmony_ci#define FRC FRBp + 1
38862306a36Sopenharmony_ci#define FRC_MASK (0x1f << 6)
38962306a36Sopenharmony_ci  { 0x1f, 6, NULL, NULL, PPC_OPERAND_FPR },
39062306a36Sopenharmony_ci
39162306a36Sopenharmony_ci  /* The FRS field in an X form instruction or the FRT field in a D, X
39262306a36Sopenharmony_ci     or A form instruction.  */
39362306a36Sopenharmony_ci#define FRS FRC + 1
39462306a36Sopenharmony_ci#define FRT FRS
39562306a36Sopenharmony_ci  { 0x1f, 21, NULL, NULL, PPC_OPERAND_FPR },
39662306a36Sopenharmony_ci
39762306a36Sopenharmony_ci  /* The FRSp field of stfdp or the FRTp field of lfdp and DFP
39862306a36Sopenharmony_ci     instructions.  */
39962306a36Sopenharmony_ci#define FRSp FRS + 1
40062306a36Sopenharmony_ci#define FRTp FRSp
40162306a36Sopenharmony_ci  { 0x1e, 21, NULL, NULL, PPC_OPERAND_FPR },
40262306a36Sopenharmony_ci
40362306a36Sopenharmony_ci  /* The FXM field in an XFX instruction.  */
40462306a36Sopenharmony_ci#define FXM FRSp + 1
40562306a36Sopenharmony_ci  { 0xff, 12, insert_fxm, extract_fxm, 0 },
40662306a36Sopenharmony_ci
40762306a36Sopenharmony_ci  /* Power4 version for mfcr.  */
40862306a36Sopenharmony_ci#define FXM4 FXM + 1
40962306a36Sopenharmony_ci  { 0xff, 12, insert_fxm, extract_fxm,
41062306a36Sopenharmony_ci    PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE},
41162306a36Sopenharmony_ci  /* If the FXM4 operand is omitted, use the sentinel value -1.  */
41262306a36Sopenharmony_ci  { -1, -1, NULL, NULL, 0},
41362306a36Sopenharmony_ci
41462306a36Sopenharmony_ci  /* The IMM20 field in an LI instruction.  */
41562306a36Sopenharmony_ci#define IMM20 FXM4 + 2
41662306a36Sopenharmony_ci  { 0xfffff, PPC_OPSHIFT_INV, insert_li20, extract_li20, PPC_OPERAND_SIGNED},
41762306a36Sopenharmony_ci
41862306a36Sopenharmony_ci  /* The L field in a D or X form instruction.  */
41962306a36Sopenharmony_ci#define L IMM20 + 1
42062306a36Sopenharmony_ci  { 0x1, 21, NULL, NULL, 0 },
42162306a36Sopenharmony_ci
42262306a36Sopenharmony_ci  /* The optional L field in tlbie and tlbiel instructions.  */
42362306a36Sopenharmony_ci#define LOPT L + 1
42462306a36Sopenharmony_ci  /* The R field in a HTM X form instruction.  */
42562306a36Sopenharmony_ci#define HTM_R LOPT
42662306a36Sopenharmony_ci  { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
42762306a36Sopenharmony_ci
42862306a36Sopenharmony_ci  /* The optional (for 32-bit) L field in cmp[l][i] instructions.  */
42962306a36Sopenharmony_ci#define L32OPT LOPT + 1
43062306a36Sopenharmony_ci  { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL32 },
43162306a36Sopenharmony_ci
43262306a36Sopenharmony_ci  /* The L field in dcbf instruction.  */
43362306a36Sopenharmony_ci#define L2OPT L32OPT + 1
43462306a36Sopenharmony_ci  { 0x3, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
43562306a36Sopenharmony_ci
43662306a36Sopenharmony_ci  /* The LEV field in a POWER SVC form instruction.  */
43762306a36Sopenharmony_ci#define SVC_LEV L2OPT + 1
43862306a36Sopenharmony_ci  { 0x7f, 5, NULL, NULL, 0 },
43962306a36Sopenharmony_ci
44062306a36Sopenharmony_ci  /* The LEV field in an SC form instruction.  */
44162306a36Sopenharmony_ci#define LEV SVC_LEV + 1
44262306a36Sopenharmony_ci  { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL },
44362306a36Sopenharmony_ci
44462306a36Sopenharmony_ci  /* The LI field in an I form instruction.  The lower two bits are
44562306a36Sopenharmony_ci     forced to zero.  */
44662306a36Sopenharmony_ci#define LI LEV + 1
44762306a36Sopenharmony_ci  { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
44862306a36Sopenharmony_ci
44962306a36Sopenharmony_ci  /* The LI field in an I form instruction when used as an absolute
45062306a36Sopenharmony_ci     address.  */
45162306a36Sopenharmony_ci#define LIA LI + 1
45262306a36Sopenharmony_ci  { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
45362306a36Sopenharmony_ci
45462306a36Sopenharmony_ci  /* The LS or WC field in an X (sync or wait) form instruction.  */
45562306a36Sopenharmony_ci#define LS LIA + 1
45662306a36Sopenharmony_ci#define WC LS
45762306a36Sopenharmony_ci  { 0x3, 21, insert_ls, NULL, PPC_OPERAND_OPTIONAL },
45862306a36Sopenharmony_ci
45962306a36Sopenharmony_ci  /* The ME field in an M form instruction.  */
46062306a36Sopenharmony_ci#define ME LS + 1
46162306a36Sopenharmony_ci#define ME_MASK (0x1f << 1)
46262306a36Sopenharmony_ci  { 0x1f, 1, NULL, NULL, 0 },
46362306a36Sopenharmony_ci
46462306a36Sopenharmony_ci  /* The MB and ME fields in an M form instruction expressed a single
46562306a36Sopenharmony_ci     operand which is a bitmask indicating which bits to select.  This
46662306a36Sopenharmony_ci     is a two operand form using PPC_OPERAND_NEXT.  See the
46762306a36Sopenharmony_ci     description in opcode/ppc.h for what this means.  */
46862306a36Sopenharmony_ci#define MBE ME + 1
46962306a36Sopenharmony_ci  { 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT },
47062306a36Sopenharmony_ci  { -1, 0, insert_mbe, extract_mbe, 0 },
47162306a36Sopenharmony_ci
47262306a36Sopenharmony_ci  /* The MB or ME field in an MD or MDS form instruction.  The high
47362306a36Sopenharmony_ci     bit is wrapped to the low end.  */
47462306a36Sopenharmony_ci#define MB6 MBE + 2
47562306a36Sopenharmony_ci#define ME6 MB6
47662306a36Sopenharmony_ci#define MB6_MASK (0x3f << 5)
47762306a36Sopenharmony_ci  { 0x3f, 5, insert_mb6, extract_mb6, 0 },
47862306a36Sopenharmony_ci
47962306a36Sopenharmony_ci  /* The NB field in an X form instruction.  The value 32 is stored as
48062306a36Sopenharmony_ci     0.  */
48162306a36Sopenharmony_ci#define NB MB6 + 1
48262306a36Sopenharmony_ci  { 0x1f, 11, NULL, extract_nb, PPC_OPERAND_PLUS1 },
48362306a36Sopenharmony_ci
48462306a36Sopenharmony_ci  /* The NBI field in an lswi instruction, which has special value
48562306a36Sopenharmony_ci     restrictions.  The value 32 is stored as 0.  */
48662306a36Sopenharmony_ci#define NBI NB + 1
48762306a36Sopenharmony_ci  { 0x1f, 11, insert_nbi, extract_nb, PPC_OPERAND_PLUS1 },
48862306a36Sopenharmony_ci
48962306a36Sopenharmony_ci  /* The NSI field in a D form instruction.  This is the same as the
49062306a36Sopenharmony_ci     SI field, only negated.  */
49162306a36Sopenharmony_ci#define NSI NBI + 1
49262306a36Sopenharmony_ci  { 0xffff, 0, insert_nsi, extract_nsi,
49362306a36Sopenharmony_ci    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
49462306a36Sopenharmony_ci
49562306a36Sopenharmony_ci  /* The NSI field in a D form instruction when we accept a wide range
49662306a36Sopenharmony_ci     of positive values.  */
49762306a36Sopenharmony_ci#define NSISIGNOPT NSI + 1
49862306a36Sopenharmony_ci  { 0xffff, 0, insert_nsi, extract_nsi,
49962306a36Sopenharmony_ci    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
50062306a36Sopenharmony_ci
50162306a36Sopenharmony_ci  /* The RA field in an D, DS, DQ, X, XO, M, or MDS form instruction.  */
50262306a36Sopenharmony_ci#define RA NSISIGNOPT + 1
50362306a36Sopenharmony_ci#define RA_MASK (0x1f << 16)
50462306a36Sopenharmony_ci  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR },
50562306a36Sopenharmony_ci
50662306a36Sopenharmony_ci  /* As above, but 0 in the RA field means zero, not r0.  */
50762306a36Sopenharmony_ci#define RA0 RA + 1
50862306a36Sopenharmony_ci  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 },
50962306a36Sopenharmony_ci
51062306a36Sopenharmony_ci  /* The RA field in the DQ form lq or an lswx instruction, which have special
51162306a36Sopenharmony_ci     value restrictions.  */
51262306a36Sopenharmony_ci#define RAQ RA0 + 1
51362306a36Sopenharmony_ci#define RAX RAQ
51462306a36Sopenharmony_ci  { 0x1f, 16, insert_raq, NULL, PPC_OPERAND_GPR_0 },
51562306a36Sopenharmony_ci
51662306a36Sopenharmony_ci  /* The RA field in a D or X form instruction which is an updating
51762306a36Sopenharmony_ci     load, which means that the RA field may not be zero and may not
51862306a36Sopenharmony_ci     equal the RT field.  */
51962306a36Sopenharmony_ci#define RAL RAQ + 1
52062306a36Sopenharmony_ci  { 0x1f, 16, insert_ral, NULL, PPC_OPERAND_GPR_0 },
52162306a36Sopenharmony_ci
52262306a36Sopenharmony_ci  /* The RA field in an lmw instruction, which has special value
52362306a36Sopenharmony_ci     restrictions.  */
52462306a36Sopenharmony_ci#define RAM RAL + 1
52562306a36Sopenharmony_ci  { 0x1f, 16, insert_ram, NULL, PPC_OPERAND_GPR_0 },
52662306a36Sopenharmony_ci
52762306a36Sopenharmony_ci  /* The RA field in a D or X form instruction which is an updating
52862306a36Sopenharmony_ci     store or an updating floating point load, which means that the RA
52962306a36Sopenharmony_ci     field may not be zero.  */
53062306a36Sopenharmony_ci#define RAS RAM + 1
53162306a36Sopenharmony_ci  { 0x1f, 16, insert_ras, NULL, PPC_OPERAND_GPR_0 },
53262306a36Sopenharmony_ci
53362306a36Sopenharmony_ci  /* The RA field of the tlbwe, dccci and iccci instructions,
53462306a36Sopenharmony_ci     which are optional.  */
53562306a36Sopenharmony_ci#define RAOPT RAS + 1
53662306a36Sopenharmony_ci  { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
53762306a36Sopenharmony_ci
53862306a36Sopenharmony_ci  /* The RB field in an X, XO, M, or MDS form instruction.  */
53962306a36Sopenharmony_ci#define RB RAOPT + 1
54062306a36Sopenharmony_ci#define RB_MASK (0x1f << 11)
54162306a36Sopenharmony_ci  { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR },
54262306a36Sopenharmony_ci
54362306a36Sopenharmony_ci  /* The RB field in an X form instruction when it must be the same as
54462306a36Sopenharmony_ci     the RS field in the instruction.  This is used for extended
54562306a36Sopenharmony_ci     mnemonics like mr.  */
54662306a36Sopenharmony_ci#define RBS RB + 1
54762306a36Sopenharmony_ci  { 0x1f, 11, insert_rbs, extract_rbs, PPC_OPERAND_FAKE },
54862306a36Sopenharmony_ci
54962306a36Sopenharmony_ci  /* The RB field in an lswx instruction, which has special value
55062306a36Sopenharmony_ci     restrictions.  */
55162306a36Sopenharmony_ci#define RBX RBS + 1
55262306a36Sopenharmony_ci  { 0x1f, 11, insert_rbx, NULL, PPC_OPERAND_GPR },
55362306a36Sopenharmony_ci
55462306a36Sopenharmony_ci  /* The RB field of the dccci and iccci instructions, which are optional.  */
55562306a36Sopenharmony_ci#define RBOPT RBX + 1
55662306a36Sopenharmony_ci  { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
55762306a36Sopenharmony_ci
55862306a36Sopenharmony_ci  /* The RC register field in an maddld, maddhd or maddhdu instruction.  */
55962306a36Sopenharmony_ci#define RC RBOPT + 1
56062306a36Sopenharmony_ci  { 0x1f, 6, NULL, NULL, PPC_OPERAND_GPR },
56162306a36Sopenharmony_ci
56262306a36Sopenharmony_ci  /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form
56362306a36Sopenharmony_ci     instruction or the RT field in a D, DS, X, XFX or XO form
56462306a36Sopenharmony_ci     instruction.  */
56562306a36Sopenharmony_ci#define RS RC + 1
56662306a36Sopenharmony_ci#define RT RS
56762306a36Sopenharmony_ci#define RT_MASK (0x1f << 21)
56862306a36Sopenharmony_ci#define RD RS
56962306a36Sopenharmony_ci  { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR },
57062306a36Sopenharmony_ci
57162306a36Sopenharmony_ci  /* The RS and RT fields of the DS form stq and DQ form lq instructions,
57262306a36Sopenharmony_ci     which have special value restrictions.  */
57362306a36Sopenharmony_ci#define RSQ RS + 1
57462306a36Sopenharmony_ci#define RTQ RSQ
57562306a36Sopenharmony_ci  { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR },
57662306a36Sopenharmony_ci
57762306a36Sopenharmony_ci  /* The RS field of the tlbwe instruction, which is optional.  */
57862306a36Sopenharmony_ci#define RSO RSQ + 1
57962306a36Sopenharmony_ci#define RTO RSO
58062306a36Sopenharmony_ci  { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
58162306a36Sopenharmony_ci
58262306a36Sopenharmony_ci  /* The RX field of the SE_RR form instruction.  */
58362306a36Sopenharmony_ci#define RX RSO + 1
58462306a36Sopenharmony_ci  { 0x1f, PPC_OPSHIFT_INV, insert_rx, extract_rx, PPC_OPERAND_GPR },
58562306a36Sopenharmony_ci
58662306a36Sopenharmony_ci  /* The ARX field of the SE_RR form instruction.  */
58762306a36Sopenharmony_ci#define ARX RX + 1
58862306a36Sopenharmony_ci  { 0x1f, PPC_OPSHIFT_INV, insert_arx, extract_arx, PPC_OPERAND_GPR },
58962306a36Sopenharmony_ci
59062306a36Sopenharmony_ci  /* The RY field of the SE_RR form instruction.  */
59162306a36Sopenharmony_ci#define RY ARX + 1
59262306a36Sopenharmony_ci#define RZ RY
59362306a36Sopenharmony_ci  { 0x1f, PPC_OPSHIFT_INV, insert_ry, extract_ry, PPC_OPERAND_GPR },
59462306a36Sopenharmony_ci
59562306a36Sopenharmony_ci  /* The ARY field of the SE_RR form instruction.  */
59662306a36Sopenharmony_ci#define ARY RY + 1
59762306a36Sopenharmony_ci  { 0x1f, PPC_OPSHIFT_INV, insert_ary, extract_ary, PPC_OPERAND_GPR },
59862306a36Sopenharmony_ci
59962306a36Sopenharmony_ci  /* The SCLSCI8 field in a D form instruction.  */
60062306a36Sopenharmony_ci#define SCLSCI8 ARY + 1
60162306a36Sopenharmony_ci  { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8, extract_sci8, 0 },
60262306a36Sopenharmony_ci
60362306a36Sopenharmony_ci  /* The SCLSCI8N field in a D form instruction.  This is the same as the
60462306a36Sopenharmony_ci     SCLSCI8 field, only negated.  */
60562306a36Sopenharmony_ci#define SCLSCI8N SCLSCI8 + 1
60662306a36Sopenharmony_ci  { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8n, extract_sci8n,
60762306a36Sopenharmony_ci    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
60862306a36Sopenharmony_ci
60962306a36Sopenharmony_ci  /* The SD field of the SD4 form instruction.  */
61062306a36Sopenharmony_ci#define SE_SD SCLSCI8N + 1
61162306a36Sopenharmony_ci  { 0xf, 8, NULL, NULL, PPC_OPERAND_PARENS },
61262306a36Sopenharmony_ci
61362306a36Sopenharmony_ci  /* The SD field of the SD4 form instruction, for halfword.  */
61462306a36Sopenharmony_ci#define SE_SDH SE_SD + 1
61562306a36Sopenharmony_ci  { 0x1e, PPC_OPSHIFT_INV, insert_sd4h, extract_sd4h, PPC_OPERAND_PARENS },
61662306a36Sopenharmony_ci
61762306a36Sopenharmony_ci  /* The SD field of the SD4 form instruction, for word.  */
61862306a36Sopenharmony_ci#define SE_SDW SE_SDH + 1
61962306a36Sopenharmony_ci  { 0x3c, PPC_OPSHIFT_INV, insert_sd4w, extract_sd4w, PPC_OPERAND_PARENS },
62062306a36Sopenharmony_ci
62162306a36Sopenharmony_ci  /* The SH field in an X or M form instruction.  */
62262306a36Sopenharmony_ci#define SH SE_SDW + 1
62362306a36Sopenharmony_ci#define SH_MASK (0x1f << 11)
62462306a36Sopenharmony_ci  /* The other UIMM field in a EVX form instruction.  */
62562306a36Sopenharmony_ci#define EVUIMM SH
62662306a36Sopenharmony_ci  /* The FC field in an atomic X form instruction.  */
62762306a36Sopenharmony_ci#define FC SH
62862306a36Sopenharmony_ci  { 0x1f, 11, NULL, NULL, 0 },
62962306a36Sopenharmony_ci
63062306a36Sopenharmony_ci  /* The SI field in a HTM X form instruction.  */
63162306a36Sopenharmony_ci#define HTM_SI SH + 1
63262306a36Sopenharmony_ci  { 0x1f, 11, NULL, NULL, PPC_OPERAND_SIGNED },
63362306a36Sopenharmony_ci
63462306a36Sopenharmony_ci  /* The SH field in an MD form instruction.  This is split.  */
63562306a36Sopenharmony_ci#define SH6 HTM_SI + 1
63662306a36Sopenharmony_ci#define SH6_MASK ((0x1f << 11) | (1 << 1))
63762306a36Sopenharmony_ci  { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_sh6, 0 },
63862306a36Sopenharmony_ci
63962306a36Sopenharmony_ci  /* The SH field of the tlbwe instruction, which is optional.  */
64062306a36Sopenharmony_ci#define SHO SH6 + 1
64162306a36Sopenharmony_ci  { 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
64262306a36Sopenharmony_ci
64362306a36Sopenharmony_ci  /* The SI field in a D form instruction.  */
64462306a36Sopenharmony_ci#define SI SHO + 1
64562306a36Sopenharmony_ci  { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
64662306a36Sopenharmony_ci
64762306a36Sopenharmony_ci  /* The SI field in a D form instruction when we accept a wide range
64862306a36Sopenharmony_ci     of positive values.  */
64962306a36Sopenharmony_ci#define SISIGNOPT SI + 1
65062306a36Sopenharmony_ci  { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
65162306a36Sopenharmony_ci
65262306a36Sopenharmony_ci  /* The SI8 field in a D form instruction.  */
65362306a36Sopenharmony_ci#define SI8 SISIGNOPT + 1
65462306a36Sopenharmony_ci  { 0xff, 0, NULL, NULL, PPC_OPERAND_SIGNED },
65562306a36Sopenharmony_ci
65662306a36Sopenharmony_ci  /* The SPR field in an XFX form instruction.  This is flipped--the
65762306a36Sopenharmony_ci     lower 5 bits are stored in the upper 5 and vice- versa.  */
65862306a36Sopenharmony_ci#define SPR SI8 + 1
65962306a36Sopenharmony_ci#define PMR SPR
66062306a36Sopenharmony_ci#define TMR SPR
66162306a36Sopenharmony_ci#define SPR_MASK (0x3ff << 11)
66262306a36Sopenharmony_ci  { 0x3ff, 11, insert_spr, extract_spr, 0 },
66362306a36Sopenharmony_ci
66462306a36Sopenharmony_ci  /* The BAT index number in an XFX form m[ft]ibat[lu] instruction.  */
66562306a36Sopenharmony_ci#define SPRBAT SPR + 1
66662306a36Sopenharmony_ci#define SPRBAT_MASK (0x3 << 17)
66762306a36Sopenharmony_ci  { 0x3, 17, NULL, NULL, 0 },
66862306a36Sopenharmony_ci
66962306a36Sopenharmony_ci  /* The SPRG register number in an XFX form m[ft]sprg instruction.  */
67062306a36Sopenharmony_ci#define SPRG SPRBAT + 1
67162306a36Sopenharmony_ci  { 0x1f, 16, insert_sprg, extract_sprg, 0 },
67262306a36Sopenharmony_ci
67362306a36Sopenharmony_ci  /* The SR field in an X form instruction.  */
67462306a36Sopenharmony_ci#define SR SPRG + 1
67562306a36Sopenharmony_ci  /* The 4-bit UIMM field in a VX form instruction.  */
67662306a36Sopenharmony_ci#define UIMM4 SR
67762306a36Sopenharmony_ci  { 0xf, 16, NULL, NULL, 0 },
67862306a36Sopenharmony_ci
67962306a36Sopenharmony_ci  /* The STRM field in an X AltiVec form instruction.  */
68062306a36Sopenharmony_ci#define STRM SR + 1
68162306a36Sopenharmony_ci  /* The T field in a tlbilx form instruction.  */
68262306a36Sopenharmony_ci#define T STRM
68362306a36Sopenharmony_ci  /* The L field in wclr instructions.  */
68462306a36Sopenharmony_ci#define L2 STRM
68562306a36Sopenharmony_ci  { 0x3, 21, NULL, NULL, 0 },
68662306a36Sopenharmony_ci
68762306a36Sopenharmony_ci  /* The ESYNC field in an X (sync) form instruction.  */
68862306a36Sopenharmony_ci#define ESYNC STRM + 1
68962306a36Sopenharmony_ci  { 0xf, 16, insert_esync, NULL, PPC_OPERAND_OPTIONAL },
69062306a36Sopenharmony_ci
69162306a36Sopenharmony_ci  /* The SV field in a POWER SC form instruction.  */
69262306a36Sopenharmony_ci#define SV ESYNC + 1
69362306a36Sopenharmony_ci  { 0x3fff, 2, NULL, NULL, 0 },
69462306a36Sopenharmony_ci
69562306a36Sopenharmony_ci  /* The TBR field in an XFX form instruction.  This is like the SPR
69662306a36Sopenharmony_ci     field, but it is optional.  */
69762306a36Sopenharmony_ci#define TBR SV + 1
69862306a36Sopenharmony_ci  { 0x3ff, 11, insert_tbr, extract_tbr,
69962306a36Sopenharmony_ci    PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE},
70062306a36Sopenharmony_ci  /* If the TBR operand is ommitted, use the value 268.  */
70162306a36Sopenharmony_ci  { -1, 268, NULL, NULL, 0},
70262306a36Sopenharmony_ci
70362306a36Sopenharmony_ci  /* The TO field in a D or X form instruction.  */
70462306a36Sopenharmony_ci#define TO TBR + 2
70562306a36Sopenharmony_ci#define DUI TO
70662306a36Sopenharmony_ci#define TO_MASK (0x1f << 21)
70762306a36Sopenharmony_ci  { 0x1f, 21, NULL, NULL, 0 },
70862306a36Sopenharmony_ci
70962306a36Sopenharmony_ci  /* The UI field in a D form instruction.  */
71062306a36Sopenharmony_ci#define UI TO + 1
71162306a36Sopenharmony_ci  { 0xffff, 0, NULL, NULL, 0 },
71262306a36Sopenharmony_ci
71362306a36Sopenharmony_ci#define UISIGNOPT UI + 1
71462306a36Sopenharmony_ci  { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNOPT },
71562306a36Sopenharmony_ci
71662306a36Sopenharmony_ci  /* The IMM field in an SE_IM5 instruction.  */
71762306a36Sopenharmony_ci#define UI5 UISIGNOPT + 1
71862306a36Sopenharmony_ci  { 0x1f, 4, NULL, NULL, 0 },
71962306a36Sopenharmony_ci
72062306a36Sopenharmony_ci  /* The OIMM field in an SE_OIM5 instruction.  */
72162306a36Sopenharmony_ci#define OIMM5 UI5 + 1
72262306a36Sopenharmony_ci  { 0x1f, PPC_OPSHIFT_INV, insert_oimm, extract_oimm, PPC_OPERAND_PLUS1 },
72362306a36Sopenharmony_ci
72462306a36Sopenharmony_ci  /* The UI7 field in an SE_LI instruction.  */
72562306a36Sopenharmony_ci#define UI7 OIMM5 + 1
72662306a36Sopenharmony_ci  { 0x7f, 4, NULL, NULL, 0 },
72762306a36Sopenharmony_ci
72862306a36Sopenharmony_ci  /* The VA field in a VA, VX or VXR form instruction.  */
72962306a36Sopenharmony_ci#define VA UI7 + 1
73062306a36Sopenharmony_ci  { 0x1f, 16, NULL, NULL, PPC_OPERAND_VR },
73162306a36Sopenharmony_ci
73262306a36Sopenharmony_ci  /* The VB field in a VA, VX or VXR form instruction.  */
73362306a36Sopenharmony_ci#define VB VA + 1
73462306a36Sopenharmony_ci  { 0x1f, 11, NULL, NULL, PPC_OPERAND_VR },
73562306a36Sopenharmony_ci
73662306a36Sopenharmony_ci  /* The VC field in a VA form instruction.  */
73762306a36Sopenharmony_ci#define VC VB + 1
73862306a36Sopenharmony_ci  { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR },
73962306a36Sopenharmony_ci
74062306a36Sopenharmony_ci  /* The VD or VS field in a VA, VX, VXR or X form instruction.  */
74162306a36Sopenharmony_ci#define VD VC + 1
74262306a36Sopenharmony_ci#define VS VD
74362306a36Sopenharmony_ci  { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR },
74462306a36Sopenharmony_ci
74562306a36Sopenharmony_ci  /* The SIMM field in a VX form instruction, and TE in Z form.  */
74662306a36Sopenharmony_ci#define SIMM VD + 1
74762306a36Sopenharmony_ci#define TE SIMM
74862306a36Sopenharmony_ci  { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED},
74962306a36Sopenharmony_ci
75062306a36Sopenharmony_ci  /* The UIMM field in a VX form instruction.  */
75162306a36Sopenharmony_ci#define UIMM SIMM + 1
75262306a36Sopenharmony_ci#define DCTL UIMM
75362306a36Sopenharmony_ci  { 0x1f, 16, NULL, NULL, 0 },
75462306a36Sopenharmony_ci
75562306a36Sopenharmony_ci  /* The 3-bit UIMM field in a VX form instruction.  */
75662306a36Sopenharmony_ci#define UIMM3 UIMM + 1
75762306a36Sopenharmony_ci  { 0x7, 16, NULL, NULL, 0 },
75862306a36Sopenharmony_ci
75962306a36Sopenharmony_ci  /* The 6-bit UIM field in a X form instruction.  */
76062306a36Sopenharmony_ci#define UIM6 UIMM3 + 1
76162306a36Sopenharmony_ci  { 0x3f, 16, NULL, NULL, 0 },
76262306a36Sopenharmony_ci
76362306a36Sopenharmony_ci  /* The SIX field in a VX form instruction.  */
76462306a36Sopenharmony_ci#define SIX UIM6 + 1
76562306a36Sopenharmony_ci  { 0xf, 11, NULL, NULL, 0 },
76662306a36Sopenharmony_ci
76762306a36Sopenharmony_ci  /* The PS field in a VX form instruction.  */
76862306a36Sopenharmony_ci#define PS SIX + 1
76962306a36Sopenharmony_ci  { 0x1, 9, NULL, NULL, 0 },
77062306a36Sopenharmony_ci
77162306a36Sopenharmony_ci  /* The SHB field in a VA form instruction.  */
77262306a36Sopenharmony_ci#define SHB PS + 1
77362306a36Sopenharmony_ci  { 0xf, 6, NULL, NULL, 0 },
77462306a36Sopenharmony_ci
77562306a36Sopenharmony_ci  /* The other UIMM field in a half word EVX form instruction.  */
77662306a36Sopenharmony_ci#define EVUIMM_2 SHB + 1
77762306a36Sopenharmony_ci  { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS },
77862306a36Sopenharmony_ci
77962306a36Sopenharmony_ci  /* The other UIMM field in a word EVX form instruction.  */
78062306a36Sopenharmony_ci#define EVUIMM_4 EVUIMM_2 + 1
78162306a36Sopenharmony_ci  { 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS },
78262306a36Sopenharmony_ci
78362306a36Sopenharmony_ci  /* The other UIMM field in a double EVX form instruction.  */
78462306a36Sopenharmony_ci#define EVUIMM_8 EVUIMM_4 + 1
78562306a36Sopenharmony_ci  { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS },
78662306a36Sopenharmony_ci
78762306a36Sopenharmony_ci  /* The WS or DRM field in an X form instruction.  */
78862306a36Sopenharmony_ci#define WS EVUIMM_8 + 1
78962306a36Sopenharmony_ci#define DRM WS
79062306a36Sopenharmony_ci  { 0x7, 11, NULL, NULL, 0 },
79162306a36Sopenharmony_ci
79262306a36Sopenharmony_ci  /* PowerPC paired singles extensions.  */
79362306a36Sopenharmony_ci  /* W bit in the pair singles instructions for x type instructions.  */
79462306a36Sopenharmony_ci#define PSWM WS + 1
79562306a36Sopenharmony_ci  /* The BO16 field in a BD8 form instruction.  */
79662306a36Sopenharmony_ci#define BO16 PSWM
79762306a36Sopenharmony_ci  {  0x1, 10, 0, 0, 0 },
79862306a36Sopenharmony_ci
79962306a36Sopenharmony_ci  /* IDX bits for quantization in the pair singles instructions.  */
80062306a36Sopenharmony_ci#define PSQ PSWM + 1
80162306a36Sopenharmony_ci  {  0x7, 12, 0, 0, 0 },
80262306a36Sopenharmony_ci
80362306a36Sopenharmony_ci  /* IDX bits for quantization in the pair singles x-type instructions.  */
80462306a36Sopenharmony_ci#define PSQM PSQ + 1
80562306a36Sopenharmony_ci  {  0x7, 7, 0, 0, 0 },
80662306a36Sopenharmony_ci
80762306a36Sopenharmony_ci  /* Smaller D field for quantization in the pair singles instructions.  */
80862306a36Sopenharmony_ci#define PSD PSQM + 1
80962306a36Sopenharmony_ci  {  0xfff, 0, 0, 0,  PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
81062306a36Sopenharmony_ci
81162306a36Sopenharmony_ci  /* The L field in an mtmsrd or A form instruction or R or W in an X form.  */
81262306a36Sopenharmony_ci#define A_L PSD + 1
81362306a36Sopenharmony_ci#define W A_L
81462306a36Sopenharmony_ci#define X_R A_L
81562306a36Sopenharmony_ci  { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
81662306a36Sopenharmony_ci
81762306a36Sopenharmony_ci  /* The RMC or CY field in a Z23 form instruction.  */
81862306a36Sopenharmony_ci#define RMC A_L + 1
81962306a36Sopenharmony_ci#define CY RMC
82062306a36Sopenharmony_ci  { 0x3, 9, NULL, NULL, 0 },
82162306a36Sopenharmony_ci
82262306a36Sopenharmony_ci#define R RMC + 1
82362306a36Sopenharmony_ci  { 0x1, 16, NULL, NULL, 0 },
82462306a36Sopenharmony_ci
82562306a36Sopenharmony_ci#define RIC R + 1
82662306a36Sopenharmony_ci  { 0x3, 18, NULL, NULL, PPC_OPERAND_OPTIONAL },
82762306a36Sopenharmony_ci
82862306a36Sopenharmony_ci#define PRS RIC + 1
82962306a36Sopenharmony_ci  { 0x1, 17, NULL, NULL, PPC_OPERAND_OPTIONAL },
83062306a36Sopenharmony_ci
83162306a36Sopenharmony_ci#define SP PRS + 1
83262306a36Sopenharmony_ci  { 0x3, 19, NULL, NULL, 0 },
83362306a36Sopenharmony_ci
83462306a36Sopenharmony_ci#define S SP + 1
83562306a36Sopenharmony_ci  { 0x1, 20, NULL, NULL, 0 },
83662306a36Sopenharmony_ci
83762306a36Sopenharmony_ci  /* The S field in a XL form instruction.  */
83862306a36Sopenharmony_ci#define SXL S + 1
83962306a36Sopenharmony_ci  { 0x1, 11, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE},
84062306a36Sopenharmony_ci  /* If the SXL operand is ommitted, use the value 1.  */
84162306a36Sopenharmony_ci  { -1, 1, NULL, NULL, 0},
84262306a36Sopenharmony_ci
84362306a36Sopenharmony_ci  /* SH field starting at bit position 16.  */
84462306a36Sopenharmony_ci#define SH16 SXL + 2
84562306a36Sopenharmony_ci  /* The DCM and DGM fields in a Z form instruction.  */
84662306a36Sopenharmony_ci#define DCM SH16
84762306a36Sopenharmony_ci#define DGM DCM
84862306a36Sopenharmony_ci  { 0x3f, 10, NULL, NULL, 0 },
84962306a36Sopenharmony_ci
85062306a36Sopenharmony_ci  /* The EH field in larx instruction.  */
85162306a36Sopenharmony_ci#define EH SH16 + 1
85262306a36Sopenharmony_ci  { 0x1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL },
85362306a36Sopenharmony_ci
85462306a36Sopenharmony_ci  /* The L field in an mtfsf or XFL form instruction.  */
85562306a36Sopenharmony_ci  /* The A field in a HTM X form instruction.  */
85662306a36Sopenharmony_ci#define XFL_L EH + 1
85762306a36Sopenharmony_ci#define HTM_A XFL_L
85862306a36Sopenharmony_ci  { 0x1, 25, NULL, NULL, PPC_OPERAND_OPTIONAL},
85962306a36Sopenharmony_ci
86062306a36Sopenharmony_ci  /* Xilinx APU related masks and macros */
86162306a36Sopenharmony_ci#define FCRT XFL_L + 1
86262306a36Sopenharmony_ci#define FCRT_MASK (0x1f << 21)
86362306a36Sopenharmony_ci  { 0x1f, 21, 0, 0, PPC_OPERAND_FCR },
86462306a36Sopenharmony_ci
86562306a36Sopenharmony_ci  /* Xilinx FSL related masks and macros */
86662306a36Sopenharmony_ci#define FSL FCRT + 1
86762306a36Sopenharmony_ci#define FSL_MASK (0x1f << 11)
86862306a36Sopenharmony_ci  { 0x1f, 11, 0, 0, PPC_OPERAND_FSL },
86962306a36Sopenharmony_ci
87062306a36Sopenharmony_ci  /* Xilinx UDI related masks and macros */
87162306a36Sopenharmony_ci#define URT FSL + 1
87262306a36Sopenharmony_ci  { 0x1f, 21, 0, 0, PPC_OPERAND_UDI },
87362306a36Sopenharmony_ci
87462306a36Sopenharmony_ci#define URA URT + 1
87562306a36Sopenharmony_ci  { 0x1f, 16, 0, 0, PPC_OPERAND_UDI },
87662306a36Sopenharmony_ci
87762306a36Sopenharmony_ci#define URB URA + 1
87862306a36Sopenharmony_ci  { 0x1f, 11, 0, 0, PPC_OPERAND_UDI },
87962306a36Sopenharmony_ci
88062306a36Sopenharmony_ci#define URC URB + 1
88162306a36Sopenharmony_ci  { 0x1f, 6, 0, 0, PPC_OPERAND_UDI },
88262306a36Sopenharmony_ci
88362306a36Sopenharmony_ci  /* The VLESIMM field in a D form instruction.  */
88462306a36Sopenharmony_ci#define VLESIMM URC + 1
88562306a36Sopenharmony_ci  { 0xffff, PPC_OPSHIFT_INV, insert_vlesi, extract_vlesi,
88662306a36Sopenharmony_ci    PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
88762306a36Sopenharmony_ci
88862306a36Sopenharmony_ci  /* The VLENSIMM field in a D form instruction.  */
88962306a36Sopenharmony_ci#define VLENSIMM VLESIMM + 1
89062306a36Sopenharmony_ci  { 0xffff, PPC_OPSHIFT_INV, insert_vlensi, extract_vlensi,
89162306a36Sopenharmony_ci    PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
89262306a36Sopenharmony_ci
89362306a36Sopenharmony_ci  /* The VLEUIMM field in a D form instruction.  */
89462306a36Sopenharmony_ci#define VLEUIMM VLENSIMM + 1
89562306a36Sopenharmony_ci  { 0xffff, PPC_OPSHIFT_INV, insert_vleui, extract_vleui, 0 },
89662306a36Sopenharmony_ci
89762306a36Sopenharmony_ci  /* The VLEUIMML field in a D form instruction.  */
89862306a36Sopenharmony_ci#define VLEUIMML VLEUIMM + 1
89962306a36Sopenharmony_ci  { 0xffff, PPC_OPSHIFT_INV, insert_vleil, extract_vleil, 0 },
90062306a36Sopenharmony_ci
90162306a36Sopenharmony_ci  /* The XT and XS fields in an XX1 or XX3 form instruction.  This is split.  */
90262306a36Sopenharmony_ci#define XS6 VLEUIMML + 1
90362306a36Sopenharmony_ci#define XT6 XS6
90462306a36Sopenharmony_ci  { 0x3f, PPC_OPSHIFT_INV, insert_xt6, extract_xt6, PPC_OPERAND_VSR },
90562306a36Sopenharmony_ci
90662306a36Sopenharmony_ci  /* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
90762306a36Sopenharmony_ci#define XSQ6 XT6 + 1
90862306a36Sopenharmony_ci#define XTQ6 XSQ6
90962306a36Sopenharmony_ci  { 0x3f, PPC_OPSHIFT_INV, insert_xtq6, extract_xtq6, PPC_OPERAND_VSR },
91062306a36Sopenharmony_ci
91162306a36Sopenharmony_ci  /* The XA field in an XX3 form instruction.  This is split.  */
91262306a36Sopenharmony_ci#define XA6 XTQ6 + 1
91362306a36Sopenharmony_ci  { 0x3f, PPC_OPSHIFT_INV, insert_xa6, extract_xa6, PPC_OPERAND_VSR },
91462306a36Sopenharmony_ci
91562306a36Sopenharmony_ci  /* The XB field in an XX2 or XX3 form instruction.  This is split.  */
91662306a36Sopenharmony_ci#define XB6 XA6 + 1
91762306a36Sopenharmony_ci  { 0x3f, PPC_OPSHIFT_INV, insert_xb6, extract_xb6, PPC_OPERAND_VSR },
91862306a36Sopenharmony_ci
91962306a36Sopenharmony_ci  /* The XB field in an XX3 form instruction when it must be the same as
92062306a36Sopenharmony_ci     the XA field in the instruction.  This is used in extended mnemonics
92162306a36Sopenharmony_ci     like xvmovdp.  This is split.  */
92262306a36Sopenharmony_ci#define XB6S XB6 + 1
92362306a36Sopenharmony_ci  { 0x3f, PPC_OPSHIFT_INV, insert_xb6s, extract_xb6s, PPC_OPERAND_FAKE },
92462306a36Sopenharmony_ci
92562306a36Sopenharmony_ci  /* The XC field in an XX4 form instruction.  This is split.  */
92662306a36Sopenharmony_ci#define XC6 XB6S + 1
92762306a36Sopenharmony_ci  { 0x3f, PPC_OPSHIFT_INV, insert_xc6, extract_xc6, PPC_OPERAND_VSR },
92862306a36Sopenharmony_ci
92962306a36Sopenharmony_ci  /* The DM or SHW field in an XX3 form instruction.  */
93062306a36Sopenharmony_ci#define DM XC6 + 1
93162306a36Sopenharmony_ci#define SHW DM
93262306a36Sopenharmony_ci  { 0x3, 8, NULL, NULL, 0 },
93362306a36Sopenharmony_ci
93462306a36Sopenharmony_ci  /* The DM field in an extended mnemonic XX3 form instruction.  */
93562306a36Sopenharmony_ci#define DMEX DM + 1
93662306a36Sopenharmony_ci  { 0x3, 8, insert_dm, extract_dm, 0 },
93762306a36Sopenharmony_ci
93862306a36Sopenharmony_ci  /* The UIM field in an XX2 form instruction.  */
93962306a36Sopenharmony_ci#define UIM DMEX + 1
94062306a36Sopenharmony_ci  /* The 2-bit UIMM field in a VX form instruction.  */
94162306a36Sopenharmony_ci#define UIMM2 UIM
94262306a36Sopenharmony_ci  /* The 2-bit L field in a darn instruction.  */
94362306a36Sopenharmony_ci#define LRAND UIM
94462306a36Sopenharmony_ci  { 0x3, 16, NULL, NULL, 0 },
94562306a36Sopenharmony_ci
94662306a36Sopenharmony_ci#define ERAT_T UIM + 1
94762306a36Sopenharmony_ci  { 0x7, 21, NULL, NULL, 0 },
94862306a36Sopenharmony_ci
94962306a36Sopenharmony_ci#define IH ERAT_T + 1
95062306a36Sopenharmony_ci  { 0x7, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
95162306a36Sopenharmony_ci
95262306a36Sopenharmony_ci  /* The 8-bit IMM8 field in a XX1 form instruction.  */
95362306a36Sopenharmony_ci#define IMM8 IH + 1
95462306a36Sopenharmony_ci  { 0xff, 11, NULL, NULL, PPC_OPERAND_SIGNOPT },
95562306a36Sopenharmony_ci};
95662306a36Sopenharmony_ci
95762306a36Sopenharmony_ciconst unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
95862306a36Sopenharmony_ci					   / sizeof (powerpc_operands[0]));
95962306a36Sopenharmony_ci
96062306a36Sopenharmony_ci/* The functions used to insert and extract complicated operands.  */
96162306a36Sopenharmony_ci
96262306a36Sopenharmony_ci/* The ARX, ARY, RX and RY operands are alternate encodings of GPRs.  */
96362306a36Sopenharmony_ci
96462306a36Sopenharmony_cistatic unsigned long
96562306a36Sopenharmony_ciinsert_arx (unsigned long insn,
96662306a36Sopenharmony_ci	    long value,
96762306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
96862306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
96962306a36Sopenharmony_ci{
97062306a36Sopenharmony_ci  if (value >= 8 && value < 24)
97162306a36Sopenharmony_ci    return insn | ((value - 8) & 0xf);
97262306a36Sopenharmony_ci  else
97362306a36Sopenharmony_ci    {
97462306a36Sopenharmony_ci      *errmsg = _("invalid register");
97562306a36Sopenharmony_ci      return 0;
97662306a36Sopenharmony_ci    }
97762306a36Sopenharmony_ci}
97862306a36Sopenharmony_ci
97962306a36Sopenharmony_cistatic long
98062306a36Sopenharmony_ciextract_arx (unsigned long insn,
98162306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
98262306a36Sopenharmony_ci	     int *invalid ATTRIBUTE_UNUSED)
98362306a36Sopenharmony_ci{
98462306a36Sopenharmony_ci  return (insn & 0xf) + 8;
98562306a36Sopenharmony_ci}
98662306a36Sopenharmony_ci
98762306a36Sopenharmony_cistatic unsigned long
98862306a36Sopenharmony_ciinsert_ary (unsigned long insn,
98962306a36Sopenharmony_ci	    long value,
99062306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
99162306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
99262306a36Sopenharmony_ci{
99362306a36Sopenharmony_ci  if (value >= 8 && value < 24)
99462306a36Sopenharmony_ci    return insn | (((value - 8) & 0xf) << 4);
99562306a36Sopenharmony_ci  else
99662306a36Sopenharmony_ci    {
99762306a36Sopenharmony_ci      *errmsg = _("invalid register");
99862306a36Sopenharmony_ci      return 0;
99962306a36Sopenharmony_ci    }
100062306a36Sopenharmony_ci}
100162306a36Sopenharmony_ci
100262306a36Sopenharmony_cistatic long
100362306a36Sopenharmony_ciextract_ary (unsigned long insn,
100462306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
100562306a36Sopenharmony_ci	     int *invalid ATTRIBUTE_UNUSED)
100662306a36Sopenharmony_ci{
100762306a36Sopenharmony_ci  return ((insn >> 4) & 0xf) + 8;
100862306a36Sopenharmony_ci}
100962306a36Sopenharmony_ci
101062306a36Sopenharmony_cistatic unsigned long
101162306a36Sopenharmony_ciinsert_rx (unsigned long insn,
101262306a36Sopenharmony_ci	   long value,
101362306a36Sopenharmony_ci	   ppc_cpu_t dialect ATTRIBUTE_UNUSED,
101462306a36Sopenharmony_ci	   const char **errmsg)
101562306a36Sopenharmony_ci{
101662306a36Sopenharmony_ci  if (value >= 0 && value < 8)
101762306a36Sopenharmony_ci    return insn | value;
101862306a36Sopenharmony_ci  else if (value >= 24 && value <= 31)
101962306a36Sopenharmony_ci    return insn | (value - 16);
102062306a36Sopenharmony_ci  else
102162306a36Sopenharmony_ci    {
102262306a36Sopenharmony_ci      *errmsg = _("invalid register");
102362306a36Sopenharmony_ci      return 0;
102462306a36Sopenharmony_ci    }
102562306a36Sopenharmony_ci}
102662306a36Sopenharmony_ci
102762306a36Sopenharmony_cistatic long
102862306a36Sopenharmony_ciextract_rx (unsigned long insn,
102962306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
103062306a36Sopenharmony_ci	    int *invalid ATTRIBUTE_UNUSED)
103162306a36Sopenharmony_ci{
103262306a36Sopenharmony_ci  int value = insn & 0xf;
103362306a36Sopenharmony_ci  if (value >= 0 && value < 8)
103462306a36Sopenharmony_ci    return value;
103562306a36Sopenharmony_ci  else
103662306a36Sopenharmony_ci    return value + 16;
103762306a36Sopenharmony_ci}
103862306a36Sopenharmony_ci
103962306a36Sopenharmony_cistatic unsigned long
104062306a36Sopenharmony_ciinsert_ry (unsigned long insn,
104162306a36Sopenharmony_ci	   long value,
104262306a36Sopenharmony_ci	   ppc_cpu_t dialect ATTRIBUTE_UNUSED,
104362306a36Sopenharmony_ci	   const char **errmsg)
104462306a36Sopenharmony_ci{
104562306a36Sopenharmony_ci  if (value >= 0 && value < 8)
104662306a36Sopenharmony_ci    return insn | (value << 4);
104762306a36Sopenharmony_ci  else if (value >= 24 && value <= 31)
104862306a36Sopenharmony_ci    return insn | ((value - 16) << 4);
104962306a36Sopenharmony_ci  else
105062306a36Sopenharmony_ci    {
105162306a36Sopenharmony_ci      *errmsg = _("invalid register");
105262306a36Sopenharmony_ci      return 0;
105362306a36Sopenharmony_ci    }
105462306a36Sopenharmony_ci}
105562306a36Sopenharmony_ci
105662306a36Sopenharmony_cistatic long
105762306a36Sopenharmony_ciextract_ry (unsigned long insn,
105862306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
105962306a36Sopenharmony_ci	    int *invalid ATTRIBUTE_UNUSED)
106062306a36Sopenharmony_ci{
106162306a36Sopenharmony_ci  int value = (insn >> 4) & 0xf;
106262306a36Sopenharmony_ci  if (value >= 0 && value < 8)
106362306a36Sopenharmony_ci    return value;
106462306a36Sopenharmony_ci  else
106562306a36Sopenharmony_ci    return value + 16;
106662306a36Sopenharmony_ci}
106762306a36Sopenharmony_ci
106862306a36Sopenharmony_ci/* The BA field in an XL form instruction when it must be the same as
106962306a36Sopenharmony_ci   the BT field in the same instruction.  This operand is marked FAKE.
107062306a36Sopenharmony_ci   The insertion function just copies the BT field into the BA field,
107162306a36Sopenharmony_ci   and the extraction function just checks that the fields are the
107262306a36Sopenharmony_ci   same.  */
107362306a36Sopenharmony_ci
107462306a36Sopenharmony_cistatic unsigned long
107562306a36Sopenharmony_ciinsert_bat (unsigned long insn,
107662306a36Sopenharmony_ci	    long value ATTRIBUTE_UNUSED,
107762306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
107862306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
107962306a36Sopenharmony_ci{
108062306a36Sopenharmony_ci  return insn | (((insn >> 21) & 0x1f) << 16);
108162306a36Sopenharmony_ci}
108262306a36Sopenharmony_ci
108362306a36Sopenharmony_cistatic long
108462306a36Sopenharmony_ciextract_bat (unsigned long insn,
108562306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
108662306a36Sopenharmony_ci	     int *invalid)
108762306a36Sopenharmony_ci{
108862306a36Sopenharmony_ci  if (((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f))
108962306a36Sopenharmony_ci    *invalid = 1;
109062306a36Sopenharmony_ci  return 0;
109162306a36Sopenharmony_ci}
109262306a36Sopenharmony_ci
109362306a36Sopenharmony_ci/* The BB field in an XL form instruction when it must be the same as
109462306a36Sopenharmony_ci   the BA field in the same instruction.  This operand is marked FAKE.
109562306a36Sopenharmony_ci   The insertion function just copies the BA field into the BB field,
109662306a36Sopenharmony_ci   and the extraction function just checks that the fields are the
109762306a36Sopenharmony_ci   same.  */
109862306a36Sopenharmony_ci
109962306a36Sopenharmony_cistatic unsigned long
110062306a36Sopenharmony_ciinsert_bba (unsigned long insn,
110162306a36Sopenharmony_ci	    long value ATTRIBUTE_UNUSED,
110262306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
110362306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
110462306a36Sopenharmony_ci{
110562306a36Sopenharmony_ci  return insn | (((insn >> 16) & 0x1f) << 11);
110662306a36Sopenharmony_ci}
110762306a36Sopenharmony_ci
110862306a36Sopenharmony_cistatic long
110962306a36Sopenharmony_ciextract_bba (unsigned long insn,
111062306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
111162306a36Sopenharmony_ci	     int *invalid)
111262306a36Sopenharmony_ci{
111362306a36Sopenharmony_ci  if (((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
111462306a36Sopenharmony_ci    *invalid = 1;
111562306a36Sopenharmony_ci  return 0;
111662306a36Sopenharmony_ci}
111762306a36Sopenharmony_ci
111862306a36Sopenharmony_ci/* The BD field in a B form instruction when the - modifier is used.
111962306a36Sopenharmony_ci   This modifier means that the branch is not expected to be taken.
112062306a36Sopenharmony_ci   For chips built to versions of the architecture prior to version 2
112162306a36Sopenharmony_ci   (ie. not Power4 compatible), we set the y bit of the BO field to 1
112262306a36Sopenharmony_ci   if the offset is negative.  When extracting, we require that the y
112362306a36Sopenharmony_ci   bit be 1 and that the offset be positive, since if the y bit is 0
112462306a36Sopenharmony_ci   we just want to print the normal form of the instruction.
112562306a36Sopenharmony_ci   Power4 compatible targets use two bits, "a", and "t", instead of
112662306a36Sopenharmony_ci   the "y" bit.  "at" == 00 => no hint, "at" == 01 => unpredictable,
112762306a36Sopenharmony_ci   "at" == 10 => not taken, "at" == 11 => taken.  The "t" bit is 00001
112862306a36Sopenharmony_ci   in BO field, the "a" bit is 00010 for branch on CR(BI) and 01000
112962306a36Sopenharmony_ci   for branch on CTR.  We only handle the taken/not-taken hint here.
113062306a36Sopenharmony_ci   Note that we don't relax the conditions tested here when
113162306a36Sopenharmony_ci   disassembling with -Many because insns using extract_bdm and
113262306a36Sopenharmony_ci   extract_bdp always occur in pairs.  One or the other will always
113362306a36Sopenharmony_ci   be valid.  */
113462306a36Sopenharmony_ci
113562306a36Sopenharmony_ci#define ISA_V2 (PPC_OPCODE_POWER4 | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
113662306a36Sopenharmony_ci
113762306a36Sopenharmony_cistatic unsigned long
113862306a36Sopenharmony_ciinsert_bdm (unsigned long insn,
113962306a36Sopenharmony_ci	    long value,
114062306a36Sopenharmony_ci	    ppc_cpu_t dialect,
114162306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
114262306a36Sopenharmony_ci{
114362306a36Sopenharmony_ci  if ((dialect & ISA_V2) == 0)
114462306a36Sopenharmony_ci    {
114562306a36Sopenharmony_ci      if ((value & 0x8000) != 0)
114662306a36Sopenharmony_ci	insn |= 1 << 21;
114762306a36Sopenharmony_ci    }
114862306a36Sopenharmony_ci  else
114962306a36Sopenharmony_ci    {
115062306a36Sopenharmony_ci      if ((insn & (0x14 << 21)) == (0x04 << 21))
115162306a36Sopenharmony_ci	insn |= 0x02 << 21;
115262306a36Sopenharmony_ci      else if ((insn & (0x14 << 21)) == (0x10 << 21))
115362306a36Sopenharmony_ci	insn |= 0x08 << 21;
115462306a36Sopenharmony_ci    }
115562306a36Sopenharmony_ci  return insn | (value & 0xfffc);
115662306a36Sopenharmony_ci}
115762306a36Sopenharmony_ci
115862306a36Sopenharmony_cistatic long
115962306a36Sopenharmony_ciextract_bdm (unsigned long insn,
116062306a36Sopenharmony_ci	     ppc_cpu_t dialect,
116162306a36Sopenharmony_ci	     int *invalid)
116262306a36Sopenharmony_ci{
116362306a36Sopenharmony_ci  if ((dialect & ISA_V2) == 0)
116462306a36Sopenharmony_ci    {
116562306a36Sopenharmony_ci      if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
116662306a36Sopenharmony_ci	*invalid = 1;
116762306a36Sopenharmony_ci    }
116862306a36Sopenharmony_ci  else
116962306a36Sopenharmony_ci    {
117062306a36Sopenharmony_ci      if ((insn & (0x17 << 21)) != (0x06 << 21)
117162306a36Sopenharmony_ci	  && (insn & (0x1d << 21)) != (0x18 << 21))
117262306a36Sopenharmony_ci	*invalid = 1;
117362306a36Sopenharmony_ci    }
117462306a36Sopenharmony_ci
117562306a36Sopenharmony_ci  return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
117662306a36Sopenharmony_ci}
117762306a36Sopenharmony_ci
117862306a36Sopenharmony_ci/* The BD field in a B form instruction when the + modifier is used.
117962306a36Sopenharmony_ci   This is like BDM, above, except that the branch is expected to be
118062306a36Sopenharmony_ci   taken.  */
118162306a36Sopenharmony_ci
118262306a36Sopenharmony_cistatic unsigned long
118362306a36Sopenharmony_ciinsert_bdp (unsigned long insn,
118462306a36Sopenharmony_ci	    long value,
118562306a36Sopenharmony_ci	    ppc_cpu_t dialect,
118662306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
118762306a36Sopenharmony_ci{
118862306a36Sopenharmony_ci  if ((dialect & ISA_V2) == 0)
118962306a36Sopenharmony_ci    {
119062306a36Sopenharmony_ci      if ((value & 0x8000) == 0)
119162306a36Sopenharmony_ci	insn |= 1 << 21;
119262306a36Sopenharmony_ci    }
119362306a36Sopenharmony_ci  else
119462306a36Sopenharmony_ci    {
119562306a36Sopenharmony_ci      if ((insn & (0x14 << 21)) == (0x04 << 21))
119662306a36Sopenharmony_ci	insn |= 0x03 << 21;
119762306a36Sopenharmony_ci      else if ((insn & (0x14 << 21)) == (0x10 << 21))
119862306a36Sopenharmony_ci	insn |= 0x09 << 21;
119962306a36Sopenharmony_ci    }
120062306a36Sopenharmony_ci  return insn | (value & 0xfffc);
120162306a36Sopenharmony_ci}
120262306a36Sopenharmony_ci
120362306a36Sopenharmony_cistatic long
120462306a36Sopenharmony_ciextract_bdp (unsigned long insn,
120562306a36Sopenharmony_ci	     ppc_cpu_t dialect,
120662306a36Sopenharmony_ci	     int *invalid)
120762306a36Sopenharmony_ci{
120862306a36Sopenharmony_ci  if ((dialect & ISA_V2) == 0)
120962306a36Sopenharmony_ci    {
121062306a36Sopenharmony_ci      if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
121162306a36Sopenharmony_ci	*invalid = 1;
121262306a36Sopenharmony_ci    }
121362306a36Sopenharmony_ci  else
121462306a36Sopenharmony_ci    {
121562306a36Sopenharmony_ci      if ((insn & (0x17 << 21)) != (0x07 << 21)
121662306a36Sopenharmony_ci	  && (insn & (0x1d << 21)) != (0x19 << 21))
121762306a36Sopenharmony_ci	*invalid = 1;
121862306a36Sopenharmony_ci    }
121962306a36Sopenharmony_ci
122062306a36Sopenharmony_ci  return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
122162306a36Sopenharmony_ci}
122262306a36Sopenharmony_ci
122362306a36Sopenharmony_cistatic inline int
122462306a36Sopenharmony_civalid_bo_pre_v2 (long value)
122562306a36Sopenharmony_ci{
122662306a36Sopenharmony_ci  /* Certain encodings have bits that are required to be zero.
122762306a36Sopenharmony_ci     These are (z must be zero, y may be anything):
122862306a36Sopenharmony_ci	 0000y
122962306a36Sopenharmony_ci	 0001y
123062306a36Sopenharmony_ci	 001zy
123162306a36Sopenharmony_ci	 0100y
123262306a36Sopenharmony_ci	 0101y
123362306a36Sopenharmony_ci	 011zy
123462306a36Sopenharmony_ci	 1z00y
123562306a36Sopenharmony_ci	 1z01y
123662306a36Sopenharmony_ci	 1z1zz
123762306a36Sopenharmony_ci  */
123862306a36Sopenharmony_ci  if ((value & 0x14) == 0)
123962306a36Sopenharmony_ci    return 1;
124062306a36Sopenharmony_ci  else if ((value & 0x14) == 0x4)
124162306a36Sopenharmony_ci    return (value & 0x2) == 0;
124262306a36Sopenharmony_ci  else if ((value & 0x14) == 0x10)
124362306a36Sopenharmony_ci    return (value & 0x8) == 0;
124462306a36Sopenharmony_ci  else
124562306a36Sopenharmony_ci    return value == 0x14;
124662306a36Sopenharmony_ci}
124762306a36Sopenharmony_ci
124862306a36Sopenharmony_cistatic inline int
124962306a36Sopenharmony_civalid_bo_post_v2 (long value)
125062306a36Sopenharmony_ci{
125162306a36Sopenharmony_ci  /* Certain encodings have bits that are required to be zero.
125262306a36Sopenharmony_ci     These are (z must be zero, a & t may be anything):
125362306a36Sopenharmony_ci	 0000z
125462306a36Sopenharmony_ci	 0001z
125562306a36Sopenharmony_ci	 001at
125662306a36Sopenharmony_ci	 0100z
125762306a36Sopenharmony_ci	 0101z
125862306a36Sopenharmony_ci	 011at
125962306a36Sopenharmony_ci	 1a00t
126062306a36Sopenharmony_ci	 1a01t
126162306a36Sopenharmony_ci	 1z1zz
126262306a36Sopenharmony_ci  */
126362306a36Sopenharmony_ci  if ((value & 0x14) == 0)
126462306a36Sopenharmony_ci    return (value & 0x1) == 0;
126562306a36Sopenharmony_ci  else if ((value & 0x14) == 0x14)
126662306a36Sopenharmony_ci    return value == 0x14;
126762306a36Sopenharmony_ci  else
126862306a36Sopenharmony_ci    return 1;
126962306a36Sopenharmony_ci}
127062306a36Sopenharmony_ci
127162306a36Sopenharmony_ci/* Check for legal values of a BO field.  */
127262306a36Sopenharmony_ci
127362306a36Sopenharmony_cistatic int
127462306a36Sopenharmony_civalid_bo (long value, ppc_cpu_t dialect, int extract)
127562306a36Sopenharmony_ci{
127662306a36Sopenharmony_ci  int valid_y = valid_bo_pre_v2 (value);
127762306a36Sopenharmony_ci  int valid_at = valid_bo_post_v2 (value);
127862306a36Sopenharmony_ci
127962306a36Sopenharmony_ci  /* When disassembling with -Many, accept either encoding on the
128062306a36Sopenharmony_ci     second pass through opcodes.  */
128162306a36Sopenharmony_ci  if (extract && dialect == ~(ppc_cpu_t) PPC_OPCODE_ANY)
128262306a36Sopenharmony_ci    return valid_y || valid_at;
128362306a36Sopenharmony_ci  if ((dialect & ISA_V2) == 0)
128462306a36Sopenharmony_ci    return valid_y;
128562306a36Sopenharmony_ci  else
128662306a36Sopenharmony_ci    return valid_at;
128762306a36Sopenharmony_ci}
128862306a36Sopenharmony_ci
128962306a36Sopenharmony_ci/* The BO field in a B form instruction.  Warn about attempts to set
129062306a36Sopenharmony_ci   the field to an illegal value.  */
129162306a36Sopenharmony_ci
129262306a36Sopenharmony_cistatic unsigned long
129362306a36Sopenharmony_ciinsert_bo (unsigned long insn,
129462306a36Sopenharmony_ci	   long value,
129562306a36Sopenharmony_ci	   ppc_cpu_t dialect,
129662306a36Sopenharmony_ci	   const char **errmsg)
129762306a36Sopenharmony_ci{
129862306a36Sopenharmony_ci  if (!valid_bo (value, dialect, 0))
129962306a36Sopenharmony_ci    *errmsg = _("invalid conditional option");
130062306a36Sopenharmony_ci  else if (PPC_OP (insn) == 19 && (insn & 0x400) && ! (value & 4))
130162306a36Sopenharmony_ci    *errmsg = _("invalid counter access");
130262306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 21);
130362306a36Sopenharmony_ci}
130462306a36Sopenharmony_ci
130562306a36Sopenharmony_cistatic long
130662306a36Sopenharmony_ciextract_bo (unsigned long insn,
130762306a36Sopenharmony_ci	    ppc_cpu_t dialect,
130862306a36Sopenharmony_ci	    int *invalid)
130962306a36Sopenharmony_ci{
131062306a36Sopenharmony_ci  long value;
131162306a36Sopenharmony_ci
131262306a36Sopenharmony_ci  value = (insn >> 21) & 0x1f;
131362306a36Sopenharmony_ci  if (!valid_bo (value, dialect, 1))
131462306a36Sopenharmony_ci    *invalid = 1;
131562306a36Sopenharmony_ci  return value;
131662306a36Sopenharmony_ci}
131762306a36Sopenharmony_ci
131862306a36Sopenharmony_ci/* The BO field in a B form instruction when the + or - modifier is
131962306a36Sopenharmony_ci   used.  This is like the BO field, but it must be even.  When
132062306a36Sopenharmony_ci   extracting it, we force it to be even.  */
132162306a36Sopenharmony_ci
132262306a36Sopenharmony_cistatic unsigned long
132362306a36Sopenharmony_ciinsert_boe (unsigned long insn,
132462306a36Sopenharmony_ci	    long value,
132562306a36Sopenharmony_ci	    ppc_cpu_t dialect,
132662306a36Sopenharmony_ci	    const char **errmsg)
132762306a36Sopenharmony_ci{
132862306a36Sopenharmony_ci  if (!valid_bo (value, dialect, 0))
132962306a36Sopenharmony_ci    *errmsg = _("invalid conditional option");
133062306a36Sopenharmony_ci  else if (PPC_OP (insn) == 19 && (insn & 0x400) && ! (value & 4))
133162306a36Sopenharmony_ci    *errmsg = _("invalid counter access");
133262306a36Sopenharmony_ci  else if ((value & 1) != 0)
133362306a36Sopenharmony_ci    *errmsg = _("attempt to set y bit when using + or - modifier");
133462306a36Sopenharmony_ci
133562306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 21);
133662306a36Sopenharmony_ci}
133762306a36Sopenharmony_ci
133862306a36Sopenharmony_cistatic long
133962306a36Sopenharmony_ciextract_boe (unsigned long insn,
134062306a36Sopenharmony_ci	     ppc_cpu_t dialect,
134162306a36Sopenharmony_ci	     int *invalid)
134262306a36Sopenharmony_ci{
134362306a36Sopenharmony_ci  long value;
134462306a36Sopenharmony_ci
134562306a36Sopenharmony_ci  value = (insn >> 21) & 0x1f;
134662306a36Sopenharmony_ci  if (!valid_bo (value, dialect, 1))
134762306a36Sopenharmony_ci    *invalid = 1;
134862306a36Sopenharmony_ci  return value & 0x1e;
134962306a36Sopenharmony_ci}
135062306a36Sopenharmony_ci
135162306a36Sopenharmony_ci/* The DCMX field in a X form instruction when the field is split
135262306a36Sopenharmony_ci   into separate DC, DM and DX fields.  */
135362306a36Sopenharmony_ci
135462306a36Sopenharmony_cistatic unsigned long
135562306a36Sopenharmony_ciinsert_dcmxs (unsigned long insn,
135662306a36Sopenharmony_ci	    long value,
135762306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
135862306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
135962306a36Sopenharmony_ci{
136062306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3) | (value & 0x40);
136162306a36Sopenharmony_ci}
136262306a36Sopenharmony_ci
136362306a36Sopenharmony_cistatic long
136462306a36Sopenharmony_ciextract_dcmxs (unsigned long insn,
136562306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
136662306a36Sopenharmony_ci	     int *invalid ATTRIBUTE_UNUSED)
136762306a36Sopenharmony_ci{
136862306a36Sopenharmony_ci  return (insn & 0x40) | ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
136962306a36Sopenharmony_ci}
137062306a36Sopenharmony_ci
137162306a36Sopenharmony_ci/* The D field in a DX form instruction when the field is split
137262306a36Sopenharmony_ci   into separate D0, D1 and D2 fields.  */
137362306a36Sopenharmony_ci
137462306a36Sopenharmony_cistatic unsigned long
137562306a36Sopenharmony_ciinsert_dxd (unsigned long insn,
137662306a36Sopenharmony_ci	    long value,
137762306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
137862306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
137962306a36Sopenharmony_ci{
138062306a36Sopenharmony_ci  return insn | (value & 0xffc1) | ((value & 0x3e) << 15);
138162306a36Sopenharmony_ci}
138262306a36Sopenharmony_ci
138362306a36Sopenharmony_cistatic long
138462306a36Sopenharmony_ciextract_dxd (unsigned long insn,
138562306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
138662306a36Sopenharmony_ci	     int *invalid ATTRIBUTE_UNUSED)
138762306a36Sopenharmony_ci{
138862306a36Sopenharmony_ci  unsigned long dxd = (insn & 0xffc1) | ((insn >> 15) & 0x3e);
138962306a36Sopenharmony_ci  return (dxd ^ 0x8000) - 0x8000;
139062306a36Sopenharmony_ci}
139162306a36Sopenharmony_ci
139262306a36Sopenharmony_cistatic unsigned long
139362306a36Sopenharmony_ciinsert_dxdn (unsigned long insn,
139462306a36Sopenharmony_ci	    long value,
139562306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
139662306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
139762306a36Sopenharmony_ci{
139862306a36Sopenharmony_ci  return insert_dxd (insn, -value, dialect, errmsg);
139962306a36Sopenharmony_ci}
140062306a36Sopenharmony_ci
140162306a36Sopenharmony_cistatic long
140262306a36Sopenharmony_ciextract_dxdn (unsigned long insn,
140362306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
140462306a36Sopenharmony_ci	     int *invalid ATTRIBUTE_UNUSED)
140562306a36Sopenharmony_ci{
140662306a36Sopenharmony_ci  return -extract_dxd (insn, dialect, invalid);
140762306a36Sopenharmony_ci}
140862306a36Sopenharmony_ci
140962306a36Sopenharmony_ci/* FXM mask in mfcr and mtcrf instructions.  */
141062306a36Sopenharmony_ci
141162306a36Sopenharmony_cistatic unsigned long
141262306a36Sopenharmony_ciinsert_fxm (unsigned long insn,
141362306a36Sopenharmony_ci	    long value,
141462306a36Sopenharmony_ci	    ppc_cpu_t dialect,
141562306a36Sopenharmony_ci	    const char **errmsg)
141662306a36Sopenharmony_ci{
141762306a36Sopenharmony_ci  /* If we're handling the mfocrf and mtocrf insns ensure that exactly
141862306a36Sopenharmony_ci     one bit of the mask field is set.  */
141962306a36Sopenharmony_ci  if ((insn & (1 << 20)) != 0)
142062306a36Sopenharmony_ci    {
142162306a36Sopenharmony_ci      if (value == 0 || (value & -value) != value)
142262306a36Sopenharmony_ci	{
142362306a36Sopenharmony_ci	  *errmsg = _("invalid mask field");
142462306a36Sopenharmony_ci	  value = 0;
142562306a36Sopenharmony_ci	}
142662306a36Sopenharmony_ci    }
142762306a36Sopenharmony_ci
142862306a36Sopenharmony_ci  /* If only one bit of the FXM field is set, we can use the new form
142962306a36Sopenharmony_ci     of the instruction, which is faster.  Unlike the Power4 branch hint
143062306a36Sopenharmony_ci     encoding, this is not backward compatible.  Do not generate the
143162306a36Sopenharmony_ci     new form unless -mpower4 has been given, or -many and the two
143262306a36Sopenharmony_ci     operand form of mfcr was used.  */
143362306a36Sopenharmony_ci  else if (value > 0
143462306a36Sopenharmony_ci	   && (value & -value) == value
143562306a36Sopenharmony_ci	   && ((dialect & PPC_OPCODE_POWER4) != 0
143662306a36Sopenharmony_ci	       || ((dialect & PPC_OPCODE_ANY) != 0
143762306a36Sopenharmony_ci		   && (insn & (0x3ff << 1)) == 19 << 1)))
143862306a36Sopenharmony_ci    insn |= 1 << 20;
143962306a36Sopenharmony_ci
144062306a36Sopenharmony_ci  /* Any other value on mfcr is an error.  */
144162306a36Sopenharmony_ci  else if ((insn & (0x3ff << 1)) == 19 << 1)
144262306a36Sopenharmony_ci    {
144362306a36Sopenharmony_ci      /* A value of -1 means we used the one operand form of
144462306a36Sopenharmony_ci	 mfcr which is valid.  */
144562306a36Sopenharmony_ci      if (value != -1)
144662306a36Sopenharmony_ci        *errmsg = _("invalid mfcr mask");
144762306a36Sopenharmony_ci      value = 0;
144862306a36Sopenharmony_ci    }
144962306a36Sopenharmony_ci
145062306a36Sopenharmony_ci  return insn | ((value & 0xff) << 12);
145162306a36Sopenharmony_ci}
145262306a36Sopenharmony_ci
145362306a36Sopenharmony_cistatic long
145462306a36Sopenharmony_ciextract_fxm (unsigned long insn,
145562306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
145662306a36Sopenharmony_ci	     int *invalid)
145762306a36Sopenharmony_ci{
145862306a36Sopenharmony_ci  long mask = (insn >> 12) & 0xff;
145962306a36Sopenharmony_ci
146062306a36Sopenharmony_ci  /* Is this a Power4 insn?  */
146162306a36Sopenharmony_ci  if ((insn & (1 << 20)) != 0)
146262306a36Sopenharmony_ci    {
146362306a36Sopenharmony_ci      /* Exactly one bit of MASK should be set.  */
146462306a36Sopenharmony_ci      if (mask == 0 || (mask & -mask) != mask)
146562306a36Sopenharmony_ci	*invalid = 1;
146662306a36Sopenharmony_ci    }
146762306a36Sopenharmony_ci
146862306a36Sopenharmony_ci  /* Check that non-power4 form of mfcr has a zero MASK.  */
146962306a36Sopenharmony_ci  else if ((insn & (0x3ff << 1)) == 19 << 1)
147062306a36Sopenharmony_ci    {
147162306a36Sopenharmony_ci      if (mask != 0)
147262306a36Sopenharmony_ci	*invalid = 1;
147362306a36Sopenharmony_ci      else
147462306a36Sopenharmony_ci	mask = -1;
147562306a36Sopenharmony_ci    }
147662306a36Sopenharmony_ci
147762306a36Sopenharmony_ci  return mask;
147862306a36Sopenharmony_ci}
147962306a36Sopenharmony_ci
148062306a36Sopenharmony_cistatic unsigned long
148162306a36Sopenharmony_ciinsert_li20 (unsigned long insn,
148262306a36Sopenharmony_ci	     long value,
148362306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
148462306a36Sopenharmony_ci	     const char **errmsg ATTRIBUTE_UNUSED)
148562306a36Sopenharmony_ci{
148662306a36Sopenharmony_ci  return insn | ((value & 0xf0000) >> 5) | ((value & 0x0f800) << 5) | (value & 0x7ff);
148762306a36Sopenharmony_ci}
148862306a36Sopenharmony_ci
148962306a36Sopenharmony_cistatic long
149062306a36Sopenharmony_ciextract_li20 (unsigned long insn,
149162306a36Sopenharmony_ci	      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
149262306a36Sopenharmony_ci	      int *invalid ATTRIBUTE_UNUSED)
149362306a36Sopenharmony_ci{
149462306a36Sopenharmony_ci  long ext = ((insn & 0x4000) == 0x4000) ? 0xfff00000 : 0x00000000;
149562306a36Sopenharmony_ci
149662306a36Sopenharmony_ci  return ext
149762306a36Sopenharmony_ci         | (((insn >> 11) & 0xf) << 16)
149862306a36Sopenharmony_ci         | (((insn >> 17) & 0xf) << 12)
149962306a36Sopenharmony_ci         | (((insn >> 16) & 0x1) << 11)
150062306a36Sopenharmony_ci         | (insn & 0x7ff);
150162306a36Sopenharmony_ci}
150262306a36Sopenharmony_ci
150362306a36Sopenharmony_ci/* The 2-bit L field in a SYNC or WC field in a WAIT instruction.
150462306a36Sopenharmony_ci   For SYNC, some L values are reserved:
150562306a36Sopenharmony_ci     * Value 3 is reserved on newer server cpus.
150662306a36Sopenharmony_ci     * Values 2 and 3 are reserved on all other cpus.  */
150762306a36Sopenharmony_ci
150862306a36Sopenharmony_cistatic unsigned long
150962306a36Sopenharmony_ciinsert_ls (unsigned long insn,
151062306a36Sopenharmony_ci	   long value,
151162306a36Sopenharmony_ci	   ppc_cpu_t dialect,
151262306a36Sopenharmony_ci	   const char **errmsg)
151362306a36Sopenharmony_ci{
151462306a36Sopenharmony_ci  /* For SYNC, some L values are illegal.  */
151562306a36Sopenharmony_ci  if (((insn >> 1) & 0x3ff) == 598)
151662306a36Sopenharmony_ci    {
151762306a36Sopenharmony_ci      long max_lvalue = (dialect & PPC_OPCODE_POWER4) ? 2 : 1;
151862306a36Sopenharmony_ci      if (value > max_lvalue)
151962306a36Sopenharmony_ci	{
152062306a36Sopenharmony_ci	  *errmsg = _("illegal L operand value");
152162306a36Sopenharmony_ci	  return insn;
152262306a36Sopenharmony_ci	}
152362306a36Sopenharmony_ci    }
152462306a36Sopenharmony_ci
152562306a36Sopenharmony_ci  return insn | ((value & 0x3) << 21);
152662306a36Sopenharmony_ci}
152762306a36Sopenharmony_ci
152862306a36Sopenharmony_ci/* The 4-bit E field in a sync instruction that accepts 2 operands.
152962306a36Sopenharmony_ci   If ESYNC is non-zero, then the L field must be either 0 or 1 and
153062306a36Sopenharmony_ci   the complement of ESYNC-bit2.  */
153162306a36Sopenharmony_ci
153262306a36Sopenharmony_cistatic unsigned long
153362306a36Sopenharmony_ciinsert_esync (unsigned long insn,
153462306a36Sopenharmony_ci	      long value,
153562306a36Sopenharmony_ci	      ppc_cpu_t dialect,
153662306a36Sopenharmony_ci	      const char **errmsg)
153762306a36Sopenharmony_ci{
153862306a36Sopenharmony_ci  unsigned long ls = (insn >> 21) & 0x03;
153962306a36Sopenharmony_ci
154062306a36Sopenharmony_ci  if (value == 0)
154162306a36Sopenharmony_ci    {
154262306a36Sopenharmony_ci      if (((dialect & PPC_OPCODE_E6500) != 0 && ls > 1)
154362306a36Sopenharmony_ci	  || ((dialect & PPC_OPCODE_POWER9) != 0 && ls > 2))
154462306a36Sopenharmony_ci        *errmsg = _("illegal L operand value");
154562306a36Sopenharmony_ci      return insn;
154662306a36Sopenharmony_ci    }
154762306a36Sopenharmony_ci
154862306a36Sopenharmony_ci  if ((ls & ~0x1)
154962306a36Sopenharmony_ci      || (((value >> 1) & 0x1) ^ ls) == 0)
155062306a36Sopenharmony_ci        *errmsg = _("incompatible L operand value");
155162306a36Sopenharmony_ci
155262306a36Sopenharmony_ci  return insn | ((value & 0xf) << 16);
155362306a36Sopenharmony_ci}
155462306a36Sopenharmony_ci
155562306a36Sopenharmony_ci/* The MB and ME fields in an M form instruction expressed as a single
155662306a36Sopenharmony_ci   operand which is itself a bitmask.  The extraction function always
155762306a36Sopenharmony_ci   marks it as invalid, since we never want to recognize an
155862306a36Sopenharmony_ci   instruction which uses a field of this type.  */
155962306a36Sopenharmony_ci
156062306a36Sopenharmony_cistatic unsigned long
156162306a36Sopenharmony_ciinsert_mbe (unsigned long insn,
156262306a36Sopenharmony_ci	    long value,
156362306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
156462306a36Sopenharmony_ci	    const char **errmsg)
156562306a36Sopenharmony_ci{
156662306a36Sopenharmony_ci  unsigned long uval, mask;
156762306a36Sopenharmony_ci  int mb, me, mx, count, last;
156862306a36Sopenharmony_ci
156962306a36Sopenharmony_ci  uval = value;
157062306a36Sopenharmony_ci
157162306a36Sopenharmony_ci  if (uval == 0)
157262306a36Sopenharmony_ci    {
157362306a36Sopenharmony_ci      *errmsg = _("illegal bitmask");
157462306a36Sopenharmony_ci      return insn;
157562306a36Sopenharmony_ci    }
157662306a36Sopenharmony_ci
157762306a36Sopenharmony_ci  mb = 0;
157862306a36Sopenharmony_ci  me = 32;
157962306a36Sopenharmony_ci  if ((uval & 1) != 0)
158062306a36Sopenharmony_ci    last = 1;
158162306a36Sopenharmony_ci  else
158262306a36Sopenharmony_ci    last = 0;
158362306a36Sopenharmony_ci  count = 0;
158462306a36Sopenharmony_ci
158562306a36Sopenharmony_ci  /* mb: location of last 0->1 transition */
158662306a36Sopenharmony_ci  /* me: location of last 1->0 transition */
158762306a36Sopenharmony_ci  /* count: # transitions */
158862306a36Sopenharmony_ci
158962306a36Sopenharmony_ci  for (mx = 0, mask = 1L << 31; mx < 32; ++mx, mask >>= 1)
159062306a36Sopenharmony_ci    {
159162306a36Sopenharmony_ci      if ((uval & mask) && !last)
159262306a36Sopenharmony_ci	{
159362306a36Sopenharmony_ci	  ++count;
159462306a36Sopenharmony_ci	  mb = mx;
159562306a36Sopenharmony_ci	  last = 1;
159662306a36Sopenharmony_ci	}
159762306a36Sopenharmony_ci      else if (!(uval & mask) && last)
159862306a36Sopenharmony_ci	{
159962306a36Sopenharmony_ci	  ++count;
160062306a36Sopenharmony_ci	  me = mx;
160162306a36Sopenharmony_ci	  last = 0;
160262306a36Sopenharmony_ci	}
160362306a36Sopenharmony_ci    }
160462306a36Sopenharmony_ci  if (me == 0)
160562306a36Sopenharmony_ci    me = 32;
160662306a36Sopenharmony_ci
160762306a36Sopenharmony_ci  if (count != 2 && (count != 0 || ! last))
160862306a36Sopenharmony_ci    *errmsg = _("illegal bitmask");
160962306a36Sopenharmony_ci
161062306a36Sopenharmony_ci  return insn | (mb << 6) | ((me - 1) << 1);
161162306a36Sopenharmony_ci}
161262306a36Sopenharmony_ci
161362306a36Sopenharmony_cistatic long
161462306a36Sopenharmony_ciextract_mbe (unsigned long insn,
161562306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
161662306a36Sopenharmony_ci	     int *invalid)
161762306a36Sopenharmony_ci{
161862306a36Sopenharmony_ci  long ret;
161962306a36Sopenharmony_ci  int mb, me;
162062306a36Sopenharmony_ci  int i;
162162306a36Sopenharmony_ci
162262306a36Sopenharmony_ci  *invalid = 1;
162362306a36Sopenharmony_ci
162462306a36Sopenharmony_ci  mb = (insn >> 6) & 0x1f;
162562306a36Sopenharmony_ci  me = (insn >> 1) & 0x1f;
162662306a36Sopenharmony_ci  if (mb < me + 1)
162762306a36Sopenharmony_ci    {
162862306a36Sopenharmony_ci      ret = 0;
162962306a36Sopenharmony_ci      for (i = mb; i <= me; i++)
163062306a36Sopenharmony_ci	ret |= 1L << (31 - i);
163162306a36Sopenharmony_ci    }
163262306a36Sopenharmony_ci  else if (mb == me + 1)
163362306a36Sopenharmony_ci    ret = ~0;
163462306a36Sopenharmony_ci  else /* (mb > me + 1) */
163562306a36Sopenharmony_ci    {
163662306a36Sopenharmony_ci      ret = ~0;
163762306a36Sopenharmony_ci      for (i = me + 1; i < mb; i++)
163862306a36Sopenharmony_ci	ret &= ~(1L << (31 - i));
163962306a36Sopenharmony_ci    }
164062306a36Sopenharmony_ci  return ret;
164162306a36Sopenharmony_ci}
164262306a36Sopenharmony_ci
164362306a36Sopenharmony_ci/* The MB or ME field in an MD or MDS form instruction.  The high bit
164462306a36Sopenharmony_ci   is wrapped to the low end.  */
164562306a36Sopenharmony_ci
164662306a36Sopenharmony_cistatic unsigned long
164762306a36Sopenharmony_ciinsert_mb6 (unsigned long insn,
164862306a36Sopenharmony_ci	    long value,
164962306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
165062306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
165162306a36Sopenharmony_ci{
165262306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 6) | (value & 0x20);
165362306a36Sopenharmony_ci}
165462306a36Sopenharmony_ci
165562306a36Sopenharmony_cistatic long
165662306a36Sopenharmony_ciextract_mb6 (unsigned long insn,
165762306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
165862306a36Sopenharmony_ci	     int *invalid ATTRIBUTE_UNUSED)
165962306a36Sopenharmony_ci{
166062306a36Sopenharmony_ci  return ((insn >> 6) & 0x1f) | (insn & 0x20);
166162306a36Sopenharmony_ci}
166262306a36Sopenharmony_ci
166362306a36Sopenharmony_ci/* The NB field in an X form instruction.  The value 32 is stored as
166462306a36Sopenharmony_ci   0.  */
166562306a36Sopenharmony_ci
166662306a36Sopenharmony_cistatic long
166762306a36Sopenharmony_ciextract_nb (unsigned long insn,
166862306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
166962306a36Sopenharmony_ci	    int *invalid ATTRIBUTE_UNUSED)
167062306a36Sopenharmony_ci{
167162306a36Sopenharmony_ci  long ret;
167262306a36Sopenharmony_ci
167362306a36Sopenharmony_ci  ret = (insn >> 11) & 0x1f;
167462306a36Sopenharmony_ci  if (ret == 0)
167562306a36Sopenharmony_ci    ret = 32;
167662306a36Sopenharmony_ci  return ret;
167762306a36Sopenharmony_ci}
167862306a36Sopenharmony_ci
167962306a36Sopenharmony_ci/* The NB field in an lswi instruction, which has special value
168062306a36Sopenharmony_ci   restrictions.  The value 32 is stored as 0.  */
168162306a36Sopenharmony_ci
168262306a36Sopenharmony_cistatic unsigned long
168362306a36Sopenharmony_ciinsert_nbi (unsigned long insn,
168462306a36Sopenharmony_ci	    long value,
168562306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
168662306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
168762306a36Sopenharmony_ci{
168862306a36Sopenharmony_ci  long rtvalue = (insn & RT_MASK) >> 21;
168962306a36Sopenharmony_ci  long ravalue = (insn & RA_MASK) >> 16;
169062306a36Sopenharmony_ci
169162306a36Sopenharmony_ci  if (value == 0)
169262306a36Sopenharmony_ci    value = 32;
169362306a36Sopenharmony_ci  if (rtvalue + (value + 3) / 4 > (rtvalue > ravalue ? ravalue + 32
169462306a36Sopenharmony_ci						     : ravalue))
169562306a36Sopenharmony_ci    *errmsg = _("address register in load range");
169662306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 11);
169762306a36Sopenharmony_ci}
169862306a36Sopenharmony_ci
169962306a36Sopenharmony_ci/* The NSI field in a D form instruction.  This is the same as the SI
170062306a36Sopenharmony_ci   field, only negated.  The extraction function always marks it as
170162306a36Sopenharmony_ci   invalid, since we never want to recognize an instruction which uses
170262306a36Sopenharmony_ci   a field of this type.  */
170362306a36Sopenharmony_ci
170462306a36Sopenharmony_cistatic unsigned long
170562306a36Sopenharmony_ciinsert_nsi (unsigned long insn,
170662306a36Sopenharmony_ci	    long value,
170762306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
170862306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
170962306a36Sopenharmony_ci{
171062306a36Sopenharmony_ci  return insn | (-value & 0xffff);
171162306a36Sopenharmony_ci}
171262306a36Sopenharmony_ci
171362306a36Sopenharmony_cistatic long
171462306a36Sopenharmony_ciextract_nsi (unsigned long insn,
171562306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
171662306a36Sopenharmony_ci	     int *invalid)
171762306a36Sopenharmony_ci{
171862306a36Sopenharmony_ci  *invalid = 1;
171962306a36Sopenharmony_ci  return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
172062306a36Sopenharmony_ci}
172162306a36Sopenharmony_ci
172262306a36Sopenharmony_ci/* The RA field in a D or X form instruction which is an updating
172362306a36Sopenharmony_ci   load, which means that the RA field may not be zero and may not
172462306a36Sopenharmony_ci   equal the RT field.  */
172562306a36Sopenharmony_ci
172662306a36Sopenharmony_cistatic unsigned long
172762306a36Sopenharmony_ciinsert_ral (unsigned long insn,
172862306a36Sopenharmony_ci	    long value,
172962306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
173062306a36Sopenharmony_ci	    const char **errmsg)
173162306a36Sopenharmony_ci{
173262306a36Sopenharmony_ci  if (value == 0
173362306a36Sopenharmony_ci      || (unsigned long) value == ((insn >> 21) & 0x1f))
173462306a36Sopenharmony_ci    *errmsg = "invalid register operand when updating";
173562306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 16);
173662306a36Sopenharmony_ci}
173762306a36Sopenharmony_ci
173862306a36Sopenharmony_ci/* The RA field in an lmw instruction, which has special value
173962306a36Sopenharmony_ci   restrictions.  */
174062306a36Sopenharmony_ci
174162306a36Sopenharmony_cistatic unsigned long
174262306a36Sopenharmony_ciinsert_ram (unsigned long insn,
174362306a36Sopenharmony_ci	    long value,
174462306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
174562306a36Sopenharmony_ci	    const char **errmsg)
174662306a36Sopenharmony_ci{
174762306a36Sopenharmony_ci  if ((unsigned long) value >= ((insn >> 21) & 0x1f))
174862306a36Sopenharmony_ci    *errmsg = _("index register in load range");
174962306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 16);
175062306a36Sopenharmony_ci}
175162306a36Sopenharmony_ci
175262306a36Sopenharmony_ci/* The RA field in the DQ form lq or an lswx instruction, which have special
175362306a36Sopenharmony_ci   value restrictions.  */
175462306a36Sopenharmony_ci
175562306a36Sopenharmony_cistatic unsigned long
175662306a36Sopenharmony_ciinsert_raq (unsigned long insn,
175762306a36Sopenharmony_ci	    long value,
175862306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
175962306a36Sopenharmony_ci	    const char **errmsg)
176062306a36Sopenharmony_ci{
176162306a36Sopenharmony_ci  long rtvalue = (insn & RT_MASK) >> 21;
176262306a36Sopenharmony_ci
176362306a36Sopenharmony_ci  if (value == rtvalue)
176462306a36Sopenharmony_ci    *errmsg = _("source and target register operands must be different");
176562306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 16);
176662306a36Sopenharmony_ci}
176762306a36Sopenharmony_ci
176862306a36Sopenharmony_ci/* The RA field in a D or X form instruction which is an updating
176962306a36Sopenharmony_ci   store or an updating floating point load, which means that the RA
177062306a36Sopenharmony_ci   field may not be zero.  */
177162306a36Sopenharmony_ci
177262306a36Sopenharmony_cistatic unsigned long
177362306a36Sopenharmony_ciinsert_ras (unsigned long insn,
177462306a36Sopenharmony_ci	    long value,
177562306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
177662306a36Sopenharmony_ci	    const char **errmsg)
177762306a36Sopenharmony_ci{
177862306a36Sopenharmony_ci  if (value == 0)
177962306a36Sopenharmony_ci    *errmsg = _("invalid register operand when updating");
178062306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 16);
178162306a36Sopenharmony_ci}
178262306a36Sopenharmony_ci
178362306a36Sopenharmony_ci/* The RB field in an X form instruction when it must be the same as
178462306a36Sopenharmony_ci   the RS field in the instruction.  This is used for extended
178562306a36Sopenharmony_ci   mnemonics like mr.  This operand is marked FAKE.  The insertion
178662306a36Sopenharmony_ci   function just copies the BT field into the BA field, and the
178762306a36Sopenharmony_ci   extraction function just checks that the fields are the same.  */
178862306a36Sopenharmony_ci
178962306a36Sopenharmony_cistatic unsigned long
179062306a36Sopenharmony_ciinsert_rbs (unsigned long insn,
179162306a36Sopenharmony_ci	    long value ATTRIBUTE_UNUSED,
179262306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
179362306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
179462306a36Sopenharmony_ci{
179562306a36Sopenharmony_ci  return insn | (((insn >> 21) & 0x1f) << 11);
179662306a36Sopenharmony_ci}
179762306a36Sopenharmony_ci
179862306a36Sopenharmony_cistatic long
179962306a36Sopenharmony_ciextract_rbs (unsigned long insn,
180062306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
180162306a36Sopenharmony_ci	     int *invalid)
180262306a36Sopenharmony_ci{
180362306a36Sopenharmony_ci  if (((insn >> 21) & 0x1f) != ((insn >> 11) & 0x1f))
180462306a36Sopenharmony_ci    *invalid = 1;
180562306a36Sopenharmony_ci  return 0;
180662306a36Sopenharmony_ci}
180762306a36Sopenharmony_ci
180862306a36Sopenharmony_ci/* The RB field in an lswx instruction, which has special value
180962306a36Sopenharmony_ci   restrictions.  */
181062306a36Sopenharmony_ci
181162306a36Sopenharmony_cistatic unsigned long
181262306a36Sopenharmony_ciinsert_rbx (unsigned long insn,
181362306a36Sopenharmony_ci	    long value,
181462306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
181562306a36Sopenharmony_ci	    const char **errmsg)
181662306a36Sopenharmony_ci{
181762306a36Sopenharmony_ci  long rtvalue = (insn & RT_MASK) >> 21;
181862306a36Sopenharmony_ci
181962306a36Sopenharmony_ci  if (value == rtvalue)
182062306a36Sopenharmony_ci    *errmsg = _("source and target register operands must be different");
182162306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 11);
182262306a36Sopenharmony_ci}
182362306a36Sopenharmony_ci
182462306a36Sopenharmony_ci/* The SCI8 field is made up of SCL and {U,N}I8 fields.  */
182562306a36Sopenharmony_cistatic unsigned long
182662306a36Sopenharmony_ciinsert_sci8 (unsigned long insn,
182762306a36Sopenharmony_ci	     long value,
182862306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
182962306a36Sopenharmony_ci	     const char **errmsg)
183062306a36Sopenharmony_ci{
183162306a36Sopenharmony_ci  unsigned int fill_scale = 0;
183262306a36Sopenharmony_ci  unsigned long ui8 = value;
183362306a36Sopenharmony_ci
183462306a36Sopenharmony_ci  if ((ui8 & 0xffffff00) == 0)
183562306a36Sopenharmony_ci    ;
183662306a36Sopenharmony_ci  else if ((ui8 & 0xffffff00) == 0xffffff00)
183762306a36Sopenharmony_ci    fill_scale = 0x400;
183862306a36Sopenharmony_ci  else if ((ui8 & 0xffff00ff) == 0)
183962306a36Sopenharmony_ci    {
184062306a36Sopenharmony_ci      fill_scale = 1 << 8;
184162306a36Sopenharmony_ci      ui8 >>= 8;
184262306a36Sopenharmony_ci    }
184362306a36Sopenharmony_ci  else if ((ui8 & 0xffff00ff) == 0xffff00ff)
184462306a36Sopenharmony_ci    {
184562306a36Sopenharmony_ci      fill_scale = 0x400 | (1 << 8);
184662306a36Sopenharmony_ci      ui8 >>= 8;
184762306a36Sopenharmony_ci    }
184862306a36Sopenharmony_ci  else if ((ui8 & 0xff00ffff) == 0)
184962306a36Sopenharmony_ci    {
185062306a36Sopenharmony_ci      fill_scale = 2 << 8;
185162306a36Sopenharmony_ci      ui8 >>= 16;
185262306a36Sopenharmony_ci    }
185362306a36Sopenharmony_ci  else if ((ui8 & 0xff00ffff) == 0xff00ffff)
185462306a36Sopenharmony_ci    {
185562306a36Sopenharmony_ci      fill_scale = 0x400 | (2 << 8);
185662306a36Sopenharmony_ci      ui8 >>= 16;
185762306a36Sopenharmony_ci    }
185862306a36Sopenharmony_ci  else if ((ui8 & 0x00ffffff) == 0)
185962306a36Sopenharmony_ci    {
186062306a36Sopenharmony_ci      fill_scale = 3 << 8;
186162306a36Sopenharmony_ci      ui8 >>= 24;
186262306a36Sopenharmony_ci    }
186362306a36Sopenharmony_ci  else if ((ui8 & 0x00ffffff) == 0x00ffffff)
186462306a36Sopenharmony_ci    {
186562306a36Sopenharmony_ci      fill_scale = 0x400 | (3 << 8);
186662306a36Sopenharmony_ci      ui8 >>= 24;
186762306a36Sopenharmony_ci    }
186862306a36Sopenharmony_ci  else
186962306a36Sopenharmony_ci    {
187062306a36Sopenharmony_ci      *errmsg = _("illegal immediate value");
187162306a36Sopenharmony_ci      ui8 = 0;
187262306a36Sopenharmony_ci    }
187362306a36Sopenharmony_ci
187462306a36Sopenharmony_ci  return insn | fill_scale | (ui8 & 0xff);
187562306a36Sopenharmony_ci}
187662306a36Sopenharmony_ci
187762306a36Sopenharmony_cistatic long
187862306a36Sopenharmony_ciextract_sci8 (unsigned long insn,
187962306a36Sopenharmony_ci	      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
188062306a36Sopenharmony_ci	      int *invalid ATTRIBUTE_UNUSED)
188162306a36Sopenharmony_ci{
188262306a36Sopenharmony_ci  int fill = insn & 0x400;
188362306a36Sopenharmony_ci  int scale_factor = (insn & 0x300) >> 5;
188462306a36Sopenharmony_ci  long value = (insn & 0xff) << scale_factor;
188562306a36Sopenharmony_ci
188662306a36Sopenharmony_ci  if (fill != 0)
188762306a36Sopenharmony_ci    value |= ~((long) 0xff << scale_factor);
188862306a36Sopenharmony_ci  return value;
188962306a36Sopenharmony_ci}
189062306a36Sopenharmony_ci
189162306a36Sopenharmony_cistatic unsigned long
189262306a36Sopenharmony_ciinsert_sci8n (unsigned long insn,
189362306a36Sopenharmony_ci	      long value,
189462306a36Sopenharmony_ci	      ppc_cpu_t dialect,
189562306a36Sopenharmony_ci	      const char **errmsg)
189662306a36Sopenharmony_ci{
189762306a36Sopenharmony_ci  return insert_sci8 (insn, -value, dialect, errmsg);
189862306a36Sopenharmony_ci}
189962306a36Sopenharmony_ci
190062306a36Sopenharmony_cistatic long
190162306a36Sopenharmony_ciextract_sci8n (unsigned long insn,
190262306a36Sopenharmony_ci	       ppc_cpu_t dialect,
190362306a36Sopenharmony_ci	       int *invalid)
190462306a36Sopenharmony_ci{
190562306a36Sopenharmony_ci  return -extract_sci8 (insn, dialect, invalid);
190662306a36Sopenharmony_ci}
190762306a36Sopenharmony_ci
190862306a36Sopenharmony_cistatic unsigned long
190962306a36Sopenharmony_ciinsert_sd4h (unsigned long insn,
191062306a36Sopenharmony_ci	     long value,
191162306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
191262306a36Sopenharmony_ci	     const char **errmsg ATTRIBUTE_UNUSED)
191362306a36Sopenharmony_ci{
191462306a36Sopenharmony_ci  return insn | ((value & 0x1e) << 7);
191562306a36Sopenharmony_ci}
191662306a36Sopenharmony_ci
191762306a36Sopenharmony_cistatic long
191862306a36Sopenharmony_ciextract_sd4h (unsigned long insn,
191962306a36Sopenharmony_ci	      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
192062306a36Sopenharmony_ci	      int *invalid ATTRIBUTE_UNUSED)
192162306a36Sopenharmony_ci{
192262306a36Sopenharmony_ci  return ((insn >> 8) & 0xf) << 1;
192362306a36Sopenharmony_ci}
192462306a36Sopenharmony_ci
192562306a36Sopenharmony_cistatic unsigned long
192662306a36Sopenharmony_ciinsert_sd4w (unsigned long insn,
192762306a36Sopenharmony_ci	     long value,
192862306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
192962306a36Sopenharmony_ci	     const char **errmsg ATTRIBUTE_UNUSED)
193062306a36Sopenharmony_ci{
193162306a36Sopenharmony_ci  return insn | ((value & 0x3c) << 6);
193262306a36Sopenharmony_ci}
193362306a36Sopenharmony_ci
193462306a36Sopenharmony_cistatic long
193562306a36Sopenharmony_ciextract_sd4w (unsigned long insn,
193662306a36Sopenharmony_ci	      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
193762306a36Sopenharmony_ci	      int *invalid ATTRIBUTE_UNUSED)
193862306a36Sopenharmony_ci{
193962306a36Sopenharmony_ci  return ((insn >> 8) & 0xf) << 2;
194062306a36Sopenharmony_ci}
194162306a36Sopenharmony_ci
194262306a36Sopenharmony_cistatic unsigned long
194362306a36Sopenharmony_ciinsert_oimm (unsigned long insn,
194462306a36Sopenharmony_ci	     long value,
194562306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
194662306a36Sopenharmony_ci	     const char **errmsg ATTRIBUTE_UNUSED)
194762306a36Sopenharmony_ci{
194862306a36Sopenharmony_ci  return insn | (((value - 1) & 0x1f) << 4);
194962306a36Sopenharmony_ci}
195062306a36Sopenharmony_ci
195162306a36Sopenharmony_cistatic long
195262306a36Sopenharmony_ciextract_oimm (unsigned long insn,
195362306a36Sopenharmony_ci	      ppc_cpu_t dialect ATTRIBUTE_UNUSED,
195462306a36Sopenharmony_ci	      int *invalid ATTRIBUTE_UNUSED)
195562306a36Sopenharmony_ci{
195662306a36Sopenharmony_ci  return ((insn >> 4) & 0x1f) + 1;
195762306a36Sopenharmony_ci}
195862306a36Sopenharmony_ci
195962306a36Sopenharmony_ci/* The SH field in an MD form instruction.  This is split.  */
196062306a36Sopenharmony_ci
196162306a36Sopenharmony_cistatic unsigned long
196262306a36Sopenharmony_ciinsert_sh6 (unsigned long insn,
196362306a36Sopenharmony_ci	    long value,
196462306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
196562306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
196662306a36Sopenharmony_ci{
196762306a36Sopenharmony_ci  /* SH6 operand in the rldixor instructions.  */
196862306a36Sopenharmony_ci  if (PPC_OP (insn) == 4)
196962306a36Sopenharmony_ci    return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 5);
197062306a36Sopenharmony_ci  else
197162306a36Sopenharmony_ci    return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
197262306a36Sopenharmony_ci}
197362306a36Sopenharmony_ci
197462306a36Sopenharmony_cistatic long
197562306a36Sopenharmony_ciextract_sh6 (unsigned long insn,
197662306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
197762306a36Sopenharmony_ci	     int *invalid ATTRIBUTE_UNUSED)
197862306a36Sopenharmony_ci{
197962306a36Sopenharmony_ci  /* SH6 operand in the rldixor instructions.  */
198062306a36Sopenharmony_ci  if (PPC_OP (insn) == 4)
198162306a36Sopenharmony_ci    return ((insn >> 6) & 0x1f) | ((insn << 5) & 0x20);
198262306a36Sopenharmony_ci  else
198362306a36Sopenharmony_ci    return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
198462306a36Sopenharmony_ci}
198562306a36Sopenharmony_ci
198662306a36Sopenharmony_ci/* The SPR field in an XFX form instruction.  This is flipped--the
198762306a36Sopenharmony_ci   lower 5 bits are stored in the upper 5 and vice- versa.  */
198862306a36Sopenharmony_ci
198962306a36Sopenharmony_cistatic unsigned long
199062306a36Sopenharmony_ciinsert_spr (unsigned long insn,
199162306a36Sopenharmony_ci	    long value,
199262306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
199362306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
199462306a36Sopenharmony_ci{
199562306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
199662306a36Sopenharmony_ci}
199762306a36Sopenharmony_ci
199862306a36Sopenharmony_cistatic long
199962306a36Sopenharmony_ciextract_spr (unsigned long insn,
200062306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
200162306a36Sopenharmony_ci	     int *invalid ATTRIBUTE_UNUSED)
200262306a36Sopenharmony_ci{
200362306a36Sopenharmony_ci  return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
200462306a36Sopenharmony_ci}
200562306a36Sopenharmony_ci
200662306a36Sopenharmony_ci/* Some dialects have 8 SPRG registers instead of the standard 4.  */
200762306a36Sopenharmony_ci#define ALLOW8_SPRG (PPC_OPCODE_BOOKE | PPC_OPCODE_405)
200862306a36Sopenharmony_ci
200962306a36Sopenharmony_cistatic unsigned long
201062306a36Sopenharmony_ciinsert_sprg (unsigned long insn,
201162306a36Sopenharmony_ci	     long value,
201262306a36Sopenharmony_ci	     ppc_cpu_t dialect,
201362306a36Sopenharmony_ci	     const char **errmsg)
201462306a36Sopenharmony_ci{
201562306a36Sopenharmony_ci  if (value > 7
201662306a36Sopenharmony_ci      || (value > 3 && (dialect & ALLOW8_SPRG) == 0))
201762306a36Sopenharmony_ci    *errmsg = _("invalid sprg number");
201862306a36Sopenharmony_ci
201962306a36Sopenharmony_ci  /* If this is mfsprg4..7 then use spr 260..263 which can be read in
202062306a36Sopenharmony_ci     user mode.  Anything else must use spr 272..279.  */
202162306a36Sopenharmony_ci  if (value <= 3 || (insn & 0x100) != 0)
202262306a36Sopenharmony_ci    value |= 0x10;
202362306a36Sopenharmony_ci
202462306a36Sopenharmony_ci  return insn | ((value & 0x17) << 16);
202562306a36Sopenharmony_ci}
202662306a36Sopenharmony_ci
202762306a36Sopenharmony_cistatic long
202862306a36Sopenharmony_ciextract_sprg (unsigned long insn,
202962306a36Sopenharmony_ci	      ppc_cpu_t dialect,
203062306a36Sopenharmony_ci	      int *invalid)
203162306a36Sopenharmony_ci{
203262306a36Sopenharmony_ci  unsigned long val = (insn >> 16) & 0x1f;
203362306a36Sopenharmony_ci
203462306a36Sopenharmony_ci  /* mfsprg can use 260..263 and 272..279.  mtsprg only uses spr 272..279
203562306a36Sopenharmony_ci     If not BOOKE, 405 or VLE, then both use only 272..275.  */
203662306a36Sopenharmony_ci  if ((val - 0x10 > 3 && (dialect & ALLOW8_SPRG) == 0)
203762306a36Sopenharmony_ci      || (val - 0x10 > 7 && (insn & 0x100) != 0)
203862306a36Sopenharmony_ci      || val <= 3
203962306a36Sopenharmony_ci      || (val & 8) != 0)
204062306a36Sopenharmony_ci    *invalid = 1;
204162306a36Sopenharmony_ci  return val & 7;
204262306a36Sopenharmony_ci}
204362306a36Sopenharmony_ci
204462306a36Sopenharmony_ci/* The TBR field in an XFX instruction.  This is just like SPR, but it
204562306a36Sopenharmony_ci   is optional.  */
204662306a36Sopenharmony_ci
204762306a36Sopenharmony_cistatic unsigned long
204862306a36Sopenharmony_ciinsert_tbr (unsigned long insn,
204962306a36Sopenharmony_ci	    long value,
205062306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
205162306a36Sopenharmony_ci	    const char **errmsg)
205262306a36Sopenharmony_ci{
205362306a36Sopenharmony_ci  if (value != 268 && value != 269)
205462306a36Sopenharmony_ci    *errmsg = _("invalid tbr number");
205562306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
205662306a36Sopenharmony_ci}
205762306a36Sopenharmony_ci
205862306a36Sopenharmony_cistatic long
205962306a36Sopenharmony_ciextract_tbr (unsigned long insn,
206062306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
206162306a36Sopenharmony_ci	     int *invalid)
206262306a36Sopenharmony_ci{
206362306a36Sopenharmony_ci  long ret;
206462306a36Sopenharmony_ci
206562306a36Sopenharmony_ci  ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
206662306a36Sopenharmony_ci  if (ret != 268 && ret != 269)
206762306a36Sopenharmony_ci    *invalid = 1;
206862306a36Sopenharmony_ci  return ret;
206962306a36Sopenharmony_ci}
207062306a36Sopenharmony_ci
207162306a36Sopenharmony_ci/* The XT and XS fields in an XX1 or XX3 form instruction.  This is split.  */
207262306a36Sopenharmony_ci
207362306a36Sopenharmony_cistatic unsigned long
207462306a36Sopenharmony_ciinsert_xt6 (unsigned long insn,
207562306a36Sopenharmony_ci	    long value,
207662306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
207762306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
207862306a36Sopenharmony_ci{
207962306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 5);
208062306a36Sopenharmony_ci}
208162306a36Sopenharmony_ci
208262306a36Sopenharmony_cistatic long
208362306a36Sopenharmony_ciextract_xt6 (unsigned long insn,
208462306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
208562306a36Sopenharmony_ci	     int *invalid ATTRIBUTE_UNUSED)
208662306a36Sopenharmony_ci{
208762306a36Sopenharmony_ci  return ((insn << 5) & 0x20) | ((insn >> 21) & 0x1f);
208862306a36Sopenharmony_ci}
208962306a36Sopenharmony_ci
209062306a36Sopenharmony_ci/* The XT and XS fields in an DQ form VSX instruction.  This is split.  */
209162306a36Sopenharmony_cistatic unsigned long
209262306a36Sopenharmony_ciinsert_xtq6 (unsigned long insn,
209362306a36Sopenharmony_ci	    long value,
209462306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
209562306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
209662306a36Sopenharmony_ci{
209762306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 2);
209862306a36Sopenharmony_ci}
209962306a36Sopenharmony_ci
210062306a36Sopenharmony_cistatic long
210162306a36Sopenharmony_ciextract_xtq6 (unsigned long insn,
210262306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
210362306a36Sopenharmony_ci	     int *invalid ATTRIBUTE_UNUSED)
210462306a36Sopenharmony_ci{
210562306a36Sopenharmony_ci  return ((insn << 2) & 0x20) | ((insn >> 21) & 0x1f);
210662306a36Sopenharmony_ci}
210762306a36Sopenharmony_ci
210862306a36Sopenharmony_ci/* The XA field in an XX3 form instruction.  This is split.  */
210962306a36Sopenharmony_ci
211062306a36Sopenharmony_cistatic unsigned long
211162306a36Sopenharmony_ciinsert_xa6 (unsigned long insn,
211262306a36Sopenharmony_ci	    long value,
211362306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
211462306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
211562306a36Sopenharmony_ci{
211662306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3);
211762306a36Sopenharmony_ci}
211862306a36Sopenharmony_ci
211962306a36Sopenharmony_cistatic long
212062306a36Sopenharmony_ciextract_xa6 (unsigned long insn,
212162306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
212262306a36Sopenharmony_ci	     int *invalid ATTRIBUTE_UNUSED)
212362306a36Sopenharmony_ci{
212462306a36Sopenharmony_ci  return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f);
212562306a36Sopenharmony_ci}
212662306a36Sopenharmony_ci
212762306a36Sopenharmony_ci/* The XB field in an XX3 form instruction.  This is split.  */
212862306a36Sopenharmony_ci
212962306a36Sopenharmony_cistatic unsigned long
213062306a36Sopenharmony_ciinsert_xb6 (unsigned long insn,
213162306a36Sopenharmony_ci	    long value,
213262306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
213362306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
213462306a36Sopenharmony_ci{
213562306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
213662306a36Sopenharmony_ci}
213762306a36Sopenharmony_ci
213862306a36Sopenharmony_cistatic long
213962306a36Sopenharmony_ciextract_xb6 (unsigned long insn,
214062306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
214162306a36Sopenharmony_ci	     int *invalid ATTRIBUTE_UNUSED)
214262306a36Sopenharmony_ci{
214362306a36Sopenharmony_ci  return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1f);
214462306a36Sopenharmony_ci}
214562306a36Sopenharmony_ci
214662306a36Sopenharmony_ci/* The XB field in an XX3 form instruction when it must be the same as
214762306a36Sopenharmony_ci   the XA field in the instruction.  This is used for extended
214862306a36Sopenharmony_ci   mnemonics like xvmovdp.  This operand is marked FAKE.  The insertion
214962306a36Sopenharmony_ci   function just copies the XA field into the XB field, and the
215062306a36Sopenharmony_ci   extraction function just checks that the fields are the same.  */
215162306a36Sopenharmony_ci
215262306a36Sopenharmony_cistatic unsigned long
215362306a36Sopenharmony_ciinsert_xb6s (unsigned long insn,
215462306a36Sopenharmony_ci	    long value ATTRIBUTE_UNUSED,
215562306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
215662306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
215762306a36Sopenharmony_ci{
215862306a36Sopenharmony_ci  return insn | (((insn >> 16) & 0x1f) << 11) | (((insn >> 2) & 0x1) << 1);
215962306a36Sopenharmony_ci}
216062306a36Sopenharmony_ci
216162306a36Sopenharmony_cistatic long
216262306a36Sopenharmony_ciextract_xb6s (unsigned long insn,
216362306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
216462306a36Sopenharmony_ci	     int *invalid)
216562306a36Sopenharmony_ci{
216662306a36Sopenharmony_ci  if ((((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
216762306a36Sopenharmony_ci      || (((insn >> 2) & 0x1) != ((insn >> 1) & 0x1)))
216862306a36Sopenharmony_ci    *invalid = 1;
216962306a36Sopenharmony_ci  return 0;
217062306a36Sopenharmony_ci}
217162306a36Sopenharmony_ci
217262306a36Sopenharmony_ci/* The XC field in an XX4 form instruction.  This is split.  */
217362306a36Sopenharmony_ci
217462306a36Sopenharmony_cistatic unsigned long
217562306a36Sopenharmony_ciinsert_xc6 (unsigned long insn,
217662306a36Sopenharmony_ci	    long value,
217762306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
217862306a36Sopenharmony_ci	    const char **errmsg ATTRIBUTE_UNUSED)
217962306a36Sopenharmony_ci{
218062306a36Sopenharmony_ci  return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 2);
218162306a36Sopenharmony_ci}
218262306a36Sopenharmony_ci
218362306a36Sopenharmony_cistatic long
218462306a36Sopenharmony_ciextract_xc6 (unsigned long insn,
218562306a36Sopenharmony_ci	     ppc_cpu_t dialect ATTRIBUTE_UNUSED,
218662306a36Sopenharmony_ci	     int *invalid ATTRIBUTE_UNUSED)
218762306a36Sopenharmony_ci{
218862306a36Sopenharmony_ci  return ((insn << 2) & 0x20) | ((insn >> 6) & 0x1f);
218962306a36Sopenharmony_ci}
219062306a36Sopenharmony_ci
219162306a36Sopenharmony_cistatic unsigned long
219262306a36Sopenharmony_ciinsert_dm (unsigned long insn,
219362306a36Sopenharmony_ci	   long value,
219462306a36Sopenharmony_ci	   ppc_cpu_t dialect ATTRIBUTE_UNUSED,
219562306a36Sopenharmony_ci	   const char **errmsg)
219662306a36Sopenharmony_ci{
219762306a36Sopenharmony_ci  if (value != 0 && value != 1)
219862306a36Sopenharmony_ci    *errmsg = _("invalid constant");
219962306a36Sopenharmony_ci  return insn | (((value) ? 3 : 0) << 8);
220062306a36Sopenharmony_ci}
220162306a36Sopenharmony_ci
220262306a36Sopenharmony_cistatic long
220362306a36Sopenharmony_ciextract_dm (unsigned long insn,
220462306a36Sopenharmony_ci	    ppc_cpu_t dialect ATTRIBUTE_UNUSED,
220562306a36Sopenharmony_ci	    int *invalid)
220662306a36Sopenharmony_ci{
220762306a36Sopenharmony_ci  long value;
220862306a36Sopenharmony_ci
220962306a36Sopenharmony_ci  value = (insn >> 8) & 3;
221062306a36Sopenharmony_ci  if (value != 0 && value != 3)
221162306a36Sopenharmony_ci    *invalid = 1;
221262306a36Sopenharmony_ci  return (value) ? 1 : 0;
221362306a36Sopenharmony_ci}
221462306a36Sopenharmony_ci
221562306a36Sopenharmony_ci/* The VLESIMM field in an I16A form instruction.  This is split.  */
221662306a36Sopenharmony_ci
221762306a36Sopenharmony_cistatic unsigned long
221862306a36Sopenharmony_ciinsert_vlesi (unsigned long insn,
221962306a36Sopenharmony_ci            long value,
222062306a36Sopenharmony_ci            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
222162306a36Sopenharmony_ci            const char **errmsg ATTRIBUTE_UNUSED)
222262306a36Sopenharmony_ci{
222362306a36Sopenharmony_ci  return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
222462306a36Sopenharmony_ci}
222562306a36Sopenharmony_ci
222662306a36Sopenharmony_cistatic long
222762306a36Sopenharmony_ciextract_vlesi (unsigned long insn,
222862306a36Sopenharmony_ci             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
222962306a36Sopenharmony_ci             int *invalid ATTRIBUTE_UNUSED)
223062306a36Sopenharmony_ci{
223162306a36Sopenharmony_ci  long value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
223262306a36Sopenharmony_ci  value = (value ^ 0x8000) - 0x8000;
223362306a36Sopenharmony_ci  return value;
223462306a36Sopenharmony_ci}
223562306a36Sopenharmony_ci
223662306a36Sopenharmony_cistatic unsigned long
223762306a36Sopenharmony_ciinsert_vlensi (unsigned long insn,
223862306a36Sopenharmony_ci            long value,
223962306a36Sopenharmony_ci            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
224062306a36Sopenharmony_ci            const char **errmsg ATTRIBUTE_UNUSED)
224162306a36Sopenharmony_ci{
224262306a36Sopenharmony_ci  value = -value;
224362306a36Sopenharmony_ci  return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
224462306a36Sopenharmony_ci}
224562306a36Sopenharmony_cistatic long
224662306a36Sopenharmony_ciextract_vlensi (unsigned long insn,
224762306a36Sopenharmony_ci             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
224862306a36Sopenharmony_ci             int *invalid ATTRIBUTE_UNUSED)
224962306a36Sopenharmony_ci{
225062306a36Sopenharmony_ci  long value = ((insn >> 10) & 0xf800) | (insn & 0x7ff);
225162306a36Sopenharmony_ci  value = (value ^ 0x8000) - 0x8000;
225262306a36Sopenharmony_ci  /* Don't use for disassembly.  */
225362306a36Sopenharmony_ci  *invalid = 1;
225462306a36Sopenharmony_ci  return -value;
225562306a36Sopenharmony_ci}
225662306a36Sopenharmony_ci
225762306a36Sopenharmony_ci/* The VLEUIMM field in an I16A form instruction.  This is split.  */
225862306a36Sopenharmony_ci
225962306a36Sopenharmony_cistatic unsigned long
226062306a36Sopenharmony_ciinsert_vleui (unsigned long insn,
226162306a36Sopenharmony_ci            long value,
226262306a36Sopenharmony_ci            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
226362306a36Sopenharmony_ci            const char **errmsg ATTRIBUTE_UNUSED)
226462306a36Sopenharmony_ci{
226562306a36Sopenharmony_ci  return insn | ((value & 0xf800) << 10) | (value & 0x7ff);
226662306a36Sopenharmony_ci}
226762306a36Sopenharmony_ci
226862306a36Sopenharmony_cistatic long
226962306a36Sopenharmony_ciextract_vleui (unsigned long insn,
227062306a36Sopenharmony_ci             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
227162306a36Sopenharmony_ci             int *invalid ATTRIBUTE_UNUSED)
227262306a36Sopenharmony_ci{
227362306a36Sopenharmony_ci  return ((insn >> 10) & 0xf800) | (insn & 0x7ff);
227462306a36Sopenharmony_ci}
227562306a36Sopenharmony_ci
227662306a36Sopenharmony_ci/* The VLEUIMML field in an I16L form instruction.  This is split.  */
227762306a36Sopenharmony_ci
227862306a36Sopenharmony_cistatic unsigned long
227962306a36Sopenharmony_ciinsert_vleil (unsigned long insn,
228062306a36Sopenharmony_ci            long value,
228162306a36Sopenharmony_ci            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
228262306a36Sopenharmony_ci            const char **errmsg ATTRIBUTE_UNUSED)
228362306a36Sopenharmony_ci{
228462306a36Sopenharmony_ci  return insn | ((value & 0xf800) << 5) | (value & 0x7ff);
228562306a36Sopenharmony_ci}
228662306a36Sopenharmony_ci
228762306a36Sopenharmony_cistatic long
228862306a36Sopenharmony_ciextract_vleil (unsigned long insn,
228962306a36Sopenharmony_ci             ppc_cpu_t dialect ATTRIBUTE_UNUSED,
229062306a36Sopenharmony_ci             int *invalid ATTRIBUTE_UNUSED)
229162306a36Sopenharmony_ci{
229262306a36Sopenharmony_ci  return ((insn >> 5) & 0xf800) | (insn & 0x7ff);
229362306a36Sopenharmony_ci}
229462306a36Sopenharmony_ci
229562306a36Sopenharmony_ci
229662306a36Sopenharmony_ci/* Macros used to form opcodes.  */
229762306a36Sopenharmony_ci
229862306a36Sopenharmony_ci/* The main opcode.  */
229962306a36Sopenharmony_ci#define OP(x) ((((unsigned long)(x)) & 0x3f) << 26)
230062306a36Sopenharmony_ci#define OP_MASK OP (0x3f)
230162306a36Sopenharmony_ci
230262306a36Sopenharmony_ci/* The main opcode combined with a trap code in the TO field of a D
230362306a36Sopenharmony_ci   form instruction.  Used for extended mnemonics for the trap
230462306a36Sopenharmony_ci   instructions.  */
230562306a36Sopenharmony_ci#define OPTO(x,to) (OP (x) | ((((unsigned long)(to)) & 0x1f) << 21))
230662306a36Sopenharmony_ci#define OPTO_MASK (OP_MASK | TO_MASK)
230762306a36Sopenharmony_ci
230862306a36Sopenharmony_ci/* The main opcode combined with a comparison size bit in the L field
230962306a36Sopenharmony_ci   of a D form or X form instruction.  Used for extended mnemonics for
231062306a36Sopenharmony_ci   the comparison instructions.  */
231162306a36Sopenharmony_ci#define OPL(x,l) (OP (x) | ((((unsigned long)(l)) & 1) << 21))
231262306a36Sopenharmony_ci#define OPL_MASK OPL (0x3f,1)
231362306a36Sopenharmony_ci
231462306a36Sopenharmony_ci/* The main opcode combined with an update code in D form instruction.
231562306a36Sopenharmony_ci   Used for extended mnemonics for VLE memory instructions.  */
231662306a36Sopenharmony_ci#define OPVUP(x,vup) (OP (x) | ((((unsigned long)(vup)) & 0xff) << 8))
231762306a36Sopenharmony_ci#define OPVUP_MASK OPVUP (0x3f,  0xff)
231862306a36Sopenharmony_ci
231962306a36Sopenharmony_ci/* The main opcode combined with an update code and the RT fields specified in
232062306a36Sopenharmony_ci   D form instruction.  Used for VLE volatile context save/restore
232162306a36Sopenharmony_ci   instructions.  */
232262306a36Sopenharmony_ci#define OPVUPRT(x,vup,rt) (OPVUP (x, vup) | ((((unsigned long)(rt)) & 0x1f) << 21))
232362306a36Sopenharmony_ci#define OPVUPRT_MASK OPVUPRT (0x3f, 0xff, 0x1f)
232462306a36Sopenharmony_ci
232562306a36Sopenharmony_ci/* An A form instruction.  */
232662306a36Sopenharmony_ci#define A(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1) | (((unsigned long)(rc)) & 1))
232762306a36Sopenharmony_ci#define A_MASK A (0x3f, 0x1f, 1)
232862306a36Sopenharmony_ci
232962306a36Sopenharmony_ci/* An A_MASK with the FRB field fixed.  */
233062306a36Sopenharmony_ci#define AFRB_MASK (A_MASK | FRB_MASK)
233162306a36Sopenharmony_ci
233262306a36Sopenharmony_ci/* An A_MASK with the FRC field fixed.  */
233362306a36Sopenharmony_ci#define AFRC_MASK (A_MASK | FRC_MASK)
233462306a36Sopenharmony_ci
233562306a36Sopenharmony_ci/* An A_MASK with the FRA and FRC fields fixed.  */
233662306a36Sopenharmony_ci#define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
233762306a36Sopenharmony_ci
233862306a36Sopenharmony_ci/* An AFRAFRC_MASK, but with L bit clear.  */
233962306a36Sopenharmony_ci#define AFRALFRC_MASK (AFRAFRC_MASK & ~((unsigned long) 1 << 16))
234062306a36Sopenharmony_ci
234162306a36Sopenharmony_ci/* A B form instruction.  */
234262306a36Sopenharmony_ci#define B(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 1) | ((lk) & 1))
234362306a36Sopenharmony_ci#define B_MASK B (0x3f, 1, 1)
234462306a36Sopenharmony_ci
234562306a36Sopenharmony_ci/* A BD8 form instruction.  This is a 16-bit instruction.  */
234662306a36Sopenharmony_ci#define BD8(op, aa, lk) (((((unsigned long)(op)) & 0x3f) << 10) | (((aa) & 1) << 9) | (((lk) & 1) << 8))
234762306a36Sopenharmony_ci#define BD8_MASK BD8 (0x3f, 1, 1)
234862306a36Sopenharmony_ci
234962306a36Sopenharmony_ci/* Another BD8 form instruction.  This is a 16-bit instruction.  */
235062306a36Sopenharmony_ci#define BD8IO(op) ((((unsigned long)(op)) & 0x1f) << 11)
235162306a36Sopenharmony_ci#define BD8IO_MASK BD8IO (0x1f)
235262306a36Sopenharmony_ci
235362306a36Sopenharmony_ci/* A BD8 form instruction for simplified mnemonics.  */
235462306a36Sopenharmony_ci#define EBD8IO(op, bo, bi) (BD8IO ((op)) | ((bo) << 10) | ((bi) << 8))
235562306a36Sopenharmony_ci/* A mask that excludes BO32 and BI32.  */
235662306a36Sopenharmony_ci#define EBD8IO1_MASK 0xf800
235762306a36Sopenharmony_ci/* A mask that includes BO32 and excludes BI32.  */
235862306a36Sopenharmony_ci#define EBD8IO2_MASK 0xfc00
235962306a36Sopenharmony_ci/* A mask that include BO32 AND BI32.  */
236062306a36Sopenharmony_ci#define EBD8IO3_MASK 0xff00
236162306a36Sopenharmony_ci
236262306a36Sopenharmony_ci/* A BD15 form instruction.  */
236362306a36Sopenharmony_ci#define BD15(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 0xf) << 22) | ((lk) & 1))
236462306a36Sopenharmony_ci#define BD15_MASK BD15 (0x3f, 0xf, 1)
236562306a36Sopenharmony_ci
236662306a36Sopenharmony_ci/* A BD15 form instruction for extended conditional branch mnemonics.  */
236762306a36Sopenharmony_ci#define EBD15(op, aa, bo, lk) (((op) & 0x3f) << 26) | (((aa) & 0xf) << 22) | (((bo) & 0x3) << 20) | ((lk) & 1)
236862306a36Sopenharmony_ci#define EBD15_MASK 0xfff00001
236962306a36Sopenharmony_ci
237062306a36Sopenharmony_ci/* A BD15 form instruction for extended conditional branch mnemonics with BI.  */
237162306a36Sopenharmony_ci#define EBD15BI(op, aa, bo, bi, lk) (((op) & 0x3f) << 26) \
237262306a36Sopenharmony_ci                                    | (((aa) & 0xf) << 22) \
237362306a36Sopenharmony_ci                                    | (((bo) & 0x3) << 20) \
237462306a36Sopenharmony_ci                                    | (((bi) & 0x3) << 16) \
237562306a36Sopenharmony_ci                                    | ((lk) & 1)
237662306a36Sopenharmony_ci#define EBD15BI_MASK  0xfff30001
237762306a36Sopenharmony_ci
237862306a36Sopenharmony_ci/* A BD24 form instruction.  */
237962306a36Sopenharmony_ci#define BD24(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 25) | ((lk) & 1))
238062306a36Sopenharmony_ci#define BD24_MASK BD24 (0x3f, 1, 1)
238162306a36Sopenharmony_ci
238262306a36Sopenharmony_ci/* A B form instruction setting the BO field.  */
238362306a36Sopenharmony_ci#define BBO(op, bo, aa, lk) (B ((op), (aa), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
238462306a36Sopenharmony_ci#define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
238562306a36Sopenharmony_ci
238662306a36Sopenharmony_ci/* A BBO_MASK with the y bit of the BO field removed.  This permits
238762306a36Sopenharmony_ci   matching a conditional branch regardless of the setting of the y
238862306a36Sopenharmony_ci   bit.  Similarly for the 'at' bits used for power4 branch hints.  */
238962306a36Sopenharmony_ci#define Y_MASK	 (((unsigned long) 1) << 21)
239062306a36Sopenharmony_ci#define AT1_MASK (((unsigned long) 3) << 21)
239162306a36Sopenharmony_ci#define AT2_MASK (((unsigned long) 9) << 21)
239262306a36Sopenharmony_ci#define BBOY_MASK  (BBO_MASK &~ Y_MASK)
239362306a36Sopenharmony_ci#define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
239462306a36Sopenharmony_ci
239562306a36Sopenharmony_ci/* A B form instruction setting the BO field and the condition bits of
239662306a36Sopenharmony_ci   the BI field.  */
239762306a36Sopenharmony_ci#define BBOCB(op, bo, cb, aa, lk) \
239862306a36Sopenharmony_ci  (BBO ((op), (bo), (aa), (lk)) | ((((unsigned long)(cb)) & 0x3) << 16))
239962306a36Sopenharmony_ci#define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
240062306a36Sopenharmony_ci
240162306a36Sopenharmony_ci/* A BBOCB_MASK with the y bit of the BO field removed.  */
240262306a36Sopenharmony_ci#define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
240362306a36Sopenharmony_ci#define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
240462306a36Sopenharmony_ci#define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
240562306a36Sopenharmony_ci
240662306a36Sopenharmony_ci/* A BBOYCB_MASK in which the BI field is fixed.  */
240762306a36Sopenharmony_ci#define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
240862306a36Sopenharmony_ci#define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
240962306a36Sopenharmony_ci
241062306a36Sopenharmony_ci/* A VLE C form instruction.  */
241162306a36Sopenharmony_ci#define C_LK(x, lk) (((((unsigned long)(x)) & 0x7fff) << 1) | ((lk) & 1))
241262306a36Sopenharmony_ci#define C_LK_MASK C_LK(0x7fff, 1)
241362306a36Sopenharmony_ci#define C(x) ((((unsigned long)(x)) & 0xffff))
241462306a36Sopenharmony_ci#define C_MASK C(0xffff)
241562306a36Sopenharmony_ci
241662306a36Sopenharmony_ci/* An Context form instruction.  */
241762306a36Sopenharmony_ci#define CTX(op, xop)   (OP (op) | (((unsigned long)(xop)) & 0x7))
241862306a36Sopenharmony_ci#define CTX_MASK CTX(0x3f, 0x7)
241962306a36Sopenharmony_ci
242062306a36Sopenharmony_ci/* A User Context form instruction.  */
242162306a36Sopenharmony_ci#define UCTX(op, xop)  (OP (op) | (((unsigned long)(xop)) & 0x1f))
242262306a36Sopenharmony_ci#define UCTX_MASK UCTX(0x3f, 0x1f)
242362306a36Sopenharmony_ci
242462306a36Sopenharmony_ci/* The main opcode mask with the RA field clear.  */
242562306a36Sopenharmony_ci#define DRA_MASK (OP_MASK | RA_MASK)
242662306a36Sopenharmony_ci
242762306a36Sopenharmony_ci/* A DQ form VSX instruction.  */
242862306a36Sopenharmony_ci#define DQX(op, xop) (OP (op) | ((xop) & 0x7))
242962306a36Sopenharmony_ci#define DQX_MASK DQX (0x3f, 7)
243062306a36Sopenharmony_ci
243162306a36Sopenharmony_ci/* A DS form instruction.  */
243262306a36Sopenharmony_ci#define DSO(op, xop) (OP (op) | ((xop) & 0x3))
243362306a36Sopenharmony_ci#define DS_MASK DSO (0x3f, 3)
243462306a36Sopenharmony_ci
243562306a36Sopenharmony_ci/* An DX form instruction.  */
243662306a36Sopenharmony_ci#define DX(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
243762306a36Sopenharmony_ci#define DX_MASK DX (0x3f, 0x1f)
243862306a36Sopenharmony_ci
243962306a36Sopenharmony_ci/* An EVSEL form instruction.  */
244062306a36Sopenharmony_ci#define EVSEL(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xff) << 3)
244162306a36Sopenharmony_ci#define EVSEL_MASK EVSEL(0x3f, 0xff)
244262306a36Sopenharmony_ci
244362306a36Sopenharmony_ci/* An IA16 form instruction.  */
244462306a36Sopenharmony_ci#define IA16(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11)
244562306a36Sopenharmony_ci#define IA16_MASK IA16(0x3f, 0x1f)
244662306a36Sopenharmony_ci
244762306a36Sopenharmony_ci/* An I16A form instruction.  */
244862306a36Sopenharmony_ci#define I16A(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11)
244962306a36Sopenharmony_ci#define I16A_MASK I16A(0x3f, 0x1f)
245062306a36Sopenharmony_ci
245162306a36Sopenharmony_ci/* An I16L form instruction.  */
245262306a36Sopenharmony_ci#define I16L(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11)
245362306a36Sopenharmony_ci#define I16L_MASK I16L(0x3f, 0x1f)
245462306a36Sopenharmony_ci
245562306a36Sopenharmony_ci/* An IM7 form instruction.  */
245662306a36Sopenharmony_ci#define IM7(op) ((((unsigned long)(op)) & 0x1f) << 11)
245762306a36Sopenharmony_ci#define IM7_MASK IM7(0x1f)
245862306a36Sopenharmony_ci
245962306a36Sopenharmony_ci/* An M form instruction.  */
246062306a36Sopenharmony_ci#define M(op, rc) (OP (op) | ((rc) & 1))
246162306a36Sopenharmony_ci#define M_MASK M (0x3f, 1)
246262306a36Sopenharmony_ci
246362306a36Sopenharmony_ci/* An LI20 form instruction.  */
246462306a36Sopenharmony_ci#define LI20(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1) << 15)
246562306a36Sopenharmony_ci#define LI20_MASK LI20(0x3f, 0x1)
246662306a36Sopenharmony_ci
246762306a36Sopenharmony_ci/* An M form instruction with the ME field specified.  */
246862306a36Sopenharmony_ci#define MME(op, me, rc) (M ((op), (rc)) | ((((unsigned long)(me)) & 0x1f) << 1))
246962306a36Sopenharmony_ci
247062306a36Sopenharmony_ci/* An M_MASK with the MB and ME fields fixed.  */
247162306a36Sopenharmony_ci#define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
247262306a36Sopenharmony_ci
247362306a36Sopenharmony_ci/* An M_MASK with the SH and ME fields fixed.  */
247462306a36Sopenharmony_ci#define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
247562306a36Sopenharmony_ci
247662306a36Sopenharmony_ci/* An MD form instruction.  */
247762306a36Sopenharmony_ci#define MD(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x7) << 2) | ((rc) & 1))
247862306a36Sopenharmony_ci#define MD_MASK MD (0x3f, 0x7, 1)
247962306a36Sopenharmony_ci
248062306a36Sopenharmony_ci/* An MD_MASK with the MB field fixed.  */
248162306a36Sopenharmony_ci#define MDMB_MASK (MD_MASK | MB6_MASK)
248262306a36Sopenharmony_ci
248362306a36Sopenharmony_ci/* An MD_MASK with the SH field fixed.  */
248462306a36Sopenharmony_ci#define MDSH_MASK (MD_MASK | SH6_MASK)
248562306a36Sopenharmony_ci
248662306a36Sopenharmony_ci/* An MDS form instruction.  */
248762306a36Sopenharmony_ci#define MDS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0xf) << 1) | ((rc) & 1))
248862306a36Sopenharmony_ci#define MDS_MASK MDS (0x3f, 0xf, 1)
248962306a36Sopenharmony_ci
249062306a36Sopenharmony_ci/* An MDS_MASK with the MB field fixed.  */
249162306a36Sopenharmony_ci#define MDSMB_MASK (MDS_MASK | MB6_MASK)
249262306a36Sopenharmony_ci
249362306a36Sopenharmony_ci/* An SC form instruction.  */
249462306a36Sopenharmony_ci#define SC(op, sa, lk) (OP (op) | ((((unsigned long)(sa)) & 1) << 1) | ((lk) & 1))
249562306a36Sopenharmony_ci#define SC_MASK (OP_MASK | (((unsigned long)0x3ff) << 16) | (((unsigned long)1) << 1) | 1)
249662306a36Sopenharmony_ci
249762306a36Sopenharmony_ci/* An SCI8 form instruction.  */
249862306a36Sopenharmony_ci#define SCI8(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 11))
249962306a36Sopenharmony_ci#define SCI8_MASK SCI8(0x3f, 0x1f)
250062306a36Sopenharmony_ci
250162306a36Sopenharmony_ci/* An SCI8 form instruction.  */
250262306a36Sopenharmony_ci#define SCI8BF(op, fop, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 11) | (((fop) & 7) << 23))
250362306a36Sopenharmony_ci#define SCI8BF_MASK SCI8BF(0x3f, 7, 0x1f)
250462306a36Sopenharmony_ci
250562306a36Sopenharmony_ci/* An SD4 form instruction.  This is a 16-bit instruction.  */
250662306a36Sopenharmony_ci#define SD4(op) ((((unsigned long)(op)) & 0xf) << 12)
250762306a36Sopenharmony_ci#define SD4_MASK SD4(0xf)
250862306a36Sopenharmony_ci
250962306a36Sopenharmony_ci/* An SE_IM5 form instruction.  This is a 16-bit instruction.  */
251062306a36Sopenharmony_ci#define SE_IM5(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x1) << 9))
251162306a36Sopenharmony_ci#define SE_IM5_MASK SE_IM5(0x3f, 1)
251262306a36Sopenharmony_ci
251362306a36Sopenharmony_ci/* An SE_R form instruction.  This is a 16-bit instruction.  */
251462306a36Sopenharmony_ci#define SE_R(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x3f) << 4))
251562306a36Sopenharmony_ci#define SE_R_MASK SE_R(0x3f, 0x3f)
251662306a36Sopenharmony_ci
251762306a36Sopenharmony_ci/* An SE_RR form instruction.  This is a 16-bit instruction.  */
251862306a36Sopenharmony_ci#define SE_RR(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x3) << 8))
251962306a36Sopenharmony_ci#define SE_RR_MASK SE_RR(0x3f, 3)
252062306a36Sopenharmony_ci
252162306a36Sopenharmony_ci/* A VX form instruction.  */
252262306a36Sopenharmony_ci#define VX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
252362306a36Sopenharmony_ci
252462306a36Sopenharmony_ci/* The mask for an VX form instruction.  */
252562306a36Sopenharmony_ci#define VX_MASK	VX(0x3f, 0x7ff)
252662306a36Sopenharmony_ci
252762306a36Sopenharmony_ci/* A VX_MASK with the VA field fixed.  */
252862306a36Sopenharmony_ci#define VXVA_MASK (VX_MASK | (0x1f << 16))
252962306a36Sopenharmony_ci
253062306a36Sopenharmony_ci/* A VX_MASK with the VB field fixed.  */
253162306a36Sopenharmony_ci#define VXVB_MASK (VX_MASK | (0x1f << 11))
253262306a36Sopenharmony_ci
253362306a36Sopenharmony_ci/* A VX_MASK with the VA and VB fields fixed.  */
253462306a36Sopenharmony_ci#define VXVAVB_MASK (VX_MASK | (0x1f << 16) | (0x1f << 11))
253562306a36Sopenharmony_ci
253662306a36Sopenharmony_ci/* A VX_MASK with the VD and VA fields fixed.  */
253762306a36Sopenharmony_ci#define VXVDVA_MASK (VX_MASK | (0x1f << 21) | (0x1f << 16))
253862306a36Sopenharmony_ci
253962306a36Sopenharmony_ci/* A VX_MASK with a UIMM4 field.  */
254062306a36Sopenharmony_ci#define VXUIMM4_MASK (VX_MASK | (0x1 << 20))
254162306a36Sopenharmony_ci
254262306a36Sopenharmony_ci/* A VX_MASK with a UIMM3 field.  */
254362306a36Sopenharmony_ci#define VXUIMM3_MASK (VX_MASK | (0x3 << 19))
254462306a36Sopenharmony_ci
254562306a36Sopenharmony_ci/* A VX_MASK with a UIMM2 field.  */
254662306a36Sopenharmony_ci#define VXUIMM2_MASK (VX_MASK | (0x7 << 18))
254762306a36Sopenharmony_ci
254862306a36Sopenharmony_ci/* A VX_MASK with a PS field.  */
254962306a36Sopenharmony_ci#define VXPS_MASK (VX_MASK & ~(0x1 << 9))
255062306a36Sopenharmony_ci
255162306a36Sopenharmony_ci/* A VX_MASK with the VA field fixed with a PS field.  */
255262306a36Sopenharmony_ci#define VXVAPS_MASK ((VX_MASK | (0x1f << 16)) & ~(0x1 << 9))
255362306a36Sopenharmony_ci
255462306a36Sopenharmony_ci/* A VA form instruction.  */
255562306a36Sopenharmony_ci#define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x03f))
255662306a36Sopenharmony_ci
255762306a36Sopenharmony_ci/* The mask for an VA form instruction.  */
255862306a36Sopenharmony_ci#define VXA_MASK VXA(0x3f, 0x3f)
255962306a36Sopenharmony_ci
256062306a36Sopenharmony_ci/* A VXA_MASK with a SHB field.  */
256162306a36Sopenharmony_ci#define VXASHB_MASK (VXA_MASK | (1 << 10))
256262306a36Sopenharmony_ci
256362306a36Sopenharmony_ci/* A VXR form instruction.  */
256462306a36Sopenharmony_ci#define VXR(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | (((unsigned long)(xop)) & 0x3ff))
256562306a36Sopenharmony_ci
256662306a36Sopenharmony_ci/* The mask for a VXR form instruction.  */
256762306a36Sopenharmony_ci#define VXR_MASK VXR(0x3f, 0x3ff, 1)
256862306a36Sopenharmony_ci
256962306a36Sopenharmony_ci/* A VX form instruction with a VA tertiary opcode.  */
257062306a36Sopenharmony_ci#define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16))
257162306a36Sopenharmony_ci
257262306a36Sopenharmony_ci#define VXASH(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
257362306a36Sopenharmony_ci#define VXASH_MASK VXASH (0x3f, 0x1f)
257462306a36Sopenharmony_ci
257562306a36Sopenharmony_ci/* An X form instruction.  */
257662306a36Sopenharmony_ci#define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
257762306a36Sopenharmony_ci
257862306a36Sopenharmony_ci/* A X form instruction for Quad-Precision FP Instructions.  */
257962306a36Sopenharmony_ci#define XVA(op, xop, vaop) (X(op,xop) | (((vaop) & 0x1f) << 16))
258062306a36Sopenharmony_ci
258162306a36Sopenharmony_ci/* An EX form instruction.  */
258262306a36Sopenharmony_ci#define EX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
258362306a36Sopenharmony_ci
258462306a36Sopenharmony_ci/* The mask for an EX form instruction.  */
258562306a36Sopenharmony_ci#define EX_MASK EX (0x3f, 0x7ff)
258662306a36Sopenharmony_ci
258762306a36Sopenharmony_ci/* An XX2 form instruction.  */
258862306a36Sopenharmony_ci#define XX2(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2))
258962306a36Sopenharmony_ci
259062306a36Sopenharmony_ci/* A XX2 form instruction with the VA bits specified.  */
259162306a36Sopenharmony_ci#define XX2VA(op, xop, vaop) (XX2(op,xop) | (((vaop) & 0x1f) << 16))
259262306a36Sopenharmony_ci
259362306a36Sopenharmony_ci/* An XX3 form instruction.  */
259462306a36Sopenharmony_ci#define XX3(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0xff) << 3))
259562306a36Sopenharmony_ci
259662306a36Sopenharmony_ci/* An XX3 form instruction with the RC bit specified.  */
259762306a36Sopenharmony_ci#define XX3RC(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | ((((unsigned long)(xop)) & 0x7f) << 3))
259862306a36Sopenharmony_ci
259962306a36Sopenharmony_ci/* An XX4 form instruction.  */
260062306a36Sopenharmony_ci#define XX4(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3) << 4))
260162306a36Sopenharmony_ci
260262306a36Sopenharmony_ci/* A Z form instruction.  */
260362306a36Sopenharmony_ci#define Z(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1))
260462306a36Sopenharmony_ci
260562306a36Sopenharmony_ci/* An X form instruction with the RC bit specified.  */
260662306a36Sopenharmony_ci#define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
260762306a36Sopenharmony_ci
260862306a36Sopenharmony_ci/* A X form instruction for Quad-Precision FP Instructions with RC bit.  */
260962306a36Sopenharmony_ci#define XVARC(op, xop, vaop, rc) (XVA ((op), (xop), (vaop)) | ((rc) & 1))
261062306a36Sopenharmony_ci
261162306a36Sopenharmony_ci/* An X form instruction with the RA bits specified as two ops.  */
261262306a36Sopenharmony_ci#define XMMF(op, xop, mop0, mop1) (X ((op), (xop)) | ((mop0) & 3) << 19 | ((mop1) & 7) << 16)
261362306a36Sopenharmony_ci
261462306a36Sopenharmony_ci/* A Z form instruction with the RC bit specified.  */
261562306a36Sopenharmony_ci#define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
261662306a36Sopenharmony_ci
261762306a36Sopenharmony_ci/* The mask for an X form instruction.  */
261862306a36Sopenharmony_ci#define X_MASK XRC (0x3f, 0x3ff, 1)
261962306a36Sopenharmony_ci
262062306a36Sopenharmony_ci/* The mask for an X form instruction with the BF bits specified.  */
262162306a36Sopenharmony_ci#define XBF_MASK (X_MASK | (3 << 21))
262262306a36Sopenharmony_ci
262362306a36Sopenharmony_ci/* An X form wait instruction with everything filled in except the WC field.  */
262462306a36Sopenharmony_ci#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
262562306a36Sopenharmony_ci
262662306a36Sopenharmony_ci/* The mask for an XX1 form instruction.  */
262762306a36Sopenharmony_ci#define XX1_MASK X (0x3f, 0x3ff)
262862306a36Sopenharmony_ci
262962306a36Sopenharmony_ci/* An XX1_MASK with the RB field fixed.  */
263062306a36Sopenharmony_ci#define XX1RB_MASK (XX1_MASK | RB_MASK)
263162306a36Sopenharmony_ci
263262306a36Sopenharmony_ci/* The mask for an XX2 form instruction.  */
263362306a36Sopenharmony_ci#define XX2_MASK (XX2 (0x3f, 0x1ff) | (0x1f << 16))
263462306a36Sopenharmony_ci
263562306a36Sopenharmony_ci/* The mask for an XX2 form instruction with the UIM bits specified.  */
263662306a36Sopenharmony_ci#define XX2UIM_MASK (XX2 (0x3f, 0x1ff) | (7 << 18))
263762306a36Sopenharmony_ci
263862306a36Sopenharmony_ci/* The mask for an XX2 form instruction with the 4 UIM bits specified.  */
263962306a36Sopenharmony_ci#define XX2UIM4_MASK (XX2 (0x3f, 0x1ff) | (1 << 20))
264062306a36Sopenharmony_ci
264162306a36Sopenharmony_ci/* The mask for an XX2 form instruction with the BF bits specified.  */
264262306a36Sopenharmony_ci#define XX2BF_MASK (XX2_MASK | (3 << 21) | (1))
264362306a36Sopenharmony_ci
264462306a36Sopenharmony_ci/* The mask for an XX2 form instruction with the BF and DCMX bits specified.  */
264562306a36Sopenharmony_ci#define XX2BFD_MASK (XX2 (0x3f, 0x1ff) | 1)
264662306a36Sopenharmony_ci
264762306a36Sopenharmony_ci/* The mask for an XX2 form instruction with a split DCMX bits specified.  */
264862306a36Sopenharmony_ci#define XX2DCMXS_MASK XX2 (0x3f, 0x1ee)
264962306a36Sopenharmony_ci
265062306a36Sopenharmony_ci/* The mask for an XX3 form instruction.  */
265162306a36Sopenharmony_ci#define XX3_MASK XX3 (0x3f, 0xff)
265262306a36Sopenharmony_ci
265362306a36Sopenharmony_ci/* The mask for an XX3 form instruction with the BF bits specified.  */
265462306a36Sopenharmony_ci#define XX3BF_MASK (XX3 (0x3f, 0xff) | (3 << 21) | (1))
265562306a36Sopenharmony_ci
265662306a36Sopenharmony_ci/* The mask for an XX3 form instruction with the DM or SHW bits specified.  */
265762306a36Sopenharmony_ci#define XX3DM_MASK (XX3 (0x3f, 0x1f) | (1 << 10))
265862306a36Sopenharmony_ci#define XX3SHW_MASK XX3DM_MASK
265962306a36Sopenharmony_ci
266062306a36Sopenharmony_ci/* The mask for an XX4 form instruction.  */
266162306a36Sopenharmony_ci#define XX4_MASK XX4 (0x3f, 0x3)
266262306a36Sopenharmony_ci
266362306a36Sopenharmony_ci/* An X form wait instruction with everything filled in except the WC field.  */
266462306a36Sopenharmony_ci#define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK)
266562306a36Sopenharmony_ci
266662306a36Sopenharmony_ci/* The mask for an XMMF form instruction.  */
266762306a36Sopenharmony_ci#define XMMF_MASK (XMMF (0x3f, 0x3ff, 3, 7) | (1))
266862306a36Sopenharmony_ci
266962306a36Sopenharmony_ci/* The mask for a Z form instruction.  */
267062306a36Sopenharmony_ci#define Z_MASK ZRC (0x3f, 0x1ff, 1)
267162306a36Sopenharmony_ci#define Z2_MASK ZRC (0x3f, 0xff, 1)
267262306a36Sopenharmony_ci
267362306a36Sopenharmony_ci/* An X_MASK with the RA/VA field fixed.  */
267462306a36Sopenharmony_ci#define XRA_MASK (X_MASK | RA_MASK)
267562306a36Sopenharmony_ci#define XVA_MASK XRA_MASK
267662306a36Sopenharmony_ci
267762306a36Sopenharmony_ci/* An XRA_MASK with the A_L/W field clear.  */
267862306a36Sopenharmony_ci#define XWRA_MASK (XRA_MASK & ~((unsigned long) 1 << 16))
267962306a36Sopenharmony_ci#define XRLA_MASK XWRA_MASK
268062306a36Sopenharmony_ci
268162306a36Sopenharmony_ci/* An X_MASK with the RB field fixed.  */
268262306a36Sopenharmony_ci#define XRB_MASK (X_MASK | RB_MASK)
268362306a36Sopenharmony_ci
268462306a36Sopenharmony_ci/* An X_MASK with the RT field fixed.  */
268562306a36Sopenharmony_ci#define XRT_MASK (X_MASK | RT_MASK)
268662306a36Sopenharmony_ci
268762306a36Sopenharmony_ci/* An XRT_MASK mask with the L bits clear.  */
268862306a36Sopenharmony_ci#define XLRT_MASK (XRT_MASK & ~((unsigned long) 0x3 << 21))
268962306a36Sopenharmony_ci
269062306a36Sopenharmony_ci/* An X_MASK with the RA and RB fields fixed.  */
269162306a36Sopenharmony_ci#define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
269262306a36Sopenharmony_ci
269362306a36Sopenharmony_ci/* An XBF_MASK with the RA and RB fields fixed.  */
269462306a36Sopenharmony_ci#define XBFRARB_MASK (XBF_MASK | RA_MASK | RB_MASK)
269562306a36Sopenharmony_ci
269662306a36Sopenharmony_ci/* An XRARB_MASK, but with the L bit clear.  */
269762306a36Sopenharmony_ci#define XRLARB_MASK (XRARB_MASK & ~((unsigned long) 1 << 16))
269862306a36Sopenharmony_ci
269962306a36Sopenharmony_ci/* An XRARB_MASK, but with the L bits in a darn instruction clear.  */
270062306a36Sopenharmony_ci#define XLRAND_MASK (XRARB_MASK & ~((unsigned long) 3 << 16))
270162306a36Sopenharmony_ci
270262306a36Sopenharmony_ci/* An X_MASK with the RT and RA fields fixed.  */
270362306a36Sopenharmony_ci#define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
270462306a36Sopenharmony_ci
270562306a36Sopenharmony_ci/* An X_MASK with the RT and RB fields fixed.  */
270662306a36Sopenharmony_ci#define XRTRB_MASK (X_MASK | RT_MASK | RB_MASK)
270762306a36Sopenharmony_ci
270862306a36Sopenharmony_ci/* An XRTRA_MASK, but with L bit clear.  */
270962306a36Sopenharmony_ci#define XRTLRA_MASK (XRTRA_MASK & ~((unsigned long) 1 << 21))
271062306a36Sopenharmony_ci
271162306a36Sopenharmony_ci/* An X_MASK with the RT, RA and RB fields fixed.  */
271262306a36Sopenharmony_ci#define XRTRARB_MASK (X_MASK | RT_MASK | RA_MASK | RB_MASK)
271362306a36Sopenharmony_ci
271462306a36Sopenharmony_ci/* An XRTRARB_MASK, but with L bit clear.  */
271562306a36Sopenharmony_ci#define XRTLRARB_MASK (XRTRARB_MASK & ~((unsigned long) 1 << 21))
271662306a36Sopenharmony_ci
271762306a36Sopenharmony_ci/* An XRTRARB_MASK, but with A bit clear.  */
271862306a36Sopenharmony_ci#define XRTARARB_MASK (XRTRARB_MASK & ~((unsigned long) 1 << 25))
271962306a36Sopenharmony_ci
272062306a36Sopenharmony_ci/* An XRTRARB_MASK, but with BF bits clear.  */
272162306a36Sopenharmony_ci#define XRTBFRARB_MASK (XRTRARB_MASK & ~((unsigned long) 7 << 23))
272262306a36Sopenharmony_ci
272362306a36Sopenharmony_ci/* An X form instruction with the L bit specified.  */
272462306a36Sopenharmony_ci#define XOPL(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 1) << 21))
272562306a36Sopenharmony_ci
272662306a36Sopenharmony_ci/* An X form instruction with the L bits specified.  */
272762306a36Sopenharmony_ci#define XOPL2(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 3) << 21))
272862306a36Sopenharmony_ci
272962306a36Sopenharmony_ci/* An X form instruction with the L bit and RC bit specified.  */
273062306a36Sopenharmony_ci#define XRCL(op, xop, l, rc) (XRC ((op), (xop), (rc)) | ((((unsigned long)(l)) & 1) << 21))
273162306a36Sopenharmony_ci
273262306a36Sopenharmony_ci/* An X form instruction with RT fields specified */
273362306a36Sopenharmony_ci#define XRT(op, xop, rt) (X ((op), (xop)) \
273462306a36Sopenharmony_ci        | ((((unsigned long)(rt)) & 0x1f) << 21))
273562306a36Sopenharmony_ci
273662306a36Sopenharmony_ci/* An X form instruction with RT and RA fields specified */
273762306a36Sopenharmony_ci#define XRTRA(op, xop, rt, ra) (X ((op), (xop)) \
273862306a36Sopenharmony_ci        | ((((unsigned long)(rt)) & 0x1f) << 21) \
273962306a36Sopenharmony_ci        | ((((unsigned long)(ra)) & 0x1f) << 16))
274062306a36Sopenharmony_ci
274162306a36Sopenharmony_ci/* The mask for an X form comparison instruction.  */
274262306a36Sopenharmony_ci#define XCMP_MASK (X_MASK | (((unsigned long)1) << 22))
274362306a36Sopenharmony_ci
274462306a36Sopenharmony_ci/* The mask for an X form comparison instruction with the L field
274562306a36Sopenharmony_ci   fixed.  */
274662306a36Sopenharmony_ci#define XCMPL_MASK (XCMP_MASK | (((unsigned long)1) << 21))
274762306a36Sopenharmony_ci
274862306a36Sopenharmony_ci/* An X form trap instruction with the TO field specified.  */
274962306a36Sopenharmony_ci#define XTO(op, xop, to) (X ((op), (xop)) | ((((unsigned long)(to)) & 0x1f) << 21))
275062306a36Sopenharmony_ci#define XTO_MASK (X_MASK | TO_MASK)
275162306a36Sopenharmony_ci
275262306a36Sopenharmony_ci/* An X form tlb instruction with the SH field specified.  */
275362306a36Sopenharmony_ci#define XTLB(op, xop, sh) (X ((op), (xop)) | ((((unsigned long)(sh)) & 0x1f) << 11))
275462306a36Sopenharmony_ci#define XTLB_MASK (X_MASK | SH_MASK)
275562306a36Sopenharmony_ci
275662306a36Sopenharmony_ci/* An X form sync instruction.  */
275762306a36Sopenharmony_ci#define XSYNC(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 3) << 21))
275862306a36Sopenharmony_ci
275962306a36Sopenharmony_ci/* An X form sync instruction with everything filled in except the LS field.  */
276062306a36Sopenharmony_ci#define XSYNC_MASK (0xff9fffff)
276162306a36Sopenharmony_ci
276262306a36Sopenharmony_ci/* An X form sync instruction with everything filled in except the L and E fields.  */
276362306a36Sopenharmony_ci#define XSYNCLE_MASK (0xff90ffff)
276462306a36Sopenharmony_ci
276562306a36Sopenharmony_ci/* An X_MASK, but with the EH bit clear.  */
276662306a36Sopenharmony_ci#define XEH_MASK (X_MASK & ~((unsigned long )1))
276762306a36Sopenharmony_ci
276862306a36Sopenharmony_ci/* An X form AltiVec dss instruction.  */
276962306a36Sopenharmony_ci#define XDSS(op, xop, a) (X ((op), (xop)) | ((((unsigned long)(a)) & 1) << 25))
277062306a36Sopenharmony_ci#define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
277162306a36Sopenharmony_ci
277262306a36Sopenharmony_ci/* An XFL form instruction.  */
277362306a36Sopenharmony_ci#define XFL(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1))
277462306a36Sopenharmony_ci#define XFL_MASK XFL (0x3f, 0x3ff, 1)
277562306a36Sopenharmony_ci
277662306a36Sopenharmony_ci/* An X form isel instruction.  */
277762306a36Sopenharmony_ci#define XISEL(op, xop)	(OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
277862306a36Sopenharmony_ci#define XISEL_MASK	XISEL(0x3f, 0x1f)
277962306a36Sopenharmony_ci
278062306a36Sopenharmony_ci/* An XL form instruction with the LK field set to 0.  */
278162306a36Sopenharmony_ci#define XL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
278262306a36Sopenharmony_ci
278362306a36Sopenharmony_ci/* An XL form instruction which uses the LK field.  */
278462306a36Sopenharmony_ci#define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
278562306a36Sopenharmony_ci
278662306a36Sopenharmony_ci/* The mask for an XL form instruction.  */
278762306a36Sopenharmony_ci#define XL_MASK XLLK (0x3f, 0x3ff, 1)
278862306a36Sopenharmony_ci
278962306a36Sopenharmony_ci/* An XL_MASK with the RT, RA and RB fields fixed, but S bit clear.  */
279062306a36Sopenharmony_ci#define XLS_MASK ((XL_MASK | RT_MASK | RA_MASK | RB_MASK) & ~(1 << 11))
279162306a36Sopenharmony_ci
279262306a36Sopenharmony_ci/* An XL form instruction which explicitly sets the BO field.  */
279362306a36Sopenharmony_ci#define XLO(op, bo, xop, lk) \
279462306a36Sopenharmony_ci  (XLLK ((op), (xop), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
279562306a36Sopenharmony_ci#define XLO_MASK (XL_MASK | BO_MASK)
279662306a36Sopenharmony_ci
279762306a36Sopenharmony_ci/* An XL form instruction which explicitly sets the y bit of the BO
279862306a36Sopenharmony_ci   field.  */
279962306a36Sopenharmony_ci#define XLYLK(op, xop, y, lk) (XLLK ((op), (xop), (lk)) | ((((unsigned long)(y)) & 1) << 21))
280062306a36Sopenharmony_ci#define XLYLK_MASK (XL_MASK | Y_MASK)
280162306a36Sopenharmony_ci
280262306a36Sopenharmony_ci/* An XL form instruction which sets the BO field and the condition
280362306a36Sopenharmony_ci   bits of the BI field.  */
280462306a36Sopenharmony_ci#define XLOCB(op, bo, cb, xop, lk) \
280562306a36Sopenharmony_ci  (XLO ((op), (bo), (xop), (lk)) | ((((unsigned long)(cb)) & 3) << 16))
280662306a36Sopenharmony_ci#define XLOCB_MASK XLOCB (0x3f, 0x1f, 0x3, 0x3ff, 1)
280762306a36Sopenharmony_ci
280862306a36Sopenharmony_ci/* An XL_MASK or XLYLK_MASK or XLOCB_MASK with the BB field fixed.  */
280962306a36Sopenharmony_ci#define XLBB_MASK (XL_MASK | BB_MASK)
281062306a36Sopenharmony_ci#define XLYBB_MASK (XLYLK_MASK | BB_MASK)
281162306a36Sopenharmony_ci#define XLBOCBBB_MASK (XLOCB_MASK | BB_MASK)
281262306a36Sopenharmony_ci
281362306a36Sopenharmony_ci/* A mask for branch instructions using the BH field.  */
281462306a36Sopenharmony_ci#define XLBH_MASK (XL_MASK | (0x1c << 11))
281562306a36Sopenharmony_ci
281662306a36Sopenharmony_ci/* An XL_MASK with the BO and BB fields fixed.  */
281762306a36Sopenharmony_ci#define XLBOBB_MASK (XL_MASK | BO_MASK | BB_MASK)
281862306a36Sopenharmony_ci
281962306a36Sopenharmony_ci/* An XL_MASK with the BO, BI and BB fields fixed.  */
282062306a36Sopenharmony_ci#define XLBOBIBB_MASK (XL_MASK | BO_MASK | BI_MASK | BB_MASK)
282162306a36Sopenharmony_ci
282262306a36Sopenharmony_ci/* An X form mbar instruction with MO field.  */
282362306a36Sopenharmony_ci#define XMBAR(op, xop, mo) (X ((op), (xop)) | ((((unsigned long)(mo)) & 1) << 21))
282462306a36Sopenharmony_ci
282562306a36Sopenharmony_ci/* An XO form instruction.  */
282662306a36Sopenharmony_ci#define XO(op, xop, oe, rc) \
282762306a36Sopenharmony_ci  (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1) | ((((unsigned long)(oe)) & 1) << 10) | (((unsigned long)(rc)) & 1))
282862306a36Sopenharmony_ci#define XO_MASK XO (0x3f, 0x1ff, 1, 1)
282962306a36Sopenharmony_ci
283062306a36Sopenharmony_ci/* An XO_MASK with the RB field fixed.  */
283162306a36Sopenharmony_ci#define XORB_MASK (XO_MASK | RB_MASK)
283262306a36Sopenharmony_ci
283362306a36Sopenharmony_ci/* An XOPS form instruction for paired singles.  */
283462306a36Sopenharmony_ci#define XOPS(op, xop, rc) \
283562306a36Sopenharmony_ci  (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1))
283662306a36Sopenharmony_ci#define XOPS_MASK XOPS (0x3f, 0x3ff, 1)
283762306a36Sopenharmony_ci
283862306a36Sopenharmony_ci
283962306a36Sopenharmony_ci/* An XS form instruction.  */
284062306a36Sopenharmony_ci#define XS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2) | (((unsigned long)(rc)) & 1))
284162306a36Sopenharmony_ci#define XS_MASK XS (0x3f, 0x1ff, 1)
284262306a36Sopenharmony_ci
284362306a36Sopenharmony_ci/* A mask for the FXM version of an XFX form instruction.  */
284462306a36Sopenharmony_ci#define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
284562306a36Sopenharmony_ci
284662306a36Sopenharmony_ci/* An XFX form instruction with the FXM field filled in.  */
284762306a36Sopenharmony_ci#define XFXM(op, xop, fxm, p4) \
284862306a36Sopenharmony_ci  (X ((op), (xop)) | ((((unsigned long)(fxm)) & 0xff) << 12) \
284962306a36Sopenharmony_ci   | ((unsigned long)(p4) << 20))
285062306a36Sopenharmony_ci
285162306a36Sopenharmony_ci/* An XFX form instruction with the SPR field filled in.  */
285262306a36Sopenharmony_ci#define XSPR(op, xop, spr) \
285362306a36Sopenharmony_ci  (X ((op), (xop)) | ((((unsigned long)(spr)) & 0x1f) << 16) | ((((unsigned long)(spr)) & 0x3e0) << 6))
285462306a36Sopenharmony_ci#define XSPR_MASK (X_MASK | SPR_MASK)
285562306a36Sopenharmony_ci
285662306a36Sopenharmony_ci/* An XFX form instruction with the SPR field filled in except for the
285762306a36Sopenharmony_ci   SPRBAT field.  */
285862306a36Sopenharmony_ci#define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
285962306a36Sopenharmony_ci
286062306a36Sopenharmony_ci/* An XFX form instruction with the SPR field filled in except for the
286162306a36Sopenharmony_ci   SPRG field.  */
286262306a36Sopenharmony_ci#define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16))
286362306a36Sopenharmony_ci
286462306a36Sopenharmony_ci/* An X form instruction with everything filled in except the E field.  */
286562306a36Sopenharmony_ci#define XE_MASK (0xffff7fff)
286662306a36Sopenharmony_ci
286762306a36Sopenharmony_ci/* An X form user context instruction.  */
286862306a36Sopenharmony_ci#define XUC(op, xop)  (OP (op) | (((unsigned long)(xop)) & 0x1f))
286962306a36Sopenharmony_ci#define XUC_MASK      XUC(0x3f, 0x1f)
287062306a36Sopenharmony_ci
287162306a36Sopenharmony_ci/* An XW form instruction.  */
287262306a36Sopenharmony_ci#define XW(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3f) << 1) | ((rc) & 1))
287362306a36Sopenharmony_ci/* The mask for a G form instruction. rc not supported at present.  */
287462306a36Sopenharmony_ci#define XW_MASK XW (0x3f, 0x3f, 0)
287562306a36Sopenharmony_ci
287662306a36Sopenharmony_ci/* An APU form instruction.  */
287762306a36Sopenharmony_ci#define APU(op, xop, rc) (OP (op) | (((unsigned long)(xop)) & 0x3ff) << 1 | ((rc) & 1))
287862306a36Sopenharmony_ci
287962306a36Sopenharmony_ci/* The mask for an APU form instruction.  */
288062306a36Sopenharmony_ci#define APU_MASK APU (0x3f, 0x3ff, 1)
288162306a36Sopenharmony_ci#define APU_RT_MASK (APU_MASK | RT_MASK)
288262306a36Sopenharmony_ci#define APU_RA_MASK (APU_MASK | RA_MASK)
288362306a36Sopenharmony_ci
288462306a36Sopenharmony_ci/* The BO encodings used in extended conditional branch mnemonics.  */
288562306a36Sopenharmony_ci#define BODNZF	(0x0)
288662306a36Sopenharmony_ci#define BODNZFP	(0x1)
288762306a36Sopenharmony_ci#define BODZF	(0x2)
288862306a36Sopenharmony_ci#define BODZFP	(0x3)
288962306a36Sopenharmony_ci#define BODNZT	(0x8)
289062306a36Sopenharmony_ci#define BODNZTP	(0x9)
289162306a36Sopenharmony_ci#define BODZT	(0xa)
289262306a36Sopenharmony_ci#define BODZTP	(0xb)
289362306a36Sopenharmony_ci
289462306a36Sopenharmony_ci#define BOF	(0x4)
289562306a36Sopenharmony_ci#define BOFP	(0x5)
289662306a36Sopenharmony_ci#define BOFM4	(0x6)
289762306a36Sopenharmony_ci#define BOFP4	(0x7)
289862306a36Sopenharmony_ci#define BOT	(0xc)
289962306a36Sopenharmony_ci#define BOTP	(0xd)
290062306a36Sopenharmony_ci#define BOTM4	(0xe)
290162306a36Sopenharmony_ci#define BOTP4	(0xf)
290262306a36Sopenharmony_ci
290362306a36Sopenharmony_ci#define BODNZ	(0x10)
290462306a36Sopenharmony_ci#define BODNZP	(0x11)
290562306a36Sopenharmony_ci#define BODZ	(0x12)
290662306a36Sopenharmony_ci#define BODZP	(0x13)
290762306a36Sopenharmony_ci#define BODNZM4 (0x18)
290862306a36Sopenharmony_ci#define BODNZP4 (0x19)
290962306a36Sopenharmony_ci#define BODZM4	(0x1a)
291062306a36Sopenharmony_ci#define BODZP4	(0x1b)
291162306a36Sopenharmony_ci
291262306a36Sopenharmony_ci#define BOU	(0x14)
291362306a36Sopenharmony_ci
291462306a36Sopenharmony_ci/* The BO16 encodings used in extended VLE conditional branch mnemonics.  */
291562306a36Sopenharmony_ci#define BO16F   (0x0)
291662306a36Sopenharmony_ci#define BO16T   (0x1)
291762306a36Sopenharmony_ci
291862306a36Sopenharmony_ci/* The BO32 encodings used in extended VLE conditional branch mnemonics.  */
291962306a36Sopenharmony_ci#define BO32F   (0x0)
292062306a36Sopenharmony_ci#define BO32T   (0x1)
292162306a36Sopenharmony_ci#define BO32DNZ (0x2)
292262306a36Sopenharmony_ci#define BO32DZ  (0x3)
292362306a36Sopenharmony_ci
292462306a36Sopenharmony_ci/* The BI condition bit encodings used in extended conditional branch
292562306a36Sopenharmony_ci   mnemonics.  */
292662306a36Sopenharmony_ci#define CBLT	(0)
292762306a36Sopenharmony_ci#define CBGT	(1)
292862306a36Sopenharmony_ci#define CBEQ	(2)
292962306a36Sopenharmony_ci#define CBSO	(3)
293062306a36Sopenharmony_ci
293162306a36Sopenharmony_ci/* The TO encodings used in extended trap mnemonics.  */
293262306a36Sopenharmony_ci#define TOLGT	(0x1)
293362306a36Sopenharmony_ci#define TOLLT	(0x2)
293462306a36Sopenharmony_ci#define TOEQ	(0x4)
293562306a36Sopenharmony_ci#define TOLGE	(0x5)
293662306a36Sopenharmony_ci#define TOLNL	(0x5)
293762306a36Sopenharmony_ci#define TOLLE	(0x6)
293862306a36Sopenharmony_ci#define TOLNG	(0x6)
293962306a36Sopenharmony_ci#define TOGT	(0x8)
294062306a36Sopenharmony_ci#define TOGE	(0xc)
294162306a36Sopenharmony_ci#define TONL	(0xc)
294262306a36Sopenharmony_ci#define TOLT	(0x10)
294362306a36Sopenharmony_ci#define TOLE	(0x14)
294462306a36Sopenharmony_ci#define TONG	(0x14)
294562306a36Sopenharmony_ci#define TONE	(0x18)
294662306a36Sopenharmony_ci#define TOU	(0x1f)
294762306a36Sopenharmony_ci
294862306a36Sopenharmony_ci/* Smaller names for the flags so each entry in the opcodes table will
294962306a36Sopenharmony_ci   fit on a single line.  */
295062306a36Sopenharmony_ci#undef	PPC
295162306a36Sopenharmony_ci#define PPC	PPC_OPCODE_PPC
295262306a36Sopenharmony_ci#define PPCCOM	PPC_OPCODE_PPC | PPC_OPCODE_COMMON
295362306a36Sopenharmony_ci#define POWER4	PPC_OPCODE_POWER4
295462306a36Sopenharmony_ci#define POWER5	PPC_OPCODE_POWER5
295562306a36Sopenharmony_ci#define POWER6	PPC_OPCODE_POWER6
295662306a36Sopenharmony_ci#define POWER7	PPC_OPCODE_POWER7
295762306a36Sopenharmony_ci#define POWER8	PPC_OPCODE_POWER8
295862306a36Sopenharmony_ci#define POWER9	PPC_OPCODE_POWER9
295962306a36Sopenharmony_ci#define CELL	PPC_OPCODE_CELL
296062306a36Sopenharmony_ci#define PPC64	PPC_OPCODE_64 | PPC_OPCODE_64_BRIDGE
296162306a36Sopenharmony_ci#define NON32	(PPC_OPCODE_64 | PPC_OPCODE_POWER4	\
296262306a36Sopenharmony_ci		 | PPC_OPCODE_EFS | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN)
296362306a36Sopenharmony_ci#define PPC403	PPC_OPCODE_403
296462306a36Sopenharmony_ci#define PPC405	PPC_OPCODE_405
296562306a36Sopenharmony_ci#define PPC440	PPC_OPCODE_440
296662306a36Sopenharmony_ci#define PPC464	PPC440
296762306a36Sopenharmony_ci#define PPC476	PPC_OPCODE_476
296862306a36Sopenharmony_ci#define PPC750	PPC_OPCODE_750
296962306a36Sopenharmony_ci#define PPC7450 PPC_OPCODE_7450
297062306a36Sopenharmony_ci#define PPC860	PPC_OPCODE_860
297162306a36Sopenharmony_ci#define PPCPS	PPC_OPCODE_PPCPS
297262306a36Sopenharmony_ci#define PPCVEC	PPC_OPCODE_ALTIVEC
297362306a36Sopenharmony_ci#define PPCVEC2	PPC_OPCODE_ALTIVEC2
297462306a36Sopenharmony_ci#define PPCVEC3	PPC_OPCODE_ALTIVEC2
297562306a36Sopenharmony_ci#define PPCVSX	PPC_OPCODE_VSX
297662306a36Sopenharmony_ci#define PPCVSX2	PPC_OPCODE_VSX
297762306a36Sopenharmony_ci#define PPCVSX3	PPC_OPCODE_VSX3
297862306a36Sopenharmony_ci#define POWER	PPC_OPCODE_POWER
297962306a36Sopenharmony_ci#define POWER2	PPC_OPCODE_POWER | PPC_OPCODE_POWER2
298062306a36Sopenharmony_ci#define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
298162306a36Sopenharmony_ci#define PPCPWR2 PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON
298262306a36Sopenharmony_ci#define COM	PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
298362306a36Sopenharmony_ci#define M601	PPC_OPCODE_POWER | PPC_OPCODE_601
298462306a36Sopenharmony_ci#define PWRCOM	PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
298562306a36Sopenharmony_ci#define MFDEC1	PPC_OPCODE_POWER
298662306a36Sopenharmony_ci#define MFDEC2	PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE | PPC_OPCODE_TITAN
298762306a36Sopenharmony_ci#define BOOKE	PPC_OPCODE_BOOKE
298862306a36Sopenharmony_ci#define NO371	PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
298962306a36Sopenharmony_ci#define PPCE300 PPC_OPCODE_E300
299062306a36Sopenharmony_ci#define PPCSPE	PPC_OPCODE_SPE
299162306a36Sopenharmony_ci#define PPCISEL PPC_OPCODE_ISEL
299262306a36Sopenharmony_ci#define PPCEFS	PPC_OPCODE_EFS
299362306a36Sopenharmony_ci#define PPCBRLK PPC_OPCODE_BRLOCK
299462306a36Sopenharmony_ci#define PPCPMR	PPC_OPCODE_PMR
299562306a36Sopenharmony_ci#define PPCTMR  PPC_OPCODE_TMR
299662306a36Sopenharmony_ci#define PPCCHLK PPC_OPCODE_CACHELCK
299762306a36Sopenharmony_ci#define PPCRFMCI	PPC_OPCODE_RFMCI
299862306a36Sopenharmony_ci#define E500MC  PPC_OPCODE_E500MC
299962306a36Sopenharmony_ci#define PPCA2	PPC_OPCODE_A2
300062306a36Sopenharmony_ci#define TITAN   PPC_OPCODE_TITAN
300162306a36Sopenharmony_ci#define MULHW   PPC_OPCODE_405 | PPC_OPCODE_440 | TITAN
300262306a36Sopenharmony_ci#define E500	PPC_OPCODE_E500
300362306a36Sopenharmony_ci#define E6500	PPC_OPCODE_E6500
300462306a36Sopenharmony_ci#define PPCVLE  PPC_OPCODE_VLE
300562306a36Sopenharmony_ci#define PPCHTM  PPC_OPCODE_HTM
300662306a36Sopenharmony_ci#define E200Z4  PPC_OPCODE_E200Z4
300762306a36Sopenharmony_ci/* The list of embedded processors that use the embedded operand ordering
300862306a36Sopenharmony_ci   for the 3 operand dcbt and dcbtst instructions.  */
300962306a36Sopenharmony_ci#define DCBT_EO	(PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \
301062306a36Sopenharmony_ci		 | PPC_OPCODE_A2)
301162306a36Sopenharmony_ci
301262306a36Sopenharmony_ci
301362306a36Sopenharmony_ci
301462306a36Sopenharmony_ci/* The opcode table.
301562306a36Sopenharmony_ci
301662306a36Sopenharmony_ci   The format of the opcode table is:
301762306a36Sopenharmony_ci
301862306a36Sopenharmony_ci   NAME		OPCODE		MASK	     FLAGS	ANTI		{OPERANDS}
301962306a36Sopenharmony_ci
302062306a36Sopenharmony_ci   NAME is the name of the instruction.
302162306a36Sopenharmony_ci   OPCODE is the instruction opcode.
302262306a36Sopenharmony_ci   MASK is the opcode mask; this is used to tell the disassembler
302362306a36Sopenharmony_ci     which bits in the actual opcode must match OPCODE.
302462306a36Sopenharmony_ci   FLAGS are flags indicating which processors support the instruction.
302562306a36Sopenharmony_ci   ANTI indicates which processors don't support the instruction.
302662306a36Sopenharmony_ci   OPERANDS is the list of operands.
302762306a36Sopenharmony_ci
302862306a36Sopenharmony_ci   The disassembler reads the table in order and prints the first
302962306a36Sopenharmony_ci   instruction which matches, so this table is sorted to put more
303062306a36Sopenharmony_ci   specific instructions before more general instructions.
303162306a36Sopenharmony_ci
303262306a36Sopenharmony_ci   This table must be sorted by major opcode.  Please try to keep it
303362306a36Sopenharmony_ci   vaguely sorted within major opcode too, except of course where
303462306a36Sopenharmony_ci   constrained otherwise by disassembler operation.  */
303562306a36Sopenharmony_ci
303662306a36Sopenharmony_ciconst struct powerpc_opcode powerpc_opcodes[] = {
303762306a36Sopenharmony_ci{"attn",	X(0,256),	X_MASK,	  POWER4|PPCA2,	PPC476|PPCVLE,	{0}},
303862306a36Sopenharmony_ci{"tdlgti",	OPTO(2,TOLGT),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
303962306a36Sopenharmony_ci{"tdllti",	OPTO(2,TOLLT),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
304062306a36Sopenharmony_ci{"tdeqi",	OPTO(2,TOEQ),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
304162306a36Sopenharmony_ci{"tdlgei",	OPTO(2,TOLGE),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
304262306a36Sopenharmony_ci{"tdlnli",	OPTO(2,TOLNL),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
304362306a36Sopenharmony_ci{"tdllei",	OPTO(2,TOLLE),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
304462306a36Sopenharmony_ci{"tdlngi",	OPTO(2,TOLNG),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
304562306a36Sopenharmony_ci{"tdgti",	OPTO(2,TOGT),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
304662306a36Sopenharmony_ci{"tdgei",	OPTO(2,TOGE),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
304762306a36Sopenharmony_ci{"tdnli",	OPTO(2,TONL),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
304862306a36Sopenharmony_ci{"tdlti",	OPTO(2,TOLT),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
304962306a36Sopenharmony_ci{"tdlei",	OPTO(2,TOLE),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
305062306a36Sopenharmony_ci{"tdngi",	OPTO(2,TONG),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
305162306a36Sopenharmony_ci{"tdnei",	OPTO(2,TONE),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
305262306a36Sopenharmony_ci{"tdui",	OPTO(2,TOU),	OPTO_MASK,   PPC64,	PPCVLE,		{RA, SI}},
305362306a36Sopenharmony_ci{"tdi",		OP(2),		OP_MASK,     PPC64,	PPCVLE,		{TO, RA, SI}},
305462306a36Sopenharmony_ci
305562306a36Sopenharmony_ci{"twlgti",	OPTO(3,TOLGT),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
305662306a36Sopenharmony_ci{"tlgti",	OPTO(3,TOLGT),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
305762306a36Sopenharmony_ci{"twllti",	OPTO(3,TOLLT),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
305862306a36Sopenharmony_ci{"tllti",	OPTO(3,TOLLT),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
305962306a36Sopenharmony_ci{"tweqi",	OPTO(3,TOEQ),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
306062306a36Sopenharmony_ci{"teqi",	OPTO(3,TOEQ),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
306162306a36Sopenharmony_ci{"twlgei",	OPTO(3,TOLGE),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
306262306a36Sopenharmony_ci{"tlgei",	OPTO(3,TOLGE),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
306362306a36Sopenharmony_ci{"twlnli",	OPTO(3,TOLNL),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
306462306a36Sopenharmony_ci{"tlnli",	OPTO(3,TOLNL),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
306562306a36Sopenharmony_ci{"twllei",	OPTO(3,TOLLE),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
306662306a36Sopenharmony_ci{"tllei",	OPTO(3,TOLLE),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
306762306a36Sopenharmony_ci{"twlngi",	OPTO(3,TOLNG),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
306862306a36Sopenharmony_ci{"tlngi",	OPTO(3,TOLNG),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
306962306a36Sopenharmony_ci{"twgti",	OPTO(3,TOGT),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
307062306a36Sopenharmony_ci{"tgti",	OPTO(3,TOGT),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
307162306a36Sopenharmony_ci{"twgei",	OPTO(3,TOGE),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
307262306a36Sopenharmony_ci{"tgei",	OPTO(3,TOGE),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
307362306a36Sopenharmony_ci{"twnli",	OPTO(3,TONL),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
307462306a36Sopenharmony_ci{"tnli",	OPTO(3,TONL),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
307562306a36Sopenharmony_ci{"twlti",	OPTO(3,TOLT),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
307662306a36Sopenharmony_ci{"tlti",	OPTO(3,TOLT),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
307762306a36Sopenharmony_ci{"twlei",	OPTO(3,TOLE),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
307862306a36Sopenharmony_ci{"tlei",	OPTO(3,TOLE),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
307962306a36Sopenharmony_ci{"twngi",	OPTO(3,TONG),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
308062306a36Sopenharmony_ci{"tngi",	OPTO(3,TONG),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
308162306a36Sopenharmony_ci{"twnei",	OPTO(3,TONE),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
308262306a36Sopenharmony_ci{"tnei",	OPTO(3,TONE),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
308362306a36Sopenharmony_ci{"twui",	OPTO(3,TOU),	OPTO_MASK,   PPCCOM,	PPCVLE,		{RA, SI}},
308462306a36Sopenharmony_ci{"tui",		OPTO(3,TOU),	OPTO_MASK,   PWRCOM,	PPCVLE,		{RA, SI}},
308562306a36Sopenharmony_ci{"twi",		OP(3),		OP_MASK,     PPCCOM,	PPCVLE,		{TO, RA, SI}},
308662306a36Sopenharmony_ci{"ti",		OP(3),		OP_MASK,     PWRCOM,	PPCVLE,		{TO, RA, SI}},
308762306a36Sopenharmony_ci
308862306a36Sopenharmony_ci{"ps_cmpu0",	X  (4,	 0),	XBF_MASK,    PPCPS,	0,		{BF, FRA, FRB}},
308962306a36Sopenharmony_ci{"vaddubm",	VX (4,	 0),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
309062306a36Sopenharmony_ci{"vmul10cuq",	VX (4,	 1),	VXVB_MASK,   PPCVEC3,	0,		{VD, VA}},
309162306a36Sopenharmony_ci{"vmaxub",	VX (4,	 2),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
309262306a36Sopenharmony_ci{"vrlb",	VX (4,	 4),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
309362306a36Sopenharmony_ci{"vcmpequb",	VXR(4,	 6,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
309462306a36Sopenharmony_ci{"vcmpneb",	VXR(4,	 7,0),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
309562306a36Sopenharmony_ci{"vmuloub",	VX (4,	 8),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
309662306a36Sopenharmony_ci{"vaddfp",	VX (4,	10),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
309762306a36Sopenharmony_ci{"psq_lx",	XW (4,	 6,0),	XW_MASK,     PPCPS,	0,		{FRT,RA,RB,PSWM,PSQM}},
309862306a36Sopenharmony_ci{"vmrghb",	VX (4,	12),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
309962306a36Sopenharmony_ci{"psq_stx",	XW (4,	 7,0),	XW_MASK,     PPCPS,	0,		{FRS,RA,RB,PSWM,PSQM}},
310062306a36Sopenharmony_ci{"vpkuhum",	VX (4,	14),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
310162306a36Sopenharmony_ci{"mulhhwu",	XRC(4,	 8,0),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
310262306a36Sopenharmony_ci{"mulhhwu.",	XRC(4,	 8,1),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
310362306a36Sopenharmony_ci{"ps_sum0",	A  (4,	10,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
310462306a36Sopenharmony_ci{"ps_sum0.",	A  (4,	10,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
310562306a36Sopenharmony_ci{"ps_sum1",	A  (4,	11,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
310662306a36Sopenharmony_ci{"ps_sum1.",	A  (4,	11,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
310762306a36Sopenharmony_ci{"ps_muls0",	A  (4,	12,0),	AFRB_MASK,   PPCPS,	0,		{FRT, FRA, FRC}},
310862306a36Sopenharmony_ci{"machhwu",	XO (4,	12,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
310962306a36Sopenharmony_ci{"ps_muls0.",	A  (4,	12,1),	AFRB_MASK,   PPCPS,	0,		{FRT, FRA, FRC}},
311062306a36Sopenharmony_ci{"machhwu.",	XO (4,	12,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
311162306a36Sopenharmony_ci{"ps_muls1",	A  (4,	13,0),	AFRB_MASK,   PPCPS,	0,		{FRT, FRA, FRC}},
311262306a36Sopenharmony_ci{"ps_muls1.",	A  (4,	13,1),	AFRB_MASK,   PPCPS,	0,		{FRT, FRA, FRC}},
311362306a36Sopenharmony_ci{"ps_madds0",	A  (4,	14,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
311462306a36Sopenharmony_ci{"ps_madds0.",	A  (4,	14,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
311562306a36Sopenharmony_ci{"ps_madds1",	A  (4,	15,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
311662306a36Sopenharmony_ci{"ps_madds1.",	A  (4,	15,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
311762306a36Sopenharmony_ci{"vmhaddshs",	VXA(4,	32),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
311862306a36Sopenharmony_ci{"vmhraddshs",	VXA(4,	33),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
311962306a36Sopenharmony_ci{"vmladduhm",	VXA(4,	34),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
312062306a36Sopenharmony_ci{"vmsumudm",	VXA(4,	35),	VXA_MASK,    PPCVEC3,	0,		{VD, VA, VB, VC}},
312162306a36Sopenharmony_ci{"ps_div",	A  (4,	18,0),	AFRC_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
312262306a36Sopenharmony_ci{"vmsumubm",	VXA(4,	36),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
312362306a36Sopenharmony_ci{"ps_div.",	A  (4,	18,1),	AFRC_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
312462306a36Sopenharmony_ci{"vmsummbm",	VXA(4,	37),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
312562306a36Sopenharmony_ci{"vmsumuhm",	VXA(4,	38),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
312662306a36Sopenharmony_ci{"vmsumuhs",	VXA(4,	39),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
312762306a36Sopenharmony_ci{"ps_sub",	A  (4,	20,0),	AFRC_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
312862306a36Sopenharmony_ci{"vmsumshm",	VXA(4,	40),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
312962306a36Sopenharmony_ci{"ps_sub.",	A  (4,	20,1),	AFRC_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
313062306a36Sopenharmony_ci{"vmsumshs",	VXA(4,	41),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
313162306a36Sopenharmony_ci{"ps_add",	A  (4,	21,0),	AFRC_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
313262306a36Sopenharmony_ci{"vsel",	VXA(4,	42),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
313362306a36Sopenharmony_ci{"ps_add.",	A  (4,	21,1),	AFRC_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
313462306a36Sopenharmony_ci{"vperm",	VXA(4,	43),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VB, VC}},
313562306a36Sopenharmony_ci{"vsldoi",	VXA(4,	44),	VXASHB_MASK, PPCVEC,	0,		{VD, VA, VB, SHB}},
313662306a36Sopenharmony_ci{"vpermxor",	VXA(4,	45),	VXA_MASK,    PPCVEC2,	0,		{VD, VA, VB, VC}},
313762306a36Sopenharmony_ci{"ps_sel",	A  (4,	23,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
313862306a36Sopenharmony_ci{"vmaddfp",	VXA(4,	46),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VC, VB}},
313962306a36Sopenharmony_ci{"ps_sel.",	A  (4,	23,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
314062306a36Sopenharmony_ci{"vnmsubfp",	VXA(4,	47),	VXA_MASK,    PPCVEC,	0,		{VD, VA, VC, VB}},
314162306a36Sopenharmony_ci{"ps_res",	A  (4,	24,0), AFRAFRC_MASK, PPCPS,	0,		{FRT, FRB}},
314262306a36Sopenharmony_ci{"maddhd",	VXA(4,	48),	VXA_MASK,    POWER9,	0,		{RT, RA, RB, RC}},
314362306a36Sopenharmony_ci{"ps_res.",	A  (4,	24,1), AFRAFRC_MASK, PPCPS,	0,		{FRT, FRB}},
314462306a36Sopenharmony_ci{"maddhdu",	VXA(4,	49),	VXA_MASK,    POWER9,	0,		{RT, RA, RB, RC}},
314562306a36Sopenharmony_ci{"ps_mul",	A  (4,	25,0),	AFRB_MASK,   PPCPS,	0,		{FRT, FRA, FRC}},
314662306a36Sopenharmony_ci{"ps_mul.",	A  (4,	25,1),	AFRB_MASK,   PPCPS,	0,		{FRT, FRA, FRC}},
314762306a36Sopenharmony_ci{"maddld",	VXA(4,	51),	VXA_MASK,    POWER9,	0,		{RT, RA, RB, RC}},
314862306a36Sopenharmony_ci{"ps_rsqrte",	A  (4,	26,0), AFRAFRC_MASK, PPCPS,	0,		{FRT, FRB}},
314962306a36Sopenharmony_ci{"ps_rsqrte.",	A  (4,	26,1), AFRAFRC_MASK, PPCPS,	0,		{FRT, FRB}},
315062306a36Sopenharmony_ci{"ps_msub",	A  (4,	28,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
315162306a36Sopenharmony_ci{"ps_msub.",	A  (4,	28,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
315262306a36Sopenharmony_ci{"ps_madd",	A  (4,	29,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
315362306a36Sopenharmony_ci{"ps_madd.",	A  (4,	29,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
315462306a36Sopenharmony_ci{"vpermr",	VXA(4,	59),	VXA_MASK,    PPCVEC3,	0,		{VD, VA, VB, VC}},
315562306a36Sopenharmony_ci{"ps_nmsub",	A  (4,	30,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
315662306a36Sopenharmony_ci{"vaddeuqm",	VXA(4,	60),	VXA_MASK,    PPCVEC2,	0,		{VD, VA, VB, VC}},
315762306a36Sopenharmony_ci{"ps_nmsub.",	A  (4,	30,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
315862306a36Sopenharmony_ci{"vaddecuq",	VXA(4,	61),	VXA_MASK,    PPCVEC2,	0,		{VD, VA, VB, VC}},
315962306a36Sopenharmony_ci{"ps_nmadd",	A  (4,	31,0),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
316062306a36Sopenharmony_ci{"vsubeuqm",	VXA(4,	62),	VXA_MASK,    PPCVEC2,	0,		{VD, VA, VB, VC}},
316162306a36Sopenharmony_ci{"ps_nmadd.",	A  (4,	31,1),	A_MASK,	     PPCPS,	0,		{FRT, FRA, FRC, FRB}},
316262306a36Sopenharmony_ci{"vsubecuq",	VXA(4,	63),	VXA_MASK,    PPCVEC2,	0,		{VD, VA, VB, VC}},
316362306a36Sopenharmony_ci{"ps_cmpo0",	X  (4,	32),	XBF_MASK,    PPCPS,	0,		{BF, FRA, FRB}},
316462306a36Sopenharmony_ci{"vadduhm",	VX (4,	64),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
316562306a36Sopenharmony_ci{"vmul10ecuq",	VX (4,	65),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
316662306a36Sopenharmony_ci{"vmaxuh",	VX (4,	66),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
316762306a36Sopenharmony_ci{"vrlh",	VX (4,	68),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
316862306a36Sopenharmony_ci{"vcmpequh",	VXR(4,	70,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
316962306a36Sopenharmony_ci{"vcmpneh",	VXR(4,	71,0),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
317062306a36Sopenharmony_ci{"vmulouh",	VX (4,	72),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
317162306a36Sopenharmony_ci{"vsubfp",	VX (4,	74),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
317262306a36Sopenharmony_ci{"psq_lux",	XW (4,	38,0),	XW_MASK,     PPCPS,	0,		{FRT,RA,RB,PSWM,PSQM}},
317362306a36Sopenharmony_ci{"vmrghh",	VX (4,	76),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
317462306a36Sopenharmony_ci{"psq_stux",	XW (4,	39,0),	XW_MASK,     PPCPS,	0,		{FRS,RA,RB,PSWM,PSQM}},
317562306a36Sopenharmony_ci{"vpkuwum",	VX (4,	78),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
317662306a36Sopenharmony_ci{"ps_neg",	XRC(4,	40,0),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
317762306a36Sopenharmony_ci{"mulhhw",	XRC(4,	40,0),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
317862306a36Sopenharmony_ci{"ps_neg.",	XRC(4,	40,1),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
317962306a36Sopenharmony_ci{"mulhhw.",	XRC(4,	40,1),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
318062306a36Sopenharmony_ci{"machhw",	XO (4,	44,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
318162306a36Sopenharmony_ci{"machhw.",	XO (4,	44,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
318262306a36Sopenharmony_ci{"nmachhw",	XO (4,	46,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
318362306a36Sopenharmony_ci{"nmachhw.",	XO (4,	46,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
318462306a36Sopenharmony_ci{"ps_cmpu1",	X  (4,	64),	XBF_MASK,    PPCPS,	0,		{BF, FRA, FRB}},
318562306a36Sopenharmony_ci{"vadduwm",	VX (4,	128),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
318662306a36Sopenharmony_ci{"vmaxuw",	VX (4,	130),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
318762306a36Sopenharmony_ci{"vrlw",	VX (4,	132),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
318862306a36Sopenharmony_ci{"vrlwmi",	VX (4,	133),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
318962306a36Sopenharmony_ci{"vcmpequw",	VXR(4,	134,0), VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
319062306a36Sopenharmony_ci{"vcmpnew",	VXR(4,	135,0),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
319162306a36Sopenharmony_ci{"vmulouw",	VX (4,	136),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
319262306a36Sopenharmony_ci{"vmuluwm",	VX (4,	137),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
319362306a36Sopenharmony_ci{"vmrghw",	VX (4,	140),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
319462306a36Sopenharmony_ci{"vpkuhus",	VX (4,	142),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
319562306a36Sopenharmony_ci{"ps_mr",	XRC(4,	72,0),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
319662306a36Sopenharmony_ci{"ps_mr.",	XRC(4,	72,1),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
319762306a36Sopenharmony_ci{"machhwsu",	XO (4,	76,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
319862306a36Sopenharmony_ci{"machhwsu.",	XO (4,	76,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
319962306a36Sopenharmony_ci{"ps_cmpo1",	X  (4,	96),	XBF_MASK,    PPCPS,	0,		{BF, FRA, FRB}},
320062306a36Sopenharmony_ci{"vaddudm",	VX (4, 192),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
320162306a36Sopenharmony_ci{"vmaxud",	VX (4, 194),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
320262306a36Sopenharmony_ci{"vrld",	VX (4, 196),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
320362306a36Sopenharmony_ci{"vrldmi",	VX (4, 197),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
320462306a36Sopenharmony_ci{"vcmpeqfp",	VXR(4, 198,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
320562306a36Sopenharmony_ci{"vcmpequd",	VXR(4, 199,0),	VXR_MASK,    PPCVEC2,	0,		{VD, VA, VB}},
320662306a36Sopenharmony_ci{"vpkuwus",	VX (4, 206),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
320762306a36Sopenharmony_ci{"machhws",	XO (4, 108,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
320862306a36Sopenharmony_ci{"machhws.",	XO (4, 108,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
320962306a36Sopenharmony_ci{"nmachhws",	XO (4, 110,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
321062306a36Sopenharmony_ci{"nmachhws.",	XO (4, 110,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
321162306a36Sopenharmony_ci{"vadduqm",	VX (4, 256),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
321262306a36Sopenharmony_ci{"vmaxsb",	VX (4, 258),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
321362306a36Sopenharmony_ci{"vslb",	VX (4, 260),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
321462306a36Sopenharmony_ci{"vcmpnezb",	VXR(4, 263,0),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
321562306a36Sopenharmony_ci{"vmulosb",	VX (4, 264),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
321662306a36Sopenharmony_ci{"vrefp",	VX (4, 266),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
321762306a36Sopenharmony_ci{"vmrglb",	VX (4, 268),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
321862306a36Sopenharmony_ci{"vpkshus",	VX (4, 270),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
321962306a36Sopenharmony_ci{"ps_nabs",	XRC(4, 136,0),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
322062306a36Sopenharmony_ci{"mulchwu",	XRC(4, 136,0),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
322162306a36Sopenharmony_ci{"ps_nabs.",	XRC(4, 136,1),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
322262306a36Sopenharmony_ci{"mulchwu.",	XRC(4, 136,1),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
322362306a36Sopenharmony_ci{"macchwu",	XO (4, 140,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
322462306a36Sopenharmony_ci{"macchwu.",	XO (4, 140,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
322562306a36Sopenharmony_ci{"vaddcuq",	VX (4, 320),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
322662306a36Sopenharmony_ci{"vmaxsh",	VX (4, 322),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
322762306a36Sopenharmony_ci{"vslh",	VX (4, 324),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
322862306a36Sopenharmony_ci{"vcmpnezh",	VXR(4, 327,0),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
322962306a36Sopenharmony_ci{"vmulosh",	VX (4, 328),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
323062306a36Sopenharmony_ci{"vrsqrtefp",	VX (4, 330),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
323162306a36Sopenharmony_ci{"vmrglh",	VX (4, 332),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
323262306a36Sopenharmony_ci{"vpkswus",	VX (4, 334),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
323362306a36Sopenharmony_ci{"mulchw",	XRC(4, 168,0),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
323462306a36Sopenharmony_ci{"mulchw.",	XRC(4, 168,1),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
323562306a36Sopenharmony_ci{"macchw",	XO (4, 172,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
323662306a36Sopenharmony_ci{"macchw.",	XO (4, 172,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
323762306a36Sopenharmony_ci{"nmacchw",	XO (4, 174,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
323862306a36Sopenharmony_ci{"nmacchw.",	XO (4, 174,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
323962306a36Sopenharmony_ci{"vaddcuw",	VX (4, 384),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
324062306a36Sopenharmony_ci{"vmaxsw",	VX (4, 386),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
324162306a36Sopenharmony_ci{"vslw",	VX (4, 388),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
324262306a36Sopenharmony_ci{"vrlwnm",	VX (4, 389),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
324362306a36Sopenharmony_ci{"vcmpnezw",	VXR(4, 391,0),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
324462306a36Sopenharmony_ci{"vmulosw",	VX (4, 392),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
324562306a36Sopenharmony_ci{"vexptefp",	VX (4, 394),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
324662306a36Sopenharmony_ci{"vmrglw",	VX (4, 396),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
324762306a36Sopenharmony_ci{"vpkshss",	VX (4, 398),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
324862306a36Sopenharmony_ci{"macchwsu",	XO (4, 204,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
324962306a36Sopenharmony_ci{"macchwsu.",	XO (4, 204,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
325062306a36Sopenharmony_ci{"vmaxsd",	VX (4, 450),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
325162306a36Sopenharmony_ci{"vsl",		VX (4, 452),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
325262306a36Sopenharmony_ci{"vrldnm",	VX (4, 453),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
325362306a36Sopenharmony_ci{"vcmpgefp",	VXR(4, 454,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
325462306a36Sopenharmony_ci{"vlogefp",	VX (4, 458),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
325562306a36Sopenharmony_ci{"vpkswss",	VX (4, 462),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
325662306a36Sopenharmony_ci{"macchws",	XO (4, 236,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
325762306a36Sopenharmony_ci{"macchws.",	XO (4, 236,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
325862306a36Sopenharmony_ci{"nmacchws",	XO (4, 238,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
325962306a36Sopenharmony_ci{"nmacchws.",	XO (4, 238,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
326062306a36Sopenharmony_ci{"evaddw",	VX (4, 512),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
326162306a36Sopenharmony_ci{"vaddubs",	VX (4, 512),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
326262306a36Sopenharmony_ci{"vmul10uq",	VX (4, 513),	VXVB_MASK,   PPCVEC3,	0,		{VD, VA}},
326362306a36Sopenharmony_ci{"evaddiw",	VX (4, 514),	VX_MASK,     PPCSPE,	0,		{RS, RB, UIMM}},
326462306a36Sopenharmony_ci{"vminub",	VX (4, 514),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
326562306a36Sopenharmony_ci{"evsubfw",	VX (4, 516),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
326662306a36Sopenharmony_ci{"evsubw",	VX (4, 516),	VX_MASK,     PPCSPE,	0,		{RS, RB, RA}},
326762306a36Sopenharmony_ci{"vsrb",	VX (4, 516),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
326862306a36Sopenharmony_ci{"evsubifw",	VX (4, 518),	VX_MASK,     PPCSPE,	0,		{RS, UIMM, RB}},
326962306a36Sopenharmony_ci{"evsubiw",	VX (4, 518),	VX_MASK,     PPCSPE,	0,		{RS, RB, UIMM}},
327062306a36Sopenharmony_ci{"vcmpgtub",	VXR(4, 518,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
327162306a36Sopenharmony_ci{"evabs",	VX (4, 520),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
327262306a36Sopenharmony_ci{"vmuleub",	VX (4, 520),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
327362306a36Sopenharmony_ci{"evneg",	VX (4, 521),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
327462306a36Sopenharmony_ci{"evextsb",	VX (4, 522),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
327562306a36Sopenharmony_ci{"vrfin",	VX (4, 522),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
327662306a36Sopenharmony_ci{"evextsh",	VX (4, 523),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
327762306a36Sopenharmony_ci{"evrndw",	VX (4, 524),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
327862306a36Sopenharmony_ci{"vspltb",	VX (4, 524),   VXUIMM4_MASK, PPCVEC,	0,		{VD, VB, UIMM4}},
327962306a36Sopenharmony_ci{"vextractub",	VX (4, 525),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
328062306a36Sopenharmony_ci{"evcntlzw",	VX (4, 525),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
328162306a36Sopenharmony_ci{"evcntlsw",	VX (4, 526),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
328262306a36Sopenharmony_ci{"vupkhsb",	VX (4, 526),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
328362306a36Sopenharmony_ci{"brinc",	VX (4, 527),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
328462306a36Sopenharmony_ci{"ps_abs",	XRC(4, 264,0),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
328562306a36Sopenharmony_ci{"ps_abs.",	XRC(4, 264,1),	XRA_MASK,    PPCPS,	0,		{FRT, FRB}},
328662306a36Sopenharmony_ci{"evand",	VX (4, 529),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
328762306a36Sopenharmony_ci{"evandc",	VX (4, 530),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
328862306a36Sopenharmony_ci{"evxor",	VX (4, 534),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
328962306a36Sopenharmony_ci{"evmr",	VX (4, 535),	VX_MASK,     PPCSPE,	0,		{RS, RA, BBA}},
329062306a36Sopenharmony_ci{"evor",	VX (4, 535),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
329162306a36Sopenharmony_ci{"evnor",	VX (4, 536),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
329262306a36Sopenharmony_ci{"evnot",	VX (4, 536),	VX_MASK,     PPCSPE,	0,		{RS, RA, BBA}},
329362306a36Sopenharmony_ci{"get",		APU(4, 268,0),	APU_RA_MASK, PPC405,	0,		{RT, FSL}},
329462306a36Sopenharmony_ci{"eveqv",	VX (4, 537),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
329562306a36Sopenharmony_ci{"evorc",	VX (4, 539),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
329662306a36Sopenharmony_ci{"evnand",	VX (4, 542),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
329762306a36Sopenharmony_ci{"evsrwu",	VX (4, 544),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
329862306a36Sopenharmony_ci{"evsrws",	VX (4, 545),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
329962306a36Sopenharmony_ci{"evsrwiu",	VX (4, 546),	VX_MASK,     PPCSPE,	0,		{RS, RA, EVUIMM}},
330062306a36Sopenharmony_ci{"evsrwis",	VX (4, 547),	VX_MASK,     PPCSPE,	0,		{RS, RA, EVUIMM}},
330162306a36Sopenharmony_ci{"evslw",	VX (4, 548),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
330262306a36Sopenharmony_ci{"evslwi",	VX (4, 550),	VX_MASK,     PPCSPE,	0,		{RS, RA, EVUIMM}},
330362306a36Sopenharmony_ci{"evrlw",	VX (4, 552),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
330462306a36Sopenharmony_ci{"evsplati",	VX (4, 553),	VX_MASK,     PPCSPE,	0,		{RS, SIMM}},
330562306a36Sopenharmony_ci{"evrlwi",	VX (4, 554),	VX_MASK,     PPCSPE,	0,		{RS, RA, EVUIMM}},
330662306a36Sopenharmony_ci{"evsplatfi",	VX (4, 555),	VX_MASK,     PPCSPE,	0,		{RS, SIMM}},
330762306a36Sopenharmony_ci{"evmergehi",	VX (4, 556),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
330862306a36Sopenharmony_ci{"evmergelo",	VX (4, 557),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
330962306a36Sopenharmony_ci{"evmergehilo",	VX (4, 558),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
331062306a36Sopenharmony_ci{"evmergelohi",	VX (4, 559),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
331162306a36Sopenharmony_ci{"evcmpgtu",	VX (4, 560),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
331262306a36Sopenharmony_ci{"evcmpgts",	VX (4, 561),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
331362306a36Sopenharmony_ci{"evcmpltu",	VX (4, 562),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
331462306a36Sopenharmony_ci{"evcmplts",	VX (4, 563),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
331562306a36Sopenharmony_ci{"evcmpeq",	VX (4, 564),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
331662306a36Sopenharmony_ci{"cget",	APU(4, 284,0),	APU_RA_MASK, PPC405,	0,		{RT, FSL}},
331762306a36Sopenharmony_ci{"vadduhs",	VX (4, 576),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
331862306a36Sopenharmony_ci{"vmul10euq",	VX (4, 577),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
331962306a36Sopenharmony_ci{"vminuh",	VX (4, 578),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
332062306a36Sopenharmony_ci{"vsrh",	VX (4, 580),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
332162306a36Sopenharmony_ci{"vcmpgtuh",	VXR(4, 582,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
332262306a36Sopenharmony_ci{"vmuleuh",	VX (4, 584),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
332362306a36Sopenharmony_ci{"vrfiz",	VX (4, 586),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
332462306a36Sopenharmony_ci{"vsplth",	VX (4, 588),   VXUIMM3_MASK, PPCVEC,	0,		{VD, VB, UIMM3}},
332562306a36Sopenharmony_ci{"vextractuh",	VX (4, 589),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
332662306a36Sopenharmony_ci{"vupkhsh",	VX (4, 590),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
332762306a36Sopenharmony_ci{"nget",	APU(4, 300,0),	APU_RA_MASK, PPC405,	0,		{RT, FSL}},
332862306a36Sopenharmony_ci{"evsel",	EVSEL(4,79),	EVSEL_MASK,  PPCSPE,	0,		{RS, RA, RB, CRFS}},
332962306a36Sopenharmony_ci{"ncget",	APU(4, 316,0),	APU_RA_MASK, PPC405,	0,		{RT, FSL}},
333062306a36Sopenharmony_ci{"evfsadd",	VX (4, 640),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
333162306a36Sopenharmony_ci{"vadduws",	VX (4, 640),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
333262306a36Sopenharmony_ci{"evfssub",	VX (4, 641),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
333362306a36Sopenharmony_ci{"vminuw",	VX (4, 642),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
333462306a36Sopenharmony_ci{"evfsabs",	VX (4, 644),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
333562306a36Sopenharmony_ci{"vsrw",	VX (4, 644),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
333662306a36Sopenharmony_ci{"evfsnabs",	VX (4, 645),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
333762306a36Sopenharmony_ci{"evfsneg",	VX (4, 646),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
333862306a36Sopenharmony_ci{"vcmpgtuw",	VXR(4, 646,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
333962306a36Sopenharmony_ci{"vmuleuw",	VX (4, 648),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
334062306a36Sopenharmony_ci{"evfsmul",	VX (4, 648),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
334162306a36Sopenharmony_ci{"evfsdiv",	VX (4, 649),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
334262306a36Sopenharmony_ci{"vrfip",	VX (4, 650),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
334362306a36Sopenharmony_ci{"evfscmpgt",	VX (4, 652),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
334462306a36Sopenharmony_ci{"vspltw",	VX (4, 652),   VXUIMM2_MASK, PPCVEC,	0,		{VD, VB, UIMM2}},
334562306a36Sopenharmony_ci{"vextractuw",	VX (4, 653),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
334662306a36Sopenharmony_ci{"evfscmplt",	VX (4, 653),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
334762306a36Sopenharmony_ci{"evfscmpeq",	VX (4, 654),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
334862306a36Sopenharmony_ci{"vupklsb",	VX (4, 654),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
334962306a36Sopenharmony_ci{"evfscfui",	VX (4, 656),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
335062306a36Sopenharmony_ci{"evfscfsi",	VX (4, 657),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
335162306a36Sopenharmony_ci{"evfscfuf",	VX (4, 658),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
335262306a36Sopenharmony_ci{"evfscfsf",	VX (4, 659),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
335362306a36Sopenharmony_ci{"evfsctui",	VX (4, 660),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
335462306a36Sopenharmony_ci{"evfsctsi",	VX (4, 661),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
335562306a36Sopenharmony_ci{"evfsctuf",	VX (4, 662),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
335662306a36Sopenharmony_ci{"evfsctsf",	VX (4, 663),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
335762306a36Sopenharmony_ci{"evfsctuiz",	VX (4, 664),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
335862306a36Sopenharmony_ci{"put",		APU(4, 332,0),	APU_RT_MASK, PPC405,	0,		{RA, FSL}},
335962306a36Sopenharmony_ci{"evfsctsiz",	VX (4, 666),	VX_MASK,     PPCSPE,	0,		{RS, RB}},
336062306a36Sopenharmony_ci{"evfststgt",	VX (4, 668),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
336162306a36Sopenharmony_ci{"evfststlt",	VX (4, 669),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
336262306a36Sopenharmony_ci{"evfststeq",	VX (4, 670),	VX_MASK,     PPCSPE,	0,		{CRFD, RA, RB}},
336362306a36Sopenharmony_ci{"cput",	APU(4, 348,0),	APU_RT_MASK, PPC405,	0,		{RA, FSL}},
336462306a36Sopenharmony_ci{"efsadd",	VX (4, 704),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
336562306a36Sopenharmony_ci{"efssub",	VX (4, 705),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
336662306a36Sopenharmony_ci{"vminud",	VX (4, 706),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
336762306a36Sopenharmony_ci{"efsabs",	VX (4, 708),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
336862306a36Sopenharmony_ci{"vsr",		VX (4, 708),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
336962306a36Sopenharmony_ci{"efsnabs",	VX (4, 709),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
337062306a36Sopenharmony_ci{"efsneg",	VX (4, 710),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
337162306a36Sopenharmony_ci{"vcmpgtfp",	VXR(4, 710,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
337262306a36Sopenharmony_ci{"vcmpgtud",	VXR(4, 711,0),	VXR_MASK,    PPCVEC2,	0,		{VD, VA, VB}},
337362306a36Sopenharmony_ci{"efsmul",	VX (4, 712),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
337462306a36Sopenharmony_ci{"efsdiv",	VX (4, 713),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
337562306a36Sopenharmony_ci{"vrfim",	VX (4, 714),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
337662306a36Sopenharmony_ci{"efscmpgt",	VX (4, 716),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
337762306a36Sopenharmony_ci{"vextractd",	VX (4, 717),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
337862306a36Sopenharmony_ci{"efscmplt",	VX (4, 717),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
337962306a36Sopenharmony_ci{"efscmpeq",	VX (4, 718),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
338062306a36Sopenharmony_ci{"vupklsh",	VX (4, 718),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
338162306a36Sopenharmony_ci{"efscfd",	VX (4, 719),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
338262306a36Sopenharmony_ci{"efscfui",	VX (4, 720),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
338362306a36Sopenharmony_ci{"efscfsi",	VX (4, 721),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
338462306a36Sopenharmony_ci{"efscfuf",	VX (4, 722),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
338562306a36Sopenharmony_ci{"efscfsf",	VX (4, 723),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
338662306a36Sopenharmony_ci{"efsctui",	VX (4, 724),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
338762306a36Sopenharmony_ci{"efsctsi",	VX (4, 725),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
338862306a36Sopenharmony_ci{"efsctuf",	VX (4, 726),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
338962306a36Sopenharmony_ci{"efsctsf",	VX (4, 727),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
339062306a36Sopenharmony_ci{"efsctuiz",	VX (4, 728),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
339162306a36Sopenharmony_ci{"nput",	APU(4, 364,0),	APU_RT_MASK, PPC405,	0,		{RA, FSL}},
339262306a36Sopenharmony_ci{"efsctsiz",	VX (4, 730),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
339362306a36Sopenharmony_ci{"efststgt",	VX (4, 732),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
339462306a36Sopenharmony_ci{"efststlt",	VX (4, 733),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
339562306a36Sopenharmony_ci{"efststeq",	VX (4, 734),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
339662306a36Sopenharmony_ci{"efdadd",	VX (4, 736),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
339762306a36Sopenharmony_ci{"efdsub",	VX (4, 737),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
339862306a36Sopenharmony_ci{"efdcfuid",	VX (4, 738),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
339962306a36Sopenharmony_ci{"efdcfsid",	VX (4, 739),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
340062306a36Sopenharmony_ci{"efdabs",	VX (4, 740),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
340162306a36Sopenharmony_ci{"efdnabs",	VX (4, 741),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
340262306a36Sopenharmony_ci{"efdneg",	VX (4, 742),	VX_MASK,     PPCEFS,	0,		{RS, RA}},
340362306a36Sopenharmony_ci{"efdmul",	VX (4, 744),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
340462306a36Sopenharmony_ci{"efddiv",	VX (4, 745),	VX_MASK,     PPCEFS,	0,		{RS, RA, RB}},
340562306a36Sopenharmony_ci{"efdctuidz",	VX (4, 746),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
340662306a36Sopenharmony_ci{"efdctsidz",	VX (4, 747),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
340762306a36Sopenharmony_ci{"efdcmpgt",	VX (4, 748),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
340862306a36Sopenharmony_ci{"efdcmplt",	VX (4, 749),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
340962306a36Sopenharmony_ci{"efdcmpeq",	VX (4, 750),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
341062306a36Sopenharmony_ci{"efdcfs",	VX (4, 751),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
341162306a36Sopenharmony_ci{"efdcfui",	VX (4, 752),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
341262306a36Sopenharmony_ci{"efdcfsi",	VX (4, 753),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
341362306a36Sopenharmony_ci{"efdcfuf",	VX (4, 754),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
341462306a36Sopenharmony_ci{"efdcfsf",	VX (4, 755),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
341562306a36Sopenharmony_ci{"efdctui",	VX (4, 756),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
341662306a36Sopenharmony_ci{"efdctsi",	VX (4, 757),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
341762306a36Sopenharmony_ci{"efdctuf",	VX (4, 758),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
341862306a36Sopenharmony_ci{"efdctsf",	VX (4, 759),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
341962306a36Sopenharmony_ci{"efdctuiz",	VX (4, 760),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
342062306a36Sopenharmony_ci{"ncput",	APU(4, 380,0),	APU_RT_MASK, PPC405,	0,		{RA, FSL}},
342162306a36Sopenharmony_ci{"efdctsiz",	VX (4, 762),	VX_MASK,     PPCEFS,	0,		{RS, RB}},
342262306a36Sopenharmony_ci{"efdtstgt",	VX (4, 764),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
342362306a36Sopenharmony_ci{"efdtstlt",	VX (4, 765),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
342462306a36Sopenharmony_ci{"efdtsteq",	VX (4, 766),	VX_MASK,     PPCEFS,	0,		{CRFD, RA, RB}},
342562306a36Sopenharmony_ci{"evlddx",	VX (4, 768),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
342662306a36Sopenharmony_ci{"vaddsbs",	VX (4, 768),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
342762306a36Sopenharmony_ci{"evldd",	VX (4, 769),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_8, RA}},
342862306a36Sopenharmony_ci{"evldwx",	VX (4, 770),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
342962306a36Sopenharmony_ci{"vminsb",	VX (4, 770),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
343062306a36Sopenharmony_ci{"evldw",	VX (4, 771),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_8, RA}},
343162306a36Sopenharmony_ci{"evldhx",	VX (4, 772),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
343262306a36Sopenharmony_ci{"vsrab",	VX (4, 772),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
343362306a36Sopenharmony_ci{"evldh",	VX (4, 773),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_8, RA}},
343462306a36Sopenharmony_ci{"vcmpgtsb",	VXR(4, 774,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
343562306a36Sopenharmony_ci{"evlhhesplatx",VX (4, 776),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
343662306a36Sopenharmony_ci{"vmulesb",	VX (4, 776),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
343762306a36Sopenharmony_ci{"evlhhesplat",	VX (4, 777),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_2, RA}},
343862306a36Sopenharmony_ci{"vcfux",	VX (4, 778),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
343962306a36Sopenharmony_ci{"vcuxwfp",	VX (4, 778),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
344062306a36Sopenharmony_ci{"evlhhousplatx",VX(4, 780),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
344162306a36Sopenharmony_ci{"vspltisb",	VX (4, 780),	VXVB_MASK,   PPCVEC,	0,		{VD, SIMM}},
344262306a36Sopenharmony_ci{"vinsertb",	VX (4, 781),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
344362306a36Sopenharmony_ci{"evlhhousplat",VX (4, 781),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_2, RA}},
344462306a36Sopenharmony_ci{"evlhhossplatx",VX(4, 782),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
344562306a36Sopenharmony_ci{"vpkpx",	VX (4, 782),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
344662306a36Sopenharmony_ci{"evlhhossplat",VX (4, 783),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_2, RA}},
344762306a36Sopenharmony_ci{"mullhwu",	XRC(4, 392,0),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
344862306a36Sopenharmony_ci{"evlwhex",	VX (4, 784),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
344962306a36Sopenharmony_ci{"mullhwu.",	XRC(4, 392,1),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
345062306a36Sopenharmony_ci{"evlwhe",	VX (4, 785),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
345162306a36Sopenharmony_ci{"evlwhoux",	VX (4, 788),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
345262306a36Sopenharmony_ci{"evlwhou",	VX (4, 789),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
345362306a36Sopenharmony_ci{"evlwhosx",	VX (4, 790),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
345462306a36Sopenharmony_ci{"evlwhos",	VX (4, 791),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
345562306a36Sopenharmony_ci{"maclhwu",	XO (4, 396,0,0),XO_MASK,     MULHW,	0,		{RT, RA, RB}},
345662306a36Sopenharmony_ci{"evlwwsplatx",	VX (4, 792),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
345762306a36Sopenharmony_ci{"maclhwu.",	XO (4, 396,0,1),XO_MASK,     MULHW,	0,		{RT, RA, RB}},
345862306a36Sopenharmony_ci{"evlwwsplat",	VX (4, 793),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
345962306a36Sopenharmony_ci{"evlwhsplatx",	VX (4, 796),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
346062306a36Sopenharmony_ci{"evlwhsplat",	VX (4, 797),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
346162306a36Sopenharmony_ci{"evstddx",	VX (4, 800),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
346262306a36Sopenharmony_ci{"evstdd",	VX (4, 801),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_8, RA}},
346362306a36Sopenharmony_ci{"evstdwx",	VX (4, 802),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
346462306a36Sopenharmony_ci{"evstdw",	VX (4, 803),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_8, RA}},
346562306a36Sopenharmony_ci{"evstdhx",	VX (4, 804),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
346662306a36Sopenharmony_ci{"evstdh",	VX (4, 805),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_8, RA}},
346762306a36Sopenharmony_ci{"evstwhex",	VX (4, 816),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
346862306a36Sopenharmony_ci{"evstwhe",	VX (4, 817),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
346962306a36Sopenharmony_ci{"evstwhox",	VX (4, 820),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
347062306a36Sopenharmony_ci{"evstwho",	VX (4, 821),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
347162306a36Sopenharmony_ci{"evstwwex",	VX (4, 824),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
347262306a36Sopenharmony_ci{"evstwwe",	VX (4, 825),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
347362306a36Sopenharmony_ci{"evstwwox",	VX (4, 828),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
347462306a36Sopenharmony_ci{"evstwwo",	VX (4, 829),	VX_MASK,     PPCSPE,	0,		{RS, EVUIMM_4, RA}},
347562306a36Sopenharmony_ci{"vaddshs",	VX (4, 832),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
347662306a36Sopenharmony_ci{"bcdcpsgn.",	VX (4, 833),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
347762306a36Sopenharmony_ci{"vminsh",	VX (4, 834),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
347862306a36Sopenharmony_ci{"vsrah",	VX (4, 836),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
347962306a36Sopenharmony_ci{"vcmpgtsh",	VXR(4, 838,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
348062306a36Sopenharmony_ci{"vmulesh",	VX (4, 840),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
348162306a36Sopenharmony_ci{"vcfsx",	VX (4, 842),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
348262306a36Sopenharmony_ci{"vcsxwfp",	VX (4, 842),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
348362306a36Sopenharmony_ci{"vspltish",	VX (4, 844),	VXVB_MASK,   PPCVEC,	0,		{VD, SIMM}},
348462306a36Sopenharmony_ci{"vinserth",	VX (4, 845),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
348562306a36Sopenharmony_ci{"vupkhpx",	VX (4, 846),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
348662306a36Sopenharmony_ci{"mullhw",	XRC(4, 424,0),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
348762306a36Sopenharmony_ci{"mullhw.",	XRC(4, 424,1),	X_MASK,	     MULHW,	0,		{RT, RA, RB}},
348862306a36Sopenharmony_ci{"maclhw",	XO (4, 428,0,0),XO_MASK,     MULHW,	0,		{RT, RA, RB}},
348962306a36Sopenharmony_ci{"maclhw.",	XO (4, 428,0,1),XO_MASK,     MULHW,	0,		{RT, RA, RB}},
349062306a36Sopenharmony_ci{"nmaclhw",	XO (4, 430,0,0),XO_MASK,     MULHW,	0,		{RT, RA, RB}},
349162306a36Sopenharmony_ci{"nmaclhw.",	XO (4, 430,0,1),XO_MASK,     MULHW,	0,		{RT, RA, RB}},
349262306a36Sopenharmony_ci{"vaddsws",	VX (4, 896),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
349362306a36Sopenharmony_ci{"vminsw",	VX (4, 898),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
349462306a36Sopenharmony_ci{"vsraw",	VX (4, 900),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
349562306a36Sopenharmony_ci{"vcmpgtsw",	VXR(4, 902,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
349662306a36Sopenharmony_ci{"vmulesw",	VX (4, 904),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
349762306a36Sopenharmony_ci{"vctuxs",	VX (4, 906),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
349862306a36Sopenharmony_ci{"vcfpuxws",	VX (4, 906),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
349962306a36Sopenharmony_ci{"vspltisw",	VX (4, 908),	VXVB_MASK,   PPCVEC,	0,		{VD, SIMM}},
350062306a36Sopenharmony_ci{"vinsertw",	VX (4, 909),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
350162306a36Sopenharmony_ci{"maclhwsu",	XO (4, 460,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
350262306a36Sopenharmony_ci{"maclhwsu.",	XO (4, 460,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
350362306a36Sopenharmony_ci{"vminsd",	VX (4, 962),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
350462306a36Sopenharmony_ci{"vsrad",	VX (4, 964),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
350562306a36Sopenharmony_ci{"vcmpbfp",	VXR(4, 966,0),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
350662306a36Sopenharmony_ci{"vcmpgtsd",	VXR(4, 967,0),	VXR_MASK,    PPCVEC2,	0,		{VD, VA, VB}},
350762306a36Sopenharmony_ci{"vctsxs",	VX (4, 970),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
350862306a36Sopenharmony_ci{"vcfpsxws",	VX (4, 970),	VX_MASK,     PPCVEC,	0,		{VD, VB, UIMM}},
350962306a36Sopenharmony_ci{"vinsertd",	VX (4, 973),   VXUIMM4_MASK, PPCVEC3,	0,		{VD, VB, UIMM4}},
351062306a36Sopenharmony_ci{"vupklpx",	VX (4, 974),	VXVA_MASK,   PPCVEC,	0,		{VD, VB}},
351162306a36Sopenharmony_ci{"maclhws",	XO (4, 492,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
351262306a36Sopenharmony_ci{"maclhws.",	XO (4, 492,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
351362306a36Sopenharmony_ci{"nmaclhws",	XO (4, 494,0,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
351462306a36Sopenharmony_ci{"nmaclhws.",	XO (4, 494,0,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
351562306a36Sopenharmony_ci{"vsububm",	VX (4,1024),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
351662306a36Sopenharmony_ci{"bcdadd.",	VX (4,1025),	VXPS_MASK,   PPCVEC2,	0,		{VD, VA, VB, PS}},
351762306a36Sopenharmony_ci{"vavgub",	VX (4,1026),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
351862306a36Sopenharmony_ci{"vabsdub",	VX (4,1027),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
351962306a36Sopenharmony_ci{"evmhessf",	VX (4,1027),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
352062306a36Sopenharmony_ci{"vand",	VX (4,1028),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
352162306a36Sopenharmony_ci{"vcmpequb.",	VXR(4,	 6,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
352262306a36Sopenharmony_ci{"vcmpneb.",	VXR(4,	 7,1),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
352362306a36Sopenharmony_ci{"udi0fcm.",	APU(4, 515,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
352462306a36Sopenharmony_ci{"udi0fcm",	APU(4, 515,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
352562306a36Sopenharmony_ci{"evmhossf",	VX (4,1031),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
352662306a36Sopenharmony_ci{"vpmsumb",	VX (4,1032),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
352762306a36Sopenharmony_ci{"evmheumi",	VX (4,1032),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
352862306a36Sopenharmony_ci{"evmhesmi",	VX (4,1033),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
352962306a36Sopenharmony_ci{"vmaxfp",	VX (4,1034),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
353062306a36Sopenharmony_ci{"evmhesmf",	VX (4,1035),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
353162306a36Sopenharmony_ci{"evmhoumi",	VX (4,1036),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
353262306a36Sopenharmony_ci{"vslo",	VX (4,1036),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
353362306a36Sopenharmony_ci{"evmhosmi",	VX (4,1037),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
353462306a36Sopenharmony_ci{"evmhosmf",	VX (4,1039),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
353562306a36Sopenharmony_ci{"machhwuo",	XO (4,	12,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
353662306a36Sopenharmony_ci{"machhwuo.",	XO (4,	12,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
353762306a36Sopenharmony_ci{"ps_merge00",	XOPS(4,528,0),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
353862306a36Sopenharmony_ci{"ps_merge00.",	XOPS(4,528,1),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
353962306a36Sopenharmony_ci{"evmhessfa",	VX (4,1059),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
354062306a36Sopenharmony_ci{"evmhossfa",	VX (4,1063),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
354162306a36Sopenharmony_ci{"evmheumia",	VX (4,1064),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
354262306a36Sopenharmony_ci{"evmhesmia",	VX (4,1065),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
354362306a36Sopenharmony_ci{"evmhesmfa",	VX (4,1067),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
354462306a36Sopenharmony_ci{"evmhoumia",	VX (4,1068),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
354562306a36Sopenharmony_ci{"evmhosmia",	VX (4,1069),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
354662306a36Sopenharmony_ci{"evmhosmfa",	VX (4,1071),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
354762306a36Sopenharmony_ci{"vsubuhm",	VX (4,1088),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
354862306a36Sopenharmony_ci{"bcdsub.",	VX (4,1089),	VXPS_MASK,   PPCVEC2,	0,		{VD, VA, VB, PS}},
354962306a36Sopenharmony_ci{"vavguh",	VX (4,1090),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
355062306a36Sopenharmony_ci{"vabsduh",	VX (4,1091),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
355162306a36Sopenharmony_ci{"vandc",	VX (4,1092),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
355262306a36Sopenharmony_ci{"vcmpequh.",	VXR(4,	70,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
355362306a36Sopenharmony_ci{"udi1fcm.",	APU(4, 547,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
355462306a36Sopenharmony_ci{"udi1fcm",	APU(4, 547,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
355562306a36Sopenharmony_ci{"vcmpneh.",	VXR(4,	71,1),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
355662306a36Sopenharmony_ci{"evmwhssf",	VX (4,1095),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
355762306a36Sopenharmony_ci{"vpmsumh",	VX (4,1096),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
355862306a36Sopenharmony_ci{"evmwlumi",	VX (4,1096),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
355962306a36Sopenharmony_ci{"vminfp",	VX (4,1098),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
356062306a36Sopenharmony_ci{"evmwhumi",	VX (4,1100),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
356162306a36Sopenharmony_ci{"vsro",	VX (4,1100),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
356262306a36Sopenharmony_ci{"evmwhsmi",	VX (4,1101),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
356362306a36Sopenharmony_ci{"vpkudum",	VX (4,1102),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
356462306a36Sopenharmony_ci{"evmwhsmf",	VX (4,1103),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
356562306a36Sopenharmony_ci{"evmwssf",	VX (4,1107),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
356662306a36Sopenharmony_ci{"machhwo",	XO (4,	44,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
356762306a36Sopenharmony_ci{"evmwumi",	VX (4,1112),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
356862306a36Sopenharmony_ci{"machhwo.",	XO (4,	44,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
356962306a36Sopenharmony_ci{"evmwsmi",	VX (4,1113),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
357062306a36Sopenharmony_ci{"evmwsmf",	VX (4,1115),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
357162306a36Sopenharmony_ci{"nmachhwo",	XO (4,	46,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
357262306a36Sopenharmony_ci{"nmachhwo.",	XO (4,	46,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
357362306a36Sopenharmony_ci{"ps_merge01",	XOPS(4,560,0),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
357462306a36Sopenharmony_ci{"ps_merge01.",	XOPS(4,560,1),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
357562306a36Sopenharmony_ci{"evmwhssfa",	VX (4,1127),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
357662306a36Sopenharmony_ci{"evmwlumia",	VX (4,1128),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
357762306a36Sopenharmony_ci{"evmwhumia",	VX (4,1132),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
357862306a36Sopenharmony_ci{"evmwhsmia",	VX (4,1133),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
357962306a36Sopenharmony_ci{"evmwhsmfa",	VX (4,1135),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
358062306a36Sopenharmony_ci{"evmwssfa",	VX (4,1139),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
358162306a36Sopenharmony_ci{"evmwumia",	VX (4,1144),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
358262306a36Sopenharmony_ci{"evmwsmia",	VX (4,1145),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
358362306a36Sopenharmony_ci{"evmwsmfa",	VX (4,1147),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
358462306a36Sopenharmony_ci{"vsubuwm",	VX (4,1152),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
358562306a36Sopenharmony_ci{"bcdus.",	VX (4,1153),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
358662306a36Sopenharmony_ci{"vavguw",	VX (4,1154),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
358762306a36Sopenharmony_ci{"vabsduw",	VX (4,1155),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
358862306a36Sopenharmony_ci{"vmr",		VX (4,1156),	VX_MASK,     PPCVEC,	0,		{VD, VA, VBA}},
358962306a36Sopenharmony_ci{"vor",		VX (4,1156),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
359062306a36Sopenharmony_ci{"vcmpnew.",	VXR(4, 135,1),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
359162306a36Sopenharmony_ci{"vpmsumw",	VX (4,1160),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
359262306a36Sopenharmony_ci{"vcmpequw.",	VXR(4, 134,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
359362306a36Sopenharmony_ci{"udi2fcm.",	APU(4, 579,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
359462306a36Sopenharmony_ci{"udi2fcm",	APU(4, 579,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
359562306a36Sopenharmony_ci{"machhwsuo",	XO (4,	76,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
359662306a36Sopenharmony_ci{"machhwsuo.",	XO (4,	76,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
359762306a36Sopenharmony_ci{"ps_merge10",	XOPS(4,592,0),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
359862306a36Sopenharmony_ci{"ps_merge10.",	XOPS(4,592,1),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
359962306a36Sopenharmony_ci{"vsubudm",	VX (4,1216),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
360062306a36Sopenharmony_ci{"evaddusiaaw",	VX (4,1216),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
360162306a36Sopenharmony_ci{"bcds.",	VX (4,1217),	VXPS_MASK,   PPCVEC3,	0,		{VD, VA, VB, PS}},
360262306a36Sopenharmony_ci{"evaddssiaaw",	VX (4,1217),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
360362306a36Sopenharmony_ci{"evsubfusiaaw",VX (4,1218),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
360462306a36Sopenharmony_ci{"evsubfssiaaw",VX (4,1219),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
360562306a36Sopenharmony_ci{"evmra",	VX (4,1220),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
360662306a36Sopenharmony_ci{"vxor",	VX (4,1220),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
360762306a36Sopenharmony_ci{"evdivws",	VX (4,1222),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
360862306a36Sopenharmony_ci{"vcmpeqfp.",	VXR(4, 198,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
360962306a36Sopenharmony_ci{"udi3fcm.",	APU(4, 611,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
361062306a36Sopenharmony_ci{"vcmpequd.",	VXR(4, 199,1),	VXR_MASK,    PPCVEC2,	0,		{VD, VA, VB}},
361162306a36Sopenharmony_ci{"udi3fcm",	APU(4, 611,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
361262306a36Sopenharmony_ci{"evdivwu",	VX (4,1223),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
361362306a36Sopenharmony_ci{"vpmsumd",	VX (4,1224),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
361462306a36Sopenharmony_ci{"evaddumiaaw",	VX (4,1224),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
361562306a36Sopenharmony_ci{"evaddsmiaaw",	VX (4,1225),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
361662306a36Sopenharmony_ci{"evsubfumiaaw",VX (4,1226),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
361762306a36Sopenharmony_ci{"evsubfsmiaaw",VX (4,1227),	VX_MASK,     PPCSPE,	0,		{RS, RA}},
361862306a36Sopenharmony_ci{"vpkudus",	VX (4,1230),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
361962306a36Sopenharmony_ci{"machhwso",	XO (4, 108,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
362062306a36Sopenharmony_ci{"machhwso.",	XO (4, 108,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
362162306a36Sopenharmony_ci{"nmachhwso",	XO (4, 110,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
362262306a36Sopenharmony_ci{"nmachhwso.",	XO (4, 110,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
362362306a36Sopenharmony_ci{"ps_merge11",	XOPS(4,624,0),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
362462306a36Sopenharmony_ci{"ps_merge11.",	XOPS(4,624,1),	XOPS_MASK,   PPCPS,	0,		{FRT, FRA, FRB}},
362562306a36Sopenharmony_ci{"vsubuqm",	VX (4,1280),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
362662306a36Sopenharmony_ci{"evmheusiaaw",	VX (4,1280),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
362762306a36Sopenharmony_ci{"bcdtrunc.",	VX (4,1281),	VXPS_MASK,   PPCVEC3,	0,		{VD, VA, VB, PS}},
362862306a36Sopenharmony_ci{"evmhessiaaw",	VX (4,1281),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
362962306a36Sopenharmony_ci{"vavgsb",	VX (4,1282),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
363062306a36Sopenharmony_ci{"evmhessfaaw",	VX (4,1283),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
363162306a36Sopenharmony_ci{"evmhousiaaw",	VX (4,1284),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
363262306a36Sopenharmony_ci{"vnot",	VX (4,1284),	VX_MASK,     PPCVEC,	0,		{VD, VA, VBA}},
363362306a36Sopenharmony_ci{"vnor",	VX (4,1284),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
363462306a36Sopenharmony_ci{"evmhossiaaw",	VX (4,1285),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
363562306a36Sopenharmony_ci{"udi4fcm.",	APU(4, 643,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
363662306a36Sopenharmony_ci{"udi4fcm",	APU(4, 643,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
363762306a36Sopenharmony_ci{"vcmpnezb.",	VXR(4, 263,1),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
363862306a36Sopenharmony_ci{"evmhossfaaw",	VX (4,1287),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
363962306a36Sopenharmony_ci{"evmheumiaaw",	VX (4,1288),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
364062306a36Sopenharmony_ci{"vcipher",	VX (4,1288),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
364162306a36Sopenharmony_ci{"vcipherlast",	VX (4,1289),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
364262306a36Sopenharmony_ci{"evmhesmiaaw",	VX (4,1289),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
364362306a36Sopenharmony_ci{"evmhesmfaaw",	VX (4,1291),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
364462306a36Sopenharmony_ci{"vgbbd",	VX (4,1292),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
364562306a36Sopenharmony_ci{"evmhoumiaaw",	VX (4,1292),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
364662306a36Sopenharmony_ci{"evmhosmiaaw",	VX (4,1293),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
364762306a36Sopenharmony_ci{"evmhosmfaaw",	VX (4,1295),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
364862306a36Sopenharmony_ci{"macchwuo",	XO (4, 140,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
364962306a36Sopenharmony_ci{"macchwuo.",	XO (4, 140,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
365062306a36Sopenharmony_ci{"evmhegumiaa",	VX (4,1320),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
365162306a36Sopenharmony_ci{"evmhegsmiaa",	VX (4,1321),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
365262306a36Sopenharmony_ci{"evmhegsmfaa",	VX (4,1323),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
365362306a36Sopenharmony_ci{"evmhogumiaa",	VX (4,1324),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
365462306a36Sopenharmony_ci{"evmhogsmiaa",	VX (4,1325),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
365562306a36Sopenharmony_ci{"evmhogsmfaa",	VX (4,1327),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
365662306a36Sopenharmony_ci{"vsubcuq",	VX (4,1344),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
365762306a36Sopenharmony_ci{"evmwlusiaaw",	VX (4,1344),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
365862306a36Sopenharmony_ci{"bcdutrunc.",	VX (4,1345),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
365962306a36Sopenharmony_ci{"evmwlssiaaw",	VX (4,1345),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
366062306a36Sopenharmony_ci{"vavgsh",	VX (4,1346),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
366162306a36Sopenharmony_ci{"vorc",	VX (4,1348),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
366262306a36Sopenharmony_ci{"udi5fcm.",	APU(4, 675,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
366362306a36Sopenharmony_ci{"udi5fcm",	APU(4, 675,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
366462306a36Sopenharmony_ci{"vcmpnezh.",	VXR(4, 327,1),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
366562306a36Sopenharmony_ci{"vncipher",	VX (4,1352),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
366662306a36Sopenharmony_ci{"evmwlumiaaw",	VX (4,1352),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
366762306a36Sopenharmony_ci{"vncipherlast",VX (4,1353),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
366862306a36Sopenharmony_ci{"evmwlsmiaaw",	VX (4,1353),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
366962306a36Sopenharmony_ci{"vbpermq",	VX (4,1356),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
367062306a36Sopenharmony_ci{"vpksdus",	VX (4,1358),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
367162306a36Sopenharmony_ci{"evmwssfaa",	VX (4,1363),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
367262306a36Sopenharmony_ci{"macchwo",	XO (4, 172,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
367362306a36Sopenharmony_ci{"evmwumiaa",	VX (4,1368),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
367462306a36Sopenharmony_ci{"macchwo.",	XO (4, 172,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
367562306a36Sopenharmony_ci{"evmwsmiaa",	VX (4,1369),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
367662306a36Sopenharmony_ci{"evmwsmfaa",	VX (4,1371),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
367762306a36Sopenharmony_ci{"nmacchwo",	XO (4, 174,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
367862306a36Sopenharmony_ci{"nmacchwo.",	XO (4, 174,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
367962306a36Sopenharmony_ci{"evmheusianw",	VX (4,1408),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
368062306a36Sopenharmony_ci{"vsubcuw",	VX (4,1408),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
368162306a36Sopenharmony_ci{"evmhessianw",	VX (4,1409),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
368262306a36Sopenharmony_ci{"bcdctsq.",	VXVA(4,1409,0),	VXVA_MASK,   PPCVEC3,	0,		{VD, VB}},
368362306a36Sopenharmony_ci{"bcdcfsq.",	VXVA(4,1409,2),	VXVAPS_MASK, PPCVEC3,	0,		{VD, VB, PS}},
368462306a36Sopenharmony_ci{"bcdctz.",	VXVA(4,1409,4),	VXVAPS_MASK, PPCVEC3,	0,		{VD, VB, PS}},
368562306a36Sopenharmony_ci{"bcdctn.",	VXVA(4,1409,5),	VXVA_MASK,   PPCVEC3,	0,		{VD, VB}},
368662306a36Sopenharmony_ci{"bcdcfz.",	VXVA(4,1409,6),	VXVAPS_MASK, PPCVEC3,	0,		{VD, VB, PS}},
368762306a36Sopenharmony_ci{"bcdcfn.",	VXVA(4,1409,7),	VXVAPS_MASK, PPCVEC3,	0,		{VD, VB, PS}},
368862306a36Sopenharmony_ci{"bcdsetsgn.",	VXVA(4,1409,31), VXVAPS_MASK, PPCVEC3,	0,		{VD, VB, PS}},
368962306a36Sopenharmony_ci{"vavgsw",	VX (4,1410),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
369062306a36Sopenharmony_ci{"evmhessfanw",	VX (4,1411),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
369162306a36Sopenharmony_ci{"vnand",	VX (4,1412),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
369262306a36Sopenharmony_ci{"evmhousianw",	VX (4,1412),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
369362306a36Sopenharmony_ci{"evmhossianw",	VX (4,1413),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
369462306a36Sopenharmony_ci{"udi6fcm.",	APU(4, 707,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
369562306a36Sopenharmony_ci{"udi6fcm",	APU(4, 707,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
369662306a36Sopenharmony_ci{"vcmpnezw.",	VXR(4, 391,1),	VXR_MASK,    PPCVEC3,	0,		{VD, VA, VB}},
369762306a36Sopenharmony_ci{"evmhossfanw",	VX (4,1415),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
369862306a36Sopenharmony_ci{"evmheumianw",	VX (4,1416),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
369962306a36Sopenharmony_ci{"evmhesmianw",	VX (4,1417),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
370062306a36Sopenharmony_ci{"evmhesmfanw",	VX (4,1419),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
370162306a36Sopenharmony_ci{"evmhoumianw",	VX (4,1420),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
370262306a36Sopenharmony_ci{"evmhosmianw",	VX (4,1421),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
370362306a36Sopenharmony_ci{"evmhosmfanw",	VX (4,1423),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
370462306a36Sopenharmony_ci{"macchwsuo",	XO (4, 204,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
370562306a36Sopenharmony_ci{"macchwsuo.",	XO (4, 204,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
370662306a36Sopenharmony_ci{"evmhegumian",	VX (4,1448),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
370762306a36Sopenharmony_ci{"evmhegsmian",	VX (4,1449),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
370862306a36Sopenharmony_ci{"evmhegsmfan",	VX (4,1451),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
370962306a36Sopenharmony_ci{"evmhogumian",	VX (4,1452),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
371062306a36Sopenharmony_ci{"evmhogsmian",	VX (4,1453),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
371162306a36Sopenharmony_ci{"evmhogsmfan",	VX (4,1455),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
371262306a36Sopenharmony_ci{"evmwlusianw",	VX (4,1472),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
371362306a36Sopenharmony_ci{"bcdsr.",	VX (4,1473),	VXPS_MASK,   PPCVEC3,	0,		{VD, VA, VB, PS}},
371462306a36Sopenharmony_ci{"evmwlssianw",	VX (4,1473),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
371562306a36Sopenharmony_ci{"vsld",	VX (4,1476),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
371662306a36Sopenharmony_ci{"vcmpgefp.",	VXR(4, 454,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
371762306a36Sopenharmony_ci{"udi7fcm.",	APU(4, 739,0),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
371862306a36Sopenharmony_ci{"udi7fcm",	APU(4, 739,1),	APU_MASK, PPC405|PPC440, PPC476,	{URT, URA, URB}},
371962306a36Sopenharmony_ci{"vsbox",	VX (4,1480),	VXVB_MASK,   PPCVEC2,	0,		{VD, VA}},
372062306a36Sopenharmony_ci{"evmwlumianw",	VX (4,1480),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
372162306a36Sopenharmony_ci{"evmwlsmianw",	VX (4,1481),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
372262306a36Sopenharmony_ci{"vbpermd",	VX (4,1484),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
372362306a36Sopenharmony_ci{"vpksdss",	VX (4,1486),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
372462306a36Sopenharmony_ci{"evmwssfan",	VX (4,1491),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
372562306a36Sopenharmony_ci{"macchwso",	XO (4, 236,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
372662306a36Sopenharmony_ci{"evmwumian",	VX (4,1496),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
372762306a36Sopenharmony_ci{"macchwso.",	XO (4, 236,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
372862306a36Sopenharmony_ci{"evmwsmian",	VX (4,1497),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
372962306a36Sopenharmony_ci{"evmwsmfan",	VX (4,1499),	VX_MASK,     PPCSPE,	0,		{RS, RA, RB}},
373062306a36Sopenharmony_ci{"nmacchwso",	XO (4, 238,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
373162306a36Sopenharmony_ci{"nmacchwso.",	XO (4, 238,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
373262306a36Sopenharmony_ci{"vsububs",	VX (4,1536),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
373362306a36Sopenharmony_ci{"vclzlsbb",	VXVA(4,1538,0), VXVA_MASK,   PPCVEC3,	0,		{RT, VB}},
373462306a36Sopenharmony_ci{"vctzlsbb",	VXVA(4,1538,1), VXVA_MASK,   PPCVEC3,	0,		{RT, VB}},
373562306a36Sopenharmony_ci{"vnegw",	VXVA(4,1538,6), VXVA_MASK,   PPCVEC3,	0,		{VD, VB}},
373662306a36Sopenharmony_ci{"vnegd",	VXVA(4,1538,7), VXVA_MASK,   PPCVEC3,	0,		{VD, VB}},
373762306a36Sopenharmony_ci{"vprtybw",	VXVA(4,1538,8), VXVA_MASK,   PPCVEC3,	0,		{VD, VB}},
373862306a36Sopenharmony_ci{"vprtybd",	VXVA(4,1538,9), VXVA_MASK,   PPCVEC3,	0,		{VD, VB}},
373962306a36Sopenharmony_ci{"vprtybq",	VXVA(4,1538,10), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
374062306a36Sopenharmony_ci{"vextsb2w",	VXVA(4,1538,16), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
374162306a36Sopenharmony_ci{"vextsh2w",	VXVA(4,1538,17), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
374262306a36Sopenharmony_ci{"vextsb2d",	VXVA(4,1538,24), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
374362306a36Sopenharmony_ci{"vextsh2d",	VXVA(4,1538,25), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
374462306a36Sopenharmony_ci{"vextsw2d",	VXVA(4,1538,26), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
374562306a36Sopenharmony_ci{"vctzb",	VXVA(4,1538,28), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
374662306a36Sopenharmony_ci{"vctzh",	VXVA(4,1538,29), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
374762306a36Sopenharmony_ci{"vctzw",	VXVA(4,1538,30), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
374862306a36Sopenharmony_ci{"vctzd",	VXVA(4,1538,31), VXVA_MASK,  PPCVEC3,	0,		{VD, VB}},
374962306a36Sopenharmony_ci{"mfvscr",	VX (4,1540),	VXVAVB_MASK, PPCVEC,	0,		{VD}},
375062306a36Sopenharmony_ci{"vcmpgtub.",	VXR(4, 518,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
375162306a36Sopenharmony_ci{"udi8fcm.",	APU(4, 771,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
375262306a36Sopenharmony_ci{"udi8fcm",	APU(4, 771,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
375362306a36Sopenharmony_ci{"vsum4ubs",	VX (4,1544),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
375462306a36Sopenharmony_ci{"vextublx",	VX (4,1549),	VX_MASK,     PPCVEC3,	0,		{RT, RA, VB}},
375562306a36Sopenharmony_ci{"vsubuhs",	VX (4,1600),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
375662306a36Sopenharmony_ci{"mtvscr",	VX (4,1604),	VXVDVA_MASK, PPCVEC,	0,		{VB}},
375762306a36Sopenharmony_ci{"vcmpgtuh.",	VXR(4, 582,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
375862306a36Sopenharmony_ci{"vsum4shs",	VX (4,1608),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
375962306a36Sopenharmony_ci{"udi9fcm.",	APU(4, 804,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
376062306a36Sopenharmony_ci{"udi9fcm",	APU(4, 804,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
376162306a36Sopenharmony_ci{"vextuhlx",	VX (4,1613),	VX_MASK,     PPCVEC3,	0,		{RT, RA, VB}},
376262306a36Sopenharmony_ci{"vupkhsw",	VX (4,1614),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
376362306a36Sopenharmony_ci{"vsubuws",	VX (4,1664),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
376462306a36Sopenharmony_ci{"vshasigmaw",	VX (4,1666),	VX_MASK,     PPCVEC2,	0,		{VD, VA, ST, SIX}},
376562306a36Sopenharmony_ci{"veqv",	VX (4,1668),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
376662306a36Sopenharmony_ci{"vcmpgtuw.",	VXR(4, 646,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
376762306a36Sopenharmony_ci{"udi10fcm.",	APU(4, 835,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
376862306a36Sopenharmony_ci{"udi10fcm",	APU(4, 835,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
376962306a36Sopenharmony_ci{"vsum2sws",	VX (4,1672),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
377062306a36Sopenharmony_ci{"vmrgow",	VX (4,1676),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
377162306a36Sopenharmony_ci{"vextuwlx",	VX (4,1677),	VX_MASK,     PPCVEC3,	0,		{RT, RA, VB}},
377262306a36Sopenharmony_ci{"vshasigmad",	VX (4,1730),	VX_MASK,     PPCVEC2,	0,		{VD, VA, ST, SIX}},
377362306a36Sopenharmony_ci{"vsrd",	VX (4,1732),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
377462306a36Sopenharmony_ci{"vcmpgtfp.",	VXR(4, 710,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
377562306a36Sopenharmony_ci{"udi11fcm.",	APU(4, 867,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
377662306a36Sopenharmony_ci{"vcmpgtud.",	VXR(4, 711,1),	VXR_MASK,    PPCVEC2,	0,		{VD, VA, VB}},
377762306a36Sopenharmony_ci{"udi11fcm",	APU(4, 867,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
377862306a36Sopenharmony_ci{"vupklsw",	VX (4,1742),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
377962306a36Sopenharmony_ci{"vsubsbs",	VX (4,1792),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
378062306a36Sopenharmony_ci{"vclzb",	VX (4,1794),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
378162306a36Sopenharmony_ci{"vpopcntb",	VX (4,1795),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
378262306a36Sopenharmony_ci{"vsrv",	VX (4,1796),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
378362306a36Sopenharmony_ci{"vcmpgtsb.",	VXR(4, 774,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
378462306a36Sopenharmony_ci{"udi12fcm.",	APU(4, 899,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
378562306a36Sopenharmony_ci{"udi12fcm",	APU(4, 899,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
378662306a36Sopenharmony_ci{"vsum4sbs",	VX (4,1800),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
378762306a36Sopenharmony_ci{"vextubrx",	VX (4,1805),	VX_MASK,     PPCVEC3,	0,		{RT, RA, VB}},
378862306a36Sopenharmony_ci{"maclhwuo",	XO (4, 396,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
378962306a36Sopenharmony_ci{"maclhwuo.",	XO (4, 396,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
379062306a36Sopenharmony_ci{"vsubshs",	VX (4,1856),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
379162306a36Sopenharmony_ci{"vclzh",	VX (4,1858),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
379262306a36Sopenharmony_ci{"vpopcnth",	VX (4,1859),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
379362306a36Sopenharmony_ci{"vslv",	VX (4,1860),	VX_MASK,     PPCVEC3,	0,		{VD, VA, VB}},
379462306a36Sopenharmony_ci{"vcmpgtsh.",	VXR(4, 838,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
379562306a36Sopenharmony_ci{"vextuhrx",	VX (4,1869),	VX_MASK,     PPCVEC3,	0,		{RT, RA, VB}},
379662306a36Sopenharmony_ci{"udi13fcm.",	APU(4, 931,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
379762306a36Sopenharmony_ci{"udi13fcm",	APU(4, 931,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
379862306a36Sopenharmony_ci{"maclhwo",	XO (4, 428,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
379962306a36Sopenharmony_ci{"maclhwo.",	XO (4, 428,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
380062306a36Sopenharmony_ci{"nmaclhwo",	XO (4, 430,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
380162306a36Sopenharmony_ci{"nmaclhwo.",	XO (4, 430,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
380262306a36Sopenharmony_ci{"vsubsws",	VX (4,1920),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
380362306a36Sopenharmony_ci{"vclzw",	VX (4,1922),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
380462306a36Sopenharmony_ci{"vpopcntw",	VX (4,1923),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
380562306a36Sopenharmony_ci{"vcmpgtsw.",	VXR(4, 902,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
380662306a36Sopenharmony_ci{"udi14fcm.",	APU(4, 963,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
380762306a36Sopenharmony_ci{"udi14fcm",	APU(4, 963,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
380862306a36Sopenharmony_ci{"vsumsws",	VX (4,1928),	VX_MASK,     PPCVEC,	0,		{VD, VA, VB}},
380962306a36Sopenharmony_ci{"vmrgew",	VX (4,1932),	VX_MASK,     PPCVEC2,	0,		{VD, VA, VB}},
381062306a36Sopenharmony_ci{"vextuwrx",	VX (4,1933),	VX_MASK,     PPCVEC3,	0,		{RT, RA, VB}},
381162306a36Sopenharmony_ci{"maclhwsuo",	XO (4, 460,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
381262306a36Sopenharmony_ci{"maclhwsuo.",	XO (4, 460,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
381362306a36Sopenharmony_ci{"vclzd",	VX (4,1986),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
381462306a36Sopenharmony_ci{"vpopcntd",	VX (4,1987),	VXVA_MASK,   PPCVEC2,	0,		{VD, VB}},
381562306a36Sopenharmony_ci{"vcmpbfp.",	VXR(4, 966,1),	VXR_MASK,    PPCVEC,	0,		{VD, VA, VB}},
381662306a36Sopenharmony_ci{"udi15fcm.",	APU(4, 995,0),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
381762306a36Sopenharmony_ci{"vcmpgtsd.",	VXR(4, 967,1),	VXR_MASK,    PPCVEC2,	0,		{VD, VA, VB}},
381862306a36Sopenharmony_ci{"udi15fcm",	APU(4, 995,1),	APU_MASK,    PPC440,	PPC476,		{URT, URA, URB}},
381962306a36Sopenharmony_ci{"maclhwso",	XO (4, 492,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
382062306a36Sopenharmony_ci{"maclhwso.",	XO (4, 492,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
382162306a36Sopenharmony_ci{"nmaclhwso",	XO (4, 494,1,0), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
382262306a36Sopenharmony_ci{"nmaclhwso.",	XO (4, 494,1,1), XO_MASK,    MULHW,	0,		{RT, RA, RB}},
382362306a36Sopenharmony_ci{"dcbz_l",	X  (4,1014),	XRT_MASK,    PPCPS,	0,		{RA, RB}},
382462306a36Sopenharmony_ci
382562306a36Sopenharmony_ci{"mulli",	OP(7),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA, SI}},
382662306a36Sopenharmony_ci{"muli",	OP(7),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, RA, SI}},
382762306a36Sopenharmony_ci
382862306a36Sopenharmony_ci{"subfic",	OP(8),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA, SI}},
382962306a36Sopenharmony_ci{"sfi",		OP(8),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, RA, SI}},
383062306a36Sopenharmony_ci
383162306a36Sopenharmony_ci{"dozi",	OP(9),		OP_MASK,     M601,	PPCVLE,		{RT, RA, SI}},
383262306a36Sopenharmony_ci
383362306a36Sopenharmony_ci{"cmplwi",	OPL(10,0),	OPL_MASK,    PPCCOM,	PPCVLE,		{OBF, RA, UISIGNOPT}},
383462306a36Sopenharmony_ci{"cmpldi",	OPL(10,1),	OPL_MASK,    PPC64,	PPCVLE,		{OBF, RA, UISIGNOPT}},
383562306a36Sopenharmony_ci{"cmpli",	OP(10),		OP_MASK,     PPC,	PPCVLE,		{BF, L32OPT, RA, UISIGNOPT}},
383662306a36Sopenharmony_ci{"cmpli",	OP(10),		OP_MASK,     PWRCOM,	PPC|PPCVLE,	{BF, RA, UISIGNOPT}},
383762306a36Sopenharmony_ci
383862306a36Sopenharmony_ci{"cmpwi",	OPL(11,0),	OPL_MASK,    PPCCOM,	PPCVLE,		{OBF, RA, SI}},
383962306a36Sopenharmony_ci{"cmpdi",	OPL(11,1),	OPL_MASK,    PPC64,	PPCVLE,		{OBF, RA, SI}},
384062306a36Sopenharmony_ci{"cmpi",	OP(11),		OP_MASK,     PPC,	PPCVLE,		{BF, L32OPT, RA, SI}},
384162306a36Sopenharmony_ci{"cmpi",	OP(11),		OP_MASK,     PWRCOM,	PPC|PPCVLE,	{BF, RA, SI}},
384262306a36Sopenharmony_ci
384362306a36Sopenharmony_ci{"addic",	OP(12),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA, SI}},
384462306a36Sopenharmony_ci{"ai",		OP(12),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, RA, SI}},
384562306a36Sopenharmony_ci{"subic",	OP(12),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA, NSI}},
384662306a36Sopenharmony_ci
384762306a36Sopenharmony_ci{"addic.",	OP(13),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA, SI}},
384862306a36Sopenharmony_ci{"ai.",		OP(13),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, RA, SI}},
384962306a36Sopenharmony_ci{"subic.",	OP(13),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA, NSI}},
385062306a36Sopenharmony_ci
385162306a36Sopenharmony_ci{"li",		OP(14),		DRA_MASK,    PPCCOM,	PPCVLE,		{RT, SI}},
385262306a36Sopenharmony_ci{"lil",		OP(14),		DRA_MASK,    PWRCOM,	PPCVLE,		{RT, SI}},
385362306a36Sopenharmony_ci{"addi",	OP(14),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA0, SI}},
385462306a36Sopenharmony_ci{"cal",		OP(14),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, D, RA0}},
385562306a36Sopenharmony_ci{"subi",	OP(14),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA0, NSI}},
385662306a36Sopenharmony_ci{"la",		OP(14),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, D, RA0}},
385762306a36Sopenharmony_ci
385862306a36Sopenharmony_ci{"lis",		OP(15),		DRA_MASK,    PPCCOM,	PPCVLE,		{RT, SISIGNOPT}},
385962306a36Sopenharmony_ci{"liu",		OP(15),		DRA_MASK,    PWRCOM,	PPCVLE,		{RT, SISIGNOPT}},
386062306a36Sopenharmony_ci{"addis",	OP(15),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA0, SISIGNOPT}},
386162306a36Sopenharmony_ci{"cau",		OP(15),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, RA0, SISIGNOPT}},
386262306a36Sopenharmony_ci{"subis",	OP(15),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, RA0, NSISIGNOPT}},
386362306a36Sopenharmony_ci
386462306a36Sopenharmony_ci{"bdnz-",    BBO(16,BODNZ,0,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDM}},
386562306a36Sopenharmony_ci{"bdnz+",    BBO(16,BODNZ,0,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDP}},
386662306a36Sopenharmony_ci{"bdnz",     BBO(16,BODNZ,0,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BD}},
386762306a36Sopenharmony_ci{"bdn",	     BBO(16,BODNZ,0,0),		BBOATBI_MASK,  PWRCOM,	 PPCVLE,	{BD}},
386862306a36Sopenharmony_ci{"bdnzl-",   BBO(16,BODNZ,0,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDM}},
386962306a36Sopenharmony_ci{"bdnzl+",   BBO(16,BODNZ,0,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDP}},
387062306a36Sopenharmony_ci{"bdnzl",    BBO(16,BODNZ,0,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BD}},
387162306a36Sopenharmony_ci{"bdnl",     BBO(16,BODNZ,0,1),		BBOATBI_MASK,  PWRCOM,	 PPCVLE,	{BD}},
387262306a36Sopenharmony_ci{"bdnza-",   BBO(16,BODNZ,1,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDMA}},
387362306a36Sopenharmony_ci{"bdnza+",   BBO(16,BODNZ,1,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDPA}},
387462306a36Sopenharmony_ci{"bdnza",    BBO(16,BODNZ,1,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDA}},
387562306a36Sopenharmony_ci{"bdna",     BBO(16,BODNZ,1,0),		BBOATBI_MASK,  PWRCOM,	 PPCVLE,	{BDA}},
387662306a36Sopenharmony_ci{"bdnzla-",  BBO(16,BODNZ,1,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDMA}},
387762306a36Sopenharmony_ci{"bdnzla+",  BBO(16,BODNZ,1,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDPA}},
387862306a36Sopenharmony_ci{"bdnzla",   BBO(16,BODNZ,1,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDA}},
387962306a36Sopenharmony_ci{"bdnla",    BBO(16,BODNZ,1,1),		BBOATBI_MASK,  PWRCOM,	 PPCVLE,	{BDA}},
388062306a36Sopenharmony_ci{"bdz-",     BBO(16,BODZ,0,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDM}},
388162306a36Sopenharmony_ci{"bdz+",     BBO(16,BODZ,0,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDP}},
388262306a36Sopenharmony_ci{"bdz",	     BBO(16,BODZ,0,0),		BBOATBI_MASK,  COM,	 PPCVLE,	{BD}},
388362306a36Sopenharmony_ci{"bdzl-",    BBO(16,BODZ,0,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDM}},
388462306a36Sopenharmony_ci{"bdzl+",    BBO(16,BODZ,0,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDP}},
388562306a36Sopenharmony_ci{"bdzl",     BBO(16,BODZ,0,1),		BBOATBI_MASK,  COM,	 PPCVLE,	{BD}},
388662306a36Sopenharmony_ci{"bdza-",    BBO(16,BODZ,1,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDMA}},
388762306a36Sopenharmony_ci{"bdza+",    BBO(16,BODZ,1,0),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDPA}},
388862306a36Sopenharmony_ci{"bdza",     BBO(16,BODZ,1,0),		BBOATBI_MASK,  COM,	 PPCVLE,	{BDA}},
388962306a36Sopenharmony_ci{"bdzla-",   BBO(16,BODZ,1,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDMA}},
389062306a36Sopenharmony_ci{"bdzla+",   BBO(16,BODZ,1,1),		BBOATBI_MASK,  PPCCOM,	 PPCVLE,	{BDPA}},
389162306a36Sopenharmony_ci{"bdzla",    BBO(16,BODZ,1,1),		BBOATBI_MASK,  COM,	 PPCVLE,	{BDA}},
389262306a36Sopenharmony_ci
389362306a36Sopenharmony_ci{"bge-",     BBOCB(16,BOF,CBLT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
389462306a36Sopenharmony_ci{"bge+",     BBOCB(16,BOF,CBLT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
389562306a36Sopenharmony_ci{"bge",	     BBOCB(16,BOF,CBLT,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
389662306a36Sopenharmony_ci{"bnl-",     BBOCB(16,BOF,CBLT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
389762306a36Sopenharmony_ci{"bnl+",     BBOCB(16,BOF,CBLT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
389862306a36Sopenharmony_ci{"bnl",	     BBOCB(16,BOF,CBLT,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
389962306a36Sopenharmony_ci{"bgel-",    BBOCB(16,BOF,CBLT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
390062306a36Sopenharmony_ci{"bgel+",    BBOCB(16,BOF,CBLT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
390162306a36Sopenharmony_ci{"bgel",     BBOCB(16,BOF,CBLT,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
390262306a36Sopenharmony_ci{"bnll-",    BBOCB(16,BOF,CBLT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
390362306a36Sopenharmony_ci{"bnll+",    BBOCB(16,BOF,CBLT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
390462306a36Sopenharmony_ci{"bnll",     BBOCB(16,BOF,CBLT,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
390562306a36Sopenharmony_ci{"bgea-",    BBOCB(16,BOF,CBLT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
390662306a36Sopenharmony_ci{"bgea+",    BBOCB(16,BOF,CBLT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
390762306a36Sopenharmony_ci{"bgea",     BBOCB(16,BOF,CBLT,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
390862306a36Sopenharmony_ci{"bnla-",    BBOCB(16,BOF,CBLT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
390962306a36Sopenharmony_ci{"bnla+",    BBOCB(16,BOF,CBLT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
391062306a36Sopenharmony_ci{"bnla",     BBOCB(16,BOF,CBLT,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
391162306a36Sopenharmony_ci{"bgela-",   BBOCB(16,BOF,CBLT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
391262306a36Sopenharmony_ci{"bgela+",   BBOCB(16,BOF,CBLT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
391362306a36Sopenharmony_ci{"bgela",    BBOCB(16,BOF,CBLT,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
391462306a36Sopenharmony_ci{"bnlla-",   BBOCB(16,BOF,CBLT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
391562306a36Sopenharmony_ci{"bnlla+",   BBOCB(16,BOF,CBLT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
391662306a36Sopenharmony_ci{"bnlla",    BBOCB(16,BOF,CBLT,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
391762306a36Sopenharmony_ci{"ble-",     BBOCB(16,BOF,CBGT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
391862306a36Sopenharmony_ci{"ble+",     BBOCB(16,BOF,CBGT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
391962306a36Sopenharmony_ci{"ble",	     BBOCB(16,BOF,CBGT,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
392062306a36Sopenharmony_ci{"bng-",     BBOCB(16,BOF,CBGT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
392162306a36Sopenharmony_ci{"bng+",     BBOCB(16,BOF,CBGT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
392262306a36Sopenharmony_ci{"bng",	     BBOCB(16,BOF,CBGT,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
392362306a36Sopenharmony_ci{"blel-",    BBOCB(16,BOF,CBGT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
392462306a36Sopenharmony_ci{"blel+",    BBOCB(16,BOF,CBGT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
392562306a36Sopenharmony_ci{"blel",     BBOCB(16,BOF,CBGT,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
392662306a36Sopenharmony_ci{"bngl-",    BBOCB(16,BOF,CBGT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
392762306a36Sopenharmony_ci{"bngl+",    BBOCB(16,BOF,CBGT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
392862306a36Sopenharmony_ci{"bngl",     BBOCB(16,BOF,CBGT,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
392962306a36Sopenharmony_ci{"blea-",    BBOCB(16,BOF,CBGT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
393062306a36Sopenharmony_ci{"blea+",    BBOCB(16,BOF,CBGT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
393162306a36Sopenharmony_ci{"blea",     BBOCB(16,BOF,CBGT,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
393262306a36Sopenharmony_ci{"bnga-",    BBOCB(16,BOF,CBGT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
393362306a36Sopenharmony_ci{"bnga+",    BBOCB(16,BOF,CBGT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
393462306a36Sopenharmony_ci{"bnga",     BBOCB(16,BOF,CBGT,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
393562306a36Sopenharmony_ci{"blela-",   BBOCB(16,BOF,CBGT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
393662306a36Sopenharmony_ci{"blela+",   BBOCB(16,BOF,CBGT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
393762306a36Sopenharmony_ci{"blela",    BBOCB(16,BOF,CBGT,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
393862306a36Sopenharmony_ci{"bngla-",   BBOCB(16,BOF,CBGT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
393962306a36Sopenharmony_ci{"bngla+",   BBOCB(16,BOF,CBGT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
394062306a36Sopenharmony_ci{"bngla",    BBOCB(16,BOF,CBGT,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
394162306a36Sopenharmony_ci{"bne-",     BBOCB(16,BOF,CBEQ,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
394262306a36Sopenharmony_ci{"bne+",     BBOCB(16,BOF,CBEQ,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
394362306a36Sopenharmony_ci{"bne",	     BBOCB(16,BOF,CBEQ,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
394462306a36Sopenharmony_ci{"bnel-",    BBOCB(16,BOF,CBEQ,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
394562306a36Sopenharmony_ci{"bnel+",    BBOCB(16,BOF,CBEQ,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
394662306a36Sopenharmony_ci{"bnel",     BBOCB(16,BOF,CBEQ,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
394762306a36Sopenharmony_ci{"bnea-",    BBOCB(16,BOF,CBEQ,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
394862306a36Sopenharmony_ci{"bnea+",    BBOCB(16,BOF,CBEQ,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
394962306a36Sopenharmony_ci{"bnea",     BBOCB(16,BOF,CBEQ,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
395062306a36Sopenharmony_ci{"bnela-",   BBOCB(16,BOF,CBEQ,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
395162306a36Sopenharmony_ci{"bnela+",   BBOCB(16,BOF,CBEQ,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
395262306a36Sopenharmony_ci{"bnela",    BBOCB(16,BOF,CBEQ,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
395362306a36Sopenharmony_ci{"bns-",     BBOCB(16,BOF,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
395462306a36Sopenharmony_ci{"bns+",     BBOCB(16,BOF,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
395562306a36Sopenharmony_ci{"bns",	     BBOCB(16,BOF,CBSO,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
395662306a36Sopenharmony_ci{"bnu-",     BBOCB(16,BOF,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
395762306a36Sopenharmony_ci{"bnu+",     BBOCB(16,BOF,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
395862306a36Sopenharmony_ci{"bnu",	     BBOCB(16,BOF,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BD}},
395962306a36Sopenharmony_ci{"bnsl-",    BBOCB(16,BOF,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
396062306a36Sopenharmony_ci{"bnsl+",    BBOCB(16,BOF,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
396162306a36Sopenharmony_ci{"bnsl",     BBOCB(16,BOF,CBSO,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
396262306a36Sopenharmony_ci{"bnul-",    BBOCB(16,BOF,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
396362306a36Sopenharmony_ci{"bnul+",    BBOCB(16,BOF,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
396462306a36Sopenharmony_ci{"bnul",     BBOCB(16,BOF,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BD}},
396562306a36Sopenharmony_ci{"bnsa-",    BBOCB(16,BOF,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
396662306a36Sopenharmony_ci{"bnsa+",    BBOCB(16,BOF,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
396762306a36Sopenharmony_ci{"bnsa",     BBOCB(16,BOF,CBSO,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
396862306a36Sopenharmony_ci{"bnua-",    BBOCB(16,BOF,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
396962306a36Sopenharmony_ci{"bnua+",    BBOCB(16,BOF,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
397062306a36Sopenharmony_ci{"bnua",     BBOCB(16,BOF,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDA}},
397162306a36Sopenharmony_ci{"bnsla-",   BBOCB(16,BOF,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
397262306a36Sopenharmony_ci{"bnsla+",   BBOCB(16,BOF,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
397362306a36Sopenharmony_ci{"bnsla",    BBOCB(16,BOF,CBSO,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
397462306a36Sopenharmony_ci{"bnula-",   BBOCB(16,BOF,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
397562306a36Sopenharmony_ci{"bnula+",   BBOCB(16,BOF,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
397662306a36Sopenharmony_ci{"bnula",    BBOCB(16,BOF,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDA}},
397762306a36Sopenharmony_ci
397862306a36Sopenharmony_ci{"blt-",     BBOCB(16,BOT,CBLT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
397962306a36Sopenharmony_ci{"blt+",     BBOCB(16,BOT,CBLT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
398062306a36Sopenharmony_ci{"blt",	     BBOCB(16,BOT,CBLT,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
398162306a36Sopenharmony_ci{"bltl-",    BBOCB(16,BOT,CBLT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
398262306a36Sopenharmony_ci{"bltl+",    BBOCB(16,BOT,CBLT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
398362306a36Sopenharmony_ci{"bltl",     BBOCB(16,BOT,CBLT,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
398462306a36Sopenharmony_ci{"blta-",    BBOCB(16,BOT,CBLT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
398562306a36Sopenharmony_ci{"blta+",    BBOCB(16,BOT,CBLT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
398662306a36Sopenharmony_ci{"blta",     BBOCB(16,BOT,CBLT,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
398762306a36Sopenharmony_ci{"bltla-",   BBOCB(16,BOT,CBLT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
398862306a36Sopenharmony_ci{"bltla+",   BBOCB(16,BOT,CBLT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
398962306a36Sopenharmony_ci{"bltla",    BBOCB(16,BOT,CBLT,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
399062306a36Sopenharmony_ci{"bgt-",     BBOCB(16,BOT,CBGT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
399162306a36Sopenharmony_ci{"bgt+",     BBOCB(16,BOT,CBGT,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
399262306a36Sopenharmony_ci{"bgt",	     BBOCB(16,BOT,CBGT,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
399362306a36Sopenharmony_ci{"bgtl-",    BBOCB(16,BOT,CBGT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
399462306a36Sopenharmony_ci{"bgtl+",    BBOCB(16,BOT,CBGT,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
399562306a36Sopenharmony_ci{"bgtl",     BBOCB(16,BOT,CBGT,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
399662306a36Sopenharmony_ci{"bgta-",    BBOCB(16,BOT,CBGT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
399762306a36Sopenharmony_ci{"bgta+",    BBOCB(16,BOT,CBGT,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
399862306a36Sopenharmony_ci{"bgta",     BBOCB(16,BOT,CBGT,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
399962306a36Sopenharmony_ci{"bgtla-",   BBOCB(16,BOT,CBGT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
400062306a36Sopenharmony_ci{"bgtla+",   BBOCB(16,BOT,CBGT,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
400162306a36Sopenharmony_ci{"bgtla",    BBOCB(16,BOT,CBGT,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
400262306a36Sopenharmony_ci{"beq-",     BBOCB(16,BOT,CBEQ,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
400362306a36Sopenharmony_ci{"beq+",     BBOCB(16,BOT,CBEQ,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
400462306a36Sopenharmony_ci{"beq",	     BBOCB(16,BOT,CBEQ,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
400562306a36Sopenharmony_ci{"beql-",    BBOCB(16,BOT,CBEQ,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
400662306a36Sopenharmony_ci{"beql+",    BBOCB(16,BOT,CBEQ,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
400762306a36Sopenharmony_ci{"beql",     BBOCB(16,BOT,CBEQ,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
400862306a36Sopenharmony_ci{"beqa-",    BBOCB(16,BOT,CBEQ,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
400962306a36Sopenharmony_ci{"beqa+",    BBOCB(16,BOT,CBEQ,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
401062306a36Sopenharmony_ci{"beqa",     BBOCB(16,BOT,CBEQ,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
401162306a36Sopenharmony_ci{"beqla-",   BBOCB(16,BOT,CBEQ,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
401262306a36Sopenharmony_ci{"beqla+",   BBOCB(16,BOT,CBEQ,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
401362306a36Sopenharmony_ci{"beqla",    BBOCB(16,BOT,CBEQ,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
401462306a36Sopenharmony_ci{"bso-",     BBOCB(16,BOT,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
401562306a36Sopenharmony_ci{"bso+",     BBOCB(16,BOT,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
401662306a36Sopenharmony_ci{"bso",	     BBOCB(16,BOT,CBSO,0,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
401762306a36Sopenharmony_ci{"bun-",     BBOCB(16,BOT,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
401862306a36Sopenharmony_ci{"bun+",     BBOCB(16,BOT,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
401962306a36Sopenharmony_ci{"bun",	     BBOCB(16,BOT,CBSO,0,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BD}},
402062306a36Sopenharmony_ci{"bsol-",    BBOCB(16,BOT,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
402162306a36Sopenharmony_ci{"bsol+",    BBOCB(16,BOT,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
402262306a36Sopenharmony_ci{"bsol",     BBOCB(16,BOT,CBSO,0,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BD}},
402362306a36Sopenharmony_ci{"bunl-",    BBOCB(16,BOT,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDM}},
402462306a36Sopenharmony_ci{"bunl+",    BBOCB(16,BOT,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDP}},
402562306a36Sopenharmony_ci{"bunl",     BBOCB(16,BOT,CBSO,0,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BD}},
402662306a36Sopenharmony_ci{"bsoa-",    BBOCB(16,BOT,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
402762306a36Sopenharmony_ci{"bsoa+",    BBOCB(16,BOT,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
402862306a36Sopenharmony_ci{"bsoa",     BBOCB(16,BOT,CBSO,1,0),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
402962306a36Sopenharmony_ci{"buna-",    BBOCB(16,BOT,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
403062306a36Sopenharmony_ci{"buna+",    BBOCB(16,BOT,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
403162306a36Sopenharmony_ci{"buna",     BBOCB(16,BOT,CBSO,1,0),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDA}},
403262306a36Sopenharmony_ci{"bsola-",   BBOCB(16,BOT,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
403362306a36Sopenharmony_ci{"bsola+",   BBOCB(16,BOT,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
403462306a36Sopenharmony_ci{"bsola",    BBOCB(16,BOT,CBSO,1,1),	BBOATCB_MASK,  COM,	 PPCVLE,	{CR, BDA}},
403562306a36Sopenharmony_ci{"bunla-",   BBOCB(16,BOT,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDMA}},
403662306a36Sopenharmony_ci{"bunla+",   BBOCB(16,BOT,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDPA}},
403762306a36Sopenharmony_ci{"bunla",    BBOCB(16,BOT,CBSO,1,1),	BBOATCB_MASK,  PPCCOM,	 PPCVLE,	{CR, BDA}},
403862306a36Sopenharmony_ci
403962306a36Sopenharmony_ci{"bdnzf-",   BBO(16,BODNZF,0,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
404062306a36Sopenharmony_ci{"bdnzf+",   BBO(16,BODNZF,0,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
404162306a36Sopenharmony_ci{"bdnzf",    BBO(16,BODNZF,0,0),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
404262306a36Sopenharmony_ci{"bdnzfl-",  BBO(16,BODNZF,0,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
404362306a36Sopenharmony_ci{"bdnzfl+",  BBO(16,BODNZF,0,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
404462306a36Sopenharmony_ci{"bdnzfl",   BBO(16,BODNZF,0,1),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
404562306a36Sopenharmony_ci{"bdnzfa-",  BBO(16,BODNZF,1,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
404662306a36Sopenharmony_ci{"bdnzfa+",  BBO(16,BODNZF,1,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
404762306a36Sopenharmony_ci{"bdnzfa",   BBO(16,BODNZF,1,0),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
404862306a36Sopenharmony_ci{"bdnzfla-", BBO(16,BODNZF,1,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
404962306a36Sopenharmony_ci{"bdnzfla+", BBO(16,BODNZF,1,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
405062306a36Sopenharmony_ci{"bdnzfla",  BBO(16,BODNZF,1,1),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
405162306a36Sopenharmony_ci{"bdzf-",    BBO(16,BODZF,0,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
405262306a36Sopenharmony_ci{"bdzf+",    BBO(16,BODZF,0,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
405362306a36Sopenharmony_ci{"bdzf",     BBO(16,BODZF,0,0),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
405462306a36Sopenharmony_ci{"bdzfl-",   BBO(16,BODZF,0,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
405562306a36Sopenharmony_ci{"bdzfl+",   BBO(16,BODZF,0,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
405662306a36Sopenharmony_ci{"bdzfl",    BBO(16,BODZF,0,1),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
405762306a36Sopenharmony_ci{"bdzfa-",   BBO(16,BODZF,1,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
405862306a36Sopenharmony_ci{"bdzfa+",   BBO(16,BODZF,1,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
405962306a36Sopenharmony_ci{"bdzfa",    BBO(16,BODZF,1,0),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
406062306a36Sopenharmony_ci{"bdzfla-",  BBO(16,BODZF,1,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
406162306a36Sopenharmony_ci{"bdzfla+",  BBO(16,BODZF,1,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
406262306a36Sopenharmony_ci{"bdzfla",   BBO(16,BODZF,1,1),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
406362306a36Sopenharmony_ci
406462306a36Sopenharmony_ci{"bf-",	     BBO(16,BOF,0,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDM}},
406562306a36Sopenharmony_ci{"bf+",	     BBO(16,BOF,0,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDP}},
406662306a36Sopenharmony_ci{"bf",	     BBO(16,BOF,0,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BD}},
406762306a36Sopenharmony_ci{"bbf",	     BBO(16,BOF,0,0),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BD}},
406862306a36Sopenharmony_ci{"bfl-",     BBO(16,BOF,0,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDM}},
406962306a36Sopenharmony_ci{"bfl+",     BBO(16,BOF,0,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDP}},
407062306a36Sopenharmony_ci{"bfl",	     BBO(16,BOF,0,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BD}},
407162306a36Sopenharmony_ci{"bbfl",     BBO(16,BOF,0,1),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BD}},
407262306a36Sopenharmony_ci{"bfa-",     BBO(16,BOF,1,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDMA}},
407362306a36Sopenharmony_ci{"bfa+",     BBO(16,BOF,1,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDPA}},
407462306a36Sopenharmony_ci{"bfa",	     BBO(16,BOF,1,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDA}},
407562306a36Sopenharmony_ci{"bbfa",     BBO(16,BOF,1,0),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BDA}},
407662306a36Sopenharmony_ci{"bfla-",    BBO(16,BOF,1,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDMA}},
407762306a36Sopenharmony_ci{"bfla+",    BBO(16,BOF,1,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDPA}},
407862306a36Sopenharmony_ci{"bfla",     BBO(16,BOF,1,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDA}},
407962306a36Sopenharmony_ci{"bbfla",    BBO(16,BOF,1,1),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BDA}},
408062306a36Sopenharmony_ci
408162306a36Sopenharmony_ci{"bdnzt-",   BBO(16,BODNZT,0,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
408262306a36Sopenharmony_ci{"bdnzt+",   BBO(16,BODNZT,0,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
408362306a36Sopenharmony_ci{"bdnzt",    BBO(16,BODNZT,0,0),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
408462306a36Sopenharmony_ci{"bdnztl-",  BBO(16,BODNZT,0,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
408562306a36Sopenharmony_ci{"bdnztl+",  BBO(16,BODNZT,0,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
408662306a36Sopenharmony_ci{"bdnztl",   BBO(16,BODNZT,0,1),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
408762306a36Sopenharmony_ci{"bdnzta-",  BBO(16,BODNZT,1,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
408862306a36Sopenharmony_ci{"bdnzta+",  BBO(16,BODNZT,1,0),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
408962306a36Sopenharmony_ci{"bdnzta",   BBO(16,BODNZT,1,0),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
409062306a36Sopenharmony_ci{"bdnztla-", BBO(16,BODNZT,1,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
409162306a36Sopenharmony_ci{"bdnztla+", BBO(16,BODNZT,1,1),	BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
409262306a36Sopenharmony_ci{"bdnztla",  BBO(16,BODNZT,1,1),	BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
409362306a36Sopenharmony_ci{"bdzt-",    BBO(16,BODZT,0,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
409462306a36Sopenharmony_ci{"bdzt+",    BBO(16,BODZT,0,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
409562306a36Sopenharmony_ci{"bdzt",     BBO(16,BODZT,0,0),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
409662306a36Sopenharmony_ci{"bdztl-",   BBO(16,BODZT,0,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDM}},
409762306a36Sopenharmony_ci{"bdztl+",   BBO(16,BODZT,0,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDP}},
409862306a36Sopenharmony_ci{"bdztl",    BBO(16,BODZT,0,1),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BD}},
409962306a36Sopenharmony_ci{"bdzta-",   BBO(16,BODZT,1,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
410062306a36Sopenharmony_ci{"bdzta+",   BBO(16,BODZT,1,0),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
410162306a36Sopenharmony_ci{"bdzta",    BBO(16,BODZT,1,0),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
410262306a36Sopenharmony_ci{"bdztla-",  BBO(16,BODZT,1,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDMA}},
410362306a36Sopenharmony_ci{"bdztla+",  BBO(16,BODZT,1,1),		BBOY_MASK,     PPCCOM,	 ISA_V2|PPCVLE,	{BI, BDPA}},
410462306a36Sopenharmony_ci{"bdztla",   BBO(16,BODZT,1,1),		BBOY_MASK,     PPCCOM,	 PPCVLE,	{BI, BDA}},
410562306a36Sopenharmony_ci
410662306a36Sopenharmony_ci{"bt-",	     BBO(16,BOT,0,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDM}},
410762306a36Sopenharmony_ci{"bt+",	     BBO(16,BOT,0,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDP}},
410862306a36Sopenharmony_ci{"bt",	     BBO(16,BOT,0,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BD}},
410962306a36Sopenharmony_ci{"bbt",	     BBO(16,BOT,0,0),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BD}},
411062306a36Sopenharmony_ci{"btl-",     BBO(16,BOT,0,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDM}},
411162306a36Sopenharmony_ci{"btl+",     BBO(16,BOT,0,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDP}},
411262306a36Sopenharmony_ci{"btl",	     BBO(16,BOT,0,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BD}},
411362306a36Sopenharmony_ci{"bbtl",     BBO(16,BOT,0,1),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BD}},
411462306a36Sopenharmony_ci{"bta-",     BBO(16,BOT,1,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDMA}},
411562306a36Sopenharmony_ci{"bta+",     BBO(16,BOT,1,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDPA}},
411662306a36Sopenharmony_ci{"bta",	     BBO(16,BOT,1,0),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDA}},
411762306a36Sopenharmony_ci{"bbta",     BBO(16,BOT,1,0),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BDA}},
411862306a36Sopenharmony_ci{"btla-",    BBO(16,BOT,1,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDMA}},
411962306a36Sopenharmony_ci{"btla+",    BBO(16,BOT,1,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDPA}},
412062306a36Sopenharmony_ci{"btla",     BBO(16,BOT,1,1),		BBOAT_MASK,    PPCCOM,	 PPCVLE,	{BI, BDA}},
412162306a36Sopenharmony_ci{"bbtla",    BBO(16,BOT,1,1),		BBOAT_MASK,    PWRCOM,	 PPCVLE,	{BI, BDA}},
412262306a36Sopenharmony_ci
412362306a36Sopenharmony_ci{"bc-",		B(16,0,0),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDM}},
412462306a36Sopenharmony_ci{"bc+",		B(16,0,0),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDP}},
412562306a36Sopenharmony_ci{"bc",		B(16,0,0),	B_MASK,	     COM,	PPCVLE,		{BO, BI, BD}},
412662306a36Sopenharmony_ci{"bcl-",	B(16,0,1),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDM}},
412762306a36Sopenharmony_ci{"bcl+",	B(16,0,1),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDP}},
412862306a36Sopenharmony_ci{"bcl",		B(16,0,1),	B_MASK,	     COM,	PPCVLE,		{BO, BI, BD}},
412962306a36Sopenharmony_ci{"bca-",	B(16,1,0),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDMA}},
413062306a36Sopenharmony_ci{"bca+",	B(16,1,0),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDPA}},
413162306a36Sopenharmony_ci{"bca",		B(16,1,0),	B_MASK,	     COM,	PPCVLE,		{BO, BI, BDA}},
413262306a36Sopenharmony_ci{"bcla-",	B(16,1,1),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDMA}},
413362306a36Sopenharmony_ci{"bcla+",	B(16,1,1),	B_MASK,	     PPCCOM,	PPCVLE,		{BOE, BI, BDPA}},
413462306a36Sopenharmony_ci{"bcla",	B(16,1,1),	B_MASK,	     COM,	PPCVLE,		{BO, BI, BDA}},
413562306a36Sopenharmony_ci
413662306a36Sopenharmony_ci{"svc",		SC(17,0,0),	SC_MASK,     POWER,	PPCVLE,		{SVC_LEV, FL1, FL2}},
413762306a36Sopenharmony_ci{"svcl",	SC(17,0,1),	SC_MASK,     POWER,	PPCVLE,		{SVC_LEV, FL1, FL2}},
413862306a36Sopenharmony_ci{"sc",		SC(17,1,0),	SC_MASK,     PPC,	PPCVLE,		{LEV}},
413962306a36Sopenharmony_ci{"svca",	SC(17,1,0),	SC_MASK,     PWRCOM,	PPCVLE,		{SV}},
414062306a36Sopenharmony_ci{"svcla",	SC(17,1,1),	SC_MASK,     POWER,	PPCVLE,		{SV}},
414162306a36Sopenharmony_ci
414262306a36Sopenharmony_ci{"b",		B(18,0,0),	B_MASK,	     COM,	PPCVLE,		{LI}},
414362306a36Sopenharmony_ci{"bl",		B(18,0,1),	B_MASK,	     COM,	PPCVLE,		{LI}},
414462306a36Sopenharmony_ci{"ba",		B(18,1,0),	B_MASK,	     COM,	PPCVLE,		{LIA}},
414562306a36Sopenharmony_ci{"bla",		B(18,1,1),	B_MASK,	     COM,	PPCVLE,		{LIA}},
414662306a36Sopenharmony_ci
414762306a36Sopenharmony_ci{"mcrf",     XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM,	PPCVLE,		{BF, BFA}},
414862306a36Sopenharmony_ci
414962306a36Sopenharmony_ci{"addpcis",  DX(19,2),		DX_MASK,     POWER9,	PPCVLE,		{RT, DXD}},
415062306a36Sopenharmony_ci{"subpcis",  DX(19,2),		DX_MASK,     POWER9,	PPCVLE,		{RT, NDXD}},
415162306a36Sopenharmony_ci
415262306a36Sopenharmony_ci{"bdnzlr",   XLO(19,BODNZ,16,0),	XLBOBIBB_MASK, PPCCOM,	 PPCVLE,	{0}},
415362306a36Sopenharmony_ci{"bdnzlr-",  XLO(19,BODNZ,16,0),	XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
415462306a36Sopenharmony_ci{"bdnzlrl",  XLO(19,BODNZ,16,1),	XLBOBIBB_MASK, PPCCOM,	 PPCVLE,	{0}},
415562306a36Sopenharmony_ci{"bdnzlrl-", XLO(19,BODNZ,16,1),	XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
415662306a36Sopenharmony_ci{"bdnzlr+",  XLO(19,BODNZP,16,0),	XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
415762306a36Sopenharmony_ci{"bdnzlrl+", XLO(19,BODNZP,16,1),	XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
415862306a36Sopenharmony_ci{"bdzlr",    XLO(19,BODZ,16,0),		XLBOBIBB_MASK, PPCCOM,	 PPCVLE,	{0}},
415962306a36Sopenharmony_ci{"bdzlr-",   XLO(19,BODZ,16,0),		XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
416062306a36Sopenharmony_ci{"bdzlrl",   XLO(19,BODZ,16,1),		XLBOBIBB_MASK, PPCCOM,	 PPCVLE,	{0}},
416162306a36Sopenharmony_ci{"bdzlrl-",  XLO(19,BODZ,16,1),		XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
416262306a36Sopenharmony_ci{"bdzlr+",   XLO(19,BODZP,16,0),	XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
416362306a36Sopenharmony_ci{"bdzlrl+",  XLO(19,BODZP,16,1),	XLBOBIBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{0}},
416462306a36Sopenharmony_ci{"blr",	     XLO(19,BOU,16,0),		XLBOBIBB_MASK, PPCCOM,	 PPCVLE,	{0}},
416562306a36Sopenharmony_ci{"br",	     XLO(19,BOU,16,0),		XLBOBIBB_MASK, PWRCOM,	 PPCVLE,	{0}},
416662306a36Sopenharmony_ci{"blrl",     XLO(19,BOU,16,1),		XLBOBIBB_MASK, PPCCOM,	 PPCVLE,	{0}},
416762306a36Sopenharmony_ci{"brl",	     XLO(19,BOU,16,1),		XLBOBIBB_MASK, PWRCOM,	 PPCVLE,	{0}},
416862306a36Sopenharmony_ci{"bdnzlr-",  XLO(19,BODNZM4,16,0),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
416962306a36Sopenharmony_ci{"bdnzlrl-", XLO(19,BODNZM4,16,1),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
417062306a36Sopenharmony_ci{"bdnzlr+",  XLO(19,BODNZP4,16,0),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
417162306a36Sopenharmony_ci{"bdnzlrl+", XLO(19,BODNZP4,16,1),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
417262306a36Sopenharmony_ci{"bdzlr-",   XLO(19,BODZM4,16,0),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
417362306a36Sopenharmony_ci{"bdzlrl-",  XLO(19,BODZM4,16,1),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
417462306a36Sopenharmony_ci{"bdzlr+",   XLO(19,BODZP4,16,0),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
417562306a36Sopenharmony_ci{"bdzlrl+",  XLO(19,BODZP4,16,1),	XLBOBIBB_MASK, ISA_V2,	 PPCVLE,	{0}},
417662306a36Sopenharmony_ci
417762306a36Sopenharmony_ci{"bgelr",    XLOCB(19,BOF,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
417862306a36Sopenharmony_ci{"bgelr-",   XLOCB(19,BOF,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
417962306a36Sopenharmony_ci{"bger",     XLOCB(19,BOF,CBLT,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
418062306a36Sopenharmony_ci{"bnllr",    XLOCB(19,BOF,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
418162306a36Sopenharmony_ci{"bnllr-",   XLOCB(19,BOF,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
418262306a36Sopenharmony_ci{"bnlr",     XLOCB(19,BOF,CBLT,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
418362306a36Sopenharmony_ci{"bgelrl",   XLOCB(19,BOF,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
418462306a36Sopenharmony_ci{"bgelrl-",  XLOCB(19,BOF,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
418562306a36Sopenharmony_ci{"bgerl",    XLOCB(19,BOF,CBLT,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
418662306a36Sopenharmony_ci{"bnllrl",   XLOCB(19,BOF,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
418762306a36Sopenharmony_ci{"bnllrl-",  XLOCB(19,BOF,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
418862306a36Sopenharmony_ci{"bnlrl",    XLOCB(19,BOF,CBLT,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
418962306a36Sopenharmony_ci{"blelr",    XLOCB(19,BOF,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
419062306a36Sopenharmony_ci{"blelr-",   XLOCB(19,BOF,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
419162306a36Sopenharmony_ci{"bler",     XLOCB(19,BOF,CBGT,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
419262306a36Sopenharmony_ci{"bnglr",    XLOCB(19,BOF,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
419362306a36Sopenharmony_ci{"bnglr-",   XLOCB(19,BOF,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
419462306a36Sopenharmony_ci{"bngr",     XLOCB(19,BOF,CBGT,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
419562306a36Sopenharmony_ci{"blelrl",   XLOCB(19,BOF,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
419662306a36Sopenharmony_ci{"blelrl-",  XLOCB(19,BOF,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
419762306a36Sopenharmony_ci{"blerl",    XLOCB(19,BOF,CBGT,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
419862306a36Sopenharmony_ci{"bnglrl",   XLOCB(19,BOF,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
419962306a36Sopenharmony_ci{"bnglrl-",  XLOCB(19,BOF,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
420062306a36Sopenharmony_ci{"bngrl",    XLOCB(19,BOF,CBGT,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
420162306a36Sopenharmony_ci{"bnelr",    XLOCB(19,BOF,CBEQ,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
420262306a36Sopenharmony_ci{"bnelr-",   XLOCB(19,BOF,CBEQ,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
420362306a36Sopenharmony_ci{"bner",     XLOCB(19,BOF,CBEQ,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
420462306a36Sopenharmony_ci{"bnelrl",   XLOCB(19,BOF,CBEQ,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
420562306a36Sopenharmony_ci{"bnelrl-",  XLOCB(19,BOF,CBEQ,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
420662306a36Sopenharmony_ci{"bnerl",    XLOCB(19,BOF,CBEQ,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
420762306a36Sopenharmony_ci{"bnslr",    XLOCB(19,BOF,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
420862306a36Sopenharmony_ci{"bnslr-",   XLOCB(19,BOF,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
420962306a36Sopenharmony_ci{"bnsr",     XLOCB(19,BOF,CBSO,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
421062306a36Sopenharmony_ci{"bnulr",    XLOCB(19,BOF,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
421162306a36Sopenharmony_ci{"bnulr-",   XLOCB(19,BOF,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
421262306a36Sopenharmony_ci{"bnslrl",   XLOCB(19,BOF,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
421362306a36Sopenharmony_ci{"bnslrl-",  XLOCB(19,BOF,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
421462306a36Sopenharmony_ci{"bnsrl",    XLOCB(19,BOF,CBSO,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
421562306a36Sopenharmony_ci{"bnulrl",   XLOCB(19,BOF,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
421662306a36Sopenharmony_ci{"bnulrl-",  XLOCB(19,BOF,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
421762306a36Sopenharmony_ci{"bgelr+",   XLOCB(19,BOFP,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
421862306a36Sopenharmony_ci{"bnllr+",   XLOCB(19,BOFP,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
421962306a36Sopenharmony_ci{"bgelrl+",  XLOCB(19,BOFP,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
422062306a36Sopenharmony_ci{"bnllrl+",  XLOCB(19,BOFP,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
422162306a36Sopenharmony_ci{"blelr+",   XLOCB(19,BOFP,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
422262306a36Sopenharmony_ci{"bnglr+",   XLOCB(19,BOFP,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
422362306a36Sopenharmony_ci{"blelrl+",  XLOCB(19,BOFP,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
422462306a36Sopenharmony_ci{"bnglrl+",  XLOCB(19,BOFP,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
422562306a36Sopenharmony_ci{"bnelr+",   XLOCB(19,BOFP,CBEQ,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
422662306a36Sopenharmony_ci{"bnelrl+",  XLOCB(19,BOFP,CBEQ,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
422762306a36Sopenharmony_ci{"bnslr+",   XLOCB(19,BOFP,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
422862306a36Sopenharmony_ci{"bnulr+",   XLOCB(19,BOFP,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
422962306a36Sopenharmony_ci{"bnslrl+",  XLOCB(19,BOFP,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
423062306a36Sopenharmony_ci{"bnulrl+",  XLOCB(19,BOFP,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
423162306a36Sopenharmony_ci{"bgelr-",   XLOCB(19,BOFM4,CBLT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
423262306a36Sopenharmony_ci{"bnllr-",   XLOCB(19,BOFM4,CBLT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
423362306a36Sopenharmony_ci{"bgelrl-",  XLOCB(19,BOFM4,CBLT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
423462306a36Sopenharmony_ci{"bnllrl-",  XLOCB(19,BOFM4,CBLT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
423562306a36Sopenharmony_ci{"blelr-",   XLOCB(19,BOFM4,CBGT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
423662306a36Sopenharmony_ci{"bnglr-",   XLOCB(19,BOFM4,CBGT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
423762306a36Sopenharmony_ci{"blelrl-",  XLOCB(19,BOFM4,CBGT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
423862306a36Sopenharmony_ci{"bnglrl-",  XLOCB(19,BOFM4,CBGT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
423962306a36Sopenharmony_ci{"bnelr-",   XLOCB(19,BOFM4,CBEQ,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
424062306a36Sopenharmony_ci{"bnelrl-",  XLOCB(19,BOFM4,CBEQ,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
424162306a36Sopenharmony_ci{"bnslr-",   XLOCB(19,BOFM4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
424262306a36Sopenharmony_ci{"bnulr-",   XLOCB(19,BOFM4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
424362306a36Sopenharmony_ci{"bnslrl-",  XLOCB(19,BOFM4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
424462306a36Sopenharmony_ci{"bnulrl-",  XLOCB(19,BOFM4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
424562306a36Sopenharmony_ci{"bgelr+",   XLOCB(19,BOFP4,CBLT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
424662306a36Sopenharmony_ci{"bnllr+",   XLOCB(19,BOFP4,CBLT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
424762306a36Sopenharmony_ci{"bgelrl+",  XLOCB(19,BOFP4,CBLT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
424862306a36Sopenharmony_ci{"bnllrl+",  XLOCB(19,BOFP4,CBLT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
424962306a36Sopenharmony_ci{"blelr+",   XLOCB(19,BOFP4,CBGT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
425062306a36Sopenharmony_ci{"bnglr+",   XLOCB(19,BOFP4,CBGT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
425162306a36Sopenharmony_ci{"blelrl+",  XLOCB(19,BOFP4,CBGT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
425262306a36Sopenharmony_ci{"bnglrl+",  XLOCB(19,BOFP4,CBGT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
425362306a36Sopenharmony_ci{"bnelr+",   XLOCB(19,BOFP4,CBEQ,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
425462306a36Sopenharmony_ci{"bnelrl+",  XLOCB(19,BOFP4,CBEQ,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
425562306a36Sopenharmony_ci{"bnslr+",   XLOCB(19,BOFP4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
425662306a36Sopenharmony_ci{"bnulr+",   XLOCB(19,BOFP4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
425762306a36Sopenharmony_ci{"bnslrl+",  XLOCB(19,BOFP4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
425862306a36Sopenharmony_ci{"bnulrl+",  XLOCB(19,BOFP4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
425962306a36Sopenharmony_ci{"bltlr",    XLOCB(19,BOT,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
426062306a36Sopenharmony_ci{"bltlr-",   XLOCB(19,BOT,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
426162306a36Sopenharmony_ci{"bltr",     XLOCB(19,BOT,CBLT,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
426262306a36Sopenharmony_ci{"bltlrl",   XLOCB(19,BOT,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
426362306a36Sopenharmony_ci{"bltlrl-",  XLOCB(19,BOT,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
426462306a36Sopenharmony_ci{"bltrl",    XLOCB(19,BOT,CBLT,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
426562306a36Sopenharmony_ci{"bgtlr",    XLOCB(19,BOT,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
426662306a36Sopenharmony_ci{"bgtlr-",   XLOCB(19,BOT,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
426762306a36Sopenharmony_ci{"bgtr",     XLOCB(19,BOT,CBGT,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
426862306a36Sopenharmony_ci{"bgtlrl",   XLOCB(19,BOT,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
426962306a36Sopenharmony_ci{"bgtlrl-",  XLOCB(19,BOT,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
427062306a36Sopenharmony_ci{"bgtrl",    XLOCB(19,BOT,CBGT,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
427162306a36Sopenharmony_ci{"beqlr",    XLOCB(19,BOT,CBEQ,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
427262306a36Sopenharmony_ci{"beqlr-",   XLOCB(19,BOT,CBEQ,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
427362306a36Sopenharmony_ci{"beqr",     XLOCB(19,BOT,CBEQ,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
427462306a36Sopenharmony_ci{"beqlrl",   XLOCB(19,BOT,CBEQ,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
427562306a36Sopenharmony_ci{"beqlrl-",  XLOCB(19,BOT,CBEQ,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
427662306a36Sopenharmony_ci{"beqrl",    XLOCB(19,BOT,CBEQ,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
427762306a36Sopenharmony_ci{"bsolr",    XLOCB(19,BOT,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
427862306a36Sopenharmony_ci{"bsolr-",   XLOCB(19,BOT,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
427962306a36Sopenharmony_ci{"bsor",     XLOCB(19,BOT,CBSO,16,0),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
428062306a36Sopenharmony_ci{"bunlr",    XLOCB(19,BOT,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
428162306a36Sopenharmony_ci{"bunlr-",   XLOCB(19,BOT,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
428262306a36Sopenharmony_ci{"bsolrl",   XLOCB(19,BOT,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
428362306a36Sopenharmony_ci{"bsolrl-",  XLOCB(19,BOT,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
428462306a36Sopenharmony_ci{"bsorl",    XLOCB(19,BOT,CBSO,16,1),	XLBOCBBB_MASK, PWRCOM,	 PPCVLE,	{CR}},
428562306a36Sopenharmony_ci{"bunlrl",   XLOCB(19,BOT,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
428662306a36Sopenharmony_ci{"bunlrl-",  XLOCB(19,BOT,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
428762306a36Sopenharmony_ci{"bltlr+",   XLOCB(19,BOTP,CBLT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
428862306a36Sopenharmony_ci{"bltlrl+",  XLOCB(19,BOTP,CBLT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
428962306a36Sopenharmony_ci{"bgtlr+",   XLOCB(19,BOTP,CBGT,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
429062306a36Sopenharmony_ci{"bgtlrl+",  XLOCB(19,BOTP,CBGT,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
429162306a36Sopenharmony_ci{"beqlr+",   XLOCB(19,BOTP,CBEQ,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
429262306a36Sopenharmony_ci{"beqlrl+",  XLOCB(19,BOTP,CBEQ,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
429362306a36Sopenharmony_ci{"bsolr+",   XLOCB(19,BOTP,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
429462306a36Sopenharmony_ci{"bunlr+",   XLOCB(19,BOTP,CBSO,16,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
429562306a36Sopenharmony_ci{"bsolrl+",  XLOCB(19,BOTP,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
429662306a36Sopenharmony_ci{"bunlrl+",  XLOCB(19,BOTP,CBSO,16,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
429762306a36Sopenharmony_ci{"bltlr-",   XLOCB(19,BOTM4,CBLT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
429862306a36Sopenharmony_ci{"bltlrl-",  XLOCB(19,BOTM4,CBLT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
429962306a36Sopenharmony_ci{"bgtlr-",   XLOCB(19,BOTM4,CBGT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
430062306a36Sopenharmony_ci{"bgtlrl-",  XLOCB(19,BOTM4,CBGT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
430162306a36Sopenharmony_ci{"beqlr-",   XLOCB(19,BOTM4,CBEQ,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
430262306a36Sopenharmony_ci{"beqlrl-",  XLOCB(19,BOTM4,CBEQ,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
430362306a36Sopenharmony_ci{"bsolr-",   XLOCB(19,BOTM4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
430462306a36Sopenharmony_ci{"bunlr-",   XLOCB(19,BOTM4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
430562306a36Sopenharmony_ci{"bsolrl-",  XLOCB(19,BOTM4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
430662306a36Sopenharmony_ci{"bunlrl-",  XLOCB(19,BOTM4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
430762306a36Sopenharmony_ci{"bltlr+",   XLOCB(19,BOTP4,CBLT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
430862306a36Sopenharmony_ci{"bltlrl+",  XLOCB(19,BOTP4,CBLT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
430962306a36Sopenharmony_ci{"bgtlr+",   XLOCB(19,BOTP4,CBGT,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
431062306a36Sopenharmony_ci{"bgtlrl+",  XLOCB(19,BOTP4,CBGT,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
431162306a36Sopenharmony_ci{"beqlr+",   XLOCB(19,BOTP4,CBEQ,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
431262306a36Sopenharmony_ci{"beqlrl+",  XLOCB(19,BOTP4,CBEQ,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
431362306a36Sopenharmony_ci{"bsolr+",   XLOCB(19,BOTP4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
431462306a36Sopenharmony_ci{"bunlr+",   XLOCB(19,BOTP4,CBSO,16,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
431562306a36Sopenharmony_ci{"bsolrl+",  XLOCB(19,BOTP4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
431662306a36Sopenharmony_ci{"bunlrl+",  XLOCB(19,BOTP4,CBSO,16,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
431762306a36Sopenharmony_ci
431862306a36Sopenharmony_ci{"bdnzflr",  XLO(19,BODNZF,16,0),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
431962306a36Sopenharmony_ci{"bdnzflr-", XLO(19,BODNZF,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
432062306a36Sopenharmony_ci{"bdnzflrl", XLO(19,BODNZF,16,1),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
432162306a36Sopenharmony_ci{"bdnzflrl-",XLO(19,BODNZF,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
432262306a36Sopenharmony_ci{"bdnzflr+", XLO(19,BODNZFP,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
432362306a36Sopenharmony_ci{"bdnzflrl+",XLO(19,BODNZFP,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
432462306a36Sopenharmony_ci{"bdzflr",   XLO(19,BODZF,16,0),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
432562306a36Sopenharmony_ci{"bdzflr-",  XLO(19,BODZF,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
432662306a36Sopenharmony_ci{"bdzflrl",  XLO(19,BODZF,16,1),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
432762306a36Sopenharmony_ci{"bdzflrl-", XLO(19,BODZF,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
432862306a36Sopenharmony_ci{"bdzflr+",  XLO(19,BODZFP,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
432962306a36Sopenharmony_ci{"bdzflrl+", XLO(19,BODZFP,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
433062306a36Sopenharmony_ci{"bflr",     XLO(19,BOF,16,0),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
433162306a36Sopenharmony_ci{"bflr-",    XLO(19,BOF,16,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
433262306a36Sopenharmony_ci{"bbfr",     XLO(19,BOF,16,0),		XLBOBB_MASK,   PWRCOM,	 PPCVLE,	{BI}},
433362306a36Sopenharmony_ci{"bflrl",    XLO(19,BOF,16,1),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
433462306a36Sopenharmony_ci{"bflrl-",   XLO(19,BOF,16,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
433562306a36Sopenharmony_ci{"bbfrl",    XLO(19,BOF,16,1),		XLBOBB_MASK,   PWRCOM,	 PPCVLE,	{BI}},
433662306a36Sopenharmony_ci{"bflr+",    XLO(19,BOFP,16,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
433762306a36Sopenharmony_ci{"bflrl+",   XLO(19,BOFP,16,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
433862306a36Sopenharmony_ci{"bflr-",    XLO(19,BOFM4,16,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
433962306a36Sopenharmony_ci{"bflrl-",   XLO(19,BOFM4,16,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
434062306a36Sopenharmony_ci{"bflr+",    XLO(19,BOFP4,16,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
434162306a36Sopenharmony_ci{"bflrl+",   XLO(19,BOFP4,16,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
434262306a36Sopenharmony_ci{"bdnztlr",  XLO(19,BODNZT,16,0),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
434362306a36Sopenharmony_ci{"bdnztlr-", XLO(19,BODNZT,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
434462306a36Sopenharmony_ci{"bdnztlrl", XLO(19,BODNZT,16,1),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
434562306a36Sopenharmony_ci{"bdnztlrl-", XLO(19,BODNZT,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
434662306a36Sopenharmony_ci{"bdnztlr+", XLO(19,BODNZTP,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
434762306a36Sopenharmony_ci{"bdnztlrl+", XLO(19,BODNZTP,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
434862306a36Sopenharmony_ci{"bdztlr",   XLO(19,BODZT,16,0),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
434962306a36Sopenharmony_ci{"bdztlr-",  XLO(19,BODZT,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
435062306a36Sopenharmony_ci{"bdztlrl",  XLO(19,BODZT,16,1),	XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
435162306a36Sopenharmony_ci{"bdztlrl-", XLO(19,BODZT,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
435262306a36Sopenharmony_ci{"bdztlr+",  XLO(19,BODZTP,16,0),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
435362306a36Sopenharmony_ci{"bdztlrl+", XLO(19,BODZTP,16,1),	XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
435462306a36Sopenharmony_ci{"btlr",     XLO(19,BOT,16,0),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
435562306a36Sopenharmony_ci{"btlr-",    XLO(19,BOT,16,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
435662306a36Sopenharmony_ci{"bbtr",     XLO(19,BOT,16,0),		XLBOBB_MASK,   PWRCOM,	 PPCVLE,	{BI}},
435762306a36Sopenharmony_ci{"btlrl",    XLO(19,BOT,16,1),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
435862306a36Sopenharmony_ci{"btlrl-",   XLO(19,BOT,16,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
435962306a36Sopenharmony_ci{"bbtrl",    XLO(19,BOT,16,1),		XLBOBB_MASK,   PWRCOM,	 PPCVLE,	{BI}},
436062306a36Sopenharmony_ci{"btlr+",    XLO(19,BOTP,16,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
436162306a36Sopenharmony_ci{"btlrl+",   XLO(19,BOTP,16,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
436262306a36Sopenharmony_ci{"btlr-",    XLO(19,BOTM4,16,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
436362306a36Sopenharmony_ci{"btlrl-",   XLO(19,BOTM4,16,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
436462306a36Sopenharmony_ci{"btlr+",    XLO(19,BOTP4,16,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
436562306a36Sopenharmony_ci{"btlrl+",   XLO(19,BOTP4,16,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
436662306a36Sopenharmony_ci
436762306a36Sopenharmony_ci{"bclr-",    XLYLK(19,16,0,0),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
436862306a36Sopenharmony_ci{"bclrl-",   XLYLK(19,16,0,1),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
436962306a36Sopenharmony_ci{"bclr+",    XLYLK(19,16,1,0),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
437062306a36Sopenharmony_ci{"bclrl+",   XLYLK(19,16,1,1),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
437162306a36Sopenharmony_ci{"bclr",     XLLK(19,16,0),		XLBH_MASK,     PPCCOM,	 PPCVLE,	{BO, BI, BH}},
437262306a36Sopenharmony_ci{"bcr",	     XLLK(19,16,0),		XLBB_MASK,     PWRCOM,	 PPCVLE,	{BO, BI}},
437362306a36Sopenharmony_ci{"bclrl",    XLLK(19,16,1),		XLBH_MASK,     PPCCOM,	 PPCVLE,	{BO, BI, BH}},
437462306a36Sopenharmony_ci{"bcrl",     XLLK(19,16,1),		XLBB_MASK,     PWRCOM,	 PPCVLE,	{BO, BI}},
437562306a36Sopenharmony_ci
437662306a36Sopenharmony_ci{"rfid",	XL(19,18),	0xffffffff,  PPC64,	PPCVLE,	{0}},
437762306a36Sopenharmony_ci
437862306a36Sopenharmony_ci{"crnot",	XL(19,33),	XL_MASK,     PPCCOM,	PPCVLE,		{BT, BA, BBA}},
437962306a36Sopenharmony_ci{"crnor",	XL(19,33),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
438062306a36Sopenharmony_ci{"rfmci",	X(19,38),    0xffffffff, PPCRFMCI|PPCA2|PPC476, PPCVLE,	{0}},
438162306a36Sopenharmony_ci
438262306a36Sopenharmony_ci{"rfdi",	XL(19,39),	0xffffffff,  E500MC,	PPCVLE,		{0}},
438362306a36Sopenharmony_ci{"rfi",		XL(19,50),	0xffffffff,  COM,	PPCVLE,		{0}},
438462306a36Sopenharmony_ci{"rfci",	XL(19,51), 0xffffffff, PPC403|BOOKE|PPCE300|PPCA2|PPC476, PPCVLE, {0}},
438562306a36Sopenharmony_ci
438662306a36Sopenharmony_ci{"rfsvc",	XL(19,82),	0xffffffff,  POWER,	PPCVLE,		{0}},
438762306a36Sopenharmony_ci
438862306a36Sopenharmony_ci{"rfgi",	XL(19,102),   0xffffffff, E500MC|PPCA2,	PPCVLE,		{0}},
438962306a36Sopenharmony_ci
439062306a36Sopenharmony_ci{"crandc",	XL(19,129),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
439162306a36Sopenharmony_ci
439262306a36Sopenharmony_ci{"rfebb",	XL(19,146),	XLS_MASK,    POWER8,	PPCVLE,		{SXL}},
439362306a36Sopenharmony_ci
439462306a36Sopenharmony_ci{"isync",	XL(19,150),	0xffffffff,  PPCCOM,	PPCVLE,		{0}},
439562306a36Sopenharmony_ci{"ics",		XL(19,150),	0xffffffff,  PWRCOM,	PPCVLE,		{0}},
439662306a36Sopenharmony_ci
439762306a36Sopenharmony_ci{"crclr",	XL(19,193),	XL_MASK,     PPCCOM,	PPCVLE,		{BT, BAT, BBA}},
439862306a36Sopenharmony_ci{"crxor",	XL(19,193),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
439962306a36Sopenharmony_ci
440062306a36Sopenharmony_ci{"dnh",		X(19,198),	X_MASK,	     E500MC,	PPCVLE,		{DUI, DUIS}},
440162306a36Sopenharmony_ci
440262306a36Sopenharmony_ci{"crnand",	XL(19,225),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
440362306a36Sopenharmony_ci
440462306a36Sopenharmony_ci{"crand",	XL(19,257),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
440562306a36Sopenharmony_ci
440662306a36Sopenharmony_ci{"hrfid",	XL(19,274),    0xffffffff, POWER5|CELL, PPC476|PPCVLE,	{0}},
440762306a36Sopenharmony_ci
440862306a36Sopenharmony_ci{"crset",	XL(19,289),	XL_MASK,     PPCCOM,	PPCVLE,		{BT, BAT, BBA}},
440962306a36Sopenharmony_ci{"creqv",	XL(19,289),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
441062306a36Sopenharmony_ci
441162306a36Sopenharmony_ci{"urfid",	XL(19,306),	0xffffffff,  POWER9,	PPCVLE,		{0}},
441262306a36Sopenharmony_ci{"stop",	XL(19,370),	0xffffffff,  POWER9,	PPCVLE,		{0}},
441362306a36Sopenharmony_ci
441462306a36Sopenharmony_ci{"doze",	XL(19,402),	0xffffffff,  POWER6,	POWER9|PPCVLE,	{0}},
441562306a36Sopenharmony_ci
441662306a36Sopenharmony_ci{"crorc",	XL(19,417),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
441762306a36Sopenharmony_ci
441862306a36Sopenharmony_ci{"nap",		XL(19,434),	0xffffffff,  POWER6,	POWER9|PPCVLE,	{0}},
441962306a36Sopenharmony_ci
442062306a36Sopenharmony_ci{"crmove",	XL(19,449),	XL_MASK,     PPCCOM,	PPCVLE,		{BT, BA, BBA}},
442162306a36Sopenharmony_ci{"cror",	XL(19,449),	XL_MASK,     COM,	PPCVLE,		{BT, BA, BB}},
442262306a36Sopenharmony_ci
442362306a36Sopenharmony_ci{"sleep",	XL(19,466),	0xffffffff,  POWER6,	POWER9|PPCVLE,	{0}},
442462306a36Sopenharmony_ci{"rvwinkle",	XL(19,498),	0xffffffff,  POWER6,	POWER9|PPCVLE,	{0}},
442562306a36Sopenharmony_ci
442662306a36Sopenharmony_ci{"bctr",    XLO(19,BOU,528,0),		XLBOBIBB_MASK, COM,	 PPCVLE,	{0}},
442762306a36Sopenharmony_ci{"bctrl",   XLO(19,BOU,528,1),		XLBOBIBB_MASK, COM,	 PPCVLE,	{0}},
442862306a36Sopenharmony_ci
442962306a36Sopenharmony_ci{"bgectr",  XLOCB(19,BOF,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
443062306a36Sopenharmony_ci{"bgectr-", XLOCB(19,BOF,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
443162306a36Sopenharmony_ci{"bnlctr",  XLOCB(19,BOF,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
443262306a36Sopenharmony_ci{"bnlctr-", XLOCB(19,BOF,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
443362306a36Sopenharmony_ci{"bgectrl", XLOCB(19,BOF,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
443462306a36Sopenharmony_ci{"bgectrl-",XLOCB(19,BOF,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
443562306a36Sopenharmony_ci{"bnlctrl", XLOCB(19,BOF,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
443662306a36Sopenharmony_ci{"bnlctrl-",XLOCB(19,BOF,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
443762306a36Sopenharmony_ci{"blectr",  XLOCB(19,BOF,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
443862306a36Sopenharmony_ci{"blectr-", XLOCB(19,BOF,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
443962306a36Sopenharmony_ci{"bngctr",  XLOCB(19,BOF,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
444062306a36Sopenharmony_ci{"bngctr-", XLOCB(19,BOF,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
444162306a36Sopenharmony_ci{"blectrl", XLOCB(19,BOF,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
444262306a36Sopenharmony_ci{"blectrl-",XLOCB(19,BOF,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
444362306a36Sopenharmony_ci{"bngctrl", XLOCB(19,BOF,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
444462306a36Sopenharmony_ci{"bngctrl-",XLOCB(19,BOF,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
444562306a36Sopenharmony_ci{"bnectr",  XLOCB(19,BOF,CBEQ,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
444662306a36Sopenharmony_ci{"bnectr-", XLOCB(19,BOF,CBEQ,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
444762306a36Sopenharmony_ci{"bnectrl", XLOCB(19,BOF,CBEQ,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
444862306a36Sopenharmony_ci{"bnectrl-",XLOCB(19,BOF,CBEQ,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
444962306a36Sopenharmony_ci{"bnsctr",  XLOCB(19,BOF,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
445062306a36Sopenharmony_ci{"bnsctr-", XLOCB(19,BOF,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
445162306a36Sopenharmony_ci{"bnuctr",  XLOCB(19,BOF,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
445262306a36Sopenharmony_ci{"bnuctr-", XLOCB(19,BOF,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
445362306a36Sopenharmony_ci{"bnsctrl", XLOCB(19,BOF,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
445462306a36Sopenharmony_ci{"bnsctrl-",XLOCB(19,BOF,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
445562306a36Sopenharmony_ci{"bnuctrl", XLOCB(19,BOF,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
445662306a36Sopenharmony_ci{"bnuctrl-",XLOCB(19,BOF,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
445762306a36Sopenharmony_ci{"bgectr+", XLOCB(19,BOFP,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
445862306a36Sopenharmony_ci{"bnlctr+", XLOCB(19,BOFP,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
445962306a36Sopenharmony_ci{"bgectrl+",XLOCB(19,BOFP,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
446062306a36Sopenharmony_ci{"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
446162306a36Sopenharmony_ci{"blectr+", XLOCB(19,BOFP,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
446262306a36Sopenharmony_ci{"bngctr+", XLOCB(19,BOFP,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
446362306a36Sopenharmony_ci{"blectrl+",XLOCB(19,BOFP,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
446462306a36Sopenharmony_ci{"bngctrl+",XLOCB(19,BOFP,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
446562306a36Sopenharmony_ci{"bnectr+", XLOCB(19,BOFP,CBEQ,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
446662306a36Sopenharmony_ci{"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
446762306a36Sopenharmony_ci{"bnsctr+", XLOCB(19,BOFP,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
446862306a36Sopenharmony_ci{"bnuctr+", XLOCB(19,BOFP,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
446962306a36Sopenharmony_ci{"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
447062306a36Sopenharmony_ci{"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
447162306a36Sopenharmony_ci{"bgectr-", XLOCB(19,BOFM4,CBLT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
447262306a36Sopenharmony_ci{"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
447362306a36Sopenharmony_ci{"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
447462306a36Sopenharmony_ci{"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
447562306a36Sopenharmony_ci{"blectr-", XLOCB(19,BOFM4,CBGT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
447662306a36Sopenharmony_ci{"bngctr-", XLOCB(19,BOFM4,CBGT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
447762306a36Sopenharmony_ci{"blectrl-",XLOCB(19,BOFM4,CBGT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
447862306a36Sopenharmony_ci{"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
447962306a36Sopenharmony_ci{"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
448062306a36Sopenharmony_ci{"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
448162306a36Sopenharmony_ci{"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
448262306a36Sopenharmony_ci{"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
448362306a36Sopenharmony_ci{"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
448462306a36Sopenharmony_ci{"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
448562306a36Sopenharmony_ci{"bgectr+", XLOCB(19,BOFP4,CBLT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
448662306a36Sopenharmony_ci{"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
448762306a36Sopenharmony_ci{"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
448862306a36Sopenharmony_ci{"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
448962306a36Sopenharmony_ci{"blectr+", XLOCB(19,BOFP4,CBGT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
449062306a36Sopenharmony_ci{"bngctr+", XLOCB(19,BOFP4,CBGT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
449162306a36Sopenharmony_ci{"blectrl+",XLOCB(19,BOFP4,CBGT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
449262306a36Sopenharmony_ci{"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
449362306a36Sopenharmony_ci{"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
449462306a36Sopenharmony_ci{"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
449562306a36Sopenharmony_ci{"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
449662306a36Sopenharmony_ci{"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
449762306a36Sopenharmony_ci{"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
449862306a36Sopenharmony_ci{"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
449962306a36Sopenharmony_ci{"bltctr",  XLOCB(19,BOT,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
450062306a36Sopenharmony_ci{"bltctr-", XLOCB(19,BOT,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
450162306a36Sopenharmony_ci{"bltctrl", XLOCB(19,BOT,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
450262306a36Sopenharmony_ci{"bltctrl-",XLOCB(19,BOT,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
450362306a36Sopenharmony_ci{"bgtctr",  XLOCB(19,BOT,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
450462306a36Sopenharmony_ci{"bgtctr-", XLOCB(19,BOT,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
450562306a36Sopenharmony_ci{"bgtctrl", XLOCB(19,BOT,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
450662306a36Sopenharmony_ci{"bgtctrl-",XLOCB(19,BOT,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
450762306a36Sopenharmony_ci{"beqctr",  XLOCB(19,BOT,CBEQ,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
450862306a36Sopenharmony_ci{"beqctr-", XLOCB(19,BOT,CBEQ,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
450962306a36Sopenharmony_ci{"beqctrl", XLOCB(19,BOT,CBEQ,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
451062306a36Sopenharmony_ci{"beqctrl-",XLOCB(19,BOT,CBEQ,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
451162306a36Sopenharmony_ci{"bsoctr",  XLOCB(19,BOT,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
451262306a36Sopenharmony_ci{"bsoctr-", XLOCB(19,BOT,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
451362306a36Sopenharmony_ci{"bunctr",  XLOCB(19,BOT,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
451462306a36Sopenharmony_ci{"bunctr-", XLOCB(19,BOT,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
451562306a36Sopenharmony_ci{"bsoctrl", XLOCB(19,BOT,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
451662306a36Sopenharmony_ci{"bsoctrl-",XLOCB(19,BOT,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
451762306a36Sopenharmony_ci{"bunctrl", XLOCB(19,BOT,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 PPCVLE,	{CR}},
451862306a36Sopenharmony_ci{"bunctrl-",XLOCB(19,BOT,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
451962306a36Sopenharmony_ci{"bltctr+", XLOCB(19,BOTP,CBLT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
452062306a36Sopenharmony_ci{"bltctrl+",XLOCB(19,BOTP,CBLT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
452162306a36Sopenharmony_ci{"bgtctr+", XLOCB(19,BOTP,CBGT,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
452262306a36Sopenharmony_ci{"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
452362306a36Sopenharmony_ci{"beqctr+", XLOCB(19,BOTP,CBEQ,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
452462306a36Sopenharmony_ci{"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
452562306a36Sopenharmony_ci{"bsoctr+", XLOCB(19,BOTP,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
452662306a36Sopenharmony_ci{"bunctr+", XLOCB(19,BOTP,CBSO,528,0),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
452762306a36Sopenharmony_ci{"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
452862306a36Sopenharmony_ci{"bunctrl+",XLOCB(19,BOTP,CBSO,528,1),	XLBOCBBB_MASK, PPCCOM,	 ISA_V2|PPCVLE,	{CR}},
452962306a36Sopenharmony_ci{"bltctr-", XLOCB(19,BOTM4,CBLT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
453062306a36Sopenharmony_ci{"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
453162306a36Sopenharmony_ci{"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
453262306a36Sopenharmony_ci{"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
453362306a36Sopenharmony_ci{"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
453462306a36Sopenharmony_ci{"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
453562306a36Sopenharmony_ci{"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
453662306a36Sopenharmony_ci{"bunctr-", XLOCB(19,BOTM4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
453762306a36Sopenharmony_ci{"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
453862306a36Sopenharmony_ci{"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
453962306a36Sopenharmony_ci{"bltctr+", XLOCB(19,BOTP4,CBLT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
454062306a36Sopenharmony_ci{"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
454162306a36Sopenharmony_ci{"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
454262306a36Sopenharmony_ci{"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
454362306a36Sopenharmony_ci{"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
454462306a36Sopenharmony_ci{"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
454562306a36Sopenharmony_ci{"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
454662306a36Sopenharmony_ci{"bunctr+", XLOCB(19,BOTP4,CBSO,528,0),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
454762306a36Sopenharmony_ci{"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
454862306a36Sopenharmony_ci{"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1),	XLBOCBBB_MASK, ISA_V2,	 PPCVLE,	{CR}},
454962306a36Sopenharmony_ci
455062306a36Sopenharmony_ci{"bfctr",   XLO(19,BOF,528,0),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
455162306a36Sopenharmony_ci{"bfctr-",  XLO(19,BOF,528,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
455262306a36Sopenharmony_ci{"bfctrl",  XLO(19,BOF,528,1),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
455362306a36Sopenharmony_ci{"bfctrl-", XLO(19,BOF,528,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
455462306a36Sopenharmony_ci{"bfctr+",  XLO(19,BOFP,528,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
455562306a36Sopenharmony_ci{"bfctrl+", XLO(19,BOFP,528,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
455662306a36Sopenharmony_ci{"bfctr-",  XLO(19,BOFM4,528,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
455762306a36Sopenharmony_ci{"bfctrl-", XLO(19,BOFM4,528,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
455862306a36Sopenharmony_ci{"bfctr+",  XLO(19,BOFP4,528,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
455962306a36Sopenharmony_ci{"bfctrl+", XLO(19,BOFP4,528,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
456062306a36Sopenharmony_ci{"btctr",   XLO(19,BOT,528,0),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
456162306a36Sopenharmony_ci{"btctr-",  XLO(19,BOT,528,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
456262306a36Sopenharmony_ci{"btctrl",  XLO(19,BOT,528,1),		XLBOBB_MASK,   PPCCOM,	 PPCVLE,	{BI}},
456362306a36Sopenharmony_ci{"btctrl-", XLO(19,BOT,528,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
456462306a36Sopenharmony_ci{"btctr+",  XLO(19,BOTP,528,0),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
456562306a36Sopenharmony_ci{"btctrl+", XLO(19,BOTP,528,1),		XLBOBB_MASK,   PPCCOM,	 ISA_V2|PPCVLE,	{BI}},
456662306a36Sopenharmony_ci{"btctr-",  XLO(19,BOTM4,528,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
456762306a36Sopenharmony_ci{"btctrl-", XLO(19,BOTM4,528,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
456862306a36Sopenharmony_ci{"btctr+",  XLO(19,BOTP4,528,0),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
456962306a36Sopenharmony_ci{"btctrl+", XLO(19,BOTP4,528,1),	XLBOBB_MASK,   ISA_V2,	 PPCVLE,	{BI}},
457062306a36Sopenharmony_ci
457162306a36Sopenharmony_ci{"bcctr-",  XLYLK(19,528,0,0),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
457262306a36Sopenharmony_ci{"bcctrl-", XLYLK(19,528,0,1),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
457362306a36Sopenharmony_ci{"bcctr+",  XLYLK(19,528,1,0),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
457462306a36Sopenharmony_ci{"bcctrl+", XLYLK(19,528,1,1),		XLYBB_MASK,    PPCCOM,	 PPCVLE,	{BOE, BI}},
457562306a36Sopenharmony_ci{"bcctr",   XLLK(19,528,0),		XLBH_MASK,     PPCCOM,	 PPCVLE,	{BO, BI, BH}},
457662306a36Sopenharmony_ci{"bcc",	    XLLK(19,528,0),		XLBB_MASK,     PWRCOM,	 PPCVLE,	{BO, BI}},
457762306a36Sopenharmony_ci{"bcctrl",  XLLK(19,528,1),		XLBH_MASK,     PPCCOM,	 PPCVLE,	{BO, BI, BH}},
457862306a36Sopenharmony_ci{"bccl",    XLLK(19,528,1),		XLBB_MASK,     PWRCOM,	 PPCVLE,	{BO, BI}},
457962306a36Sopenharmony_ci
458062306a36Sopenharmony_ci{"bctar-",  XLYLK(19,560,0,0),		XLYBB_MASK,    POWER8,	 PPCVLE,	{BOE, BI}},
458162306a36Sopenharmony_ci{"bctarl-", XLYLK(19,560,0,1),		XLYBB_MASK,    POWER8,	 PPCVLE,	{BOE, BI}},
458262306a36Sopenharmony_ci{"bctar+",  XLYLK(19,560,1,0),		XLYBB_MASK,    POWER8,	 PPCVLE,	{BOE, BI}},
458362306a36Sopenharmony_ci{"bctarl+", XLYLK(19,560,1,1),		XLYBB_MASK,    POWER8,	 PPCVLE,	{BOE, BI}},
458462306a36Sopenharmony_ci{"bctar",   XLLK(19,560,0),		XLBH_MASK,     POWER8,	 PPCVLE,	{BO, BI, BH}},
458562306a36Sopenharmony_ci{"bctarl",  XLLK(19,560,1),		XLBH_MASK,     POWER8,	 PPCVLE,	{BO, BI, BH}},
458662306a36Sopenharmony_ci
458762306a36Sopenharmony_ci{"rlwimi",	M(20,0),	M_MASK,	     PPCCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
458862306a36Sopenharmony_ci{"rlimi",	M(20,0),	M_MASK,	     PWRCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
458962306a36Sopenharmony_ci
459062306a36Sopenharmony_ci{"rlwimi.",	M(20,1),	M_MASK,	     PPCCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
459162306a36Sopenharmony_ci{"rlimi.",	M(20,1),	M_MASK,	     PWRCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
459262306a36Sopenharmony_ci
459362306a36Sopenharmony_ci{"rotlwi",	MME(21,31,0),	MMBME_MASK,  PPCCOM,	PPCVLE,		{RA, RS, SH}},
459462306a36Sopenharmony_ci{"clrlwi",	MME(21,31,0),	MSHME_MASK,  PPCCOM,	PPCVLE,		{RA, RS, MB}},
459562306a36Sopenharmony_ci{"rlwinm",	M(21,0),	M_MASK,	     PPCCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
459662306a36Sopenharmony_ci{"rlinm",	M(21,0),	M_MASK,	     PWRCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
459762306a36Sopenharmony_ci{"rotlwi.",	MME(21,31,1),	MMBME_MASK,  PPCCOM,	PPCVLE,		{RA, RS, SH}},
459862306a36Sopenharmony_ci{"clrlwi.",	MME(21,31,1),	MSHME_MASK,  PPCCOM,	PPCVLE,		{RA, RS, MB}},
459962306a36Sopenharmony_ci{"rlwinm.",	M(21,1),	M_MASK,	     PPCCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
460062306a36Sopenharmony_ci{"rlinm.",	M(21,1),	M_MASK,	     PWRCOM,	PPCVLE,		{RA, RS, SH, MBE, ME}},
460162306a36Sopenharmony_ci
460262306a36Sopenharmony_ci{"rlmi",	M(22,0),	M_MASK,	     M601,	PPCVLE,		{RA, RS, RB, MBE, ME}},
460362306a36Sopenharmony_ci{"rlmi.",	M(22,1),	M_MASK,	     M601,	PPCVLE,		{RA, RS, RB, MBE, ME}},
460462306a36Sopenharmony_ci
460562306a36Sopenharmony_ci{"rotlw",	MME(23,31,0),	MMBME_MASK,  PPCCOM,	PPCVLE,		{RA, RS, RB}},
460662306a36Sopenharmony_ci{"rlwnm",	M(23,0),	M_MASK,	     PPCCOM,	PPCVLE,		{RA, RS, RB, MBE, ME}},
460762306a36Sopenharmony_ci{"rlnm",	M(23,0),	M_MASK,	     PWRCOM,	PPCVLE,		{RA, RS, RB, MBE, ME}},
460862306a36Sopenharmony_ci{"rotlw.",	MME(23,31,1),	MMBME_MASK,  PPCCOM,	PPCVLE,		{RA, RS, RB}},
460962306a36Sopenharmony_ci{"rlwnm.",	M(23,1),	M_MASK,	     PPCCOM,	PPCVLE,		{RA, RS, RB, MBE, ME}},
461062306a36Sopenharmony_ci{"rlnm.",	M(23,1),	M_MASK,	     PWRCOM,	PPCVLE,		{RA, RS, RB, MBE, ME}},
461162306a36Sopenharmony_ci
461262306a36Sopenharmony_ci{"nop",		OP(24),		0xffffffff,  PPCCOM,	PPCVLE,		{0}},
461362306a36Sopenharmony_ci{"ori",		OP(24),		OP_MASK,     PPCCOM,	PPCVLE,		{RA, RS, UI}},
461462306a36Sopenharmony_ci{"oril",	OP(24),		OP_MASK,     PWRCOM,	PPCVLE,		{RA, RS, UI}},
461562306a36Sopenharmony_ci
461662306a36Sopenharmony_ci{"oris",	OP(25),		OP_MASK,     PPCCOM,	PPCVLE,		{RA, RS, UI}},
461762306a36Sopenharmony_ci{"oriu",	OP(25),		OP_MASK,     PWRCOM,	PPCVLE,		{RA, RS, UI}},
461862306a36Sopenharmony_ci
461962306a36Sopenharmony_ci{"xnop",	OP(26),		0xffffffff,  PPCCOM,	PPCVLE,		{0}},
462062306a36Sopenharmony_ci{"xori",	OP(26),		OP_MASK,     PPCCOM,	PPCVLE,		{RA, RS, UI}},
462162306a36Sopenharmony_ci{"xoril",	OP(26),		OP_MASK,     PWRCOM,	PPCVLE,		{RA, RS, UI}},
462262306a36Sopenharmony_ci
462362306a36Sopenharmony_ci{"xoris",	OP(27),		OP_MASK,     PPCCOM,	PPCVLE,		{RA, RS, UI}},
462462306a36Sopenharmony_ci{"xoriu",	OP(27),		OP_MASK,     PWRCOM,	PPCVLE,		{RA, RS, UI}},
462562306a36Sopenharmony_ci
462662306a36Sopenharmony_ci{"andi.",	OP(28),		OP_MASK,     PPCCOM,	PPCVLE,		{RA, RS, UI}},
462762306a36Sopenharmony_ci{"andil.",	OP(28),		OP_MASK,     PWRCOM,	PPCVLE,		{RA, RS, UI}},
462862306a36Sopenharmony_ci
462962306a36Sopenharmony_ci{"andis.",	OP(29),		OP_MASK,     PPCCOM,	PPCVLE,		{RA, RS, UI}},
463062306a36Sopenharmony_ci{"andiu.",	OP(29),		OP_MASK,     PWRCOM,	PPCVLE,		{RA, RS, UI}},
463162306a36Sopenharmony_ci
463262306a36Sopenharmony_ci{"rotldi",	MD(30,0,0),	MDMB_MASK,   PPC64,	PPCVLE,		{RA, RS, SH6}},
463362306a36Sopenharmony_ci{"clrldi",	MD(30,0,0),	MDSH_MASK,   PPC64,	PPCVLE,		{RA, RS, MB6}},
463462306a36Sopenharmony_ci{"rldicl",	MD(30,0,0),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, MB6}},
463562306a36Sopenharmony_ci{"rotldi.",	MD(30,0,1),	MDMB_MASK,   PPC64,	PPCVLE,		{RA, RS, SH6}},
463662306a36Sopenharmony_ci{"clrldi.",	MD(30,0,1),	MDSH_MASK,   PPC64,	PPCVLE,		{RA, RS, MB6}},
463762306a36Sopenharmony_ci{"rldicl.",	MD(30,0,1),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, MB6}},
463862306a36Sopenharmony_ci
463962306a36Sopenharmony_ci{"rldicr",	MD(30,1,0),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, ME6}},
464062306a36Sopenharmony_ci{"rldicr.",	MD(30,1,1),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, ME6}},
464162306a36Sopenharmony_ci
464262306a36Sopenharmony_ci{"rldic",	MD(30,2,0),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, MB6}},
464362306a36Sopenharmony_ci{"rldic.",	MD(30,2,1),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, MB6}},
464462306a36Sopenharmony_ci
464562306a36Sopenharmony_ci{"rldimi",	MD(30,3,0),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, MB6}},
464662306a36Sopenharmony_ci{"rldimi.",	MD(30,3,1),	MD_MASK,     PPC64,	PPCVLE,		{RA, RS, SH6, MB6}},
464762306a36Sopenharmony_ci
464862306a36Sopenharmony_ci{"rotld",	MDS(30,8,0),	MDSMB_MASK,  PPC64,	PPCVLE,		{RA, RS, RB}},
464962306a36Sopenharmony_ci{"rldcl",	MDS(30,8,0),	MDS_MASK,    PPC64,	PPCVLE,		{RA, RS, RB, MB6}},
465062306a36Sopenharmony_ci{"rotld.",	MDS(30,8,1),	MDSMB_MASK,  PPC64,	PPCVLE,		{RA, RS, RB}},
465162306a36Sopenharmony_ci{"rldcl.",	MDS(30,8,1),	MDS_MASK,    PPC64,	PPCVLE,		{RA, RS, RB, MB6}},
465262306a36Sopenharmony_ci
465362306a36Sopenharmony_ci{"rldcr",	MDS(30,9,0),	MDS_MASK,    PPC64,	PPCVLE,		{RA, RS, RB, ME6}},
465462306a36Sopenharmony_ci{"rldcr.",	MDS(30,9,1),	MDS_MASK,    PPC64,	PPCVLE,		{RA, RS, RB, ME6}},
465562306a36Sopenharmony_ci
465662306a36Sopenharmony_ci{"cmpw",	XOPL(31,0,0),	XCMPL_MASK,  PPCCOM,	0,		{OBF, RA, RB}},
465762306a36Sopenharmony_ci{"cmpd",	XOPL(31,0,1),	XCMPL_MASK,  PPC64,	0,		{OBF, RA, RB}},
465862306a36Sopenharmony_ci{"cmp",		X(31,0),	XCMP_MASK,   PPC,	0,		{BF, L32OPT, RA, RB}},
465962306a36Sopenharmony_ci{"cmp",		X(31,0),	XCMPL_MASK,  PWRCOM,	PPC,		{BF, RA, RB}},
466062306a36Sopenharmony_ci
466162306a36Sopenharmony_ci{"twlgt",	XTO(31,4,TOLGT), XTO_MASK,   PPCCOM,	0,		{RA, RB}},
466262306a36Sopenharmony_ci{"tlgt",	XTO(31,4,TOLGT), XTO_MASK,   PWRCOM,	0,		{RA, RB}},
466362306a36Sopenharmony_ci{"twllt",	XTO(31,4,TOLLT), XTO_MASK,   PPCCOM,	0,		{RA, RB}},
466462306a36Sopenharmony_ci{"tllt",	XTO(31,4,TOLLT), XTO_MASK,   PWRCOM,	0,		{RA, RB}},
466562306a36Sopenharmony_ci{"tweq",	XTO(31,4,TOEQ),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
466662306a36Sopenharmony_ci{"teq",		XTO(31,4,TOEQ),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
466762306a36Sopenharmony_ci{"twlge",	XTO(31,4,TOLGE), XTO_MASK,   PPCCOM,	0,		{RA, RB}},
466862306a36Sopenharmony_ci{"tlge",	XTO(31,4,TOLGE), XTO_MASK,   PWRCOM,	0,		{RA, RB}},
466962306a36Sopenharmony_ci{"twlnl",	XTO(31,4,TOLNL), XTO_MASK,   PPCCOM,	0,		{RA, RB}},
467062306a36Sopenharmony_ci{"tlnl",	XTO(31,4,TOLNL), XTO_MASK,   PWRCOM,	0,		{RA, RB}},
467162306a36Sopenharmony_ci{"twlle",	XTO(31,4,TOLLE), XTO_MASK,   PPCCOM,	0,		{RA, RB}},
467262306a36Sopenharmony_ci{"tlle",	XTO(31,4,TOLLE), XTO_MASK,   PWRCOM,	0,		{RA, RB}},
467362306a36Sopenharmony_ci{"twlng",	XTO(31,4,TOLNG), XTO_MASK,   PPCCOM,	0,		{RA, RB}},
467462306a36Sopenharmony_ci{"tlng",	XTO(31,4,TOLNG), XTO_MASK,   PWRCOM,	0,		{RA, RB}},
467562306a36Sopenharmony_ci{"twgt",	XTO(31,4,TOGT),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
467662306a36Sopenharmony_ci{"tgt",		XTO(31,4,TOGT),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
467762306a36Sopenharmony_ci{"twge",	XTO(31,4,TOGE),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
467862306a36Sopenharmony_ci{"tge",		XTO(31,4,TOGE),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
467962306a36Sopenharmony_ci{"twnl",	XTO(31,4,TONL),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
468062306a36Sopenharmony_ci{"tnl",		XTO(31,4,TONL),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
468162306a36Sopenharmony_ci{"twlt",	XTO(31,4,TOLT),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
468262306a36Sopenharmony_ci{"tlt",		XTO(31,4,TOLT),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
468362306a36Sopenharmony_ci{"twle",	XTO(31,4,TOLE),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
468462306a36Sopenharmony_ci{"tle",		XTO(31,4,TOLE),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
468562306a36Sopenharmony_ci{"twng",	XTO(31,4,TONG),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
468662306a36Sopenharmony_ci{"tng",		XTO(31,4,TONG),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
468762306a36Sopenharmony_ci{"twne",	XTO(31,4,TONE),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
468862306a36Sopenharmony_ci{"tne",		XTO(31,4,TONE),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
468962306a36Sopenharmony_ci{"trap",	XTO(31,4,TOU),	 0xffffffff, PPCCOM,	0,		{0}},
469062306a36Sopenharmony_ci{"twu",		XTO(31,4,TOU),	 XTO_MASK,   PPCCOM,	0,		{RA, RB}},
469162306a36Sopenharmony_ci{"tu",		XTO(31,4,TOU),	 XTO_MASK,   PWRCOM,	0,		{RA, RB}},
469262306a36Sopenharmony_ci{"tw",		X(31,4),	 X_MASK,     PPCCOM,	0,		{TO, RA, RB}},
469362306a36Sopenharmony_ci{"t",		X(31,4),	 X_MASK,     PWRCOM,	0,		{TO, RA, RB}},
469462306a36Sopenharmony_ci
469562306a36Sopenharmony_ci{"lvsl",	X(31,6),	X_MASK,	     PPCVEC,	0,		{VD, RA0, RB}},
469662306a36Sopenharmony_ci{"lvebx",	X(31,7),	X_MASK,	     PPCVEC,	0,		{VD, RA0, RB}},
469762306a36Sopenharmony_ci{"lbfcmx",	APU(31,7,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
469862306a36Sopenharmony_ci
469962306a36Sopenharmony_ci{"subfc",	XO(31,8,0,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
470062306a36Sopenharmony_ci{"sf",		XO(31,8,0,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
470162306a36Sopenharmony_ci{"subc",	XO(31,8,0,0),	XO_MASK,     PPCCOM,	0,		{RT, RB, RA}},
470262306a36Sopenharmony_ci{"subfc.",	XO(31,8,0,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
470362306a36Sopenharmony_ci{"sf.",		XO(31,8,0,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
470462306a36Sopenharmony_ci{"subc.",	XO(31,8,0,1),	XO_MASK,     PPCCOM,	0,		{RT, RB, RA}},
470562306a36Sopenharmony_ci
470662306a36Sopenharmony_ci{"mulhdu",	XO(31,9,0,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
470762306a36Sopenharmony_ci{"mulhdu.",	XO(31,9,0,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
470862306a36Sopenharmony_ci
470962306a36Sopenharmony_ci{"addc",	XO(31,10,0,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
471062306a36Sopenharmony_ci{"a",		XO(31,10,0,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
471162306a36Sopenharmony_ci{"addc.",	XO(31,10,0,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
471262306a36Sopenharmony_ci{"a.",		XO(31,10,0,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
471362306a36Sopenharmony_ci
471462306a36Sopenharmony_ci{"mulhwu",	XO(31,11,0,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
471562306a36Sopenharmony_ci{"mulhwu.",	XO(31,11,0,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
471662306a36Sopenharmony_ci
471762306a36Sopenharmony_ci{"lxsiwzx",	X(31,12),	XX1_MASK,    PPCVSX2,	0,		{XT6, RA0, RB}},
471862306a36Sopenharmony_ci
471962306a36Sopenharmony_ci{"isellt",	X(31,15),	X_MASK,	     PPCISEL,	0,		{RT, RA0, RB}},
472062306a36Sopenharmony_ci
472162306a36Sopenharmony_ci{"tlbilxlpid",	XTO(31,18,0),	XTO_MASK, E500MC|PPCA2,	0,		{0}},
472262306a36Sopenharmony_ci{"tlbilxpid",	XTO(31,18,1),	XTO_MASK, E500MC|PPCA2,	0,		{0}},
472362306a36Sopenharmony_ci{"tlbilxva",	XTO(31,18,3),	XTO_MASK, E500MC|PPCA2,	0,		{RA0, RB}},
472462306a36Sopenharmony_ci{"tlbilx",	X(31,18),	X_MASK,	  E500MC|PPCA2,	0,		{T, RA0, RB}},
472562306a36Sopenharmony_ci
472662306a36Sopenharmony_ci{"mfcr",	XFXM(31,19,0,0), XFXFXM_MASK, COM,	0,		{RT, FXM4}},
472762306a36Sopenharmony_ci{"mfocrf",	XFXM(31,19,0,1), XFXFXM_MASK, COM,	0,		{RT, FXM}},
472862306a36Sopenharmony_ci
472962306a36Sopenharmony_ci{"lwarx",	X(31,20),	XEH_MASK,    PPC,	0,		{RT, RA0, RB, EH}},
473062306a36Sopenharmony_ci
473162306a36Sopenharmony_ci{"ldx",		X(31,21),	X_MASK,	     PPC64,	0,		{RT, RA0, RB}},
473262306a36Sopenharmony_ci
473362306a36Sopenharmony_ci{"icbt",	X(31,22),  X_MASK, BOOKE|PPCE300|PPCA2|PPC476, 0,	{CT, RA0, RB}},
473462306a36Sopenharmony_ci
473562306a36Sopenharmony_ci{"lwzx",	X(31,23),	X_MASK,	     PPCCOM,	0,		{RT, RA0, RB}},
473662306a36Sopenharmony_ci{"lx",		X(31,23),	X_MASK,	     PWRCOM,	0,		{RT, RA, RB}},
473762306a36Sopenharmony_ci
473862306a36Sopenharmony_ci{"slw",		XRC(31,24,0),	X_MASK,	     PPCCOM,	0,		{RA, RS, RB}},
473962306a36Sopenharmony_ci{"sl",		XRC(31,24,0),	X_MASK,	     PWRCOM,	0,		{RA, RS, RB}},
474062306a36Sopenharmony_ci{"slw.",	XRC(31,24,1),	X_MASK,	     PPCCOM,	0,		{RA, RS, RB}},
474162306a36Sopenharmony_ci{"sl.",		XRC(31,24,1),	X_MASK,	     PWRCOM,	0,		{RA, RS, RB}},
474262306a36Sopenharmony_ci
474362306a36Sopenharmony_ci{"cntlzw",	XRC(31,26,0),	XRB_MASK,    PPCCOM,	0,		{RA, RS}},
474462306a36Sopenharmony_ci{"cntlz",	XRC(31,26,0),	XRB_MASK,    PWRCOM,	0,		{RA, RS}},
474562306a36Sopenharmony_ci{"cntlzw.",	XRC(31,26,1),	XRB_MASK,    PPCCOM,	0,		{RA, RS}},
474662306a36Sopenharmony_ci{"cntlz.",	XRC(31,26,1),	XRB_MASK,    PWRCOM,	0,		{RA, RS}},
474762306a36Sopenharmony_ci
474862306a36Sopenharmony_ci{"sld",		XRC(31,27,0),	X_MASK,	     PPC64,	0,		{RA, RS, RB}},
474962306a36Sopenharmony_ci{"sld.",	XRC(31,27,1),	X_MASK,	     PPC64,	0,		{RA, RS, RB}},
475062306a36Sopenharmony_ci
475162306a36Sopenharmony_ci{"and",		XRC(31,28,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
475262306a36Sopenharmony_ci{"and.",	XRC(31,28,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
475362306a36Sopenharmony_ci
475462306a36Sopenharmony_ci{"maskg",	XRC(31,29,0),	X_MASK,	     M601,	PPCA2,		{RA, RS, RB}},
475562306a36Sopenharmony_ci{"maskg.",	XRC(31,29,1),	X_MASK,	     M601,	PPCA2,		{RA, RS, RB}},
475662306a36Sopenharmony_ci
475762306a36Sopenharmony_ci{"ldepx",	X(31,29),	X_MASK,	  E500MC|PPCA2, 0,		{RT, RA0, RB}},
475862306a36Sopenharmony_ci
475962306a36Sopenharmony_ci{"waitasec",	X(31,30),      XRTRARB_MASK, POWER8,	POWER9,		{0}},
476062306a36Sopenharmony_ci{"wait",	X(31,30),	XWC_MASK,    POWER9,	0,		{WC}},
476162306a36Sopenharmony_ci
476262306a36Sopenharmony_ci{"lwepx",	X(31,31),	X_MASK,	  E500MC|PPCA2, 0,		{RT, RA0, RB}},
476362306a36Sopenharmony_ci
476462306a36Sopenharmony_ci{"cmplw",	XOPL(31,32,0),	XCMPL_MASK,  PPCCOM,	0,		{OBF, RA, RB}},
476562306a36Sopenharmony_ci{"cmpld",	XOPL(31,32,1),	XCMPL_MASK,  PPC64,	0,		{OBF, RA, RB}},
476662306a36Sopenharmony_ci{"cmpl",	X(31,32),	XCMP_MASK,   PPC,	0,		{BF, L32OPT, RA, RB}},
476762306a36Sopenharmony_ci{"cmpl",	X(31,32),	XCMPL_MASK,  PWRCOM,	PPC,		{BF, RA, RB}},
476862306a36Sopenharmony_ci
476962306a36Sopenharmony_ci{"lvsr",	X(31,38),	X_MASK,	     PPCVEC,	0,		{VD, RA0, RB}},
477062306a36Sopenharmony_ci{"lvehx",	X(31,39),	X_MASK,	     PPCVEC,	0,		{VD, RA0, RB}},
477162306a36Sopenharmony_ci{"lhfcmx",	APU(31,39,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
477262306a36Sopenharmony_ci
477362306a36Sopenharmony_ci{"mviwsplt",	X(31,46),	X_MASK,	     PPCVEC2,	0,		{VD, RA, RB}},
477462306a36Sopenharmony_ci
477562306a36Sopenharmony_ci{"iselgt",	X(31,47),	X_MASK,	     PPCISEL,	0,		{RT, RA0, RB}},
477662306a36Sopenharmony_ci
477762306a36Sopenharmony_ci{"lvewx",	X(31,71),	X_MASK,	     PPCVEC,	0,		{VD, RA0, RB}},
477862306a36Sopenharmony_ci
477962306a36Sopenharmony_ci{"addg6s",	XO(31,74,0,0),	XO_MASK,     POWER6,	0,		{RT, RA, RB}},
478062306a36Sopenharmony_ci
478162306a36Sopenharmony_ci{"lxsiwax",	X(31,76),	XX1_MASK,    PPCVSX2,	0,		{XT6, RA0, RB}},
478262306a36Sopenharmony_ci
478362306a36Sopenharmony_ci{"iseleq",	X(31,79),	X_MASK,	     PPCISEL,	0,		{RT, RA0, RB}},
478462306a36Sopenharmony_ci
478562306a36Sopenharmony_ci{"isel",	XISEL(31,15), XISEL_MASK, PPCISEL|TITAN, 0,		{RT, RA0, RB, CRB}},
478662306a36Sopenharmony_ci
478762306a36Sopenharmony_ci{"subf",	XO(31,40,0,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
478862306a36Sopenharmony_ci{"sub",		XO(31,40,0,0),	XO_MASK,     PPC,	0,		{RT, RB, RA}},
478962306a36Sopenharmony_ci{"subf.",	XO(31,40,0,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
479062306a36Sopenharmony_ci{"sub.",	XO(31,40,0,1),	XO_MASK,     PPC,	0,		{RT, RB, RA}},
479162306a36Sopenharmony_ci
479262306a36Sopenharmony_ci{"mfvsrd",	X(31,51),	XX1RB_MASK,   PPCVSX2,	0,		{RA, XS6}},
479362306a36Sopenharmony_ci{"mffprd",	X(31,51),	XX1RB_MASK|1, PPCVSX2,	0,		{RA, FRS}},
479462306a36Sopenharmony_ci{"mfvrd",	X(31,51)|1,	XX1RB_MASK|1, PPCVSX2,	0,		{RA, VS}},
479562306a36Sopenharmony_ci{"eratilx",	X(31,51),	X_MASK,	     PPCA2,	0,		{ERAT_T, RA, RB}},
479662306a36Sopenharmony_ci
479762306a36Sopenharmony_ci{"lbarx",	X(31,52),	XEH_MASK, POWER8|E6500, 0,		{RT, RA0, RB, EH}},
479862306a36Sopenharmony_ci
479962306a36Sopenharmony_ci{"ldux",	X(31,53),	X_MASK,	     PPC64,	0,		{RT, RAL, RB}},
480062306a36Sopenharmony_ci
480162306a36Sopenharmony_ci{"dcbst",	X(31,54),	XRT_MASK,    PPC,	0,		{RA0, RB}},
480262306a36Sopenharmony_ci
480362306a36Sopenharmony_ci{"lwzux",	X(31,55),	X_MASK,	     PPCCOM,	0,		{RT, RAL, RB}},
480462306a36Sopenharmony_ci{"lux",		X(31,55),	X_MASK,	     PWRCOM,	0,		{RT, RA, RB}},
480562306a36Sopenharmony_ci
480662306a36Sopenharmony_ci{"cntlzd",	XRC(31,58,0),	XRB_MASK,    PPC64,	0,		{RA, RS}},
480762306a36Sopenharmony_ci{"cntlzd.",	XRC(31,58,1),	XRB_MASK,    PPC64,	0,		{RA, RS}},
480862306a36Sopenharmony_ci
480962306a36Sopenharmony_ci{"andc",	XRC(31,60,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
481062306a36Sopenharmony_ci{"andc.",	XRC(31,60,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
481162306a36Sopenharmony_ci
481262306a36Sopenharmony_ci{"waitrsv",	X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, 0,		{0}},
481362306a36Sopenharmony_ci{"waitimpl",	X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, 0,		{0}},
481462306a36Sopenharmony_ci{"wait",	X(31,62),	XWC_MASK,    E500MC|PPCA2, 0,		{WC}},
481562306a36Sopenharmony_ci
481662306a36Sopenharmony_ci{"dcbstep",	XRT(31,63,0),	XRT_MASK,    E500MC|PPCA2, 0,		{RA0, RB}},
481762306a36Sopenharmony_ci
481862306a36Sopenharmony_ci{"tdlgt",	XTO(31,68,TOLGT), XTO_MASK,  PPC64,	0,		{RA, RB}},
481962306a36Sopenharmony_ci{"tdllt",	XTO(31,68,TOLLT), XTO_MASK,  PPC64,	0,		{RA, RB}},
482062306a36Sopenharmony_ci{"tdeq",	XTO(31,68,TOEQ),  XTO_MASK,  PPC64,	0,		{RA, RB}},
482162306a36Sopenharmony_ci{"tdlge",	XTO(31,68,TOLGE), XTO_MASK,  PPC64,	0,		{RA, RB}},
482262306a36Sopenharmony_ci{"tdlnl",	XTO(31,68,TOLNL), XTO_MASK,  PPC64,	0,		{RA, RB}},
482362306a36Sopenharmony_ci{"tdlle",	XTO(31,68,TOLLE), XTO_MASK,  PPC64,	0,		{RA, RB}},
482462306a36Sopenharmony_ci{"tdlng",	XTO(31,68,TOLNG), XTO_MASK,  PPC64,	0,		{RA, RB}},
482562306a36Sopenharmony_ci{"tdgt",	XTO(31,68,TOGT),  XTO_MASK,  PPC64,	0,		{RA, RB}},
482662306a36Sopenharmony_ci{"tdge",	XTO(31,68,TOGE),  XTO_MASK,  PPC64,	0,		{RA, RB}},
482762306a36Sopenharmony_ci{"tdnl",	XTO(31,68,TONL),  XTO_MASK,  PPC64,	0,		{RA, RB}},
482862306a36Sopenharmony_ci{"tdlt",	XTO(31,68,TOLT),  XTO_MASK,  PPC64,	0,		{RA, RB}},
482962306a36Sopenharmony_ci{"tdle",	XTO(31,68,TOLE),  XTO_MASK,  PPC64,	0,		{RA, RB}},
483062306a36Sopenharmony_ci{"tdng",	XTO(31,68,TONG),  XTO_MASK,  PPC64,	0,		{RA, RB}},
483162306a36Sopenharmony_ci{"tdne",	XTO(31,68,TONE),  XTO_MASK,  PPC64,	0,		{RA, RB}},
483262306a36Sopenharmony_ci{"tdu",		XTO(31,68,TOU),	  XTO_MASK,  PPC64,	0,		{RA, RB}},
483362306a36Sopenharmony_ci{"td",		X(31,68),	X_MASK,	     PPC64,	0,		{TO, RA, RB}},
483462306a36Sopenharmony_ci
483562306a36Sopenharmony_ci{"lwfcmx",	APU(31,71,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
483662306a36Sopenharmony_ci{"mulhd",	XO(31,73,0,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
483762306a36Sopenharmony_ci{"mulhd.",	XO(31,73,0,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
483862306a36Sopenharmony_ci
483962306a36Sopenharmony_ci{"mulhw",	XO(31,75,0,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
484062306a36Sopenharmony_ci{"mulhw.",	XO(31,75,0,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
484162306a36Sopenharmony_ci
484262306a36Sopenharmony_ci{"dlmzb",	XRC(31,78,0), X_MASK, PPC403|PPC440|TITAN, 0,		{RA, RS, RB}},
484362306a36Sopenharmony_ci{"dlmzb.",	XRC(31,78,1), X_MASK, PPC403|PPC440|TITAN, 0,		{RA, RS, RB}},
484462306a36Sopenharmony_ci
484562306a36Sopenharmony_ci{"mtsrd",	X(31,82),  XRB_MASK|(1<<20), PPC64,	0,		{SR, RS}},
484662306a36Sopenharmony_ci
484762306a36Sopenharmony_ci{"mfmsr",	X(31,83),	XRARB_MASK,  COM,	0,		{RT}},
484862306a36Sopenharmony_ci
484962306a36Sopenharmony_ci{"ldarx",	X(31,84),	XEH_MASK,    PPC64,	0,		{RT, RA0, RB, EH}},
485062306a36Sopenharmony_ci
485162306a36Sopenharmony_ci{"dcbfl",	XOPL(31,86,1),	XRT_MASK,    POWER5,	PPC476,		{RA0, RB}},
485262306a36Sopenharmony_ci{"dcbf",	X(31,86),	XLRT_MASK,   PPC,	0,		{RA0, RB, L2OPT}},
485362306a36Sopenharmony_ci
485462306a36Sopenharmony_ci{"lbzx",	X(31,87),	X_MASK,	     COM,	0,		{RT, RA0, RB}},
485562306a36Sopenharmony_ci
485662306a36Sopenharmony_ci{"lbepx",	X(31,95),	X_MASK,	  E500MC|PPCA2, 0,		{RT, RA0, RB}},
485762306a36Sopenharmony_ci
485862306a36Sopenharmony_ci{"dni",		XRC(31,97,1),	XRB_MASK,    E6500,	0,		{DUI, DCTL}},
485962306a36Sopenharmony_ci
486062306a36Sopenharmony_ci{"lvx",		X(31,103),	X_MASK,	     PPCVEC,	0,		{VD, RA0, RB}},
486162306a36Sopenharmony_ci{"lqfcmx",	APU(31,103,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
486262306a36Sopenharmony_ci
486362306a36Sopenharmony_ci{"neg",		XO(31,104,0,0),	XORB_MASK,   COM,	0,		{RT, RA}},
486462306a36Sopenharmony_ci{"neg.",	XO(31,104,0,1),	XORB_MASK,   COM,	0,		{RT, RA}},
486562306a36Sopenharmony_ci
486662306a36Sopenharmony_ci{"mul",		XO(31,107,0,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
486762306a36Sopenharmony_ci{"mul.",	XO(31,107,0,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
486862306a36Sopenharmony_ci
486962306a36Sopenharmony_ci{"mvidsplt",	X(31,110),	X_MASK,	     PPCVEC2,	0,		{VD, RA, RB}},
487062306a36Sopenharmony_ci
487162306a36Sopenharmony_ci{"mtsrdin",	X(31,114),	XRA_MASK,    PPC64,	0,		{RS, RB}},
487262306a36Sopenharmony_ci
487362306a36Sopenharmony_ci{"mffprwz",	X(31,115),	XX1RB_MASK|1, PPCVSX2,	0,		{RA, FRS}},
487462306a36Sopenharmony_ci{"mfvrwz",	X(31,115)|1,	XX1RB_MASK|1, PPCVSX2,	0,		{RA, VS}},
487562306a36Sopenharmony_ci{"mfvsrwz",	X(31,115),	XX1RB_MASK,   PPCVSX2,	0,		{RA, XS6}},
487662306a36Sopenharmony_ci
487762306a36Sopenharmony_ci{"lharx",	X(31,116),	XEH_MASK, POWER8|E6500, 0,		{RT, RA0, RB, EH}},
487862306a36Sopenharmony_ci
487962306a36Sopenharmony_ci{"clf",		X(31,118),	XTO_MASK,    POWER,	0,		{RA, RB}},
488062306a36Sopenharmony_ci
488162306a36Sopenharmony_ci{"lbzux",	X(31,119),	X_MASK,	     COM,	0,		{RT, RAL, RB}},
488262306a36Sopenharmony_ci
488362306a36Sopenharmony_ci{"popcntb",	X(31,122),	XRB_MASK,    POWER5,	0,		{RA, RS}},
488462306a36Sopenharmony_ci
488562306a36Sopenharmony_ci{"not",		XRC(31,124,0),	X_MASK,	     COM,	0,		{RA, RS, RBS}},
488662306a36Sopenharmony_ci{"nor",		XRC(31,124,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
488762306a36Sopenharmony_ci{"not.",	XRC(31,124,1),	X_MASK,	     COM,	0,		{RA, RS, RBS}},
488862306a36Sopenharmony_ci{"nor.",	XRC(31,124,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
488962306a36Sopenharmony_ci
489062306a36Sopenharmony_ci{"dcbfep",	XRT(31,127,0),	XRT_MASK, E500MC|PPCA2, 0,		{RA0, RB}},
489162306a36Sopenharmony_ci
489262306a36Sopenharmony_ci{"setb",	X(31,128),	XRB_MASK|(3<<16), POWER9, 0,		{RT, BFA}},
489362306a36Sopenharmony_ci
489462306a36Sopenharmony_ci{"wrtee",	X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,	{RS}},
489562306a36Sopenharmony_ci
489662306a36Sopenharmony_ci{"dcbtstls",	X(31,134),	X_MASK, PPCCHLK|PPC476|TITAN, 0,	{CT, RA0, RB}},
489762306a36Sopenharmony_ci
489862306a36Sopenharmony_ci{"stvebx",	X(31,135),	X_MASK,	     PPCVEC,	0,		{VS, RA0, RB}},
489962306a36Sopenharmony_ci{"stbfcmx",	APU(31,135,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
490062306a36Sopenharmony_ci
490162306a36Sopenharmony_ci{"subfe",	XO(31,136,0,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
490262306a36Sopenharmony_ci{"sfe",		XO(31,136,0,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
490362306a36Sopenharmony_ci{"subfe.",	XO(31,136,0,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
490462306a36Sopenharmony_ci{"sfe.",	XO(31,136,0,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
490562306a36Sopenharmony_ci
490662306a36Sopenharmony_ci{"adde",	XO(31,138,0,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
490762306a36Sopenharmony_ci{"ae",		XO(31,138,0,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
490862306a36Sopenharmony_ci{"adde.",	XO(31,138,0,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
490962306a36Sopenharmony_ci{"ae.",		XO(31,138,0,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
491062306a36Sopenharmony_ci
491162306a36Sopenharmony_ci{"stxsiwx",	X(31,140),	XX1_MASK,    PPCVSX2,	0,		{XS6, RA0, RB}},
491262306a36Sopenharmony_ci
491362306a36Sopenharmony_ci{"msgsndp",	XRTRA(31,142,0,0), XRTRA_MASK, POWER8,	0,		{RB}},
491462306a36Sopenharmony_ci{"dcbtstlse",	X(31,142),	X_MASK,	     PPCCHLK,	E500MC,		{CT, RA0, RB}},
491562306a36Sopenharmony_ci
491662306a36Sopenharmony_ci{"mtcr",	XFXM(31,144,0xff,0), XRARB_MASK, COM,	0,		{RS}},
491762306a36Sopenharmony_ci{"mtcrf",	XFXM(31,144,0,0), XFXFXM_MASK, COM,	0,		{FXM, RS}},
491862306a36Sopenharmony_ci{"mtocrf",	XFXM(31,144,0,1), XFXFXM_MASK, COM,	0,		{FXM, RS}},
491962306a36Sopenharmony_ci
492062306a36Sopenharmony_ci{"mtmsr",	X(31,146),	XRLARB_MASK, COM,	0,		{RS, A_L}},
492162306a36Sopenharmony_ci
492262306a36Sopenharmony_ci{"mtsle",	X(31,147),    XRTLRARB_MASK, POWER8,	0,		{L}},
492362306a36Sopenharmony_ci
492462306a36Sopenharmony_ci{"eratsx",	XRC(31,147,0),	X_MASK,	     PPCA2,	0,		{RT, RA0, RB}},
492562306a36Sopenharmony_ci{"eratsx.",	XRC(31,147,1),	X_MASK,	     PPCA2,	0,		{RT, RA0, RB}},
492662306a36Sopenharmony_ci
492762306a36Sopenharmony_ci{"stdx",	X(31,149),	X_MASK,	     PPC64,	0,		{RS, RA0, RB}},
492862306a36Sopenharmony_ci
492962306a36Sopenharmony_ci{"stwcx.",	XRC(31,150,1),	X_MASK,	     PPC,	0,		{RS, RA0, RB}},
493062306a36Sopenharmony_ci
493162306a36Sopenharmony_ci{"stwx",	X(31,151),	X_MASK,	     PPCCOM,	0,		{RS, RA0, RB}},
493262306a36Sopenharmony_ci{"stx",		X(31,151),	X_MASK,	     PWRCOM,	0,		{RS, RA, RB}},
493362306a36Sopenharmony_ci
493462306a36Sopenharmony_ci{"slq",		XRC(31,152,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
493562306a36Sopenharmony_ci{"slq.",	XRC(31,152,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
493662306a36Sopenharmony_ci
493762306a36Sopenharmony_ci{"sle",		XRC(31,153,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
493862306a36Sopenharmony_ci{"sle.",	XRC(31,153,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
493962306a36Sopenharmony_ci
494062306a36Sopenharmony_ci{"prtyw",	X(31,154),    XRB_MASK, POWER6|PPCA2|PPC476, 0,		{RA, RS}},
494162306a36Sopenharmony_ci
494262306a36Sopenharmony_ci{"stdepx",	X(31,157),	X_MASK,	  E500MC|PPCA2, 0,		{RS, RA0, RB}},
494362306a36Sopenharmony_ci
494462306a36Sopenharmony_ci{"stwepx",	X(31,159),	X_MASK,	  E500MC|PPCA2, 0,		{RS, RA0, RB}},
494562306a36Sopenharmony_ci
494662306a36Sopenharmony_ci{"wrteei",	X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,	{E}},
494762306a36Sopenharmony_ci
494862306a36Sopenharmony_ci{"dcbtls",	X(31,166),	X_MASK,	 PPCCHLK|PPC476|TITAN, 0,	{CT, RA0, RB}},
494962306a36Sopenharmony_ci
495062306a36Sopenharmony_ci{"stvehx",	X(31,167),	X_MASK,	     PPCVEC,	0,		{VS, RA0, RB}},
495162306a36Sopenharmony_ci{"sthfcmx",	APU(31,167,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
495262306a36Sopenharmony_ci
495362306a36Sopenharmony_ci{"addex",	ZRC(31,170,0),	Z2_MASK,     POWER9,	0,		{RT, RA, RB, CY}},
495462306a36Sopenharmony_ci
495562306a36Sopenharmony_ci{"msgclrp",	XRTRA(31,174,0,0), XRTRA_MASK, POWER8,	0,		{RB}},
495662306a36Sopenharmony_ci{"dcbtlse",	X(31,174),	X_MASK,	     PPCCHLK,	E500MC,		{CT, RA0, RB}},
495762306a36Sopenharmony_ci
495862306a36Sopenharmony_ci{"mtmsrd",	X(31,178),	XRLARB_MASK, PPC64,	0,		{RS, A_L}},
495962306a36Sopenharmony_ci
496062306a36Sopenharmony_ci{"mtvsrd",	X(31,179),	XX1RB_MASK,   PPCVSX2,	0,		{XT6, RA}},
496162306a36Sopenharmony_ci{"mtfprd",	X(31,179),	XX1RB_MASK|1, PPCVSX2,	0,		{FRT, RA}},
496262306a36Sopenharmony_ci{"mtvrd",	X(31,179)|1,	XX1RB_MASK|1, PPCVSX2,	0,		{VD, RA}},
496362306a36Sopenharmony_ci{"eratre",	X(31,179),	X_MASK,	     PPCA2,	0,		{RT, RA, WS}},
496462306a36Sopenharmony_ci
496562306a36Sopenharmony_ci{"stdux",	X(31,181),	X_MASK,	     PPC64,	0,		{RS, RAS, RB}},
496662306a36Sopenharmony_ci
496762306a36Sopenharmony_ci{"stqcx.",	XRC(31,182,1),	X_MASK,	     POWER8,	0,		{RSQ, RA0, RB}},
496862306a36Sopenharmony_ci{"wchkall",	X(31,182),	X_MASK,	     PPCA2,	0,		{OBF}},
496962306a36Sopenharmony_ci
497062306a36Sopenharmony_ci{"stwux",	X(31,183),	X_MASK,	     PPCCOM,	0,		{RS, RAS, RB}},
497162306a36Sopenharmony_ci{"stux",	X(31,183),	X_MASK,	     PWRCOM,	0,		{RS, RA0, RB}},
497262306a36Sopenharmony_ci
497362306a36Sopenharmony_ci{"sliq",	XRC(31,184,0),	X_MASK,	     M601,	0,		{RA, RS, SH}},
497462306a36Sopenharmony_ci{"sliq.",	XRC(31,184,1),	X_MASK,	     M601,	0,		{RA, RS, SH}},
497562306a36Sopenharmony_ci
497662306a36Sopenharmony_ci{"prtyd",	X(31,186),	XRB_MASK, POWER6|PPCA2,	0,		{RA, RS}},
497762306a36Sopenharmony_ci
497862306a36Sopenharmony_ci{"cmprb",	X(31,192),	XCMP_MASK,   POWER9,	0,		{BF, L, RA, RB}},
497962306a36Sopenharmony_ci
498062306a36Sopenharmony_ci{"icblq.",	XRC(31,198,1),	X_MASK,	     E6500,	0,		{CT, RA0, RB}},
498162306a36Sopenharmony_ci
498262306a36Sopenharmony_ci{"stvewx",	X(31,199),	X_MASK,	     PPCVEC,	0,		{VS, RA0, RB}},
498362306a36Sopenharmony_ci{"stwfcmx",	APU(31,199,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
498462306a36Sopenharmony_ci
498562306a36Sopenharmony_ci{"subfze",	XO(31,200,0,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
498662306a36Sopenharmony_ci{"sfze",	XO(31,200,0,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
498762306a36Sopenharmony_ci{"subfze.",	XO(31,200,0,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
498862306a36Sopenharmony_ci{"sfze.",	XO(31,200,0,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
498962306a36Sopenharmony_ci
499062306a36Sopenharmony_ci{"addze",	XO(31,202,0,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
499162306a36Sopenharmony_ci{"aze",		XO(31,202,0,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
499262306a36Sopenharmony_ci{"addze.",	XO(31,202,0,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
499362306a36Sopenharmony_ci{"aze.",	XO(31,202,0,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
499462306a36Sopenharmony_ci
499562306a36Sopenharmony_ci{"msgsnd",	XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0,	{RB}},
499662306a36Sopenharmony_ci
499762306a36Sopenharmony_ci{"mtsr",	X(31,210), XRB_MASK|(1<<20), COM,	NON32,		{SR, RS}},
499862306a36Sopenharmony_ci
499962306a36Sopenharmony_ci{"mtfprwa",	X(31,211),	XX1RB_MASK|1, PPCVSX2,	0,		{FRT, RA}},
500062306a36Sopenharmony_ci{"mtvrwa",	X(31,211)|1,	XX1RB_MASK|1, PPCVSX2,	0,		{VD, RA}},
500162306a36Sopenharmony_ci{"mtvsrwa",	X(31,211),	XX1RB_MASK,   PPCVSX2,	0,		{XT6, RA}},
500262306a36Sopenharmony_ci{"eratwe",	X(31,211),	X_MASK,	     PPCA2,	0,		{RS, RA, WS}},
500362306a36Sopenharmony_ci
500462306a36Sopenharmony_ci{"ldawx.",	XRC(31,212,1),	X_MASK,	     PPCA2,	0,		{RT, RA0, RB}},
500562306a36Sopenharmony_ci
500662306a36Sopenharmony_ci{"stdcx.",	XRC(31,214,1),	X_MASK,	     PPC64,	0,		{RS, RA0, RB}},
500762306a36Sopenharmony_ci
500862306a36Sopenharmony_ci{"stbx",	X(31,215),	X_MASK,	     COM,	0,		{RS, RA0, RB}},
500962306a36Sopenharmony_ci
501062306a36Sopenharmony_ci{"sllq",	XRC(31,216,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
501162306a36Sopenharmony_ci{"sllq.",	XRC(31,216,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
501262306a36Sopenharmony_ci
501362306a36Sopenharmony_ci{"sleq",	XRC(31,217,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
501462306a36Sopenharmony_ci{"sleq.",	XRC(31,217,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
501562306a36Sopenharmony_ci
501662306a36Sopenharmony_ci{"stbepx",	X(31,223),	X_MASK,	  E500MC|PPCA2, 0,		{RS, RA0, RB}},
501762306a36Sopenharmony_ci
501862306a36Sopenharmony_ci{"cmpeqb",	X(31,224),	XCMPL_MASK,  POWER9,	0,		{BF, RA, RB}},
501962306a36Sopenharmony_ci
502062306a36Sopenharmony_ci{"icblc",	X(31,230),	X_MASK,	PPCCHLK|PPC476|TITAN, 0,	{CT, RA0, RB}},
502162306a36Sopenharmony_ci
502262306a36Sopenharmony_ci{"stvx",	X(31,231),	X_MASK,	     PPCVEC,	0,		{VS, RA0, RB}},
502362306a36Sopenharmony_ci{"stqfcmx",	APU(31,231,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
502462306a36Sopenharmony_ci
502562306a36Sopenharmony_ci{"subfme",	XO(31,232,0,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
502662306a36Sopenharmony_ci{"sfme",	XO(31,232,0,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
502762306a36Sopenharmony_ci{"subfme.",	XO(31,232,0,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
502862306a36Sopenharmony_ci{"sfme.",	XO(31,232,0,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
502962306a36Sopenharmony_ci
503062306a36Sopenharmony_ci{"mulld",	XO(31,233,0,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
503162306a36Sopenharmony_ci{"mulld.",	XO(31,233,0,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
503262306a36Sopenharmony_ci
503362306a36Sopenharmony_ci{"addme",	XO(31,234,0,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
503462306a36Sopenharmony_ci{"ame",		XO(31,234,0,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
503562306a36Sopenharmony_ci{"addme.",	XO(31,234,0,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
503662306a36Sopenharmony_ci{"ame.",	XO(31,234,0,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
503762306a36Sopenharmony_ci
503862306a36Sopenharmony_ci{"mullw",	XO(31,235,0,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
503962306a36Sopenharmony_ci{"muls",	XO(31,235,0,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
504062306a36Sopenharmony_ci{"mullw.",	XO(31,235,0,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
504162306a36Sopenharmony_ci{"muls.",	XO(31,235,0,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
504262306a36Sopenharmony_ci
504362306a36Sopenharmony_ci{"icblce",	X(31,238),	X_MASK,	     PPCCHLK,	E500MC|PPCA2,	{CT, RA, RB}},
504462306a36Sopenharmony_ci{"msgclr",	XRTRA(31,238,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0,	{RB}},
504562306a36Sopenharmony_ci{"mtsrin",	X(31,242),	XRA_MASK,    PPC,	NON32,		{RS, RB}},
504662306a36Sopenharmony_ci{"mtsri",	X(31,242),	XRA_MASK,    POWER,	NON32,		{RS, RB}},
504762306a36Sopenharmony_ci
504862306a36Sopenharmony_ci{"mtfprwz",	X(31,243),	XX1RB_MASK|1, PPCVSX2,	0,		{FRT, RA}},
504962306a36Sopenharmony_ci{"mtvrwz",	X(31,243)|1,	XX1RB_MASK|1, PPCVSX2,	0,		{VD, RA}},
505062306a36Sopenharmony_ci{"mtvsrwz",	X(31,243),	XX1RB_MASK,   PPCVSX2,	0,		{XT6, RA}},
505162306a36Sopenharmony_ci
505262306a36Sopenharmony_ci{"dcbtstt",	XRT(31,246,0x10), XRT_MASK,  POWER7,	0,		{RA0, RB}},
505362306a36Sopenharmony_ci{"dcbtst",	X(31,246),	X_MASK,	     POWER4,	DCBT_EO,	{RA0, RB, CT}},
505462306a36Sopenharmony_ci{"dcbtst",	X(31,246),	X_MASK,	     DCBT_EO,	0,		{CT, RA0, RB}},
505562306a36Sopenharmony_ci{"dcbtst",	X(31,246),	X_MASK,	     PPC,	POWER4|DCBT_EO,	{RA0, RB}},
505662306a36Sopenharmony_ci
505762306a36Sopenharmony_ci{"stbux",	X(31,247),	X_MASK,	     COM,	0,		{RS, RAS, RB}},
505862306a36Sopenharmony_ci
505962306a36Sopenharmony_ci{"slliq",	XRC(31,248,0),	X_MASK,	     M601,	0,		{RA, RS, SH}},
506062306a36Sopenharmony_ci{"slliq.",	XRC(31,248,1),	X_MASK,	     M601,	0,		{RA, RS, SH}},
506162306a36Sopenharmony_ci
506262306a36Sopenharmony_ci{"bpermd",	X(31,252),	X_MASK,	  POWER7|PPCA2,	0,		{RA, RS, RB}},
506362306a36Sopenharmony_ci
506462306a36Sopenharmony_ci{"dcbtstep",	XRT(31,255,0),	X_MASK,	  E500MC|PPCA2, 0,		{RT, RA0, RB}},
506562306a36Sopenharmony_ci
506662306a36Sopenharmony_ci{"mfdcrx",	X(31,259),	X_MASK, BOOKE|PPCA2|PPC476, TITAN,	{RS, RA}},
506762306a36Sopenharmony_ci{"mfdcrx.",	XRC(31,259,1),	X_MASK,	     PPCA2,	0,		{RS, RA}},
506862306a36Sopenharmony_ci
506962306a36Sopenharmony_ci{"lvexbx",	X(31,261),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
507062306a36Sopenharmony_ci
507162306a36Sopenharmony_ci{"icbt",	X(31,262),	XRT_MASK,    PPC403,	0,		{RA, RB}},
507262306a36Sopenharmony_ci
507362306a36Sopenharmony_ci{"lvepxl",	X(31,263),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
507462306a36Sopenharmony_ci
507562306a36Sopenharmony_ci{"ldfcmx",	APU(31,263,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
507662306a36Sopenharmony_ci{"doz",		XO(31,264,0,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
507762306a36Sopenharmony_ci{"doz.",	XO(31,264,0,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
507862306a36Sopenharmony_ci
507962306a36Sopenharmony_ci{"modud",	X(31,265),	X_MASK,	     POWER9,	0,		{RT, RA, RB}},
508062306a36Sopenharmony_ci
508162306a36Sopenharmony_ci{"add",		XO(31,266,0,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
508262306a36Sopenharmony_ci{"cax",		XO(31,266,0,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
508362306a36Sopenharmony_ci{"add.",	XO(31,266,0,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
508462306a36Sopenharmony_ci{"cax.",	XO(31,266,0,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
508562306a36Sopenharmony_ci
508662306a36Sopenharmony_ci{"moduw",	X(31,267),	X_MASK,	     POWER9,	0,		{RT, RA, RB}},
508762306a36Sopenharmony_ci
508862306a36Sopenharmony_ci{"lxvx",	X(31,268),	XX1_MASK|1<<6, PPCVSX3,	0,		{XT6, RA0, RB}},
508962306a36Sopenharmony_ci{"lxvl",	X(31,269),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
509062306a36Sopenharmony_ci
509162306a36Sopenharmony_ci{"ehpriv",	X(31,270),	0xffffffff,  E500MC|PPCA2, 0,		{0}},
509262306a36Sopenharmony_ci
509362306a36Sopenharmony_ci{"tlbiel",	X(31,274),	X_MASK|1<<20,POWER9,	PPC476,		{RB, RSO, RIC, PRS, X_R}},
509462306a36Sopenharmony_ci{"tlbiel",	X(31,274),	XRTLRA_MASK, POWER4,	POWER9|PPC476,	{RB, LOPT}},
509562306a36Sopenharmony_ci
509662306a36Sopenharmony_ci{"mfapidi",	X(31,275),	X_MASK,	     BOOKE,	E500|TITAN,	{RT, RA}},
509762306a36Sopenharmony_ci
509862306a36Sopenharmony_ci{"lqarx",	X(31,276),	XEH_MASK,    POWER8,	0,		{RTQ, RAX, RBX, EH}},
509962306a36Sopenharmony_ci
510062306a36Sopenharmony_ci{"lscbx",	XRC(31,277,0),	X_MASK,	     M601,	0,		{RT, RA, RB}},
510162306a36Sopenharmony_ci{"lscbx.",	XRC(31,277,1),	X_MASK,	     M601,	0,		{RT, RA, RB}},
510262306a36Sopenharmony_ci
510362306a36Sopenharmony_ci{"dcbtt",	XRT(31,278,0x10), XRT_MASK,  POWER7,	0,		{RA0, RB}},
510462306a36Sopenharmony_ci{"dcbt",	X(31,278),	X_MASK,	     POWER4,	DCBT_EO,	{RA0, RB, CT}},
510562306a36Sopenharmony_ci{"dcbt",	X(31,278),	X_MASK,	     DCBT_EO,	0,		{CT, RA0, RB}},
510662306a36Sopenharmony_ci{"dcbt",	X(31,278),	X_MASK,	     PPC,	POWER4|DCBT_EO,	{RA0, RB}},
510762306a36Sopenharmony_ci
510862306a36Sopenharmony_ci{"lhzx",	X(31,279),	X_MASK,	     COM,	0,		{RT, RA0, RB}},
510962306a36Sopenharmony_ci
511062306a36Sopenharmony_ci{"cdtbcd",	X(31,282),	XRB_MASK,    POWER6,	0,		{RA, RS}},
511162306a36Sopenharmony_ci
511262306a36Sopenharmony_ci{"eqv",		XRC(31,284,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
511362306a36Sopenharmony_ci{"eqv.",	XRC(31,284,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
511462306a36Sopenharmony_ci
511562306a36Sopenharmony_ci{"lhepx",	X(31,287),	X_MASK,	  E500MC|PPCA2, 0,		{RT, RA0, RB}},
511662306a36Sopenharmony_ci
511762306a36Sopenharmony_ci{"mfdcrux",	X(31,291),	X_MASK,	     PPC464,	0,		{RS, RA}},
511862306a36Sopenharmony_ci
511962306a36Sopenharmony_ci{"lvexhx",	X(31,293),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
512062306a36Sopenharmony_ci{"lvepx",	X(31,295),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
512162306a36Sopenharmony_ci
512262306a36Sopenharmony_ci{"lxvll",	X(31,301),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
512362306a36Sopenharmony_ci
512462306a36Sopenharmony_ci{"mfbhrbe",	X(31,302),	X_MASK,	     POWER8,	0,		{RT, BHRBE}},
512562306a36Sopenharmony_ci
512662306a36Sopenharmony_ci{"tlbie",	X(31,306),	X_MASK|1<<20,POWER9,	TITAN,		{RB, RS, RIC, PRS, X_R}},
512762306a36Sopenharmony_ci{"tlbie",	X(31,306),	XRA_MASK,    POWER7,	POWER9|TITAN,	{RB, RS}},
512862306a36Sopenharmony_ci{"tlbie",	X(31,306),	XRTLRA_MASK, PPC,    E500|POWER7|TITAN,	{RB, LOPT}},
512962306a36Sopenharmony_ci{"tlbi",	X(31,306),	XRT_MASK,    POWER,	0,		{RA0, RB}},
513062306a36Sopenharmony_ci
513162306a36Sopenharmony_ci{"mfvsrld",	X(31,307),	XX1RB_MASK,  PPCVSX3,	0,		{RA, XS6}},
513262306a36Sopenharmony_ci
513362306a36Sopenharmony_ci{"ldmx",	X(31,309),	X_MASK,	     POWER9,	0,		{RT, RA0, RB}},
513462306a36Sopenharmony_ci
513562306a36Sopenharmony_ci{"eciwx",	X(31,310),	X_MASK,	     PPC,	E500|TITAN,	{RT, RA0, RB}},
513662306a36Sopenharmony_ci
513762306a36Sopenharmony_ci{"lhzux",	X(31,311),	X_MASK,	     COM,	0,		{RT, RAL, RB}},
513862306a36Sopenharmony_ci
513962306a36Sopenharmony_ci{"cbcdtd",	X(31,314),	XRB_MASK,    POWER6,	0,		{RA, RS}},
514062306a36Sopenharmony_ci
514162306a36Sopenharmony_ci{"xor",		XRC(31,316,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
514262306a36Sopenharmony_ci{"xor.",	XRC(31,316,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
514362306a36Sopenharmony_ci
514462306a36Sopenharmony_ci{"dcbtep",	XRT(31,319,0),	X_MASK,	  E500MC|PPCA2, 0,		{RT, RA0, RB}},
514562306a36Sopenharmony_ci
514662306a36Sopenharmony_ci{"mfexisr",	XSPR(31,323, 64), XSPR_MASK, PPC403,	0,		{RT}},
514762306a36Sopenharmony_ci{"mfexier",	XSPR(31,323, 66), XSPR_MASK, PPC403,	0,		{RT}},
514862306a36Sopenharmony_ci{"mfbr0",	XSPR(31,323,128), XSPR_MASK, PPC403,	0,		{RT}},
514962306a36Sopenharmony_ci{"mfbr1",	XSPR(31,323,129), XSPR_MASK, PPC403,	0,		{RT}},
515062306a36Sopenharmony_ci{"mfbr2",	XSPR(31,323,130), XSPR_MASK, PPC403,	0,		{RT}},
515162306a36Sopenharmony_ci{"mfbr3",	XSPR(31,323,131), XSPR_MASK, PPC403,	0,		{RT}},
515262306a36Sopenharmony_ci{"mfbr4",	XSPR(31,323,132), XSPR_MASK, PPC403,	0,		{RT}},
515362306a36Sopenharmony_ci{"mfbr5",	XSPR(31,323,133), XSPR_MASK, PPC403,	0,		{RT}},
515462306a36Sopenharmony_ci{"mfbr6",	XSPR(31,323,134), XSPR_MASK, PPC403,	0,		{RT}},
515562306a36Sopenharmony_ci{"mfbr7",	XSPR(31,323,135), XSPR_MASK, PPC403,	0,		{RT}},
515662306a36Sopenharmony_ci{"mfbear",	XSPR(31,323,144), XSPR_MASK, PPC403,	0,		{RT}},
515762306a36Sopenharmony_ci{"mfbesr",	XSPR(31,323,145), XSPR_MASK, PPC403,	0,		{RT}},
515862306a36Sopenharmony_ci{"mfiocr",	XSPR(31,323,160), XSPR_MASK, PPC403,	0,		{RT}},
515962306a36Sopenharmony_ci{"mfdmacr0",	XSPR(31,323,192), XSPR_MASK, PPC403,	0,		{RT}},
516062306a36Sopenharmony_ci{"mfdmact0",	XSPR(31,323,193), XSPR_MASK, PPC403,	0,		{RT}},
516162306a36Sopenharmony_ci{"mfdmada0",	XSPR(31,323,194), XSPR_MASK, PPC403,	0,		{RT}},
516262306a36Sopenharmony_ci{"mfdmasa0",	XSPR(31,323,195), XSPR_MASK, PPC403,	0,		{RT}},
516362306a36Sopenharmony_ci{"mfdmacc0",	XSPR(31,323,196), XSPR_MASK, PPC403,	0,		{RT}},
516462306a36Sopenharmony_ci{"mfdmacr1",	XSPR(31,323,200), XSPR_MASK, PPC403,	0,		{RT}},
516562306a36Sopenharmony_ci{"mfdmact1",	XSPR(31,323,201), XSPR_MASK, PPC403,	0,		{RT}},
516662306a36Sopenharmony_ci{"mfdmada1",	XSPR(31,323,202), XSPR_MASK, PPC403,	0,		{RT}},
516762306a36Sopenharmony_ci{"mfdmasa1",	XSPR(31,323,203), XSPR_MASK, PPC403,	0,		{RT}},
516862306a36Sopenharmony_ci{"mfdmacc1",	XSPR(31,323,204), XSPR_MASK, PPC403,	0,		{RT}},
516962306a36Sopenharmony_ci{"mfdmacr2",	XSPR(31,323,208), XSPR_MASK, PPC403,	0,		{RT}},
517062306a36Sopenharmony_ci{"mfdmact2",	XSPR(31,323,209), XSPR_MASK, PPC403,	0,		{RT}},
517162306a36Sopenharmony_ci{"mfdmada2",	XSPR(31,323,210), XSPR_MASK, PPC403,	0,		{RT}},
517262306a36Sopenharmony_ci{"mfdmasa2",	XSPR(31,323,211), XSPR_MASK, PPC403,	0,		{RT}},
517362306a36Sopenharmony_ci{"mfdmacc2",	XSPR(31,323,212), XSPR_MASK, PPC403,	0,		{RT}},
517462306a36Sopenharmony_ci{"mfdmacr3",	XSPR(31,323,216), XSPR_MASK, PPC403,	0,		{RT}},
517562306a36Sopenharmony_ci{"mfdmact3",	XSPR(31,323,217), XSPR_MASK, PPC403,	0,		{RT}},
517662306a36Sopenharmony_ci{"mfdmada3",	XSPR(31,323,218), XSPR_MASK, PPC403,	0,		{RT}},
517762306a36Sopenharmony_ci{"mfdmasa3",	XSPR(31,323,219), XSPR_MASK, PPC403,	0,		{RT}},
517862306a36Sopenharmony_ci{"mfdmacc3",	XSPR(31,323,220), XSPR_MASK, PPC403,	0,		{RT}},
517962306a36Sopenharmony_ci{"mfdmasr",	XSPR(31,323,224), XSPR_MASK, PPC403,	0,		{RT}},
518062306a36Sopenharmony_ci{"mfdcr",	X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {RT, SPR}},
518162306a36Sopenharmony_ci{"mfdcr.",	XRC(31,323,1),	X_MASK,	     PPCA2,	0,		{RT, SPR}},
518262306a36Sopenharmony_ci
518362306a36Sopenharmony_ci{"lvexwx",	X(31,325),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
518462306a36Sopenharmony_ci
518562306a36Sopenharmony_ci{"dcread",	X(31,326),	X_MASK,	  PPC476|TITAN,	0,		{RT, RA0, RB}},
518662306a36Sopenharmony_ci
518762306a36Sopenharmony_ci{"div",		XO(31,331,0,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
518862306a36Sopenharmony_ci{"div.",	XO(31,331,0,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
518962306a36Sopenharmony_ci
519062306a36Sopenharmony_ci{"lxvdsx",	X(31,332),	XX1_MASK,    PPCVSX,	0,		{XT6, RA0, RB}},
519162306a36Sopenharmony_ci
519262306a36Sopenharmony_ci{"mfpmr",	X(31,334),	X_MASK, PPCPMR|PPCE300, 0,		{RT, PMR}},
519362306a36Sopenharmony_ci{"mftmr",	X(31,366),	X_MASK,	PPCTMR|E6500,	0,		{RT, TMR}},
519462306a36Sopenharmony_ci
519562306a36Sopenharmony_ci{"slbsync",	X(31,338),	0xffffffff,  POWER9,	0,		{0}},
519662306a36Sopenharmony_ci
519762306a36Sopenharmony_ci{"mfmq",	XSPR(31,339,  0), XSPR_MASK, M601,	0,		{RT}},
519862306a36Sopenharmony_ci{"mfxer",	XSPR(31,339,  1), XSPR_MASK, COM,	0,		{RT}},
519962306a36Sopenharmony_ci{"mfrtcu",	XSPR(31,339,  4), XSPR_MASK, COM,	TITAN,		{RT}},
520062306a36Sopenharmony_ci{"mfrtcl",	XSPR(31,339,  5), XSPR_MASK, COM,	TITAN,		{RT}},
520162306a36Sopenharmony_ci{"mfdec",	XSPR(31,339,  6), XSPR_MASK, MFDEC1,	0,		{RT}},
520262306a36Sopenharmony_ci{"mflr",	XSPR(31,339,  8), XSPR_MASK, COM,	0,		{RT}},
520362306a36Sopenharmony_ci{"mfctr",	XSPR(31,339,  9), XSPR_MASK, COM,	0,		{RT}},
520462306a36Sopenharmony_ci{"mfdscr",	XSPR(31,339, 17), XSPR_MASK, POWER6,	0,		{RT}},
520562306a36Sopenharmony_ci{"mftid",	XSPR(31,339, 17), XSPR_MASK, POWER,	0,		{RT}},
520662306a36Sopenharmony_ci{"mfdsisr",	XSPR(31,339, 18), XSPR_MASK, COM,	TITAN,		{RT}},
520762306a36Sopenharmony_ci{"mfdar",	XSPR(31,339, 19), XSPR_MASK, COM,	TITAN,		{RT}},
520862306a36Sopenharmony_ci{"mfdec",	XSPR(31,339, 22), XSPR_MASK, MFDEC2,	MFDEC1,		{RT}},
520962306a36Sopenharmony_ci{"mfsdr0",	XSPR(31,339, 24), XSPR_MASK, POWER,	0,		{RT}},
521062306a36Sopenharmony_ci{"mfsdr1",	XSPR(31,339, 25), XSPR_MASK, COM,	TITAN,		{RT}},
521162306a36Sopenharmony_ci{"mfsrr0",	XSPR(31,339, 26), XSPR_MASK, COM,	0,		{RT}},
521262306a36Sopenharmony_ci{"mfsrr1",	XSPR(31,339, 27), XSPR_MASK, COM,	0,		{RT}},
521362306a36Sopenharmony_ci{"mfcfar",	XSPR(31,339, 28), XSPR_MASK, POWER6,	0,		{RT}},
521462306a36Sopenharmony_ci{"mfpid",	XSPR(31,339, 48), XSPR_MASK, BOOKE,	0,		{RT}},
521562306a36Sopenharmony_ci{"mfcsrr0",	XSPR(31,339, 58), XSPR_MASK, BOOKE,	0,		{RT}},
521662306a36Sopenharmony_ci{"mfcsrr1",	XSPR(31,339, 59), XSPR_MASK, BOOKE,	0,		{RT}},
521762306a36Sopenharmony_ci{"mfdear",	XSPR(31,339, 61), XSPR_MASK, BOOKE,	0,		{RT}},
521862306a36Sopenharmony_ci{"mfesr",	XSPR(31,339, 62), XSPR_MASK, BOOKE,	0,		{RT}},
521962306a36Sopenharmony_ci{"mfivpr",	XSPR(31,339, 63), XSPR_MASK, BOOKE,	0,		{RT}},
522062306a36Sopenharmony_ci{"mfctrl",	XSPR(31,339,136), XSPR_MASK, POWER4,	0,		{RT}},
522162306a36Sopenharmony_ci{"mfcmpa",	XSPR(31,339,144), XSPR_MASK, PPC860,	0,		{RT}},
522262306a36Sopenharmony_ci{"mfcmpb",	XSPR(31,339,145), XSPR_MASK, PPC860,	0,		{RT}},
522362306a36Sopenharmony_ci{"mfcmpc",	XSPR(31,339,146), XSPR_MASK, PPC860,	0,		{RT}},
522462306a36Sopenharmony_ci{"mfcmpd",	XSPR(31,339,147), XSPR_MASK, PPC860,	0,		{RT}},
522562306a36Sopenharmony_ci{"mficr",	XSPR(31,339,148), XSPR_MASK, PPC860,	0,		{RT}},
522662306a36Sopenharmony_ci{"mfder",	XSPR(31,339,149), XSPR_MASK, PPC860,	0,		{RT}},
522762306a36Sopenharmony_ci{"mfcounta",	XSPR(31,339,150), XSPR_MASK, PPC860,	0,		{RT}},
522862306a36Sopenharmony_ci{"mfcountb",	XSPR(31,339,151), XSPR_MASK, PPC860,	0,		{RT}},
522962306a36Sopenharmony_ci{"mfcmpe",	XSPR(31,339,152), XSPR_MASK, PPC860,	0,		{RT}},
523062306a36Sopenharmony_ci{"mfcmpf",	XSPR(31,339,153), XSPR_MASK, PPC860,	0,		{RT}},
523162306a36Sopenharmony_ci{"mfcmpg",	XSPR(31,339,154), XSPR_MASK, PPC860,	0,		{RT}},
523262306a36Sopenharmony_ci{"mfcmph",	XSPR(31,339,155), XSPR_MASK, PPC860,	0,		{RT}},
523362306a36Sopenharmony_ci{"mflctrl1",	XSPR(31,339,156), XSPR_MASK, PPC860,	0,		{RT}},
523462306a36Sopenharmony_ci{"mflctrl2",	XSPR(31,339,157), XSPR_MASK, PPC860,	0,		{RT}},
523562306a36Sopenharmony_ci{"mfictrl",	XSPR(31,339,158), XSPR_MASK, PPC860,	0,		{RT}},
523662306a36Sopenharmony_ci{"mfbar",	XSPR(31,339,159), XSPR_MASK, PPC860,	0,		{RT}},
523762306a36Sopenharmony_ci{"mfvrsave",	XSPR(31,339,256), XSPR_MASK, PPCVEC,	0,		{RT}},
523862306a36Sopenharmony_ci{"mfusprg0",	XSPR(31,339,256), XSPR_MASK, BOOKE,	0,		{RT}},
523962306a36Sopenharmony_ci{"mfsprg",	XSPR(31,339,256), XSPRG_MASK, PPC,	0,		{RT, SPRG}},
524062306a36Sopenharmony_ci{"mfsprg4",	XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, 0,		{RT}},
524162306a36Sopenharmony_ci{"mfsprg5",	XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, 0,		{RT}},
524262306a36Sopenharmony_ci{"mfsprg6",	XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, 0,		{RT}},
524362306a36Sopenharmony_ci{"mfsprg7",	XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, 0,		{RT}},
524462306a36Sopenharmony_ci{"mftbu",	XSPR(31,339,269), XSPR_MASK, POWER4|BOOKE, 0,		{RT}},
524562306a36Sopenharmony_ci{"mftb",	X(31,339),	  X_MASK,    POWER4|BOOKE, 0,		{RT, TBR}},
524662306a36Sopenharmony_ci{"mftbl",	XSPR(31,339,268), XSPR_MASK, POWER4|BOOKE, 0,		{RT}},
524762306a36Sopenharmony_ci{"mfsprg0",	XSPR(31,339,272), XSPR_MASK, PPC,	0,		{RT}},
524862306a36Sopenharmony_ci{"mfsprg1",	XSPR(31,339,273), XSPR_MASK, PPC,	0,		{RT}},
524962306a36Sopenharmony_ci{"mfsprg2",	XSPR(31,339,274), XSPR_MASK, PPC,	0,		{RT}},
525062306a36Sopenharmony_ci{"mfsprg3",	XSPR(31,339,275), XSPR_MASK, PPC,	0,		{RT}},
525162306a36Sopenharmony_ci{"mfasr",	XSPR(31,339,280), XSPR_MASK, PPC64,	0,		{RT}},
525262306a36Sopenharmony_ci{"mfear",	XSPR(31,339,282), XSPR_MASK, PPC,	TITAN,		{RT}},
525362306a36Sopenharmony_ci{"mfpir",	XSPR(31,339,286), XSPR_MASK, BOOKE,	0,		{RT}},
525462306a36Sopenharmony_ci{"mfpvr",	XSPR(31,339,287), XSPR_MASK, PPC,	0,		{RT}},
525562306a36Sopenharmony_ci{"mfdbsr",	XSPR(31,339,304), XSPR_MASK, BOOKE,	0,		{RT}},
525662306a36Sopenharmony_ci{"mfdbcr0",	XSPR(31,339,308), XSPR_MASK, BOOKE,	0,		{RT}},
525762306a36Sopenharmony_ci{"mfdbcr1",	XSPR(31,339,309), XSPR_MASK, BOOKE,	0,		{RT}},
525862306a36Sopenharmony_ci{"mfdbcr2",	XSPR(31,339,310), XSPR_MASK, BOOKE,	0,		{RT}},
525962306a36Sopenharmony_ci{"mfiac1",	XSPR(31,339,312), XSPR_MASK, BOOKE,	0,		{RT}},
526062306a36Sopenharmony_ci{"mfiac2",	XSPR(31,339,313), XSPR_MASK, BOOKE,	0,		{RT}},
526162306a36Sopenharmony_ci{"mfiac3",	XSPR(31,339,314), XSPR_MASK, BOOKE,	0,		{RT}},
526262306a36Sopenharmony_ci{"mfiac4",	XSPR(31,339,315), XSPR_MASK, BOOKE,	0,		{RT}},
526362306a36Sopenharmony_ci{"mfdac1",	XSPR(31,339,316), XSPR_MASK, BOOKE,	0,		{RT}},
526462306a36Sopenharmony_ci{"mfdac2",	XSPR(31,339,317), XSPR_MASK, BOOKE,	0,		{RT}},
526562306a36Sopenharmony_ci{"mfdvc1",	XSPR(31,339,318), XSPR_MASK, BOOKE,	0,		{RT}},
526662306a36Sopenharmony_ci{"mfdvc2",	XSPR(31,339,319), XSPR_MASK, BOOKE,	0,		{RT}},
526762306a36Sopenharmony_ci{"mftsr",	XSPR(31,339,336), XSPR_MASK, BOOKE,	0,		{RT}},
526862306a36Sopenharmony_ci{"mftcr",	XSPR(31,339,340), XSPR_MASK, BOOKE,	0,		{RT}},
526962306a36Sopenharmony_ci{"mfivor0",	XSPR(31,339,400), XSPR_MASK, BOOKE,	0,		{RT}},
527062306a36Sopenharmony_ci{"mfivor1",	XSPR(31,339,401), XSPR_MASK, BOOKE,	0,		{RT}},
527162306a36Sopenharmony_ci{"mfivor2",	XSPR(31,339,402), XSPR_MASK, BOOKE,	0,		{RT}},
527262306a36Sopenharmony_ci{"mfivor3",	XSPR(31,339,403), XSPR_MASK, BOOKE,	0,		{RT}},
527362306a36Sopenharmony_ci{"mfivor4",	XSPR(31,339,404), XSPR_MASK, BOOKE,	0,		{RT}},
527462306a36Sopenharmony_ci{"mfivor5",	XSPR(31,339,405), XSPR_MASK, BOOKE,	0,		{RT}},
527562306a36Sopenharmony_ci{"mfivor6",	XSPR(31,339,406), XSPR_MASK, BOOKE,	0,		{RT}},
527662306a36Sopenharmony_ci{"mfivor7",	XSPR(31,339,407), XSPR_MASK, BOOKE,	0,		{RT}},
527762306a36Sopenharmony_ci{"mfivor8",	XSPR(31,339,408), XSPR_MASK, BOOKE,	0,		{RT}},
527862306a36Sopenharmony_ci{"mfivor9",	XSPR(31,339,409), XSPR_MASK, BOOKE,	0,		{RT}},
527962306a36Sopenharmony_ci{"mfivor10",	XSPR(31,339,410), XSPR_MASK, BOOKE,	0,		{RT}},
528062306a36Sopenharmony_ci{"mfivor11",	XSPR(31,339,411), XSPR_MASK, BOOKE,	0,		{RT}},
528162306a36Sopenharmony_ci{"mfivor12",	XSPR(31,339,412), XSPR_MASK, BOOKE,	0,		{RT}},
528262306a36Sopenharmony_ci{"mfivor13",	XSPR(31,339,413), XSPR_MASK, BOOKE,	0,		{RT}},
528362306a36Sopenharmony_ci{"mfivor14",	XSPR(31,339,414), XSPR_MASK, BOOKE,	0,		{RT}},
528462306a36Sopenharmony_ci{"mfivor15",	XSPR(31,339,415), XSPR_MASK, BOOKE,	0,		{RT}},
528562306a36Sopenharmony_ci{"mfspefscr",	XSPR(31,339,512), XSPR_MASK, PPCSPE,	0,		{RT}},
528662306a36Sopenharmony_ci{"mfbbear",	XSPR(31,339,513), XSPR_MASK, PPCBRLK,	0,		{RT}},
528762306a36Sopenharmony_ci{"mfbbtar",	XSPR(31,339,514), XSPR_MASK, PPCBRLK,	0,		{RT}},
528862306a36Sopenharmony_ci{"mfivor32",	XSPR(31,339,528), XSPR_MASK, PPCSPE,	0,		{RT}},
528962306a36Sopenharmony_ci{"mfibatu",	XSPR(31,339,528), XSPRBAT_MASK, PPC,	TITAN,		{RT, SPRBAT}},
529062306a36Sopenharmony_ci{"mfivor33",	XSPR(31,339,529), XSPR_MASK, PPCSPE,	0,		{RT}},
529162306a36Sopenharmony_ci{"mfibatl",	XSPR(31,339,529), XSPRBAT_MASK, PPC,	TITAN,		{RT, SPRBAT}},
529262306a36Sopenharmony_ci{"mfivor34",	XSPR(31,339,530), XSPR_MASK, PPCSPE,	0,		{RT}},
529362306a36Sopenharmony_ci{"mfivor35",	XSPR(31,339,531), XSPR_MASK, PPCPMR,	0,		{RT}},
529462306a36Sopenharmony_ci{"mfdbatu",	XSPR(31,339,536), XSPRBAT_MASK, PPC,	TITAN,		{RT, SPRBAT}},
529562306a36Sopenharmony_ci{"mfdbatl",	XSPR(31,339,537), XSPRBAT_MASK, PPC,	TITAN,		{RT, SPRBAT}},
529662306a36Sopenharmony_ci{"mfic_cst",	XSPR(31,339,560), XSPR_MASK, PPC860,	0,		{RT}},
529762306a36Sopenharmony_ci{"mfic_adr",	XSPR(31,339,561), XSPR_MASK, PPC860,	0,		{RT}},
529862306a36Sopenharmony_ci{"mfic_dat",	XSPR(31,339,562), XSPR_MASK, PPC860,	0,		{RT}},
529962306a36Sopenharmony_ci{"mfdc_cst",	XSPR(31,339,568), XSPR_MASK, PPC860,	0,		{RT}},
530062306a36Sopenharmony_ci{"mfdc_adr",	XSPR(31,339,569), XSPR_MASK, PPC860,	0,		{RT}},
530162306a36Sopenharmony_ci{"mfdc_dat",	XSPR(31,339,570), XSPR_MASK, PPC860,	0,		{RT}},
530262306a36Sopenharmony_ci{"mfmcsrr0",	XSPR(31,339,570), XSPR_MASK, PPCRFMCI,	0,		{RT}},
530362306a36Sopenharmony_ci{"mfmcsrr1",	XSPR(31,339,571), XSPR_MASK, PPCRFMCI,	0,		{RT}},
530462306a36Sopenharmony_ci{"mfmcsr",	XSPR(31,339,572), XSPR_MASK, PPCRFMCI,	0,		{RT}},
530562306a36Sopenharmony_ci{"mfmcar",	XSPR(31,339,573), XSPR_MASK, PPCRFMCI,	TITAN,		{RT}},
530662306a36Sopenharmony_ci{"mfdpdr",	XSPR(31,339,630), XSPR_MASK, PPC860,	0,		{RT}},
530762306a36Sopenharmony_ci{"mfdpir",	XSPR(31,339,631), XSPR_MASK, PPC860,	0,		{RT}},
530862306a36Sopenharmony_ci{"mfimmr",	XSPR(31,339,638), XSPR_MASK, PPC860,	0,		{RT}},
530962306a36Sopenharmony_ci{"mfmi_ctr",	XSPR(31,339,784), XSPR_MASK, PPC860,	0,		{RT}},
531062306a36Sopenharmony_ci{"mfmi_ap",	XSPR(31,339,786), XSPR_MASK, PPC860,	0,		{RT}},
531162306a36Sopenharmony_ci{"mfmi_epn",	XSPR(31,339,787), XSPR_MASK, PPC860,	0,		{RT}},
531262306a36Sopenharmony_ci{"mfmi_twc",	XSPR(31,339,789), XSPR_MASK, PPC860,	0,		{RT}},
531362306a36Sopenharmony_ci{"mfmi_rpn",	XSPR(31,339,790), XSPR_MASK, PPC860,	0,		{RT}},
531462306a36Sopenharmony_ci{"mfmd_ctr",	XSPR(31,339,792), XSPR_MASK, PPC860,	0,		{RT}},
531562306a36Sopenharmony_ci{"mfm_casid",	XSPR(31,339,793), XSPR_MASK, PPC860,	0,		{RT}},
531662306a36Sopenharmony_ci{"mfmd_ap",	XSPR(31,339,794), XSPR_MASK, PPC860,	0,		{RT}},
531762306a36Sopenharmony_ci{"mfmd_epn",	XSPR(31,339,795), XSPR_MASK, PPC860,	0,		{RT}},
531862306a36Sopenharmony_ci{"mfmd_twb",	XSPR(31,339,796), XSPR_MASK, PPC860,	0,		{RT}},
531962306a36Sopenharmony_ci{"mfmd_twc",	XSPR(31,339,797), XSPR_MASK, PPC860,	0,		{RT}},
532062306a36Sopenharmony_ci{"mfmd_rpn",	XSPR(31,339,798), XSPR_MASK, PPC860,	0,		{RT}},
532162306a36Sopenharmony_ci{"mfm_tw",	XSPR(31,339,799), XSPR_MASK, PPC860,	0,		{RT}},
532262306a36Sopenharmony_ci{"mfmi_dbcam",	XSPR(31,339,816), XSPR_MASK, PPC860,	0,		{RT}},
532362306a36Sopenharmony_ci{"mfmi_dbram0",	XSPR(31,339,817), XSPR_MASK, PPC860,	0,		{RT}},
532462306a36Sopenharmony_ci{"mfmi_dbram1",	XSPR(31,339,818), XSPR_MASK, PPC860,	0,		{RT}},
532562306a36Sopenharmony_ci{"mfmd_dbcam",	XSPR(31,339,824), XSPR_MASK, PPC860,	0,		{RT}},
532662306a36Sopenharmony_ci{"mfmd_dbram0",	XSPR(31,339,825), XSPR_MASK, PPC860,	0,		{RT}},
532762306a36Sopenharmony_ci{"mfmd_dbram1",	XSPR(31,339,826), XSPR_MASK, PPC860,	0,		{RT}},
532862306a36Sopenharmony_ci{"mfivndx",	XSPR(31,339,880), XSPR_MASK, TITAN,	0,		{RT}},
532962306a36Sopenharmony_ci{"mfdvndx",	XSPR(31,339,881), XSPR_MASK, TITAN,	0,		{RT}},
533062306a36Sopenharmony_ci{"mfivlim",	XSPR(31,339,882), XSPR_MASK, TITAN,	0,		{RT}},
533162306a36Sopenharmony_ci{"mfdvlim",	XSPR(31,339,883), XSPR_MASK, TITAN,	0,		{RT}},
533262306a36Sopenharmony_ci{"mfclcsr",	XSPR(31,339,884), XSPR_MASK, TITAN,	0,		{RT}},
533362306a36Sopenharmony_ci{"mfccr1",	XSPR(31,339,888), XSPR_MASK, TITAN,	0,		{RT}},
533462306a36Sopenharmony_ci{"mfppr",	XSPR(31,339,896), XSPR_MASK, POWER7,	0,		{RT}},
533562306a36Sopenharmony_ci{"mfppr32",	XSPR(31,339,898), XSPR_MASK, POWER7,	0,		{RT}},
533662306a36Sopenharmony_ci{"mfrstcfg",	XSPR(31,339,923), XSPR_MASK, TITAN,	0,		{RT}},
533762306a36Sopenharmony_ci{"mfdcdbtrl",	XSPR(31,339,924), XSPR_MASK, TITAN,	0,		{RT}},
533862306a36Sopenharmony_ci{"mfdcdbtrh",	XSPR(31,339,925), XSPR_MASK, TITAN,	0,		{RT}},
533962306a36Sopenharmony_ci{"mficdbtr",	XSPR(31,339,927), XSPR_MASK, TITAN,	0,		{RT}},
534062306a36Sopenharmony_ci{"mfummcr0",	XSPR(31,339,936), XSPR_MASK, PPC750,	0,		{RT}},
534162306a36Sopenharmony_ci{"mfupmc1",	XSPR(31,339,937), XSPR_MASK, PPC750,	0,		{RT}},
534262306a36Sopenharmony_ci{"mfupmc2",	XSPR(31,339,938), XSPR_MASK, PPC750,	0,		{RT}},
534362306a36Sopenharmony_ci{"mfusia",	XSPR(31,339,939), XSPR_MASK, PPC750,	0,		{RT}},
534462306a36Sopenharmony_ci{"mfummcr1",	XSPR(31,339,940), XSPR_MASK, PPC750,	0,		{RT}},
534562306a36Sopenharmony_ci{"mfupmc3",	XSPR(31,339,941), XSPR_MASK, PPC750,	0,		{RT}},
534662306a36Sopenharmony_ci{"mfupmc4",	XSPR(31,339,942), XSPR_MASK, PPC750,	0,		{RT}},
534762306a36Sopenharmony_ci{"mfzpr",	XSPR(31,339,944), XSPR_MASK, PPC403,	0,		{RT}},
534862306a36Sopenharmony_ci{"mfpid",	XSPR(31,339,945), XSPR_MASK, PPC403,	0,		{RT}},
534962306a36Sopenharmony_ci{"mfmmucr",	XSPR(31,339,946), XSPR_MASK, TITAN,	0,		{RT}},
535062306a36Sopenharmony_ci{"mfccr0",	XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, 0,		{RT}},
535162306a36Sopenharmony_ci{"mfiac3",	XSPR(31,339,948), XSPR_MASK, PPC405,	0,		{RT}},
535262306a36Sopenharmony_ci{"mfiac4",	XSPR(31,339,949), XSPR_MASK, PPC405,	0,		{RT}},
535362306a36Sopenharmony_ci{"mfdvc1",	XSPR(31,339,950), XSPR_MASK, PPC405,	0,		{RT}},
535462306a36Sopenharmony_ci{"mfdvc2",	XSPR(31,339,951), XSPR_MASK, PPC405,	0,		{RT}},
535562306a36Sopenharmony_ci{"mfmmcr0",	XSPR(31,339,952), XSPR_MASK, PPC750,	0,		{RT}},
535662306a36Sopenharmony_ci{"mfpmc1",	XSPR(31,339,953), XSPR_MASK, PPC750,	0,		{RT}},
535762306a36Sopenharmony_ci{"mfsgr",	XSPR(31,339,953), XSPR_MASK, PPC403,	0,		{RT}},
535862306a36Sopenharmony_ci{"mfdcwr",	XSPR(31,339,954), XSPR_MASK, PPC403,	0,		{RT}},
535962306a36Sopenharmony_ci{"mfpmc2",	XSPR(31,339,954), XSPR_MASK, PPC750,	0,		{RT}},
536062306a36Sopenharmony_ci{"mfsia",	XSPR(31,339,955), XSPR_MASK, PPC750,	0,		{RT}},
536162306a36Sopenharmony_ci{"mfsler",	XSPR(31,339,955), XSPR_MASK, PPC405,	0,		{RT}},
536262306a36Sopenharmony_ci{"mfmmcr1",	XSPR(31,339,956), XSPR_MASK, PPC750,	0,		{RT}},
536362306a36Sopenharmony_ci{"mfsu0r",	XSPR(31,339,956), XSPR_MASK, PPC405,	0,		{RT}},
536462306a36Sopenharmony_ci{"mfdbcr1",	XSPR(31,339,957), XSPR_MASK, PPC405,	0,		{RT}},
536562306a36Sopenharmony_ci{"mfpmc3",	XSPR(31,339,957), XSPR_MASK, PPC750,	0,		{RT}},
536662306a36Sopenharmony_ci{"mfpmc4",	XSPR(31,339,958), XSPR_MASK, PPC750,	0,		{RT}},
536762306a36Sopenharmony_ci{"mficdbdr",	XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, 0,		{RT}},
536862306a36Sopenharmony_ci{"mfesr",	XSPR(31,339,980), XSPR_MASK, PPC403,	0,		{RT}},
536962306a36Sopenharmony_ci{"mfdear",	XSPR(31,339,981), XSPR_MASK, PPC403,	0,		{RT}},
537062306a36Sopenharmony_ci{"mfevpr",	XSPR(31,339,982), XSPR_MASK, PPC403,	0,		{RT}},
537162306a36Sopenharmony_ci{"mfcdbcr",	XSPR(31,339,983), XSPR_MASK, PPC403,	0,		{RT}},
537262306a36Sopenharmony_ci{"mftsr",	XSPR(31,339,984), XSPR_MASK, PPC403,	0,		{RT}},
537362306a36Sopenharmony_ci{"mftcr",	XSPR(31,339,986), XSPR_MASK, PPC403,	0,		{RT}},
537462306a36Sopenharmony_ci{"mfpit",	XSPR(31,339,987), XSPR_MASK, PPC403,	0,		{RT}},
537562306a36Sopenharmony_ci{"mftbhi",	XSPR(31,339,988), XSPR_MASK, PPC403,	0,		{RT}},
537662306a36Sopenharmony_ci{"mftblo",	XSPR(31,339,989), XSPR_MASK, PPC403,	0,		{RT}},
537762306a36Sopenharmony_ci{"mfsrr2",	XSPR(31,339,990), XSPR_MASK, PPC403,	0,		{RT}},
537862306a36Sopenharmony_ci{"mfsrr3",	XSPR(31,339,991), XSPR_MASK, PPC403,	0,		{RT}},
537962306a36Sopenharmony_ci{"mfdbsr",	XSPR(31,339,1008), XSPR_MASK, PPC403,	0,		{RT}},
538062306a36Sopenharmony_ci{"mfdbcr0",	XSPR(31,339,1010), XSPR_MASK, PPC405,	0,		{RT}},
538162306a36Sopenharmony_ci{"mfdbdr",	XSPR(31,339,1011), XSPR_MASK, TITAN,	0,		{RS}},
538262306a36Sopenharmony_ci{"mfiac1",	XSPR(31,339,1012), XSPR_MASK, PPC403,	0,		{RT}},
538362306a36Sopenharmony_ci{"mfiac2",	XSPR(31,339,1013), XSPR_MASK, PPC403,	0,		{RT}},
538462306a36Sopenharmony_ci{"mfdac1",	XSPR(31,339,1014), XSPR_MASK, PPC403,	0,		{RT}},
538562306a36Sopenharmony_ci{"mfdac2",	XSPR(31,339,1015), XSPR_MASK, PPC403,	0,		{RT}},
538662306a36Sopenharmony_ci{"mfl2cr",	XSPR(31,339,1017), XSPR_MASK, PPC750,	0,		{RT}},
538762306a36Sopenharmony_ci{"mfdccr",	XSPR(31,339,1018), XSPR_MASK, PPC403,	0,		{RT}},
538862306a36Sopenharmony_ci{"mficcr",	XSPR(31,339,1019), XSPR_MASK, PPC403,	0,		{RT}},
538962306a36Sopenharmony_ci{"mfictc",	XSPR(31,339,1019), XSPR_MASK, PPC750,	0,		{RT}},
539062306a36Sopenharmony_ci{"mfpbl1",	XSPR(31,339,1020), XSPR_MASK, PPC403,	0,		{RT}},
539162306a36Sopenharmony_ci{"mfthrm1",	XSPR(31,339,1020), XSPR_MASK, PPC750,	0,		{RT}},
539262306a36Sopenharmony_ci{"mfpbu1",	XSPR(31,339,1021), XSPR_MASK, PPC403,	0,		{RT}},
539362306a36Sopenharmony_ci{"mfthrm2",	XSPR(31,339,1021), XSPR_MASK, PPC750,	0,		{RT}},
539462306a36Sopenharmony_ci{"mfpbl2",	XSPR(31,339,1022), XSPR_MASK, PPC403,	0,		{RT}},
539562306a36Sopenharmony_ci{"mfthrm3",	XSPR(31,339,1022), XSPR_MASK, PPC750,	0,		{RT}},
539662306a36Sopenharmony_ci{"mfpbu2",	XSPR(31,339,1023), XSPR_MASK, PPC403,	0,		{RT}},
539762306a36Sopenharmony_ci{"mfspr",	X(31,339),	X_MASK,	     COM,	0,		{RT, SPR}},
539862306a36Sopenharmony_ci
539962306a36Sopenharmony_ci{"lwax",	X(31,341),	X_MASK,	     PPC64,	0,		{RT, RA0, RB}},
540062306a36Sopenharmony_ci
540162306a36Sopenharmony_ci{"dst",		XDSS(31,342,0),	XDSS_MASK,   PPCVEC,	0,		{RA, RB, STRM}},
540262306a36Sopenharmony_ci
540362306a36Sopenharmony_ci{"lhax",	X(31,343),	X_MASK,	     COM,	0,		{RT, RA0, RB}},
540462306a36Sopenharmony_ci
540562306a36Sopenharmony_ci{"lvxl",	X(31,359),	X_MASK,	     PPCVEC,	0,		{VD, RA0, RB}},
540662306a36Sopenharmony_ci
540762306a36Sopenharmony_ci{"abs",		XO(31,360,0,0),	XORB_MASK,   M601,	0,		{RT, RA}},
540862306a36Sopenharmony_ci{"abs.",	XO(31,360,0,1),	XORB_MASK,   M601,	0,		{RT, RA}},
540962306a36Sopenharmony_ci
541062306a36Sopenharmony_ci{"divs",	XO(31,363,0,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
541162306a36Sopenharmony_ci{"divs.",	XO(31,363,0,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
541262306a36Sopenharmony_ci
541362306a36Sopenharmony_ci{"lxvwsx",	X(31,364),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
541462306a36Sopenharmony_ci
541562306a36Sopenharmony_ci{"tlbia",	X(31,370),	0xffffffff,  PPC,	E500|TITAN,	{0}},
541662306a36Sopenharmony_ci
541762306a36Sopenharmony_ci{"mftbu",	XSPR(31,371,269), XSPR_MASK, PPC,	NO371|POWER4,	{RT}},
541862306a36Sopenharmony_ci{"mftb",	X(31,371),	X_MASK,	     PPC,	NO371|POWER4,	{RT, TBR}},
541962306a36Sopenharmony_ci{"mftbl",	XSPR(31,371,268), XSPR_MASK, PPC,	NO371|POWER4,	{RT}},
542062306a36Sopenharmony_ci
542162306a36Sopenharmony_ci{"lwaux",	X(31,373),	X_MASK,	     PPC64,	0,		{RT, RAL, RB}},
542262306a36Sopenharmony_ci
542362306a36Sopenharmony_ci{"dstst",	XDSS(31,374,0),	XDSS_MASK,   PPCVEC,	0,		{RA, RB, STRM}},
542462306a36Sopenharmony_ci
542562306a36Sopenharmony_ci{"lhaux",	X(31,375),	X_MASK,	     COM,	0,		{RT, RAL, RB}},
542662306a36Sopenharmony_ci
542762306a36Sopenharmony_ci{"popcntw",	X(31,378),	XRB_MASK,    POWER7|PPCA2, 0,		{RA, RS}},
542862306a36Sopenharmony_ci
542962306a36Sopenharmony_ci{"mtdcrx",	X(31,387),	X_MASK,	     BOOKE|PPCA2|PPC476, TITAN,	{RA, RS}},
543062306a36Sopenharmony_ci{"mtdcrx.",	XRC(31,387,1),	X_MASK,	     PPCA2,	0,		{RA, RS}},
543162306a36Sopenharmony_ci
543262306a36Sopenharmony_ci{"stvexbx",	X(31,389),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
543362306a36Sopenharmony_ci
543462306a36Sopenharmony_ci{"dcblc",	X(31,390),	X_MASK,	 PPCCHLK|PPC476|TITAN, 0,	{CT, RA0, RB}},
543562306a36Sopenharmony_ci{"stdfcmx",	APU(31,391,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
543662306a36Sopenharmony_ci
543762306a36Sopenharmony_ci{"divdeu",	XO(31,393,0,0),	XO_MASK,     POWER7|PPCA2, 0,		{RT, RA, RB}},
543862306a36Sopenharmony_ci{"divdeu.",	XO(31,393,0,1),	XO_MASK,     POWER7|PPCA2, 0,		{RT, RA, RB}},
543962306a36Sopenharmony_ci{"divweu",	XO(31,395,0,0),	XO_MASK,     POWER7|PPCA2, 0,		{RT, RA, RB}},
544062306a36Sopenharmony_ci{"divweu.",	XO(31,395,0,1),	XO_MASK,     POWER7|PPCA2, 0,		{RT, RA, RB}},
544162306a36Sopenharmony_ci
544262306a36Sopenharmony_ci{"stxvx",	X(31,396),	XX1_MASK,    PPCVSX3,	0,		{XS6, RA0, RB}},
544362306a36Sopenharmony_ci{"stxvl",	X(31,397),	XX1_MASK,    PPCVSX3,	0,		{XS6, RA0, RB}},
544462306a36Sopenharmony_ci
544562306a36Sopenharmony_ci{"dcblce",	X(31,398),	X_MASK,	     PPCCHLK,	E500MC,		{CT, RA, RB}},
544662306a36Sopenharmony_ci
544762306a36Sopenharmony_ci{"slbmte",	X(31,402),	XRA_MASK,    PPC64,	0,		{RS, RB}},
544862306a36Sopenharmony_ci
544962306a36Sopenharmony_ci{"mtvsrws",	X(31,403),	XX1RB_MASK,  PPCVSX3,	0,		{XT6, RA}},
545062306a36Sopenharmony_ci
545162306a36Sopenharmony_ci{"pbt.",	XRC(31,404,1),	X_MASK,	     POWER8,	0,		{RS, RA0, RB}},
545262306a36Sopenharmony_ci
545362306a36Sopenharmony_ci{"icswx",	XRC(31,406,0),	X_MASK,	  POWER7|PPCA2,	0,		{RS, RA, RB}},
545462306a36Sopenharmony_ci{"icswx.",	XRC(31,406,1),	X_MASK,	  POWER7|PPCA2,	0,		{RS, RA, RB}},
545562306a36Sopenharmony_ci
545662306a36Sopenharmony_ci{"sthx",	X(31,407),	X_MASK,	     COM,	0,		{RS, RA0, RB}},
545762306a36Sopenharmony_ci
545862306a36Sopenharmony_ci{"orc",		XRC(31,412,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
545962306a36Sopenharmony_ci{"orc.",	XRC(31,412,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
546062306a36Sopenharmony_ci
546162306a36Sopenharmony_ci{"sthepx",	X(31,415),	X_MASK,	  E500MC|PPCA2, 0,		{RS, RA0, RB}},
546262306a36Sopenharmony_ci
546362306a36Sopenharmony_ci{"mtdcrux",	X(31,419),	X_MASK,	     PPC464,	0,		{RA, RS}},
546462306a36Sopenharmony_ci
546562306a36Sopenharmony_ci{"stvexhx",	X(31,421),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
546662306a36Sopenharmony_ci
546762306a36Sopenharmony_ci{"dcblq.",	XRC(31,422,1),	X_MASK,	     E6500,	0,		{CT, RA0, RB}},
546862306a36Sopenharmony_ci
546962306a36Sopenharmony_ci{"divde",	XO(31,425,0,0),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
547062306a36Sopenharmony_ci{"divde.",	XO(31,425,0,1),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
547162306a36Sopenharmony_ci{"divwe",	XO(31,427,0,0),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
547262306a36Sopenharmony_ci{"divwe.",	XO(31,427,0,1),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
547362306a36Sopenharmony_ci
547462306a36Sopenharmony_ci{"stxvll",	X(31,429),	XX1_MASK,    PPCVSX3,	0,		{XS6, RA0, RB}},
547562306a36Sopenharmony_ci
547662306a36Sopenharmony_ci{"clrbhrb",	X(31,430),	0xffffffff,  POWER8,	0,		{0}},
547762306a36Sopenharmony_ci
547862306a36Sopenharmony_ci{"slbie",	X(31,434),	XRTRA_MASK,  PPC64,	0,		{RB}},
547962306a36Sopenharmony_ci
548062306a36Sopenharmony_ci{"mtvsrdd",	X(31,435),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
548162306a36Sopenharmony_ci
548262306a36Sopenharmony_ci{"ecowx",	X(31,438),	X_MASK,	     PPC,	E500|TITAN,	{RT, RA0, RB}},
548362306a36Sopenharmony_ci
548462306a36Sopenharmony_ci{"sthux",	X(31,439),	X_MASK,	     COM,	0,		{RS, RAS, RB}},
548562306a36Sopenharmony_ci
548662306a36Sopenharmony_ci{"mdors",	0x7f9ce378,	0xffffffff,  E500MC,	0,		{0}},
548762306a36Sopenharmony_ci
548862306a36Sopenharmony_ci{"miso",	0x7f5ad378,	0xffffffff,  E6500,	0,		{0}},
548962306a36Sopenharmony_ci
549062306a36Sopenharmony_ci/* The "yield", "mdoio" and "mdoom" instructions are extended mnemonics for
549162306a36Sopenharmony_ci   "or rX,rX,rX", with rX being r27, r29 and r30 respectively.	*/
549262306a36Sopenharmony_ci{"yield",	0x7f7bdb78,	0xffffffff,  POWER7,	0,		{0}},
549362306a36Sopenharmony_ci{"mdoio",	0x7fbdeb78,	0xffffffff,  POWER7,	0,		{0}},
549462306a36Sopenharmony_ci{"mdoom",	0x7fdef378,	0xffffffff,  POWER7,	0,		{0}},
549562306a36Sopenharmony_ci{"mr",		XRC(31,444,0),	X_MASK,	     COM,	0,		{RA, RS, RBS}},
549662306a36Sopenharmony_ci{"or",		XRC(31,444,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
549762306a36Sopenharmony_ci{"mr.",		XRC(31,444,1),	X_MASK,	     COM,	0,		{RA, RS, RBS}},
549862306a36Sopenharmony_ci{"or.",		XRC(31,444,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
549962306a36Sopenharmony_ci
550062306a36Sopenharmony_ci{"mtexisr",	XSPR(31,451, 64), XSPR_MASK, PPC403,	0,		{RS}},
550162306a36Sopenharmony_ci{"mtexier",	XSPR(31,451, 66), XSPR_MASK, PPC403,	0,		{RS}},
550262306a36Sopenharmony_ci{"mtbr0",	XSPR(31,451,128), XSPR_MASK, PPC403,	0,		{RS}},
550362306a36Sopenharmony_ci{"mtbr1",	XSPR(31,451,129), XSPR_MASK, PPC403,	0,		{RS}},
550462306a36Sopenharmony_ci{"mtbr2",	XSPR(31,451,130), XSPR_MASK, PPC403,	0,		{RS}},
550562306a36Sopenharmony_ci{"mtbr3",	XSPR(31,451,131), XSPR_MASK, PPC403,	0,		{RS}},
550662306a36Sopenharmony_ci{"mtbr4",	XSPR(31,451,132), XSPR_MASK, PPC403,	0,		{RS}},
550762306a36Sopenharmony_ci{"mtbr5",	XSPR(31,451,133), XSPR_MASK, PPC403,	0,		{RS}},
550862306a36Sopenharmony_ci{"mtbr6",	XSPR(31,451,134), XSPR_MASK, PPC403,	0,		{RS}},
550962306a36Sopenharmony_ci{"mtbr7",	XSPR(31,451,135), XSPR_MASK, PPC403,	0,		{RS}},
551062306a36Sopenharmony_ci{"mtbear",	XSPR(31,451,144), XSPR_MASK, PPC403,	0,		{RS}},
551162306a36Sopenharmony_ci{"mtbesr",	XSPR(31,451,145), XSPR_MASK, PPC403,	0,		{RS}},
551262306a36Sopenharmony_ci{"mtiocr",	XSPR(31,451,160), XSPR_MASK, PPC403,	0,		{RS}},
551362306a36Sopenharmony_ci{"mtdmacr0",	XSPR(31,451,192), XSPR_MASK, PPC403,	0,		{RS}},
551462306a36Sopenharmony_ci{"mtdmact0",	XSPR(31,451,193), XSPR_MASK, PPC403,	0,		{RS}},
551562306a36Sopenharmony_ci{"mtdmada0",	XSPR(31,451,194), XSPR_MASK, PPC403,	0,		{RS}},
551662306a36Sopenharmony_ci{"mtdmasa0",	XSPR(31,451,195), XSPR_MASK, PPC403,	0,		{RS}},
551762306a36Sopenharmony_ci{"mtdmacc0",	XSPR(31,451,196), XSPR_MASK, PPC403,	0,		{RS}},
551862306a36Sopenharmony_ci{"mtdmacr1",	XSPR(31,451,200), XSPR_MASK, PPC403,	0,		{RS}},
551962306a36Sopenharmony_ci{"mtdmact1",	XSPR(31,451,201), XSPR_MASK, PPC403,	0,		{RS}},
552062306a36Sopenharmony_ci{"mtdmada1",	XSPR(31,451,202), XSPR_MASK, PPC403,	0,		{RS}},
552162306a36Sopenharmony_ci{"mtdmasa1",	XSPR(31,451,203), XSPR_MASK, PPC403,	0,		{RS}},
552262306a36Sopenharmony_ci{"mtdmacc1",	XSPR(31,451,204), XSPR_MASK, PPC403,	0,		{RS}},
552362306a36Sopenharmony_ci{"mtdmacr2",	XSPR(31,451,208), XSPR_MASK, PPC403,	0,		{RS}},
552462306a36Sopenharmony_ci{"mtdmact2",	XSPR(31,451,209), XSPR_MASK, PPC403,	0,		{RS}},
552562306a36Sopenharmony_ci{"mtdmada2",	XSPR(31,451,210), XSPR_MASK, PPC403,	0,		{RS}},
552662306a36Sopenharmony_ci{"mtdmasa2",	XSPR(31,451,211), XSPR_MASK, PPC403,	0,		{RS}},
552762306a36Sopenharmony_ci{"mtdmacc2",	XSPR(31,451,212), XSPR_MASK, PPC403,	0,		{RS}},
552862306a36Sopenharmony_ci{"mtdmacr3",	XSPR(31,451,216), XSPR_MASK, PPC403,	0,		{RS}},
552962306a36Sopenharmony_ci{"mtdmact3",	XSPR(31,451,217), XSPR_MASK, PPC403,	0,		{RS}},
553062306a36Sopenharmony_ci{"mtdmada3",	XSPR(31,451,218), XSPR_MASK, PPC403,	0,		{RS}},
553162306a36Sopenharmony_ci{"mtdmasa3",	XSPR(31,451,219), XSPR_MASK, PPC403,	0,		{RS}},
553262306a36Sopenharmony_ci{"mtdmacc3",	XSPR(31,451,220), XSPR_MASK, PPC403,	0,		{RS}},
553362306a36Sopenharmony_ci{"mtdmasr",	XSPR(31,451,224), XSPR_MASK, PPC403,	0,		{RS}},
553462306a36Sopenharmony_ci{"mtdcr",	X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {SPR, RS}},
553562306a36Sopenharmony_ci{"mtdcr.",	XRC(31,451,1), X_MASK,	     PPCA2,	0,		{SPR, RS}},
553662306a36Sopenharmony_ci
553762306a36Sopenharmony_ci{"stvexwx",	X(31,453),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
553862306a36Sopenharmony_ci
553962306a36Sopenharmony_ci{"dccci",	X(31,454), XRT_MASK, PPC403|PPC440|TITAN|PPCA2, 0,	{RAOPT, RBOPT}},
554062306a36Sopenharmony_ci{"dci",		X(31,454),	XRARB_MASK, PPCA2|PPC476, 0,		{CT}},
554162306a36Sopenharmony_ci
554262306a36Sopenharmony_ci{"divdu",	XO(31,457,0,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
554362306a36Sopenharmony_ci{"divdu.",	XO(31,457,0,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
554462306a36Sopenharmony_ci
554562306a36Sopenharmony_ci{"divwu",	XO(31,459,0,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
554662306a36Sopenharmony_ci{"divwu.",	XO(31,459,0,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
554762306a36Sopenharmony_ci
554862306a36Sopenharmony_ci{"mtpmr",	X(31,462),	X_MASK, PPCPMR|PPCE300, 0,		{PMR, RS}},
554962306a36Sopenharmony_ci{"mttmr",	X(31,494),	X_MASK,	PPCTMR|E6500,	0,		{TMR, RS}},
555062306a36Sopenharmony_ci
555162306a36Sopenharmony_ci{"slbieg",	X(31,466),	XRA_MASK,    POWER9,	0,		{RS, RB}},
555262306a36Sopenharmony_ci
555362306a36Sopenharmony_ci{"mtmq",	XSPR(31,467,  0), XSPR_MASK, M601,	0,		{RS}},
555462306a36Sopenharmony_ci{"mtxer",	XSPR(31,467,  1), XSPR_MASK, COM,	0,		{RS}},
555562306a36Sopenharmony_ci{"mtlr",	XSPR(31,467,  8), XSPR_MASK, COM,	0,		{RS}},
555662306a36Sopenharmony_ci{"mtctr",	XSPR(31,467,  9), XSPR_MASK, COM,	0,		{RS}},
555762306a36Sopenharmony_ci{"mtdscr",	XSPR(31,467, 17), XSPR_MASK, POWER6,	0,		{RS}},
555862306a36Sopenharmony_ci{"mttid",	XSPR(31,467, 17), XSPR_MASK, POWER,	0,		{RS}},
555962306a36Sopenharmony_ci{"mtdsisr",	XSPR(31,467, 18), XSPR_MASK, COM,	TITAN,		{RS}},
556062306a36Sopenharmony_ci{"mtdar",	XSPR(31,467, 19), XSPR_MASK, COM,	TITAN,		{RS}},
556162306a36Sopenharmony_ci{"mtrtcu",	XSPR(31,467, 20), XSPR_MASK, COM,	TITAN,		{RS}},
556262306a36Sopenharmony_ci{"mtrtcl",	XSPR(31,467, 21), XSPR_MASK, COM,	TITAN,		{RS}},
556362306a36Sopenharmony_ci{"mtdec",	XSPR(31,467, 22), XSPR_MASK, COM,	0,		{RS}},
556462306a36Sopenharmony_ci{"mtsdr0",	XSPR(31,467, 24), XSPR_MASK, POWER,	0,		{RS}},
556562306a36Sopenharmony_ci{"mtsdr1",	XSPR(31,467, 25), XSPR_MASK, COM,	TITAN,		{RS}},
556662306a36Sopenharmony_ci{"mtsrr0",	XSPR(31,467, 26), XSPR_MASK, COM,	0,		{RS}},
556762306a36Sopenharmony_ci{"mtsrr1",	XSPR(31,467, 27), XSPR_MASK, COM,	0,		{RS}},
556862306a36Sopenharmony_ci{"mtcfar",	XSPR(31,467, 28), XSPR_MASK, POWER6,	0,		{RS}},
556962306a36Sopenharmony_ci{"mtpid",	XSPR(31,467, 48), XSPR_MASK, BOOKE,	0,		{RS}},
557062306a36Sopenharmony_ci{"mtdecar",	XSPR(31,467, 54), XSPR_MASK, BOOKE,	0,		{RS}},
557162306a36Sopenharmony_ci{"mtcsrr0",	XSPR(31,467, 58), XSPR_MASK, BOOKE,	0,		{RS}},
557262306a36Sopenharmony_ci{"mtcsrr1",	XSPR(31,467, 59), XSPR_MASK, BOOKE,	0,		{RS}},
557362306a36Sopenharmony_ci{"mtdear",	XSPR(31,467, 61), XSPR_MASK, BOOKE,	0,		{RS}},
557462306a36Sopenharmony_ci{"mtesr",	XSPR(31,467, 62), XSPR_MASK, BOOKE,	0,		{RS}},
557562306a36Sopenharmony_ci{"mtivpr",	XSPR(31,467, 63), XSPR_MASK, BOOKE,	0,		{RS}},
557662306a36Sopenharmony_ci{"mtcmpa",	XSPR(31,467,144), XSPR_MASK, PPC860,	0,		{RS}},
557762306a36Sopenharmony_ci{"mtcmpb",	XSPR(31,467,145), XSPR_MASK, PPC860,	0,		{RS}},
557862306a36Sopenharmony_ci{"mtcmpc",	XSPR(31,467,146), XSPR_MASK, PPC860,	0,		{RS}},
557962306a36Sopenharmony_ci{"mtcmpd",	XSPR(31,467,147), XSPR_MASK, PPC860,	0,		{RS}},
558062306a36Sopenharmony_ci{"mticr",	XSPR(31,467,148), XSPR_MASK, PPC860,	0,		{RS}},
558162306a36Sopenharmony_ci{"mtder",	XSPR(31,467,149), XSPR_MASK, PPC860,	0,		{RS}},
558262306a36Sopenharmony_ci{"mtcounta",	XSPR(31,467,150), XSPR_MASK, PPC860,	0,		{RS}},
558362306a36Sopenharmony_ci{"mtcountb",	XSPR(31,467,151), XSPR_MASK, PPC860,	0,		{RS}},
558462306a36Sopenharmony_ci{"mtctrl",	XSPR(31,467,152), XSPR_MASK, POWER4,	0,		{RS}},
558562306a36Sopenharmony_ci{"mtcmpe",	XSPR(31,467,152), XSPR_MASK, PPC860,	0,		{RS}},
558662306a36Sopenharmony_ci{"mtcmpf",	XSPR(31,467,153), XSPR_MASK, PPC860,	0,		{RS}},
558762306a36Sopenharmony_ci{"mtcmpg",	XSPR(31,467,154), XSPR_MASK, PPC860,	0,		{RS}},
558862306a36Sopenharmony_ci{"mtcmph",	XSPR(31,467,155), XSPR_MASK, PPC860,	0,		{RS}},
558962306a36Sopenharmony_ci{"mtlctrl1",	XSPR(31,467,156), XSPR_MASK, PPC860,	0,		{RS}},
559062306a36Sopenharmony_ci{"mtlctrl2",	XSPR(31,467,157), XSPR_MASK, PPC860,	0,		{RS}},
559162306a36Sopenharmony_ci{"mtictrl",	XSPR(31,467,158), XSPR_MASK, PPC860,	0,		{RS}},
559262306a36Sopenharmony_ci{"mtbar",	XSPR(31,467,159), XSPR_MASK, PPC860,	0,		{RS}},
559362306a36Sopenharmony_ci{"mtvrsave",	XSPR(31,467,256), XSPR_MASK, PPCVEC,	0,		{RS}},
559462306a36Sopenharmony_ci{"mtusprg0",	XSPR(31,467,256), XSPR_MASK, BOOKE,	0,		{RS}},
559562306a36Sopenharmony_ci{"mtsprg",	XSPR(31,467,256), XSPRG_MASK, PPC,	0,		{SPRG, RS}},
559662306a36Sopenharmony_ci{"mtsprg0",	XSPR(31,467,272), XSPR_MASK, PPC,	0,		{RS}},
559762306a36Sopenharmony_ci{"mtsprg1",	XSPR(31,467,273), XSPR_MASK, PPC,	0,		{RS}},
559862306a36Sopenharmony_ci{"mtsprg2",	XSPR(31,467,274), XSPR_MASK, PPC,	0,		{RS}},
559962306a36Sopenharmony_ci{"mtsprg3",	XSPR(31,467,275), XSPR_MASK, PPC,	0,		{RS}},
560062306a36Sopenharmony_ci{"mtsprg4",	XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, 0,		{RS}},
560162306a36Sopenharmony_ci{"mtsprg5",	XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, 0,		{RS}},
560262306a36Sopenharmony_ci{"mtsprg6",	XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, 0,		{RS}},
560362306a36Sopenharmony_ci{"mtsprg7",	XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, 0,		{RS}},
560462306a36Sopenharmony_ci{"mtasr",	XSPR(31,467,280), XSPR_MASK, PPC64,	0,		{RS}},
560562306a36Sopenharmony_ci{"mtear",	XSPR(31,467,282), XSPR_MASK, PPC,	TITAN,		{RS}},
560662306a36Sopenharmony_ci{"mttbl",	XSPR(31,467,284), XSPR_MASK, PPC,	0,		{RS}},
560762306a36Sopenharmony_ci{"mttbu",	XSPR(31,467,285), XSPR_MASK, PPC,	0,		{RS}},
560862306a36Sopenharmony_ci{"mtdbsr",	XSPR(31,467,304), XSPR_MASK, BOOKE,	0,		{RS}},
560962306a36Sopenharmony_ci{"mtdbcr0",	XSPR(31,467,308), XSPR_MASK, BOOKE,	0,		{RS}},
561062306a36Sopenharmony_ci{"mtdbcr1",	XSPR(31,467,309), XSPR_MASK, BOOKE,	0,		{RS}},
561162306a36Sopenharmony_ci{"mtdbcr2",	XSPR(31,467,310), XSPR_MASK, BOOKE,	0,		{RS}},
561262306a36Sopenharmony_ci{"mtiac1",	XSPR(31,467,312), XSPR_MASK, BOOKE,	0,		{RS}},
561362306a36Sopenharmony_ci{"mtiac2",	XSPR(31,467,313), XSPR_MASK, BOOKE,	0,		{RS}},
561462306a36Sopenharmony_ci{"mtiac3",	XSPR(31,467,314), XSPR_MASK, BOOKE,	0,		{RS}},
561562306a36Sopenharmony_ci{"mtiac4",	XSPR(31,467,315), XSPR_MASK, BOOKE,	0,		{RS}},
561662306a36Sopenharmony_ci{"mtdac1",	XSPR(31,467,316), XSPR_MASK, BOOKE,	0,		{RS}},
561762306a36Sopenharmony_ci{"mtdac2",	XSPR(31,467,317), XSPR_MASK, BOOKE,	0,		{RS}},
561862306a36Sopenharmony_ci{"mtdvc1",	XSPR(31,467,318), XSPR_MASK, BOOKE,	0,		{RS}},
561962306a36Sopenharmony_ci{"mtdvc2",	XSPR(31,467,319), XSPR_MASK, BOOKE,	0,		{RS}},
562062306a36Sopenharmony_ci{"mttsr",	XSPR(31,467,336), XSPR_MASK, BOOKE,	0,		{RS}},
562162306a36Sopenharmony_ci{"mttcr",	XSPR(31,467,340), XSPR_MASK, BOOKE,	0,		{RS}},
562262306a36Sopenharmony_ci{"mtivor0",	XSPR(31,467,400), XSPR_MASK, BOOKE,	0,		{RS}},
562362306a36Sopenharmony_ci{"mtivor1",	XSPR(31,467,401), XSPR_MASK, BOOKE,	0,		{RS}},
562462306a36Sopenharmony_ci{"mtivor2",	XSPR(31,467,402), XSPR_MASK, BOOKE,	0,		{RS}},
562562306a36Sopenharmony_ci{"mtivor3",	XSPR(31,467,403), XSPR_MASK, BOOKE,	0,		{RS}},
562662306a36Sopenharmony_ci{"mtivor4",	XSPR(31,467,404), XSPR_MASK, BOOKE,	0,		{RS}},
562762306a36Sopenharmony_ci{"mtivor5",	XSPR(31,467,405), XSPR_MASK, BOOKE,	0,		{RS}},
562862306a36Sopenharmony_ci{"mtivor6",	XSPR(31,467,406), XSPR_MASK, BOOKE,	0,		{RS}},
562962306a36Sopenharmony_ci{"mtivor7",	XSPR(31,467,407), XSPR_MASK, BOOKE,	0,		{RS}},
563062306a36Sopenharmony_ci{"mtivor8",	XSPR(31,467,408), XSPR_MASK, BOOKE,	0,		{RS}},
563162306a36Sopenharmony_ci{"mtivor9",	XSPR(31,467,409), XSPR_MASK, BOOKE,	0,		{RS}},
563262306a36Sopenharmony_ci{"mtivor10",	XSPR(31,467,410), XSPR_MASK, BOOKE,	0,		{RS}},
563362306a36Sopenharmony_ci{"mtivor11",	XSPR(31,467,411), XSPR_MASK, BOOKE,	0,		{RS}},
563462306a36Sopenharmony_ci{"mtivor12",	XSPR(31,467,412), XSPR_MASK, BOOKE,	0,		{RS}},
563562306a36Sopenharmony_ci{"mtivor13",	XSPR(31,467,413), XSPR_MASK, BOOKE,	0,		{RS}},
563662306a36Sopenharmony_ci{"mtivor14",	XSPR(31,467,414), XSPR_MASK, BOOKE,	0,		{RS}},
563762306a36Sopenharmony_ci{"mtivor15",	XSPR(31,467,415), XSPR_MASK, BOOKE,	0,		{RS}},
563862306a36Sopenharmony_ci{"mtspefscr",	XSPR(31,467,512), XSPR_MASK, PPCSPE,	0,		{RS}},
563962306a36Sopenharmony_ci{"mtbbear",	XSPR(31,467,513), XSPR_MASK, PPCBRLK,	0,		{RS}},
564062306a36Sopenharmony_ci{"mtbbtar",	XSPR(31,467,514), XSPR_MASK, PPCBRLK,	0,		{RS}},
564162306a36Sopenharmony_ci{"mtivor32",	XSPR(31,467,528), XSPR_MASK, PPCSPE,	0,		{RS}},
564262306a36Sopenharmony_ci{"mtibatu",	XSPR(31,467,528), XSPRBAT_MASK, PPC,	TITAN,		{SPRBAT, RS}},
564362306a36Sopenharmony_ci{"mtivor33",	XSPR(31,467,529), XSPR_MASK, PPCSPE,	0,		{RS}},
564462306a36Sopenharmony_ci{"mtibatl",	XSPR(31,467,529), XSPRBAT_MASK, PPC,	TITAN,		{SPRBAT, RS}},
564562306a36Sopenharmony_ci{"mtivor34",	XSPR(31,467,530), XSPR_MASK, PPCSPE,	0,		{RS}},
564662306a36Sopenharmony_ci{"mtivor35",	XSPR(31,467,531), XSPR_MASK, PPCPMR,	0,		{RS}},
564762306a36Sopenharmony_ci{"mtdbatu",	XSPR(31,467,536), XSPRBAT_MASK, PPC,	TITAN,		{SPRBAT, RS}},
564862306a36Sopenharmony_ci{"mtdbatl",	XSPR(31,467,537), XSPRBAT_MASK, PPC,	TITAN,		{SPRBAT, RS}},
564962306a36Sopenharmony_ci{"mtmcsrr0",	XSPR(31,467,570), XSPR_MASK, PPCRFMCI,	0,		{RS}},
565062306a36Sopenharmony_ci{"mtmcsrr1",	XSPR(31,467,571), XSPR_MASK, PPCRFMCI,	0,		{RS}},
565162306a36Sopenharmony_ci{"mtmcsr",	XSPR(31,467,572), XSPR_MASK, PPCRFMCI,	0,		{RS}},
565262306a36Sopenharmony_ci{"mtivndx",	XSPR(31,467,880), XSPR_MASK, TITAN,	0,		{RS}},
565362306a36Sopenharmony_ci{"mtdvndx",	XSPR(31,467,881), XSPR_MASK, TITAN,	0,		{RS}},
565462306a36Sopenharmony_ci{"mtivlim",	XSPR(31,467,882), XSPR_MASK, TITAN,	0,		{RS}},
565562306a36Sopenharmony_ci{"mtdvlim",	XSPR(31,467,883), XSPR_MASK, TITAN,	0,		{RS}},
565662306a36Sopenharmony_ci{"mtclcsr",	XSPR(31,467,884), XSPR_MASK, TITAN,	0,		{RS}},
565762306a36Sopenharmony_ci{"mtccr1",	XSPR(31,467,888), XSPR_MASK, TITAN,	0,		{RS}},
565862306a36Sopenharmony_ci{"mtppr",	XSPR(31,467,896), XSPR_MASK, POWER7,	0,		{RS}},
565962306a36Sopenharmony_ci{"mtppr32",	XSPR(31,467,898), XSPR_MASK, POWER7,	0,		{RS}},
566062306a36Sopenharmony_ci{"mtummcr0",	XSPR(31,467,936), XSPR_MASK, PPC750,	0,		{RS}},
566162306a36Sopenharmony_ci{"mtupmc1",	XSPR(31,467,937), XSPR_MASK, PPC750,	0,		{RS}},
566262306a36Sopenharmony_ci{"mtupmc2",	XSPR(31,467,938), XSPR_MASK, PPC750,	0,		{RS}},
566362306a36Sopenharmony_ci{"mtusia",	XSPR(31,467,939), XSPR_MASK, PPC750,	0,		{RS}},
566462306a36Sopenharmony_ci{"mtummcr1",	XSPR(31,467,940), XSPR_MASK, PPC750,	0,		{RS}},
566562306a36Sopenharmony_ci{"mtupmc3",	XSPR(31,467,941), XSPR_MASK, PPC750,	0,		{RS}},
566662306a36Sopenharmony_ci{"mtupmc4",	XSPR(31,467,942), XSPR_MASK, PPC750,	0,		{RS}},
566762306a36Sopenharmony_ci{"mtzpr",	XSPR(31,467,944), XSPR_MASK, PPC403,	0,		{RS}},
566862306a36Sopenharmony_ci{"mtpid",	XSPR(31,467,945), XSPR_MASK, PPC403,	0,		{RS}},
566962306a36Sopenharmony_ci{"mtrmmucr",	XSPR(31,467,946), XSPR_MASK, TITAN,	0,		{RS}},
567062306a36Sopenharmony_ci{"mtccr0",	XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, 0,		{RS}},
567162306a36Sopenharmony_ci{"mtiac3",	XSPR(31,467,948), XSPR_MASK, PPC405,	0,		{RS}},
567262306a36Sopenharmony_ci{"mtiac4",	XSPR(31,467,949), XSPR_MASK, PPC405,	0,		{RS}},
567362306a36Sopenharmony_ci{"mtdvc1",	XSPR(31,467,950), XSPR_MASK, PPC405,	0,		{RS}},
567462306a36Sopenharmony_ci{"mtdvc2",	XSPR(31,467,951), XSPR_MASK, PPC405,	0,		{RS}},
567562306a36Sopenharmony_ci{"mtmmcr0",	XSPR(31,467,952), XSPR_MASK, PPC750,	0,		{RS}},
567662306a36Sopenharmony_ci{"mtpmc1",	XSPR(31,467,953), XSPR_MASK, PPC750,	0,		{RS}},
567762306a36Sopenharmony_ci{"mtsgr",	XSPR(31,467,953), XSPR_MASK, PPC403,	0,		{RS}},
567862306a36Sopenharmony_ci{"mtdcwr",	XSPR(31,467,954), XSPR_MASK, PPC403,	0,		{RS}},
567962306a36Sopenharmony_ci{"mtpmc2",	XSPR(31,467,954), XSPR_MASK, PPC750,	0,		{RS}},
568062306a36Sopenharmony_ci{"mtsia",	XSPR(31,467,955), XSPR_MASK, PPC750,	0,		{RS}},
568162306a36Sopenharmony_ci{"mtsler",	XSPR(31,467,955), XSPR_MASK, PPC405,	0,		{RS}},
568262306a36Sopenharmony_ci{"mtmmcr1",	XSPR(31,467,956), XSPR_MASK, PPC750,	0,		{RS}},
568362306a36Sopenharmony_ci{"mtsu0r",	XSPR(31,467,956), XSPR_MASK, PPC405,	0,		{RS}},
568462306a36Sopenharmony_ci{"mtdbcr1",	XSPR(31,467,957), XSPR_MASK, PPC405,	0,		{RS}},
568562306a36Sopenharmony_ci{"mtpmc3",	XSPR(31,467,957), XSPR_MASK, PPC750,	0,		{RS}},
568662306a36Sopenharmony_ci{"mtpmc4",	XSPR(31,467,958), XSPR_MASK, PPC750,	0,		{RS}},
568762306a36Sopenharmony_ci{"mticdbdr",	XSPR(31,467,979), XSPR_MASK, PPC403,	0,		{RS}},
568862306a36Sopenharmony_ci{"mtesr",	XSPR(31,467,980), XSPR_MASK, PPC403,	0,		{RS}},
568962306a36Sopenharmony_ci{"mtdear",	XSPR(31,467,981), XSPR_MASK, PPC403,	0,		{RS}},
569062306a36Sopenharmony_ci{"mtevpr",	XSPR(31,467,982), XSPR_MASK, PPC403,	0,		{RS}},
569162306a36Sopenharmony_ci{"mtcdbcr",	XSPR(31,467,983), XSPR_MASK, PPC403,	0,		{RS}},
569262306a36Sopenharmony_ci{"mttsr",	XSPR(31,467,984), XSPR_MASK, PPC403,	0,		{RS}},
569362306a36Sopenharmony_ci{"mttcr",	XSPR(31,467,986), XSPR_MASK, PPC403,	0,		{RS}},
569462306a36Sopenharmony_ci{"mtpit",	XSPR(31,467,987), XSPR_MASK, PPC403,	0,		{RS}},
569562306a36Sopenharmony_ci{"mttbhi",	XSPR(31,467,988), XSPR_MASK, PPC403,	0,		{RS}},
569662306a36Sopenharmony_ci{"mttblo",	XSPR(31,467,989), XSPR_MASK, PPC403,	0,		{RS}},
569762306a36Sopenharmony_ci{"mtsrr2",	XSPR(31,467,990), XSPR_MASK, PPC403,	0,		{RS}},
569862306a36Sopenharmony_ci{"mtsrr3",	XSPR(31,467,991), XSPR_MASK, PPC403,	0,		{RS}},
569962306a36Sopenharmony_ci{"mtdbsr",	XSPR(31,467,1008), XSPR_MASK, PPC403,	0,		{RS}},
570062306a36Sopenharmony_ci{"mtdbdr",	XSPR(31,467,1011), XSPR_MASK, TITAN,	0,		{RS}},
570162306a36Sopenharmony_ci{"mtdbcr0",	XSPR(31,467,1010), XSPR_MASK, PPC405,	0,		{RS}},
570262306a36Sopenharmony_ci{"mtiac1",	XSPR(31,467,1012), XSPR_MASK, PPC403,	0,		{RS}},
570362306a36Sopenharmony_ci{"mtiac2",	XSPR(31,467,1013), XSPR_MASK, PPC403,	0,		{RS}},
570462306a36Sopenharmony_ci{"mtdac1",	XSPR(31,467,1014), XSPR_MASK, PPC403,	0,		{RS}},
570562306a36Sopenharmony_ci{"mtdac2",	XSPR(31,467,1015), XSPR_MASK, PPC403,	0,		{RS}},
570662306a36Sopenharmony_ci{"mtl2cr",	XSPR(31,467,1017), XSPR_MASK, PPC750,	0,		{RS}},
570762306a36Sopenharmony_ci{"mtdccr",	XSPR(31,467,1018), XSPR_MASK, PPC403,	0,		{RS}},
570862306a36Sopenharmony_ci{"mticcr",	XSPR(31,467,1019), XSPR_MASK, PPC403,	0,		{RS}},
570962306a36Sopenharmony_ci{"mtictc",	XSPR(31,467,1019), XSPR_MASK, PPC750,	0,		{RS}},
571062306a36Sopenharmony_ci{"mtpbl1",	XSPR(31,467,1020), XSPR_MASK, PPC403,	0,		{RS}},
571162306a36Sopenharmony_ci{"mtthrm1",	XSPR(31,467,1020), XSPR_MASK, PPC750,	0,		{RS}},
571262306a36Sopenharmony_ci{"mtpbu1",	XSPR(31,467,1021), XSPR_MASK, PPC403,	0,		{RS}},
571362306a36Sopenharmony_ci{"mtthrm2",	XSPR(31,467,1021), XSPR_MASK, PPC750,	0,		{RS}},
571462306a36Sopenharmony_ci{"mtpbl2",	XSPR(31,467,1022), XSPR_MASK, PPC403,	0,		{RS}},
571562306a36Sopenharmony_ci{"mtthrm3",	XSPR(31,467,1022), XSPR_MASK, PPC750,	0,		{RS}},
571662306a36Sopenharmony_ci{"mtpbu2",	XSPR(31,467,1023), XSPR_MASK, PPC403,	0,		{RS}},
571762306a36Sopenharmony_ci{"mtspr",	X(31,467),	X_MASK,	     COM,	0,		{SPR, RS}},
571862306a36Sopenharmony_ci
571962306a36Sopenharmony_ci{"dcbi",	X(31,470),	XRT_MASK,    PPC,	0,		{RA0, RB}},
572062306a36Sopenharmony_ci
572162306a36Sopenharmony_ci{"nand",	XRC(31,476,0),	X_MASK,	     COM,	0,		{RA, RS, RB}},
572262306a36Sopenharmony_ci{"nand.",	XRC(31,476,1),	X_MASK,	     COM,	0,		{RA, RS, RB}},
572362306a36Sopenharmony_ci
572462306a36Sopenharmony_ci{"dsn",		X(31,483),	XRT_MASK,    E500MC,	0,		{RA, RB}},
572562306a36Sopenharmony_ci
572662306a36Sopenharmony_ci{"dcread",	X(31,486),	X_MASK,	 PPC403|PPC440, PPCA2|PPC476,	{RT, RA0, RB}},
572762306a36Sopenharmony_ci
572862306a36Sopenharmony_ci{"icbtls",	X(31,486),	X_MASK,	 PPCCHLK|PPC476|TITAN, 0,	{CT, RA0, RB}},
572962306a36Sopenharmony_ci
573062306a36Sopenharmony_ci{"stvxl",	X(31,487),	X_MASK,	     PPCVEC,	0,		{VS, RA0, RB}},
573162306a36Sopenharmony_ci
573262306a36Sopenharmony_ci{"nabs",	XO(31,488,0,0),	XORB_MASK,   M601,	0,		{RT, RA}},
573362306a36Sopenharmony_ci{"nabs.",	XO(31,488,0,1),	XORB_MASK,   M601,	0,		{RT, RA}},
573462306a36Sopenharmony_ci
573562306a36Sopenharmony_ci{"divd",	XO(31,489,0,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
573662306a36Sopenharmony_ci{"divd.",	XO(31,489,0,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
573762306a36Sopenharmony_ci
573862306a36Sopenharmony_ci{"divw",	XO(31,491,0,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
573962306a36Sopenharmony_ci{"divw.",	XO(31,491,0,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
574062306a36Sopenharmony_ci
574162306a36Sopenharmony_ci{"icbtlse",	X(31,494),	X_MASK,	     PPCCHLK,	E500MC,		{CT, RA, RB}},
574262306a36Sopenharmony_ci
574362306a36Sopenharmony_ci{"slbia",	X(31,498),	0xff1fffff,  POWER6,	0,		{IH}},
574462306a36Sopenharmony_ci{"slbia",	X(31,498),	0xffffffff,  PPC64,	POWER6,		{0}},
574562306a36Sopenharmony_ci
574662306a36Sopenharmony_ci{"cli",		X(31,502),	XRB_MASK,    POWER,	0,		{RT, RA}},
574762306a36Sopenharmony_ci
574862306a36Sopenharmony_ci{"popcntd",	X(31,506),	XRB_MASK, POWER7|PPCA2,	0,		{RA, RS}},
574962306a36Sopenharmony_ci
575062306a36Sopenharmony_ci{"cmpb",	X(31,508),	X_MASK, POWER6|PPCA2|PPC476, 0,		{RA, RS, RB}},
575162306a36Sopenharmony_ci
575262306a36Sopenharmony_ci{"mcrxr",	X(31,512),	XBFRARB_MASK, COM,	POWER7,		{BF}},
575362306a36Sopenharmony_ci
575462306a36Sopenharmony_ci{"lbdcbx",	X(31,514),	X_MASK,      E200Z4,	0,		{RT, RA, RB}},
575562306a36Sopenharmony_ci{"lbdx",	X(31,515),	X_MASK,	     E500MC,	0,		{RT, RA, RB}},
575662306a36Sopenharmony_ci
575762306a36Sopenharmony_ci{"bblels",	X(31,518),	X_MASK,	     PPCBRLK,	0,		{0}},
575862306a36Sopenharmony_ci
575962306a36Sopenharmony_ci{"lvlx",	X(31,519),	X_MASK,	     CELL,	0,		{VD, RA0, RB}},
576062306a36Sopenharmony_ci{"lbfcmux",	APU(31,519,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
576162306a36Sopenharmony_ci
576262306a36Sopenharmony_ci{"subfco",	XO(31,8,1,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
576362306a36Sopenharmony_ci{"sfo",		XO(31,8,1,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
576462306a36Sopenharmony_ci{"subco",	XO(31,8,1,0),	XO_MASK,     PPCCOM,	0,		{RT, RB, RA}},
576562306a36Sopenharmony_ci{"subfco.",	XO(31,8,1,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
576662306a36Sopenharmony_ci{"sfo.",	XO(31,8,1,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
576762306a36Sopenharmony_ci{"subco.",	XO(31,8,1,1),	XO_MASK,     PPCCOM,	0,		{RT, RB, RA}},
576862306a36Sopenharmony_ci
576962306a36Sopenharmony_ci{"addco",	XO(31,10,1,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
577062306a36Sopenharmony_ci{"ao",		XO(31,10,1,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
577162306a36Sopenharmony_ci{"addco.",	XO(31,10,1,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
577262306a36Sopenharmony_ci{"ao.",		XO(31,10,1,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
577362306a36Sopenharmony_ci
577462306a36Sopenharmony_ci{"lxsspx",	X(31,524),	XX1_MASK,    PPCVSX2,	0,		{XT6, RA0, RB}},
577562306a36Sopenharmony_ci
577662306a36Sopenharmony_ci{"clcs",	X(31,531),	XRB_MASK,    M601,	0,		{RT, RA}},
577762306a36Sopenharmony_ci
577862306a36Sopenharmony_ci{"ldbrx",	X(31,532),	X_MASK, CELL|POWER7|PPCA2, 0,		{RT, RA0, RB}},
577962306a36Sopenharmony_ci
578062306a36Sopenharmony_ci{"lswx",	X(31,533),	X_MASK,	     PPCCOM,	E500|E500MC,	{RT, RAX, RBX}},
578162306a36Sopenharmony_ci{"lsx",		X(31,533),	X_MASK,	     PWRCOM,	0,		{RT, RA, RB}},
578262306a36Sopenharmony_ci
578362306a36Sopenharmony_ci{"lwbrx",	X(31,534),	X_MASK,	     PPCCOM,	0,		{RT, RA0, RB}},
578462306a36Sopenharmony_ci{"lbrx",	X(31,534),	X_MASK,	     PWRCOM,	0,		{RT, RA, RB}},
578562306a36Sopenharmony_ci
578662306a36Sopenharmony_ci{"lfsx",	X(31,535),	X_MASK,	     COM,	PPCEFS,		{FRT, RA0, RB}},
578762306a36Sopenharmony_ci
578862306a36Sopenharmony_ci{"srw",		XRC(31,536,0),	X_MASK,	     PPCCOM,	0,		{RA, RS, RB}},
578962306a36Sopenharmony_ci{"sr",		XRC(31,536,0),	X_MASK,	     PWRCOM,	0,		{RA, RS, RB}},
579062306a36Sopenharmony_ci{"srw.",	XRC(31,536,1),	X_MASK,	     PPCCOM,	0,		{RA, RS, RB}},
579162306a36Sopenharmony_ci{"sr.",		XRC(31,536,1),	X_MASK,	     PWRCOM,	0,		{RA, RS, RB}},
579262306a36Sopenharmony_ci
579362306a36Sopenharmony_ci{"rrib",	XRC(31,537,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
579462306a36Sopenharmony_ci{"rrib.",	XRC(31,537,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
579562306a36Sopenharmony_ci
579662306a36Sopenharmony_ci{"cnttzw",	XRC(31,538,0),	XRB_MASK,    POWER9,	0,		{RA, RS}},
579762306a36Sopenharmony_ci{"cnttzw.",	XRC(31,538,1),	XRB_MASK,    POWER9,	0,		{RA, RS}},
579862306a36Sopenharmony_ci
579962306a36Sopenharmony_ci{"srd",		XRC(31,539,0),	X_MASK,	     PPC64,	0,		{RA, RS, RB}},
580062306a36Sopenharmony_ci{"srd.",	XRC(31,539,1),	X_MASK,	     PPC64,	0,		{RA, RS, RB}},
580162306a36Sopenharmony_ci
580262306a36Sopenharmony_ci{"maskir",	XRC(31,541,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
580362306a36Sopenharmony_ci{"maskir.",	XRC(31,541,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
580462306a36Sopenharmony_ci
580562306a36Sopenharmony_ci{"lhdcbx",	X(31,546),	X_MASK,      E200Z4,	0,		{RT, RA, RB}},
580662306a36Sopenharmony_ci{"lhdx",	X(31,547),	X_MASK,	     E500MC,	0,		{RT, RA, RB}},
580762306a36Sopenharmony_ci
580862306a36Sopenharmony_ci{"lvtrx",	X(31,549),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
580962306a36Sopenharmony_ci
581062306a36Sopenharmony_ci{"bbelr",	X(31,550),	X_MASK,	     PPCBRLK,	0,		{0}},
581162306a36Sopenharmony_ci
581262306a36Sopenharmony_ci{"lvrx",	X(31,551),	X_MASK,	     CELL,	0,		{VD, RA0, RB}},
581362306a36Sopenharmony_ci{"lhfcmux",	APU(31,551,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
581462306a36Sopenharmony_ci
581562306a36Sopenharmony_ci{"subfo",	XO(31,40,1,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
581662306a36Sopenharmony_ci{"subo",	XO(31,40,1,0),	XO_MASK,     PPC,	0,		{RT, RB, RA}},
581762306a36Sopenharmony_ci{"subfo.",	XO(31,40,1,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
581862306a36Sopenharmony_ci{"subo.",	XO(31,40,1,1),	XO_MASK,     PPC,	0,		{RT, RB, RA}},
581962306a36Sopenharmony_ci
582062306a36Sopenharmony_ci{"tlbsync",	X(31,566),	0xffffffff,  PPC,	0,		{0}},
582162306a36Sopenharmony_ci
582262306a36Sopenharmony_ci{"lfsux",	X(31,567),	X_MASK,	     COM,	PPCEFS,		{FRT, RAS, RB}},
582362306a36Sopenharmony_ci
582462306a36Sopenharmony_ci{"cnttzd",	XRC(31,570,0),	XRB_MASK,    POWER9,	0,		{RA, RS}},
582562306a36Sopenharmony_ci{"cnttzd.",	XRC(31,570,1),	XRB_MASK,    POWER9,	0,		{RA, RS}},
582662306a36Sopenharmony_ci
582762306a36Sopenharmony_ci{"mcrxrx",	X(31,576),     XBFRARB_MASK, POWER9,	0,		{BF}},
582862306a36Sopenharmony_ci
582962306a36Sopenharmony_ci{"lwdcbx",	X(31,578),	X_MASK,      E200Z4,	0,		{RT, RA, RB}},
583062306a36Sopenharmony_ci{"lwdx",	X(31,579),	X_MASK,	     E500MC,	0,		{RT, RA, RB}},
583162306a36Sopenharmony_ci
583262306a36Sopenharmony_ci{"lvtlx",	X(31,581),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
583362306a36Sopenharmony_ci
583462306a36Sopenharmony_ci{"lwat",	X(31,582),	X_MASK,	     POWER9,	0,		{RT, RA0, FC}},
583562306a36Sopenharmony_ci
583662306a36Sopenharmony_ci{"lwfcmux",	APU(31,583,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
583762306a36Sopenharmony_ci
583862306a36Sopenharmony_ci{"lxsdx",	X(31,588),	XX1_MASK,    PPCVSX,	0,		{XT6, RA0, RB}},
583962306a36Sopenharmony_ci
584062306a36Sopenharmony_ci{"mfsr",	X(31,595), XRB_MASK|(1<<20), COM,	NON32,		{RT, SR}},
584162306a36Sopenharmony_ci
584262306a36Sopenharmony_ci{"lswi",	X(31,597),	X_MASK,	     PPCCOM,	E500|E500MC,	{RT, RAX, NBI}},
584362306a36Sopenharmony_ci{"lsi",		X(31,597),	X_MASK,	     PWRCOM,	0,		{RT, RA0, NB}},
584462306a36Sopenharmony_ci
584562306a36Sopenharmony_ci{"hwsync",	XSYNC(31,598,0), 0xffffffff, POWER4,	BOOKE|PPC476,	{0}},
584662306a36Sopenharmony_ci{"lwsync",	XSYNC(31,598,1), 0xffffffff, PPC,	E500,		{0}},
584762306a36Sopenharmony_ci{"ptesync",	XSYNC(31,598,2), 0xffffffff, PPC64,	0,		{0}},
584862306a36Sopenharmony_ci{"sync",	X(31,598),     XSYNCLE_MASK, E6500,	0,		{LS, ESYNC}},
584962306a36Sopenharmony_ci{"sync",	X(31,598),     XSYNC_MASK,   PPCCOM,	BOOKE|PPC476,	{LS}},
585062306a36Sopenharmony_ci{"msync",	X(31,598),     0xffffffff, BOOKE|PPCA2|PPC476, 0,	{0}},
585162306a36Sopenharmony_ci{"sync",	X(31,598),     0xffffffff,   BOOKE|PPC476, E6500,	{0}},
585262306a36Sopenharmony_ci{"lwsync",	X(31,598),     0xffffffff,   E500,	0,		{0}},
585362306a36Sopenharmony_ci{"dcs",		X(31,598),     0xffffffff,   PWRCOM,	0,		{0}},
585462306a36Sopenharmony_ci
585562306a36Sopenharmony_ci{"lfdx",	X(31,599),	X_MASK,	     COM,	PPCEFS,		{FRT, RA0, RB}},
585662306a36Sopenharmony_ci
585762306a36Sopenharmony_ci{"mffgpr",	XRC(31,607,0),	XRA_MASK,    POWER6,	POWER7,		{FRT, RB}},
585862306a36Sopenharmony_ci{"lfdepx",	X(31,607),	X_MASK,	  E500MC|PPCA2, 0,		{FRT, RA0, RB}},
585962306a36Sopenharmony_ci
586062306a36Sopenharmony_ci{"lddx",	X(31,611),	X_MASK,	     E500MC,	0,		{RT, RA, RB}},
586162306a36Sopenharmony_ci
586262306a36Sopenharmony_ci{"lvswx",	X(31,613),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
586362306a36Sopenharmony_ci
586462306a36Sopenharmony_ci{"ldat",	X(31,614),	X_MASK,	     POWER9,	0,		{RT, RA0, FC}},
586562306a36Sopenharmony_ci
586662306a36Sopenharmony_ci{"lqfcmux",	APU(31,615,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
586762306a36Sopenharmony_ci
586862306a36Sopenharmony_ci{"nego",	XO(31,104,1,0),	XORB_MASK,   COM,	0,		{RT, RA}},
586962306a36Sopenharmony_ci{"nego.",	XO(31,104,1,1),	XORB_MASK,   COM,	0,		{RT, RA}},
587062306a36Sopenharmony_ci
587162306a36Sopenharmony_ci{"mulo",	XO(31,107,1,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
587262306a36Sopenharmony_ci{"mulo.",	XO(31,107,1,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
587362306a36Sopenharmony_ci
587462306a36Sopenharmony_ci{"mfsri",	X(31,627),	X_MASK,	     M601,	0,		{RT, RA, RB}},
587562306a36Sopenharmony_ci
587662306a36Sopenharmony_ci{"dclst",	X(31,630),	XRB_MASK,    M601,	0,		{RS, RA}},
587762306a36Sopenharmony_ci
587862306a36Sopenharmony_ci{"lfdux",	X(31,631),	X_MASK,	     COM,	PPCEFS,		{FRT, RAS, RB}},
587962306a36Sopenharmony_ci
588062306a36Sopenharmony_ci{"stbdcbx",	X(31,642),	X_MASK,      E200Z4,	0,		{RS, RA, RB}},
588162306a36Sopenharmony_ci{"stbdx",	X(31,643),	X_MASK,	     E500MC,	0,		{RS, RA, RB}},
588262306a36Sopenharmony_ci
588362306a36Sopenharmony_ci{"stvlx",	X(31,647),	X_MASK,	     CELL,	0,		{VS, RA0, RB}},
588462306a36Sopenharmony_ci{"stbfcmux",	APU(31,647,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
588562306a36Sopenharmony_ci
588662306a36Sopenharmony_ci{"stxsspx",	X(31,652),	XX1_MASK,    PPCVSX2,	0,		{XS6, RA0, RB}},
588762306a36Sopenharmony_ci
588862306a36Sopenharmony_ci{"tbegin.",	XRC(31,654,1), XRTLRARB_MASK, PPCHTM,	0,		{HTM_R}},
588962306a36Sopenharmony_ci
589062306a36Sopenharmony_ci{"subfeo",	XO(31,136,1,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
589162306a36Sopenharmony_ci{"sfeo",	XO(31,136,1,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
589262306a36Sopenharmony_ci{"subfeo.",	XO(31,136,1,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
589362306a36Sopenharmony_ci{"sfeo.",	XO(31,136,1,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
589462306a36Sopenharmony_ci
589562306a36Sopenharmony_ci{"addeo",	XO(31,138,1,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
589662306a36Sopenharmony_ci{"aeo",		XO(31,138,1,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
589762306a36Sopenharmony_ci{"addeo.",	XO(31,138,1,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
589862306a36Sopenharmony_ci{"aeo.",	XO(31,138,1,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
589962306a36Sopenharmony_ci
590062306a36Sopenharmony_ci{"mfsrin",	X(31,659),	XRA_MASK,    PPC,	NON32,		{RT, RB}},
590162306a36Sopenharmony_ci
590262306a36Sopenharmony_ci{"stdbrx",	X(31,660),	X_MASK, CELL|POWER7|PPCA2, 0,		{RS, RA0, RB}},
590362306a36Sopenharmony_ci
590462306a36Sopenharmony_ci{"stswx",	X(31,661),	X_MASK,	     PPCCOM,	E500|E500MC,	{RS, RA0, RB}},
590562306a36Sopenharmony_ci{"stsx",	X(31,661),	X_MASK,	     PWRCOM,	0,		{RS, RA0, RB}},
590662306a36Sopenharmony_ci
590762306a36Sopenharmony_ci{"stwbrx",	X(31,662),	X_MASK,	     PPCCOM,	0,		{RS, RA0, RB}},
590862306a36Sopenharmony_ci{"stbrx",	X(31,662),	X_MASK,	     PWRCOM,	0,		{RS, RA0, RB}},
590962306a36Sopenharmony_ci
591062306a36Sopenharmony_ci{"stfsx",	X(31,663),	X_MASK,	     COM,	PPCEFS,		{FRS, RA0, RB}},
591162306a36Sopenharmony_ci
591262306a36Sopenharmony_ci{"srq",		XRC(31,664,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
591362306a36Sopenharmony_ci{"srq.",	XRC(31,664,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
591462306a36Sopenharmony_ci
591562306a36Sopenharmony_ci{"sre",		XRC(31,665,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
591662306a36Sopenharmony_ci{"sre.",	XRC(31,665,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
591762306a36Sopenharmony_ci
591862306a36Sopenharmony_ci{"sthdcbx",	X(31,674),	X_MASK,      E200Z4,	0,		{RS, RA, RB}},
591962306a36Sopenharmony_ci{"sthdx",	X(31,675),	X_MASK,	     E500MC,	0,		{RS, RA, RB}},
592062306a36Sopenharmony_ci
592162306a36Sopenharmony_ci{"stvfrx",	X(31,677),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
592262306a36Sopenharmony_ci
592362306a36Sopenharmony_ci{"stvrx",	X(31,679),	X_MASK,	     CELL,	0,		{VS, RA0, RB}},
592462306a36Sopenharmony_ci{"sthfcmux",	APU(31,679,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
592562306a36Sopenharmony_ci
592662306a36Sopenharmony_ci{"tendall.",	XRC(31,686,1)|(1<<25), XRTRARB_MASK, PPCHTM, 0,		{0}},
592762306a36Sopenharmony_ci{"tend.",	XRC(31,686,1), XRTARARB_MASK, PPCHTM,	0,		{HTM_A}},
592862306a36Sopenharmony_ci
592962306a36Sopenharmony_ci{"stbcx.",	XRC(31,694,1),	X_MASK,	  POWER8|E6500, 0,		{RS, RA0, RB}},
593062306a36Sopenharmony_ci
593162306a36Sopenharmony_ci{"stfsux",	X(31,695),	X_MASK,	     COM,	PPCEFS,		{FRS, RAS, RB}},
593262306a36Sopenharmony_ci
593362306a36Sopenharmony_ci{"sriq",	XRC(31,696,0),	X_MASK,	     M601,	0,		{RA, RS, SH}},
593462306a36Sopenharmony_ci{"sriq.",	XRC(31,696,1),	X_MASK,	     M601,	0,		{RA, RS, SH}},
593562306a36Sopenharmony_ci
593662306a36Sopenharmony_ci{"stwdcbx",	X(31,706),	X_MASK,	     E200Z4,	0,		{RS, RA, RB}},
593762306a36Sopenharmony_ci{"stwdx",	X(31,707),	X_MASK,	     E500MC,	0,		{RS, RA, RB}},
593862306a36Sopenharmony_ci
593962306a36Sopenharmony_ci{"stvflx",	X(31,709),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
594062306a36Sopenharmony_ci
594162306a36Sopenharmony_ci{"stwat",	X(31,710),	X_MASK,	     POWER9,	0,		{RS, RA0, FC}},
594262306a36Sopenharmony_ci
594362306a36Sopenharmony_ci{"stwfcmux",	APU(31,711,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
594462306a36Sopenharmony_ci
594562306a36Sopenharmony_ci{"stxsdx",	X(31,716),	XX1_MASK,    PPCVSX,	0,		{XS6, RA0, RB}},
594662306a36Sopenharmony_ci
594762306a36Sopenharmony_ci{"tcheck",	X(31,718),   XRTBFRARB_MASK, PPCHTM,	0,		{BF}},
594862306a36Sopenharmony_ci
594962306a36Sopenharmony_ci{"subfzeo",	XO(31,200,1,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
595062306a36Sopenharmony_ci{"sfzeo",	XO(31,200,1,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
595162306a36Sopenharmony_ci{"subfzeo.",	XO(31,200,1,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
595262306a36Sopenharmony_ci{"sfzeo.",	XO(31,200,1,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
595362306a36Sopenharmony_ci
595462306a36Sopenharmony_ci{"addzeo",	XO(31,202,1,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
595562306a36Sopenharmony_ci{"azeo",	XO(31,202,1,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
595662306a36Sopenharmony_ci{"addzeo.",	XO(31,202,1,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
595762306a36Sopenharmony_ci{"azeo.",	XO(31,202,1,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
595862306a36Sopenharmony_ci
595962306a36Sopenharmony_ci{"stswi",	X(31,725),	X_MASK,	     PPCCOM,	E500|E500MC,	{RS, RA0, NB}},
596062306a36Sopenharmony_ci{"stsi",	X(31,725),	X_MASK,	     PWRCOM,	0,		{RS, RA0, NB}},
596162306a36Sopenharmony_ci
596262306a36Sopenharmony_ci{"sthcx.",	XRC(31,726,1),	X_MASK,	  POWER8|E6500, 0,		{RS, RA0, RB}},
596362306a36Sopenharmony_ci
596462306a36Sopenharmony_ci{"stfdx",	X(31,727),	X_MASK,	     COM,	PPCEFS,		{FRS, RA0, RB}},
596562306a36Sopenharmony_ci
596662306a36Sopenharmony_ci{"srlq",	XRC(31,728,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
596762306a36Sopenharmony_ci{"srlq.",	XRC(31,728,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
596862306a36Sopenharmony_ci
596962306a36Sopenharmony_ci{"sreq",	XRC(31,729,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
597062306a36Sopenharmony_ci{"sreq.",	XRC(31,729,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
597162306a36Sopenharmony_ci
597262306a36Sopenharmony_ci{"mftgpr",	XRC(31,735,0),	XRA_MASK,    POWER6,	POWER7,		{RT, FRB}},
597362306a36Sopenharmony_ci{"stfdepx",	X(31,735),	X_MASK,	  E500MC|PPCA2, 0,		{FRS, RA0, RB}},
597462306a36Sopenharmony_ci
597562306a36Sopenharmony_ci{"stddx",	X(31,739),	X_MASK,	     E500MC,	0,		{RS, RA, RB}},
597662306a36Sopenharmony_ci
597762306a36Sopenharmony_ci{"stvswx",	X(31,741),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
597862306a36Sopenharmony_ci
597962306a36Sopenharmony_ci{"stdat",	X(31,742),	X_MASK,	     POWER9,	0,		{RS, RA0, FC}},
598062306a36Sopenharmony_ci
598162306a36Sopenharmony_ci{"stqfcmux",	APU(31,743,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
598262306a36Sopenharmony_ci
598362306a36Sopenharmony_ci{"subfmeo",	XO(31,232,1,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
598462306a36Sopenharmony_ci{"sfmeo",	XO(31,232,1,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
598562306a36Sopenharmony_ci{"subfmeo.",	XO(31,232,1,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
598662306a36Sopenharmony_ci{"sfmeo.",	XO(31,232,1,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
598762306a36Sopenharmony_ci
598862306a36Sopenharmony_ci{"mulldo",	XO(31,233,1,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
598962306a36Sopenharmony_ci{"mulldo.",	XO(31,233,1,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
599062306a36Sopenharmony_ci
599162306a36Sopenharmony_ci{"addmeo",	XO(31,234,1,0),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
599262306a36Sopenharmony_ci{"ameo",	XO(31,234,1,0),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
599362306a36Sopenharmony_ci{"addmeo.",	XO(31,234,1,1),	XORB_MASK,   PPCCOM,	0,		{RT, RA}},
599462306a36Sopenharmony_ci{"ameo.",	XO(31,234,1,1),	XORB_MASK,   PWRCOM,	0,		{RT, RA}},
599562306a36Sopenharmony_ci
599662306a36Sopenharmony_ci{"mullwo",	XO(31,235,1,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
599762306a36Sopenharmony_ci{"mulso",	XO(31,235,1,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
599862306a36Sopenharmony_ci{"mullwo.",	XO(31,235,1,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
599962306a36Sopenharmony_ci{"mulso.",	XO(31,235,1,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
600062306a36Sopenharmony_ci
600162306a36Sopenharmony_ci{"tsuspend.",	XRCL(31,750,0,1), XRTRARB_MASK,PPCHTM,	0,		{0}},
600262306a36Sopenharmony_ci{"tresume.",	XRCL(31,750,1,1), XRTRARB_MASK,PPCHTM,	0,		{0}},
600362306a36Sopenharmony_ci{"tsr.",	XRC(31,750,1),	  XRTLRARB_MASK,PPCHTM,	0,		{L}},
600462306a36Sopenharmony_ci
600562306a36Sopenharmony_ci{"darn",	X(31,755),	XLRAND_MASK, POWER9,	0,		{RT, LRAND}},
600662306a36Sopenharmony_ci
600762306a36Sopenharmony_ci{"dcba",	X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE|PPCA2|PPC476, 0, {RA0, RB}},
600862306a36Sopenharmony_ci{"dcbal",	XOPL(31,758,1), XRT_MASK,    E500MC,	0,		{RA0, RB}},
600962306a36Sopenharmony_ci
601062306a36Sopenharmony_ci{"stfdux",	X(31,759),	X_MASK,	     COM,	PPCEFS,		{FRS, RAS, RB}},
601162306a36Sopenharmony_ci
601262306a36Sopenharmony_ci{"srliq",	XRC(31,760,0),	X_MASK,	     M601,	0,		{RA, RS, SH}},
601362306a36Sopenharmony_ci{"srliq.",	XRC(31,760,1),	X_MASK,	     M601,	0,		{RA, RS, SH}},
601462306a36Sopenharmony_ci
601562306a36Sopenharmony_ci{"lvsm",	X(31,773),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
601662306a36Sopenharmony_ci
601762306a36Sopenharmony_ci{"copy",	XOPL(31,774,1),	XRT_MASK,    POWER9,	0,		{RA0, RB}},
601862306a36Sopenharmony_ci
601962306a36Sopenharmony_ci{"stvepxl",	X(31,775),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
602062306a36Sopenharmony_ci{"lvlxl",	X(31,775),	X_MASK,	     CELL,	0,		{VD, RA0, RB}},
602162306a36Sopenharmony_ci{"ldfcmux",	APU(31,775,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
602262306a36Sopenharmony_ci
602362306a36Sopenharmony_ci{"dozo",	XO(31,264,1,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
602462306a36Sopenharmony_ci{"dozo.",	XO(31,264,1,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
602562306a36Sopenharmony_ci
602662306a36Sopenharmony_ci{"addo",	XO(31,266,1,0),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
602762306a36Sopenharmony_ci{"caxo",	XO(31,266,1,0),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
602862306a36Sopenharmony_ci{"addo.",	XO(31,266,1,1),	XO_MASK,     PPCCOM,	0,		{RT, RA, RB}},
602962306a36Sopenharmony_ci{"caxo.",	XO(31,266,1,1),	XO_MASK,     PWRCOM,	0,		{RT, RA, RB}},
603062306a36Sopenharmony_ci
603162306a36Sopenharmony_ci{"modsd",	X(31,777),	X_MASK,	     POWER9,	0,		{RT, RA, RB}},
603262306a36Sopenharmony_ci{"modsw",	X(31,779),	X_MASK,	     POWER9,	0,		{RT, RA, RB}},
603362306a36Sopenharmony_ci
603462306a36Sopenharmony_ci{"lxvw4x",	X(31,780),	XX1_MASK,    PPCVSX,	0,		{XT6, RA0, RB}},
603562306a36Sopenharmony_ci{"lxsibzx",	X(31,781),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
603662306a36Sopenharmony_ci
603762306a36Sopenharmony_ci{"tabortwc.",	XRC(31,782,1),	X_MASK,	     PPCHTM,	0,		{TO, RA, RB}},
603862306a36Sopenharmony_ci
603962306a36Sopenharmony_ci{"tlbivax",	X(31,786),	XRT_MASK, BOOKE|PPCA2|PPC476, 0,	{RA0, RB}},
604062306a36Sopenharmony_ci
604162306a36Sopenharmony_ci{"lwzcix",	X(31,789),	X_MASK,	     POWER6,	0,		{RT, RA0, RB}},
604262306a36Sopenharmony_ci
604362306a36Sopenharmony_ci{"lhbrx",	X(31,790),	X_MASK,	     COM,	0,		{RT, RA0, RB}},
604462306a36Sopenharmony_ci
604562306a36Sopenharmony_ci{"lfdpx",	X(31,791),	X_MASK,	     POWER6,	POWER7,		{FRTp, RA0, RB}},
604662306a36Sopenharmony_ci{"lfqx",	X(31,791),	X_MASK,	     POWER2,	0,		{FRT, RA, RB}},
604762306a36Sopenharmony_ci
604862306a36Sopenharmony_ci{"sraw",	XRC(31,792,0),	X_MASK,	     PPCCOM,	0,		{RA, RS, RB}},
604962306a36Sopenharmony_ci{"sra",		XRC(31,792,0),	X_MASK,	     PWRCOM,	0,		{RA, RS, RB}},
605062306a36Sopenharmony_ci{"sraw.",	XRC(31,792,1),	X_MASK,	     PPCCOM,	0,		{RA, RS, RB}},
605162306a36Sopenharmony_ci{"sra.",	XRC(31,792,1),	X_MASK,	     PWRCOM,	0,		{RA, RS, RB}},
605262306a36Sopenharmony_ci
605362306a36Sopenharmony_ci{"srad",	XRC(31,794,0),	X_MASK,	     PPC64,	0,		{RA, RS, RB}},
605462306a36Sopenharmony_ci{"srad.",	XRC(31,794,1),	X_MASK,	     PPC64,	0,		{RA, RS, RB}},
605562306a36Sopenharmony_ci
605662306a36Sopenharmony_ci{"lfddx",	X(31,803),	X_MASK,	     E500MC,	0,		{FRT, RA, RB}},
605762306a36Sopenharmony_ci
605862306a36Sopenharmony_ci{"lvtrxl",	X(31,805),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
605962306a36Sopenharmony_ci{"stvepx",	X(31,807),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
606062306a36Sopenharmony_ci{"lvrxl",	X(31,807),	X_MASK,	     CELL,	0,		{VD, RA0, RB}},
606162306a36Sopenharmony_ci
606262306a36Sopenharmony_ci{"lxvh8x",	X(31,812),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
606362306a36Sopenharmony_ci{"lxsihzx",	X(31,813),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
606462306a36Sopenharmony_ci
606562306a36Sopenharmony_ci{"tabortdc.",	XRC(31,814,1),	X_MASK,	     PPCHTM,	0,		{TO, RA, RB}},
606662306a36Sopenharmony_ci
606762306a36Sopenharmony_ci{"rac",		X(31,818),	X_MASK,	     M601,	0,		{RT, RA, RB}},
606862306a36Sopenharmony_ci
606962306a36Sopenharmony_ci{"erativax",	X(31,819),	X_MASK,	     PPCA2,	0,		{RS, RA0, RB}},
607062306a36Sopenharmony_ci
607162306a36Sopenharmony_ci{"lhzcix",	X(31,821),	X_MASK,	     POWER6,	0,		{RT, RA0, RB}},
607262306a36Sopenharmony_ci
607362306a36Sopenharmony_ci{"dss",		XDSS(31,822,0),	XDSS_MASK,   PPCVEC,	0,		{STRM}},
607462306a36Sopenharmony_ci
607562306a36Sopenharmony_ci{"lfqux",	X(31,823),	X_MASK,	     POWER2,	0,		{FRT, RA, RB}},
607662306a36Sopenharmony_ci
607762306a36Sopenharmony_ci{"srawi",	XRC(31,824,0),	X_MASK,	     PPCCOM,	0,		{RA, RS, SH}},
607862306a36Sopenharmony_ci{"srai",	XRC(31,824,0),	X_MASK,	     PWRCOM,	0,		{RA, RS, SH}},
607962306a36Sopenharmony_ci{"srawi.",	XRC(31,824,1),	X_MASK,	     PPCCOM,	0,		{RA, RS, SH}},
608062306a36Sopenharmony_ci{"srai.",	XRC(31,824,1),	X_MASK,	     PWRCOM,	0,		{RA, RS, SH}},
608162306a36Sopenharmony_ci
608262306a36Sopenharmony_ci{"sradi",	XS(31,413,0),	XS_MASK,     PPC64,	0,		{RA, RS, SH6}},
608362306a36Sopenharmony_ci{"sradi.",	XS(31,413,1),	XS_MASK,     PPC64,	0,		{RA, RS, SH6}},
608462306a36Sopenharmony_ci
608562306a36Sopenharmony_ci{"lvtlxl",	X(31,837),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
608662306a36Sopenharmony_ci
608762306a36Sopenharmony_ci{"cpabort",	X(31,838),	XRTRARB_MASK,POWER9,	0,		{0}},
608862306a36Sopenharmony_ci
608962306a36Sopenharmony_ci{"divo",	XO(31,331,1,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
609062306a36Sopenharmony_ci{"divo.",	XO(31,331,1,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
609162306a36Sopenharmony_ci
609262306a36Sopenharmony_ci{"lxvd2x",	X(31,844),	XX1_MASK,    PPCVSX,	0,		{XT6, RA0, RB}},
609362306a36Sopenharmony_ci{"lxvx",	X(31,844),	XX1_MASK,    POWER8,	POWER9|PPCVSX3,	{XT6, RA0, RB}},
609462306a36Sopenharmony_ci
609562306a36Sopenharmony_ci{"tabortwci.",	XRC(31,846,1),	X_MASK,	     PPCHTM,	0,		{TO, RA, HTM_SI}},
609662306a36Sopenharmony_ci
609762306a36Sopenharmony_ci{"tlbsrx.",	XRC(31,850,1),	XRT_MASK,    PPCA2,	0,		{RA0, RB}},
609862306a36Sopenharmony_ci
609962306a36Sopenharmony_ci{"slbiag",	X(31,850),	XRARB_MASK,  POWER9,	0,		{RS}},
610062306a36Sopenharmony_ci{"slbmfev",	X(31,851),	XRLA_MASK,   POWER9,	0,		{RT, RB, A_L}},
610162306a36Sopenharmony_ci{"slbmfev",	X(31,851),	XRA_MASK,    PPC64,	POWER9,		{RT, RB}},
610262306a36Sopenharmony_ci
610362306a36Sopenharmony_ci{"lbzcix",	X(31,853),	X_MASK,	     POWER6,	0,		{RT, RA0, RB}},
610462306a36Sopenharmony_ci
610562306a36Sopenharmony_ci{"eieio",	X(31,854),	0xffffffff,  PPC,   BOOKE|PPCA2|PPC476,	{0}},
610662306a36Sopenharmony_ci{"mbar",	X(31,854),	X_MASK,	   BOOKE|PPCA2|PPC476, 0,	{MO}},
610762306a36Sopenharmony_ci{"eieio",	XMBAR(31,854,1),0xffffffff,  E500,	0,		{0}},
610862306a36Sopenharmony_ci{"eieio",	X(31,854),	0xffffffff, PPCA2|PPC476, 0,		{0}},
610962306a36Sopenharmony_ci
611062306a36Sopenharmony_ci{"lfiwax",	X(31,855),	X_MASK, POWER6|PPCA2|PPC476, 0,		{FRT, RA0, RB}},
611162306a36Sopenharmony_ci
611262306a36Sopenharmony_ci{"lvswxl",	X(31,869),	X_MASK,	     PPCVEC2,	0,		{VD, RA0, RB}},
611362306a36Sopenharmony_ci
611462306a36Sopenharmony_ci{"abso",	XO(31,360,1,0),	XORB_MASK,   M601,	0,		{RT, RA}},
611562306a36Sopenharmony_ci{"abso.",	XO(31,360,1,1),	XORB_MASK,   M601,	0,		{RT, RA}},
611662306a36Sopenharmony_ci
611762306a36Sopenharmony_ci{"divso",	XO(31,363,1,0),	XO_MASK,     M601,	0,		{RT, RA, RB}},
611862306a36Sopenharmony_ci{"divso.",	XO(31,363,1,1),	XO_MASK,     M601,	0,		{RT, RA, RB}},
611962306a36Sopenharmony_ci
612062306a36Sopenharmony_ci{"lxvb16x",	X(31,876),	XX1_MASK,    PPCVSX3,	0,		{XT6, RA0, RB}},
612162306a36Sopenharmony_ci
612262306a36Sopenharmony_ci{"tabortdci.",	XRC(31,878,1),	X_MASK,	     PPCHTM,	0,		{TO, RA, HTM_SI}},
612362306a36Sopenharmony_ci
612462306a36Sopenharmony_ci{"rmieg",	X(31,882),	XRTRA_MASK,  POWER9,	0,		{RB}},
612562306a36Sopenharmony_ci
612662306a36Sopenharmony_ci{"ldcix",	X(31,885),	X_MASK,	     POWER6,	0,		{RT, RA0, RB}},
612762306a36Sopenharmony_ci
612862306a36Sopenharmony_ci{"msgsync",	X(31,886),	0xffffffff,  POWER9,	0,		{0}},
612962306a36Sopenharmony_ci
613062306a36Sopenharmony_ci{"lfiwzx",	X(31,887),	X_MASK,	  POWER7|PPCA2,	0,		{FRT, RA0, RB}},
613162306a36Sopenharmony_ci
613262306a36Sopenharmony_ci{"extswsli",	XS(31,445,0),	XS_MASK,     POWER9,	0,		{RA, RS, SH6}},
613362306a36Sopenharmony_ci{"extswsli.",	XS(31,445,1),	XS_MASK,     POWER9,	0,		{RA, RS, SH6}},
613462306a36Sopenharmony_ci
613562306a36Sopenharmony_ci{"paste.",	XRCL(31,902,1,1),XRT_MASK,   POWER9,	0,		{RA0, RB}},
613662306a36Sopenharmony_ci
613762306a36Sopenharmony_ci{"stvlxl",	X(31,903),	X_MASK,	     CELL,	0,		{VS, RA0, RB}},
613862306a36Sopenharmony_ci{"stdfcmux",	APU(31,903,0),	APU_MASK,    PPC405,	0,		{FCRT, RA, RB}},
613962306a36Sopenharmony_ci
614062306a36Sopenharmony_ci{"divdeuo",	XO(31,393,1,0),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
614162306a36Sopenharmony_ci{"divdeuo.",	XO(31,393,1,1),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
614262306a36Sopenharmony_ci{"divweuo",	XO(31,395,1,0),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
614362306a36Sopenharmony_ci{"divweuo.",	XO(31,395,1,1),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
614462306a36Sopenharmony_ci
614562306a36Sopenharmony_ci{"stxvw4x",	X(31,908),	XX1_MASK,    PPCVSX,	0,		{XS6, RA0, RB}},
614662306a36Sopenharmony_ci{"stxsibx",	X(31,909),	XX1_MASK,    PPCVSX3,	0,		{XS6, RA0, RB}},
614762306a36Sopenharmony_ci
614862306a36Sopenharmony_ci{"tabort.",	XRC(31,910,1),	XRTRB_MASK,  PPCHTM,	0,		{RA}},
614962306a36Sopenharmony_ci
615062306a36Sopenharmony_ci{"tlbsx",	XRC(31,914,0),	X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,	{RTO, RA0, RB}},
615162306a36Sopenharmony_ci{"tlbsx.",	XRC(31,914,1),	X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,	{RTO, RA0, RB}},
615262306a36Sopenharmony_ci
615362306a36Sopenharmony_ci{"slbmfee",	X(31,915),	XRLA_MASK,   POWER9,	0,		{RT, RB, A_L}},
615462306a36Sopenharmony_ci{"slbmfee",	X(31,915),	XRA_MASK,    PPC64,	POWER9,		{RT, RB}},
615562306a36Sopenharmony_ci
615662306a36Sopenharmony_ci{"stwcix",	X(31,917),	X_MASK,	     POWER6,	0,		{RS, RA0, RB}},
615762306a36Sopenharmony_ci
615862306a36Sopenharmony_ci{"sthbrx",	X(31,918),	X_MASK,	     COM,	0,		{RS, RA0, RB}},
615962306a36Sopenharmony_ci
616062306a36Sopenharmony_ci{"stfdpx",	X(31,919),	X_MASK,	     POWER6,	POWER7,		{FRSp, RA0, RB}},
616162306a36Sopenharmony_ci{"stfqx",	X(31,919),	X_MASK,	     POWER2,	0,		{FRS, RA0, RB}},
616262306a36Sopenharmony_ci
616362306a36Sopenharmony_ci{"sraq",	XRC(31,920,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
616462306a36Sopenharmony_ci{"sraq.",	XRC(31,920,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
616562306a36Sopenharmony_ci
616662306a36Sopenharmony_ci{"srea",	XRC(31,921,0),	X_MASK,	     M601,	0,		{RA, RS, RB}},
616762306a36Sopenharmony_ci{"srea.",	XRC(31,921,1),	X_MASK,	     M601,	0,		{RA, RS, RB}},
616862306a36Sopenharmony_ci
616962306a36Sopenharmony_ci{"extsh",	XRC(31,922,0),	XRB_MASK,    PPCCOM,	0,		{RA, RS}},
617062306a36Sopenharmony_ci{"exts",	XRC(31,922,0),	XRB_MASK,    PWRCOM,	0,		{RA, RS}},
617162306a36Sopenharmony_ci{"extsh.",	XRC(31,922,1),	XRB_MASK,    PPCCOM,	0,		{RA, RS}},
617262306a36Sopenharmony_ci{"exts.",	XRC(31,922,1),	XRB_MASK,    PWRCOM,	0,		{RA, RS}},
617362306a36Sopenharmony_ci
617462306a36Sopenharmony_ci{"stfddx",	X(31,931),	X_MASK,	     E500MC,	0,		{FRS, RA, RB}},
617562306a36Sopenharmony_ci
617662306a36Sopenharmony_ci{"stvfrxl",	X(31,933),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
617762306a36Sopenharmony_ci
617862306a36Sopenharmony_ci{"wclrone",	XOPL2(31,934,2),XRT_MASK,    PPCA2,	0,		{RA0, RB}},
617962306a36Sopenharmony_ci{"wclrall",	X(31,934),	XRARB_MASK,  PPCA2,	0,		{L2}},
618062306a36Sopenharmony_ci{"wclr",	X(31,934),	X_MASK,	     PPCA2,	0,		{L2, RA0, RB}},
618162306a36Sopenharmony_ci
618262306a36Sopenharmony_ci{"stvrxl",	X(31,935),	X_MASK,	     CELL,	0,		{VS, RA0, RB}},
618362306a36Sopenharmony_ci
618462306a36Sopenharmony_ci{"divdeo",	XO(31,425,1,0),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
618562306a36Sopenharmony_ci{"divdeo.",	XO(31,425,1,1),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
618662306a36Sopenharmony_ci{"divweo",	XO(31,427,1,0),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
618762306a36Sopenharmony_ci{"divweo.",	XO(31,427,1,1),	XO_MASK,  POWER7|PPCA2,	0,		{RT, RA, RB}},
618862306a36Sopenharmony_ci
618962306a36Sopenharmony_ci{"stxvh8x",	X(31,940),	XX1_MASK,    PPCVSX3,	0,		{XS6, RA0, RB}},
619062306a36Sopenharmony_ci{"stxsihx",	X(31,941),	XX1_MASK,    PPCVSX3,	0,		{XS6, RA0, RB}},
619162306a36Sopenharmony_ci
619262306a36Sopenharmony_ci{"treclaim.",	XRC(31,942,1),	XRTRB_MASK,  PPCHTM,	0,		{RA}},
619362306a36Sopenharmony_ci
619462306a36Sopenharmony_ci{"tlbrehi",	XTLB(31,946,0),	XTLB_MASK,   PPC403,	PPCA2,		{RT, RA}},
619562306a36Sopenharmony_ci{"tlbrelo",	XTLB(31,946,1),	XTLB_MASK,   PPC403,	PPCA2,		{RT, RA}},
619662306a36Sopenharmony_ci{"tlbre",	X(31,946),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,	{RSO, RAOPT, SHO}},
619762306a36Sopenharmony_ci
619862306a36Sopenharmony_ci{"sthcix",	X(31,949),	X_MASK,	     POWER6,	0,		{RS, RA0, RB}},
619962306a36Sopenharmony_ci
620062306a36Sopenharmony_ci{"icswepx",	XRC(31,950,0),	X_MASK,	     PPCA2,	0,		{RS, RA, RB}},
620162306a36Sopenharmony_ci{"icswepx.",	XRC(31,950,1),	X_MASK,	     PPCA2,	0,		{RS, RA, RB}},
620262306a36Sopenharmony_ci
620362306a36Sopenharmony_ci{"stfqux",	X(31,951),	X_MASK,	     POWER2,	0,		{FRS, RA, RB}},
620462306a36Sopenharmony_ci
620562306a36Sopenharmony_ci{"sraiq",	XRC(31,952,0),	X_MASK,	     M601,	0,		{RA, RS, SH}},
620662306a36Sopenharmony_ci{"sraiq.",	XRC(31,952,1),	X_MASK,	     M601,	0,		{RA, RS, SH}},
620762306a36Sopenharmony_ci
620862306a36Sopenharmony_ci{"extsb",	XRC(31,954,0),	XRB_MASK,    PPC,	0,		{RA, RS}},
620962306a36Sopenharmony_ci{"extsb.",	XRC(31,954,1),	XRB_MASK,    PPC,	0,		{RA, RS}},
621062306a36Sopenharmony_ci
621162306a36Sopenharmony_ci{"stvflxl",	X(31,965),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
621262306a36Sopenharmony_ci
621362306a36Sopenharmony_ci{"iccci",	X(31,966), XRT_MASK, PPC403|PPC440|TITAN|PPCA2, 0,	 {RAOPT, RBOPT}},
621462306a36Sopenharmony_ci{"ici",		X(31,966),	XRARB_MASK,  PPCA2|PPC476, 0,		{CT}},
621562306a36Sopenharmony_ci
621662306a36Sopenharmony_ci{"divduo",	XO(31,457,1,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
621762306a36Sopenharmony_ci{"divduo.",	XO(31,457,1,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
621862306a36Sopenharmony_ci
621962306a36Sopenharmony_ci{"divwuo",	XO(31,459,1,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
622062306a36Sopenharmony_ci{"divwuo.",	XO(31,459,1,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
622162306a36Sopenharmony_ci
622262306a36Sopenharmony_ci{"stxvd2x",	X(31,972),	XX1_MASK,    PPCVSX,	0,		{XS6, RA0, RB}},
622362306a36Sopenharmony_ci{"stxvx",	X(31,972),	XX1_MASK,    POWER8,	POWER9|PPCVSX3,	{XS6, RA0, RB}},
622462306a36Sopenharmony_ci
622562306a36Sopenharmony_ci{"tlbld",	X(31,978),	XRTRA_MASK,  PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}},
622662306a36Sopenharmony_ci{"tlbwehi",	XTLB(31,978,0),	XTLB_MASK,   PPC403,	0,		{RT, RA}},
622762306a36Sopenharmony_ci{"tlbwelo",	XTLB(31,978,1),	XTLB_MASK,   PPC403,	0,		{RT, RA}},
622862306a36Sopenharmony_ci{"tlbwe",	X(31,978),  X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0,	{RSO, RAOPT, SHO}},
622962306a36Sopenharmony_ci
623062306a36Sopenharmony_ci{"slbfee.",	XRC(31,979,1),	XRA_MASK,    POWER6,	0,		{RT, RB}},
623162306a36Sopenharmony_ci
623262306a36Sopenharmony_ci{"stbcix",	X(31,981),	X_MASK,	     POWER6,	0,		{RS, RA0, RB}},
623362306a36Sopenharmony_ci
623462306a36Sopenharmony_ci{"icbi",	X(31,982),	XRT_MASK,    PPC,	0,		{RA0, RB}},
623562306a36Sopenharmony_ci
623662306a36Sopenharmony_ci{"stfiwx",	X(31,983),	X_MASK,	     PPC,	PPCEFS,		{FRS, RA0, RB}},
623762306a36Sopenharmony_ci
623862306a36Sopenharmony_ci{"extsw",	XRC(31,986,0),	XRB_MASK,    PPC64,	0,		{RA, RS}},
623962306a36Sopenharmony_ci{"extsw.",	XRC(31,986,1),	XRB_MASK,    PPC64,	0,		{RA, RS}},
624062306a36Sopenharmony_ci
624162306a36Sopenharmony_ci{"icbiep",	XRT(31,991,0),	XRT_MASK,    E500MC|PPCA2, 0,		{RA0, RB}},
624262306a36Sopenharmony_ci
624362306a36Sopenharmony_ci{"stvswxl",	X(31,997),	X_MASK,	     PPCVEC2,	0,		{VS, RA0, RB}},
624462306a36Sopenharmony_ci
624562306a36Sopenharmony_ci{"icread",	X(31,998),     XRT_MASK, PPC403|PPC440|PPC476|TITAN, 0,	{RA0, RB}},
624662306a36Sopenharmony_ci
624762306a36Sopenharmony_ci{"nabso",	XO(31,488,1,0),	XORB_MASK,   M601,	0,		{RT, RA}},
624862306a36Sopenharmony_ci{"nabso.",	XO(31,488,1,1),	XORB_MASK,   M601,	0,		{RT, RA}},
624962306a36Sopenharmony_ci
625062306a36Sopenharmony_ci{"divdo",	XO(31,489,1,0),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
625162306a36Sopenharmony_ci{"divdo.",	XO(31,489,1,1),	XO_MASK,     PPC64,	0,		{RT, RA, RB}},
625262306a36Sopenharmony_ci
625362306a36Sopenharmony_ci{"divwo",	XO(31,491,1,0),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
625462306a36Sopenharmony_ci{"divwo.",	XO(31,491,1,1),	XO_MASK,     PPC,	0,		{RT, RA, RB}},
625562306a36Sopenharmony_ci
625662306a36Sopenharmony_ci{"stxvb16x",	X(31,1004),	XX1_MASK,    PPCVSX3,	0,		{XS6, RA0, RB}},
625762306a36Sopenharmony_ci
625862306a36Sopenharmony_ci{"trechkpt.",	XRC(31,1006,1),	XRTRARB_MASK,PPCHTM,	0,		{0}},
625962306a36Sopenharmony_ci
626062306a36Sopenharmony_ci{"tlbli",	X(31,1010),	XRTRA_MASK,  PPC,	TITAN,		{RB}},
626162306a36Sopenharmony_ci
626262306a36Sopenharmony_ci{"stdcix",	X(31,1013),	X_MASK,	     POWER6,	0,		{RS, RA0, RB}},
626362306a36Sopenharmony_ci
626462306a36Sopenharmony_ci{"dcbz",	X(31,1014),	XRT_MASK,    PPC,	0,		{RA0, RB}},
626562306a36Sopenharmony_ci{"dclz",	X(31,1014),	XRT_MASK,    PPC,	0,		{RA0, RB}},
626662306a36Sopenharmony_ci
626762306a36Sopenharmony_ci{"dcbzep",	XRT(31,1023,0),	XRT_MASK,    E500MC|PPCA2, 0,		{RA0, RB}},
626862306a36Sopenharmony_ci
626962306a36Sopenharmony_ci{"dcbzl",	XOPL(31,1014,1), XRT_MASK,   POWER4|E500MC, PPC476,	{RA0, RB}},
627062306a36Sopenharmony_ci
627162306a36Sopenharmony_ci{"cctpl",	0x7c210b78,	0xffffffff,  CELL,	0,		{0}},
627262306a36Sopenharmony_ci{"cctpm",	0x7c421378,	0xffffffff,  CELL,	0,		{0}},
627362306a36Sopenharmony_ci{"cctph",	0x7c631b78,	0xffffffff,  CELL,	0,		{0}},
627462306a36Sopenharmony_ci
627562306a36Sopenharmony_ci{"dstt",	XDSS(31,342,1),	XDSS_MASK,   PPCVEC,	0,		{RA, RB, STRM}},
627662306a36Sopenharmony_ci{"dststt",	XDSS(31,374,1),	XDSS_MASK,   PPCVEC,	0,		{RA, RB, STRM}},
627762306a36Sopenharmony_ci{"dssall",	XDSS(31,822,1),	XDSS_MASK,   PPCVEC,	0,		{0}},
627862306a36Sopenharmony_ci
627962306a36Sopenharmony_ci{"db8cyc",	0x7f9ce378,	0xffffffff,  CELL,	0,		{0}},
628062306a36Sopenharmony_ci{"db10cyc",	0x7fbdeb78,	0xffffffff,  CELL,	0,		{0}},
628162306a36Sopenharmony_ci{"db12cyc",	0x7fdef378,	0xffffffff,  CELL,	0,		{0}},
628262306a36Sopenharmony_ci{"db16cyc",	0x7ffffb78,	0xffffffff,  CELL,	0,		{0}},
628362306a36Sopenharmony_ci
628462306a36Sopenharmony_ci{"lwz",		OP(32),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, D, RA0}},
628562306a36Sopenharmony_ci{"l",		OP(32),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, D, RA0}},
628662306a36Sopenharmony_ci
628762306a36Sopenharmony_ci{"lwzu",	OP(33),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, D, RAL}},
628862306a36Sopenharmony_ci{"lu",		OP(33),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, D, RA0}},
628962306a36Sopenharmony_ci
629062306a36Sopenharmony_ci{"lbz",		OP(34),		OP_MASK,     COM,	PPCVLE,		{RT, D, RA0}},
629162306a36Sopenharmony_ci
629262306a36Sopenharmony_ci{"lbzu",	OP(35),		OP_MASK,     COM,	PPCVLE,		{RT, D, RAL}},
629362306a36Sopenharmony_ci
629462306a36Sopenharmony_ci{"stw",		OP(36),		OP_MASK,     PPCCOM,	PPCVLE,		{RS, D, RA0}},
629562306a36Sopenharmony_ci{"st",		OP(36),		OP_MASK,     PWRCOM,	PPCVLE,		{RS, D, RA0}},
629662306a36Sopenharmony_ci
629762306a36Sopenharmony_ci{"stwu",	OP(37),		OP_MASK,     PPCCOM,	PPCVLE,		{RS, D, RAS}},
629862306a36Sopenharmony_ci{"stu",		OP(37),		OP_MASK,     PWRCOM,	PPCVLE,		{RS, D, RA0}},
629962306a36Sopenharmony_ci
630062306a36Sopenharmony_ci{"stb",		OP(38),		OP_MASK,     COM,	PPCVLE,		{RS, D, RA0}},
630162306a36Sopenharmony_ci
630262306a36Sopenharmony_ci{"stbu",	OP(39),		OP_MASK,     COM,	PPCVLE,		{RS, D, RAS}},
630362306a36Sopenharmony_ci
630462306a36Sopenharmony_ci{"lhz",		OP(40),		OP_MASK,     COM,	PPCVLE,		{RT, D, RA0}},
630562306a36Sopenharmony_ci
630662306a36Sopenharmony_ci{"lhzu",	OP(41),		OP_MASK,     COM,	PPCVLE,		{RT, D, RAL}},
630762306a36Sopenharmony_ci
630862306a36Sopenharmony_ci{"lha",		OP(42),		OP_MASK,     COM,	PPCVLE,		{RT, D, RA0}},
630962306a36Sopenharmony_ci
631062306a36Sopenharmony_ci{"lhau",	OP(43),		OP_MASK,     COM,	PPCVLE,		{RT, D, RAL}},
631162306a36Sopenharmony_ci
631262306a36Sopenharmony_ci{"sth",		OP(44),		OP_MASK,     COM,	PPCVLE,		{RS, D, RA0}},
631362306a36Sopenharmony_ci
631462306a36Sopenharmony_ci{"sthu",	OP(45),		OP_MASK,     COM,	PPCVLE,		{RS, D, RAS}},
631562306a36Sopenharmony_ci
631662306a36Sopenharmony_ci{"lmw",		OP(46),		OP_MASK,     PPCCOM,	PPCVLE,		{RT, D, RAM}},
631762306a36Sopenharmony_ci{"lm",		OP(46),		OP_MASK,     PWRCOM,	PPCVLE,		{RT, D, RA0}},
631862306a36Sopenharmony_ci
631962306a36Sopenharmony_ci{"stmw",	OP(47),		OP_MASK,     PPCCOM,	PPCVLE,		{RS, D, RA0}},
632062306a36Sopenharmony_ci{"stm",		OP(47),		OP_MASK,     PWRCOM,	PPCVLE,		{RS, D, RA0}},
632162306a36Sopenharmony_ci
632262306a36Sopenharmony_ci{"lfs",		OP(48),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRT, D, RA0}},
632362306a36Sopenharmony_ci
632462306a36Sopenharmony_ci{"lfsu",	OP(49),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRT, D, RAS}},
632562306a36Sopenharmony_ci
632662306a36Sopenharmony_ci{"lfd",		OP(50),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRT, D, RA0}},
632762306a36Sopenharmony_ci
632862306a36Sopenharmony_ci{"lfdu",	OP(51),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRT, D, RAS}},
632962306a36Sopenharmony_ci
633062306a36Sopenharmony_ci{"stfs",	OP(52),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRS, D, RA0}},
633162306a36Sopenharmony_ci
633262306a36Sopenharmony_ci{"stfsu",	OP(53),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRS, D, RAS}},
633362306a36Sopenharmony_ci
633462306a36Sopenharmony_ci{"stfd",	OP(54),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRS, D, RA0}},
633562306a36Sopenharmony_ci
633662306a36Sopenharmony_ci{"stfdu",	OP(55),		OP_MASK,     COM,	PPCEFS|PPCVLE,	{FRS, D, RAS}},
633762306a36Sopenharmony_ci
633862306a36Sopenharmony_ci{"lq",		OP(56),		OP_MASK,     POWER4,	PPC476|PPCVLE,	{RTQ, DQ, RAQ}},
633962306a36Sopenharmony_ci{"psq_l",	OP(56),		OP_MASK,     PPCPS,	PPCVLE,		{FRT,PSD,RA,PSW,PSQ}},
634062306a36Sopenharmony_ci{"lfq",		OP(56),		OP_MASK,     POWER2,	PPCVLE,		{FRT, D, RA0}},
634162306a36Sopenharmony_ci
634262306a36Sopenharmony_ci{"lxsd",	DSO(57,2),	DS_MASK,     PPCVSX3,	PPCVLE,		{VD, DS, RA0}},
634362306a36Sopenharmony_ci{"lxssp",	DSO(57,3),	DS_MASK,     PPCVSX3,	PPCVLE,		{VD, DS, RA0}},
634462306a36Sopenharmony_ci{"lfdp",	OP(57),		OP_MASK,     POWER6,	POWER7|PPCVLE,	{FRTp, DS, RA0}},
634562306a36Sopenharmony_ci{"psq_lu",	OP(57),		OP_MASK,     PPCPS,	PPCVLE,		{FRT,PSD,RA,PSW,PSQ}},
634662306a36Sopenharmony_ci{"lfqu",	OP(57),		OP_MASK,     POWER2,	PPCVLE,		{FRT, D, RA0}},
634762306a36Sopenharmony_ci
634862306a36Sopenharmony_ci{"ld",		DSO(58,0),	DS_MASK,     PPC64,	PPCVLE,		{RT, DS, RA0}},
634962306a36Sopenharmony_ci{"ldu",		DSO(58,1),	DS_MASK,     PPC64,	PPCVLE,		{RT, DS, RAL}},
635062306a36Sopenharmony_ci{"lwa",		DSO(58,2),	DS_MASK,     PPC64,	PPCVLE,		{RT, DS, RA0}},
635162306a36Sopenharmony_ci
635262306a36Sopenharmony_ci{"dadd",	XRC(59,2,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
635362306a36Sopenharmony_ci{"dadd.",	XRC(59,2,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
635462306a36Sopenharmony_ci
635562306a36Sopenharmony_ci{"dqua",	ZRC(59,3,0),	Z2_MASK,     POWER6,	PPCVLE,		{FRT,FRA,FRB,RMC}},
635662306a36Sopenharmony_ci{"dqua.",	ZRC(59,3,1),	Z2_MASK,     POWER6,	PPCVLE,		{FRT,FRA,FRB,RMC}},
635762306a36Sopenharmony_ci
635862306a36Sopenharmony_ci{"fdivs",	A(59,18,0),	AFRC_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
635962306a36Sopenharmony_ci{"fdivs.",	A(59,18,1),	AFRC_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
636062306a36Sopenharmony_ci
636162306a36Sopenharmony_ci{"fsubs",	A(59,20,0),	AFRC_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
636262306a36Sopenharmony_ci{"fsubs.",	A(59,20,1),	AFRC_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
636362306a36Sopenharmony_ci
636462306a36Sopenharmony_ci{"fadds",	A(59,21,0),	AFRC_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
636562306a36Sopenharmony_ci{"fadds.",	A(59,21,1),	AFRC_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
636662306a36Sopenharmony_ci
636762306a36Sopenharmony_ci{"fsqrts",	A(59,22,0),    AFRAFRC_MASK, PPC,	TITAN|PPCVLE,	{FRT, FRB}},
636862306a36Sopenharmony_ci{"fsqrts.",	A(59,22,1),    AFRAFRC_MASK, PPC,	TITAN|PPCVLE,	{FRT, FRB}},
636962306a36Sopenharmony_ci
637062306a36Sopenharmony_ci{"fres",	A(59,24,0),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
637162306a36Sopenharmony_ci{"fres",	A(59,24,0),   AFRALFRC_MASK, PPC,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
637262306a36Sopenharmony_ci{"fres.",	A(59,24,1),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
637362306a36Sopenharmony_ci{"fres.",	A(59,24,1),   AFRALFRC_MASK, PPC,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
637462306a36Sopenharmony_ci
637562306a36Sopenharmony_ci{"fmuls",	A(59,25,0),	AFRB_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC}},
637662306a36Sopenharmony_ci{"fmuls.",	A(59,25,1),	AFRB_MASK,   PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC}},
637762306a36Sopenharmony_ci
637862306a36Sopenharmony_ci{"frsqrtes",	A(59,26,0),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
637962306a36Sopenharmony_ci{"frsqrtes",	A(59,26,0),   AFRALFRC_MASK, POWER5,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
638062306a36Sopenharmony_ci{"frsqrtes.",	A(59,26,1),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
638162306a36Sopenharmony_ci{"frsqrtes.",	A(59,26,1),   AFRALFRC_MASK, POWER5,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
638262306a36Sopenharmony_ci
638362306a36Sopenharmony_ci{"fmsubs",	A(59,28,0),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
638462306a36Sopenharmony_ci{"fmsubs.",	A(59,28,1),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
638562306a36Sopenharmony_ci
638662306a36Sopenharmony_ci{"fmadds",	A(59,29,0),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
638762306a36Sopenharmony_ci{"fmadds.",	A(59,29,1),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
638862306a36Sopenharmony_ci
638962306a36Sopenharmony_ci{"fnmsubs",	A(59,30,0),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
639062306a36Sopenharmony_ci{"fnmsubs.",	A(59,30,1),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
639162306a36Sopenharmony_ci
639262306a36Sopenharmony_ci{"fnmadds",	A(59,31,0),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
639362306a36Sopenharmony_ci{"fnmadds.",	A(59,31,1),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
639462306a36Sopenharmony_ci
639562306a36Sopenharmony_ci{"dmul",	XRC(59,34,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
639662306a36Sopenharmony_ci{"dmul.",	XRC(59,34,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
639762306a36Sopenharmony_ci
639862306a36Sopenharmony_ci{"drrnd",	ZRC(59,35,0),	Z2_MASK,     POWER6,	PPCVLE,		{FRT, FRA, FRB, RMC}},
639962306a36Sopenharmony_ci{"drrnd.",	ZRC(59,35,1),	Z2_MASK,     POWER6,	PPCVLE,		{FRT, FRA, FRB, RMC}},
640062306a36Sopenharmony_ci
640162306a36Sopenharmony_ci{"dscli",	ZRC(59,66,0),	Z_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, SH16}},
640262306a36Sopenharmony_ci{"dscli.",	ZRC(59,66,1),	Z_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, SH16}},
640362306a36Sopenharmony_ci
640462306a36Sopenharmony_ci{"dquai",	ZRC(59,67,0),	Z2_MASK,     POWER6,	PPCVLE,		{TE, FRT,FRB,RMC}},
640562306a36Sopenharmony_ci{"dquai.",	ZRC(59,67,1),	Z2_MASK,     POWER6,	PPCVLE,		{TE, FRT,FRB,RMC}},
640662306a36Sopenharmony_ci
640762306a36Sopenharmony_ci{"dscri",	ZRC(59,98,0),	Z_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, SH16}},
640862306a36Sopenharmony_ci{"dscri.",	ZRC(59,98,1),	Z_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, SH16}},
640962306a36Sopenharmony_ci
641062306a36Sopenharmony_ci{"drintx",	ZRC(59,99,0),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRT, FRB, RMC}},
641162306a36Sopenharmony_ci{"drintx.",	ZRC(59,99,1),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRT, FRB, RMC}},
641262306a36Sopenharmony_ci
641362306a36Sopenharmony_ci{"dcmpo",	X(59,130),	X_MASK,	     POWER6,	PPCVLE,		{BF,  FRA, FRB}},
641462306a36Sopenharmony_ci
641562306a36Sopenharmony_ci{"dtstex",	X(59,162),	X_MASK,	     POWER6,	PPCVLE,		{BF,  FRA, FRB}},
641662306a36Sopenharmony_ci{"dtstdc",	Z(59,194),	Z_MASK,	     POWER6,	PPCVLE,		{BF,  FRA, DCM}},
641762306a36Sopenharmony_ci{"dtstdg",	Z(59,226),	Z_MASK,	     POWER6,	PPCVLE,		{BF,  FRA, DGM}},
641862306a36Sopenharmony_ci
641962306a36Sopenharmony_ci{"drintn",	ZRC(59,227,0),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRT, FRB, RMC}},
642062306a36Sopenharmony_ci{"drintn.",	ZRC(59,227,1),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRT, FRB, RMC}},
642162306a36Sopenharmony_ci
642262306a36Sopenharmony_ci{"dctdp",	XRC(59,258,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
642362306a36Sopenharmony_ci{"dctdp.",	XRC(59,258,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
642462306a36Sopenharmony_ci
642562306a36Sopenharmony_ci{"dctfix",	XRC(59,290,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
642662306a36Sopenharmony_ci{"dctfix.",	XRC(59,290,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
642762306a36Sopenharmony_ci
642862306a36Sopenharmony_ci{"ddedpd",	XRC(59,322,0),	X_MASK,	     POWER6,	PPCVLE,		{SP, FRT, FRB}},
642962306a36Sopenharmony_ci{"ddedpd.",	XRC(59,322,1),	X_MASK,	     POWER6,	PPCVLE,		{SP, FRT, FRB}},
643062306a36Sopenharmony_ci
643162306a36Sopenharmony_ci{"dxex",	XRC(59,354,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
643262306a36Sopenharmony_ci{"dxex.",	XRC(59,354,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
643362306a36Sopenharmony_ci
643462306a36Sopenharmony_ci{"dsub",	XRC(59,514,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
643562306a36Sopenharmony_ci{"dsub.",	XRC(59,514,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
643662306a36Sopenharmony_ci
643762306a36Sopenharmony_ci{"ddiv",	XRC(59,546,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
643862306a36Sopenharmony_ci{"ddiv.",	XRC(59,546,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
643962306a36Sopenharmony_ci
644062306a36Sopenharmony_ci{"dcmpu",	X(59,642),	X_MASK,	     POWER6,	PPCVLE,		{BF,  FRA, FRB}},
644162306a36Sopenharmony_ci
644262306a36Sopenharmony_ci{"dtstsf",	X(59,674),	X_MASK,	     POWER6,	PPCVLE,		{BF,  FRA, FRB}},
644362306a36Sopenharmony_ci{"dtstsfi",	X(59,675),	X_MASK|1<<22,POWER9,	PPCVLE,		{BF, UIM6, FRB}},
644462306a36Sopenharmony_ci
644562306a36Sopenharmony_ci{"drsp",	XRC(59,770,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
644662306a36Sopenharmony_ci{"drsp.",	XRC(59,770,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRB}},
644762306a36Sopenharmony_ci
644862306a36Sopenharmony_ci{"dcffix",	XRC(59,802,0), X_MASK|FRA_MASK, POWER7,	PPCVLE,		{FRT, FRB}},
644962306a36Sopenharmony_ci{"dcffix.",	XRC(59,802,1), X_MASK|FRA_MASK, POWER7,	PPCVLE,		{FRT, FRB}},
645062306a36Sopenharmony_ci
645162306a36Sopenharmony_ci{"denbcd",	XRC(59,834,0),	X_MASK,	     POWER6,	PPCVLE,		{S, FRT, FRB}},
645262306a36Sopenharmony_ci{"denbcd.",	XRC(59,834,1),	X_MASK,	     POWER6,	PPCVLE,		{S, FRT, FRB}},
645362306a36Sopenharmony_ci
645462306a36Sopenharmony_ci{"fcfids",	XRC(59,846,0),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
645562306a36Sopenharmony_ci{"fcfids.",	XRC(59,846,1),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
645662306a36Sopenharmony_ci
645762306a36Sopenharmony_ci{"diex",	XRC(59,866,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
645862306a36Sopenharmony_ci{"diex.",	XRC(59,866,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRA, FRB}},
645962306a36Sopenharmony_ci
646062306a36Sopenharmony_ci{"fcfidus",	XRC(59,974,0),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
646162306a36Sopenharmony_ci{"fcfidus.",	XRC(59,974,1),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
646262306a36Sopenharmony_ci
646362306a36Sopenharmony_ci{"xsaddsp",	XX3(60,0),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
646462306a36Sopenharmony_ci{"xsmaddasp",	XX3(60,1),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
646562306a36Sopenharmony_ci{"xxsldwi",	XX3(60,2),	XX3SHW_MASK, PPCVSX,	PPCVLE,		{XT6, XA6, XB6, SHW}},
646662306a36Sopenharmony_ci{"xscmpeqdp",	XX3(60,3),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
646762306a36Sopenharmony_ci{"xsrsqrtesp",	XX2(60,10),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
646862306a36Sopenharmony_ci{"xssqrtsp",	XX2(60,11),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
646962306a36Sopenharmony_ci{"xxsel",	XX4(60,3),	XX4_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6, XC6}},
647062306a36Sopenharmony_ci{"xssubsp",	XX3(60,8),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
647162306a36Sopenharmony_ci{"xsmaddmsp",	XX3(60,9),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
647262306a36Sopenharmony_ci{"xxspltd",	XX3(60,10),	XX3DM_MASK,  PPCVSX,	PPCVLE,		{XT6, XA6, XB6S, DMEX}},
647362306a36Sopenharmony_ci{"xxmrghd",	XX3(60,10),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
647462306a36Sopenharmony_ci{"xxswapd",	XX3(60,10)|(2<<8), XX3_MASK, PPCVSX,	PPCVLE,		{XT6, XA6, XB6S}},
647562306a36Sopenharmony_ci{"xxmrgld",	XX3(60,10)|(3<<8), XX3_MASK, PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
647662306a36Sopenharmony_ci{"xxpermdi",	XX3(60,10),	XX3DM_MASK,  PPCVSX,	PPCVLE,		{XT6, XA6, XB6, DM}},
647762306a36Sopenharmony_ci{"xscmpgtdp",	XX3(60,11),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
647862306a36Sopenharmony_ci{"xsresp",	XX2(60,26),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
647962306a36Sopenharmony_ci{"xsmulsp",	XX3(60,16),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
648062306a36Sopenharmony_ci{"xsmsubasp",	XX3(60,17),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
648162306a36Sopenharmony_ci{"xxmrghw",	XX3(60,18),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
648262306a36Sopenharmony_ci{"xscmpgedp",	XX3(60,19),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
648362306a36Sopenharmony_ci{"xsdivsp",	XX3(60,24),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
648462306a36Sopenharmony_ci{"xsmsubmsp",	XX3(60,25),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
648562306a36Sopenharmony_ci{"xxperm",	XX3(60,26),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
648662306a36Sopenharmony_ci{"xsadddp",	XX3(60,32),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
648762306a36Sopenharmony_ci{"xsmaddadp",	XX3(60,33),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
648862306a36Sopenharmony_ci{"xscmpudp",	XX3(60,35),	XX3BF_MASK,  PPCVSX,	PPCVLE,		{BF, XA6, XB6}},
648962306a36Sopenharmony_ci{"xscvdpuxws",	XX2(60,72),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
649062306a36Sopenharmony_ci{"xsrdpi",	XX2(60,73),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
649162306a36Sopenharmony_ci{"xsrsqrtedp",	XX2(60,74),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
649262306a36Sopenharmony_ci{"xssqrtdp",	XX2(60,75),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
649362306a36Sopenharmony_ci{"xssubdp",	XX3(60,40),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
649462306a36Sopenharmony_ci{"xsmaddmdp",	XX3(60,41),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
649562306a36Sopenharmony_ci{"xscmpodp",	XX3(60,43),	XX3BF_MASK,  PPCVSX,	PPCVLE,		{BF, XA6, XB6}},
649662306a36Sopenharmony_ci{"xscvdpsxws",	XX2(60,88),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
649762306a36Sopenharmony_ci{"xsrdpiz",	XX2(60,89),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
649862306a36Sopenharmony_ci{"xsredp",	XX2(60,90),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
649962306a36Sopenharmony_ci{"xsmuldp",	XX3(60,48),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
650062306a36Sopenharmony_ci{"xsmsubadp",	XX3(60,49),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
650162306a36Sopenharmony_ci{"xxmrglw",	XX3(60,50),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
650262306a36Sopenharmony_ci{"xsrdpip",	XX2(60,105),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
650362306a36Sopenharmony_ci{"xstsqrtdp",	XX2(60,106),	XX2BF_MASK,  PPCVSX,	PPCVLE,		{BF, XB6}},
650462306a36Sopenharmony_ci{"xsrdpic",	XX2(60,107),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
650562306a36Sopenharmony_ci{"xsdivdp",	XX3(60,56),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
650662306a36Sopenharmony_ci{"xsmsubmdp",	XX3(60,57),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
650762306a36Sopenharmony_ci{"xxpermr",	XX3(60,58),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
650862306a36Sopenharmony_ci{"xscmpexpdp",	XX3(60,59),	XX3BF_MASK,  PPCVSX3,	PPCVLE,		{BF, XA6, XB6}},
650962306a36Sopenharmony_ci{"xsrdpim",	XX2(60,121),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
651062306a36Sopenharmony_ci{"xstdivdp",	XX3(60,61),	XX3BF_MASK,  PPCVSX,	PPCVLE,		{BF, XA6, XB6}},
651162306a36Sopenharmony_ci{"xvaddsp",	XX3(60,64),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
651262306a36Sopenharmony_ci{"xvmaddasp",	XX3(60,65),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
651362306a36Sopenharmony_ci{"xvcmpeqsp",	XX3RC(60,67,0),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
651462306a36Sopenharmony_ci{"xvcmpeqsp.",	XX3RC(60,67,1),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
651562306a36Sopenharmony_ci{"xvcvspuxws",	XX2(60,136),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
651662306a36Sopenharmony_ci{"xvrspi",	XX2(60,137),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
651762306a36Sopenharmony_ci{"xvrsqrtesp",	XX2(60,138),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
651862306a36Sopenharmony_ci{"xvsqrtsp",	XX2(60,139),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
651962306a36Sopenharmony_ci{"xvsubsp",	XX3(60,72),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
652062306a36Sopenharmony_ci{"xvmaddmsp",	XX3(60,73),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
652162306a36Sopenharmony_ci{"xvcmpgtsp",	XX3RC(60,75,0),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
652262306a36Sopenharmony_ci{"xvcmpgtsp.",	XX3RC(60,75,1),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
652362306a36Sopenharmony_ci{"xvcvspsxws",	XX2(60,152),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
652462306a36Sopenharmony_ci{"xvrspiz",	XX2(60,153),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
652562306a36Sopenharmony_ci{"xvresp",	XX2(60,154),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
652662306a36Sopenharmony_ci{"xvmulsp",	XX3(60,80),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
652762306a36Sopenharmony_ci{"xvmsubasp",	XX3(60,81),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
652862306a36Sopenharmony_ci{"xxspltw",	XX2(60,164),	XX2UIM_MASK, PPCVSX,	PPCVLE,		{XT6, XB6, UIM}},
652962306a36Sopenharmony_ci{"xxextractuw",	XX2(60,165),   XX2UIM4_MASK, PPCVSX3,	PPCVLE,		{XT6, XB6, UIMM4}},
653062306a36Sopenharmony_ci{"xvcmpgesp",	XX3RC(60,83,0),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
653162306a36Sopenharmony_ci{"xvcmpgesp.",	XX3RC(60,83,1),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
653262306a36Sopenharmony_ci{"xvcvuxwsp",	XX2(60,168),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
653362306a36Sopenharmony_ci{"xvrspip",	XX2(60,169),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
653462306a36Sopenharmony_ci{"xvtsqrtsp",	XX2(60,170),	XX2BF_MASK,  PPCVSX,	PPCVLE,		{BF, XB6}},
653562306a36Sopenharmony_ci{"xvrspic",	XX2(60,171),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
653662306a36Sopenharmony_ci{"xvdivsp",	XX3(60,88),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
653762306a36Sopenharmony_ci{"xvmsubmsp",	XX3(60,89),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
653862306a36Sopenharmony_ci{"xxspltib",	X(60,360),   XX1_MASK|3<<19, PPCVSX3,	PPCVLE,		{XT6, IMM8}},
653962306a36Sopenharmony_ci{"xxinsertw",	XX2(60,181),   XX2UIM4_MASK, PPCVSX3,	PPCVLE,		{XT6, XB6, UIMM4}},
654062306a36Sopenharmony_ci{"xvcvsxwsp",	XX2(60,184),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
654162306a36Sopenharmony_ci{"xvrspim",	XX2(60,185),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
654262306a36Sopenharmony_ci{"xvtdivsp",	XX3(60,93),	XX3BF_MASK,  PPCVSX,	PPCVLE,		{BF, XA6, XB6}},
654362306a36Sopenharmony_ci{"xvadddp",	XX3(60,96),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
654462306a36Sopenharmony_ci{"xvmaddadp",	XX3(60,97),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
654562306a36Sopenharmony_ci{"xvcmpeqdp",	XX3RC(60,99,0),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
654662306a36Sopenharmony_ci{"xvcmpeqdp.",	XX3RC(60,99,1),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
654762306a36Sopenharmony_ci{"xvcvdpuxws",	XX2(60,200),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
654862306a36Sopenharmony_ci{"xvrdpi",	XX2(60,201),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
654962306a36Sopenharmony_ci{"xvrsqrtedp",	XX2(60,202),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
655062306a36Sopenharmony_ci{"xvsqrtdp",	XX2(60,203),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
655162306a36Sopenharmony_ci{"xvsubdp",	XX3(60,104),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
655262306a36Sopenharmony_ci{"xvmaddmdp",	XX3(60,105),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
655362306a36Sopenharmony_ci{"xvcmpgtdp",	XX3RC(60,107,0), XX3_MASK,   PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
655462306a36Sopenharmony_ci{"xvcmpgtdp.",	XX3RC(60,107,1), XX3_MASK,   PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
655562306a36Sopenharmony_ci{"xvcvdpsxws",	XX2(60,216),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
655662306a36Sopenharmony_ci{"xvrdpiz",	XX2(60,217),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
655762306a36Sopenharmony_ci{"xvredp",	XX2(60,218),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
655862306a36Sopenharmony_ci{"xvmuldp",	XX3(60,112),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
655962306a36Sopenharmony_ci{"xvmsubadp",	XX3(60,113),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
656062306a36Sopenharmony_ci{"xvcmpgedp",	XX3RC(60,115,0), XX3_MASK,   PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
656162306a36Sopenharmony_ci{"xvcmpgedp.",	XX3RC(60,115,1), XX3_MASK,   PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
656262306a36Sopenharmony_ci{"xvcvuxwdp",	XX2(60,232),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
656362306a36Sopenharmony_ci{"xvrdpip",	XX2(60,233),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
656462306a36Sopenharmony_ci{"xvtsqrtdp",	XX2(60,234),	XX2BF_MASK,  PPCVSX,	PPCVLE,		{BF, XB6}},
656562306a36Sopenharmony_ci{"xvrdpic",	XX2(60,235),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
656662306a36Sopenharmony_ci{"xvdivdp",	XX3(60,120),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
656762306a36Sopenharmony_ci{"xvmsubmdp",	XX3(60,121),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
656862306a36Sopenharmony_ci{"xvcvsxwdp",	XX2(60,248),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
656962306a36Sopenharmony_ci{"xvrdpim",	XX2(60,249),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
657062306a36Sopenharmony_ci{"xvtdivdp",	XX3(60,125),	XX3BF_MASK,  PPCVSX,	PPCVLE,		{BF, XA6, XB6}},
657162306a36Sopenharmony_ci{"xsmaxcdp",	XX3(60,128),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
657262306a36Sopenharmony_ci{"xsnmaddasp",	XX3(60,129),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
657362306a36Sopenharmony_ci{"xxland",	XX3(60,130),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
657462306a36Sopenharmony_ci{"xscvdpsp",	XX2(60,265),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
657562306a36Sopenharmony_ci{"xscvdpspn",	XX2(60,267),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
657662306a36Sopenharmony_ci{"xsmincdp",	XX3(60,136),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
657762306a36Sopenharmony_ci{"xsnmaddmsp",	XX3(60,137),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
657862306a36Sopenharmony_ci{"xxlandc",	XX3(60,138),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
657962306a36Sopenharmony_ci{"xsrsp",	XX2(60,281),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
658062306a36Sopenharmony_ci{"xsmaxjdp",	XX3(60,144),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
658162306a36Sopenharmony_ci{"xsnmsubasp",	XX3(60,145),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
658262306a36Sopenharmony_ci{"xxlor",	XX3(60,146),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
658362306a36Sopenharmony_ci{"xscvuxdsp",	XX2(60,296),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
658462306a36Sopenharmony_ci{"xststdcsp",	XX2(60,298),	XX2BFD_MASK, PPCVSX3,	PPCVLE,		{BF, XB6, DCMX}},
658562306a36Sopenharmony_ci{"xsminjdp",	XX3(60,152),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
658662306a36Sopenharmony_ci{"xsnmsubmsp",	XX3(60,153),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
658762306a36Sopenharmony_ci{"xxlxor",	XX3(60,154),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
658862306a36Sopenharmony_ci{"xscvsxdsp",	XX2(60,312),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
658962306a36Sopenharmony_ci{"xsmaxdp",	XX3(60,160),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
659062306a36Sopenharmony_ci{"xsnmaddadp",	XX3(60,161),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
659162306a36Sopenharmony_ci{"xxlnor",	XX3(60,162),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
659262306a36Sopenharmony_ci{"xscvdpuxds",	XX2(60,328),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
659362306a36Sopenharmony_ci{"xscvspdp",	XX2(60,329),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
659462306a36Sopenharmony_ci{"xscvspdpn",	XX2(60,331),	XX2_MASK,    PPCVSX2,	PPCVLE,		{XT6, XB6}},
659562306a36Sopenharmony_ci{"xsmindp",	XX3(60,168),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
659662306a36Sopenharmony_ci{"xsnmaddmdp",	XX3(60,169),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
659762306a36Sopenharmony_ci{"xxlorc",	XX3(60,170),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
659862306a36Sopenharmony_ci{"xscvdpsxds",	XX2(60,344),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
659962306a36Sopenharmony_ci{"xsabsdp",	XX2(60,345),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
660062306a36Sopenharmony_ci{"xsxexpdp",	XX2VA(60,347,0),XX2_MASK|1,  PPCVSX3,	PPCVLE,		{RT, XB6}},
660162306a36Sopenharmony_ci{"xsxsigdp",	XX2VA(60,347,1),XX2_MASK|1,  PPCVSX3,	PPCVLE,		{RT, XB6}},
660262306a36Sopenharmony_ci{"xscvhpdp",	XX2VA(60,347,16),XX2_MASK,   PPCVSX3,	PPCVLE,		{XT6, XB6}},
660362306a36Sopenharmony_ci{"xscvdphp",	XX2VA(60,347,17),XX2_MASK,   PPCVSX3,	PPCVLE,		{XT6, XB6}},
660462306a36Sopenharmony_ci{"xscpsgndp",	XX3(60,176),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
660562306a36Sopenharmony_ci{"xsnmsubadp",	XX3(60,177),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
660662306a36Sopenharmony_ci{"xxlnand",	XX3(60,178),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
660762306a36Sopenharmony_ci{"xscvuxddp",	XX2(60,360),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
660862306a36Sopenharmony_ci{"xsnabsdp",	XX2(60,361),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
660962306a36Sopenharmony_ci{"xststdcdp",	XX2(60,362),	XX2BFD_MASK, PPCVSX3,	PPCVLE,		{BF, XB6, DCMX}},
661062306a36Sopenharmony_ci{"xsnmsubmdp",	XX3(60,185),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
661162306a36Sopenharmony_ci{"xxleqv",	XX3(60,186),	XX3_MASK,    PPCVSX2,	PPCVLE,		{XT6, XA6, XB6}},
661262306a36Sopenharmony_ci{"xscvsxddp",	XX2(60,376),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
661362306a36Sopenharmony_ci{"xsnegdp",	XX2(60,377),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
661462306a36Sopenharmony_ci{"xvmaxsp",	XX3(60,192),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
661562306a36Sopenharmony_ci{"xvnmaddasp",	XX3(60,193),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
661662306a36Sopenharmony_ci{"xvcvspuxds",	XX2(60,392),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
661762306a36Sopenharmony_ci{"xvcvdpsp",	XX2(60,393),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
661862306a36Sopenharmony_ci{"xvminsp",	XX3(60,200),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
661962306a36Sopenharmony_ci{"xvnmaddmsp",	XX3(60,201),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
662062306a36Sopenharmony_ci{"xvcvspsxds",	XX2(60,408),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
662162306a36Sopenharmony_ci{"xvabssp",	XX2(60,409),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
662262306a36Sopenharmony_ci{"xvmovsp",	XX3(60,208),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6S}},
662362306a36Sopenharmony_ci{"xvcpsgnsp",	XX3(60,208),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
662462306a36Sopenharmony_ci{"xvnmsubasp",	XX3(60,209),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
662562306a36Sopenharmony_ci{"xvcvuxdsp",	XX2(60,424),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
662662306a36Sopenharmony_ci{"xvnabssp",	XX2(60,425),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
662762306a36Sopenharmony_ci{"xvtstdcsp",	XX2(60,426),  XX2DCMXS_MASK, PPCVSX3,	PPCVLE,		{XT6, XB6, DCMXS}},
662862306a36Sopenharmony_ci{"xviexpsp",	XX3(60,216),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
662962306a36Sopenharmony_ci{"xvnmsubmsp",	XX3(60,217),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
663062306a36Sopenharmony_ci{"xvcvsxdsp",	XX2(60,440),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
663162306a36Sopenharmony_ci{"xvnegsp",	XX2(60,441),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
663262306a36Sopenharmony_ci{"xvmaxdp",	XX3(60,224),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
663362306a36Sopenharmony_ci{"xvnmaddadp",	XX3(60,225),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
663462306a36Sopenharmony_ci{"xvcvdpuxds",	XX2(60,456),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
663562306a36Sopenharmony_ci{"xvcvspdp",	XX2(60,457),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
663662306a36Sopenharmony_ci{"xsiexpdp",	X(60,918),	XX1_MASK,    PPCVSX3,	PPCVLE,		{XT6, RA, RB}},
663762306a36Sopenharmony_ci{"xvmindp",	XX3(60,232),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
663862306a36Sopenharmony_ci{"xvnmaddmdp",	XX3(60,233),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
663962306a36Sopenharmony_ci{"xvcvdpsxds",	XX2(60,472),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
664062306a36Sopenharmony_ci{"xvabsdp",	XX2(60,473),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
664162306a36Sopenharmony_ci{"xvxexpdp",	XX2VA(60,475,0),XX2_MASK,    PPCVSX3,	PPCVLE,		{XT6, XB6}},
664262306a36Sopenharmony_ci{"xvxsigdp",	XX2VA(60,475,1),XX2_MASK,    PPCVSX3,	PPCVLE,		{XT6, XB6}},
664362306a36Sopenharmony_ci{"xxbrh",	XX2VA(60,475,7),XX2_MASK,    PPCVSX3,	PPCVLE,		{XT6, XB6}},
664462306a36Sopenharmony_ci{"xvxexpsp",	XX2VA(60,475,8),XX2_MASK,    PPCVSX3,	PPCVLE,		{XT6, XB6}},
664562306a36Sopenharmony_ci{"xvxsigsp",	XX2VA(60,475,9),XX2_MASK,    PPCVSX3,	PPCVLE,		{XT6, XB6}},
664662306a36Sopenharmony_ci{"xxbrw",	XX2VA(60,475,15),XX2_MASK,   PPCVSX3,	PPCVLE,		{XT6, XB6}},
664762306a36Sopenharmony_ci{"xxbrd",	XX2VA(60,475,23),XX2_MASK,   PPCVSX3,	PPCVLE,		{XT6, XB6}},
664862306a36Sopenharmony_ci{"xvcvhpsp",	XX2VA(60,475,24),XX2_MASK,   PPCVSX3,	PPCVLE,		{XT6, XB6}},
664962306a36Sopenharmony_ci{"xvcvsphp",	XX2VA(60,475,25),XX2_MASK,   PPCVSX3,	PPCVLE,		{XT6, XB6}},
665062306a36Sopenharmony_ci{"xxbrq",	XX2VA(60,475,31),XX2_MASK,   PPCVSX3,	PPCVLE,		{XT6, XB6}},
665162306a36Sopenharmony_ci{"xvmovdp",	XX3(60,240),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6S}},
665262306a36Sopenharmony_ci{"xvcpsgndp",	XX3(60,240),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
665362306a36Sopenharmony_ci{"xvnmsubadp",	XX3(60,241),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
665462306a36Sopenharmony_ci{"xvcvuxddp",	XX2(60,488),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
665562306a36Sopenharmony_ci{"xvnabsdp",	XX2(60,489),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
665662306a36Sopenharmony_ci{"xvtstdcdp",	XX2(60,490),  XX2DCMXS_MASK, PPCVSX3,	PPCVLE,		{XT6, XB6, DCMXS}},
665762306a36Sopenharmony_ci{"xviexpdp",	XX3(60,248),	XX3_MASK,    PPCVSX3,	PPCVLE,		{XT6, XA6, XB6}},
665862306a36Sopenharmony_ci{"xvnmsubmdp",	XX3(60,249),	XX3_MASK,    PPCVSX,	PPCVLE,		{XT6, XA6, XB6}},
665962306a36Sopenharmony_ci{"xvcvsxddp",	XX2(60,504),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
666062306a36Sopenharmony_ci{"xvnegdp",	XX2(60,505),	XX2_MASK,    PPCVSX,	PPCVLE,		{XT6, XB6}},
666162306a36Sopenharmony_ci
666262306a36Sopenharmony_ci{"psq_st",	OP(60),		OP_MASK,     PPCPS,	PPCVLE,		{FRS,PSD,RA,PSW,PSQ}},
666362306a36Sopenharmony_ci{"stfq",	OP(60),		OP_MASK,     POWER2,	PPCVLE,		{FRS, D, RA}},
666462306a36Sopenharmony_ci
666562306a36Sopenharmony_ci{"lxv",		DQX(61,1),	DQX_MASK,    PPCVSX3,	PPCVLE,		{XTQ6, DQ, RA0}},
666662306a36Sopenharmony_ci{"stxv",	DQX(61,5),	DQX_MASK,    PPCVSX3,	PPCVLE,		{XSQ6, DQ, RA0}},
666762306a36Sopenharmony_ci{"stxsd",	DSO(61,2),	DS_MASK,     PPCVSX3,	PPCVLE,		{VS, DS, RA0}},
666862306a36Sopenharmony_ci{"stxssp",	DSO(61,3),	DS_MASK,     PPCVSX3,	PPCVLE,		{VS, DS, RA0}},
666962306a36Sopenharmony_ci{"stfdp",	OP(61),		OP_MASK,     POWER6,	POWER7|PPCVLE,	{FRSp, DS, RA0}},
667062306a36Sopenharmony_ci{"psq_stu",	OP(61),		OP_MASK,     PPCPS,	PPCVLE,		{FRS,PSD,RA,PSW,PSQ}},
667162306a36Sopenharmony_ci{"stfqu",	OP(61),		OP_MASK,     POWER2,	PPCVLE,		{FRS, D, RA}},
667262306a36Sopenharmony_ci
667362306a36Sopenharmony_ci{"std",		DSO(62,0),	DS_MASK,     PPC64,	PPCVLE,		{RS, DS, RA0}},
667462306a36Sopenharmony_ci{"stdu",	DSO(62,1),	DS_MASK,     PPC64,	PPCVLE,		{RS, DS, RAS}},
667562306a36Sopenharmony_ci{"stq",		DSO(62,2),	DS_MASK,     POWER4,	PPC476|PPCVLE,	{RSQ, DS, RA0}},
667662306a36Sopenharmony_ci
667762306a36Sopenharmony_ci{"fcmpu",	X(63,0),	XBF_MASK,    COM,	PPCEFS|PPCVLE,	{BF, FRA, FRB}},
667862306a36Sopenharmony_ci
667962306a36Sopenharmony_ci{"daddq",	XRC(63,2,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
668062306a36Sopenharmony_ci{"daddq.",	XRC(63,2,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
668162306a36Sopenharmony_ci
668262306a36Sopenharmony_ci{"dquaq",	ZRC(63,3,0),	Z2_MASK,     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp, RMC}},
668362306a36Sopenharmony_ci{"dquaq.",	ZRC(63,3,1),	Z2_MASK,     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp, RMC}},
668462306a36Sopenharmony_ci
668562306a36Sopenharmony_ci{"xsaddqp",	XRC(63,4,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
668662306a36Sopenharmony_ci{"xsaddqpo",	XRC(63,4,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
668762306a36Sopenharmony_ci
668862306a36Sopenharmony_ci{"xsrqpi",	ZRC(63,5,0),	Z2_MASK,     PPCVSX3,	PPCVLE,		{R, VD, VB, RMC}},
668962306a36Sopenharmony_ci{"xsrqpix",	ZRC(63,5,1),	Z2_MASK,     PPCVSX3,	PPCVLE,		{R, VD, VB, RMC}},
669062306a36Sopenharmony_ci
669162306a36Sopenharmony_ci{"fcpsgn",	XRC(63,8,0),	X_MASK, POWER6|PPCA2|PPC476, PPCVLE,	{FRT, FRA, FRB}},
669262306a36Sopenharmony_ci{"fcpsgn.",	XRC(63,8,1),	X_MASK, POWER6|PPCA2|PPC476, PPCVLE,	{FRT, FRA, FRB}},
669362306a36Sopenharmony_ci
669462306a36Sopenharmony_ci{"frsp",	XRC(63,12,0),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
669562306a36Sopenharmony_ci{"frsp.",	XRC(63,12,1),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
669662306a36Sopenharmony_ci
669762306a36Sopenharmony_ci{"fctiw",	XRC(63,14,0),	XRA_MASK,    PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRB}},
669862306a36Sopenharmony_ci{"fcir",	XRC(63,14,0),	XRA_MASK,    PWR2COM,	PPCVLE,		{FRT, FRB}},
669962306a36Sopenharmony_ci{"fctiw.",	XRC(63,14,1),	XRA_MASK,    PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRB}},
670062306a36Sopenharmony_ci{"fcir.",	XRC(63,14,1),	XRA_MASK,    PWR2COM,	PPCVLE,		{FRT, FRB}},
670162306a36Sopenharmony_ci
670262306a36Sopenharmony_ci{"fctiwz",	XRC(63,15,0),	XRA_MASK,    PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRB}},
670362306a36Sopenharmony_ci{"fcirz",	XRC(63,15,0),	XRA_MASK,    PWR2COM,	PPCVLE,		{FRT, FRB}},
670462306a36Sopenharmony_ci{"fctiwz.",	XRC(63,15,1),	XRA_MASK,    PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRB}},
670562306a36Sopenharmony_ci{"fcirz.",	XRC(63,15,1),	XRA_MASK,    PWR2COM,	PPCVLE,		{FRT, FRB}},
670662306a36Sopenharmony_ci
670762306a36Sopenharmony_ci{"fdiv",	A(63,18,0),	AFRC_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
670862306a36Sopenharmony_ci{"fd",		A(63,18,0),	AFRC_MASK,   PWRCOM,	PPCVLE,		{FRT, FRA, FRB}},
670962306a36Sopenharmony_ci{"fdiv.",	A(63,18,1),	AFRC_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
671062306a36Sopenharmony_ci{"fd.",		A(63,18,1),	AFRC_MASK,   PWRCOM,	PPCVLE,		{FRT, FRA, FRB}},
671162306a36Sopenharmony_ci
671262306a36Sopenharmony_ci{"fsub",	A(63,20,0),	AFRC_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
671362306a36Sopenharmony_ci{"fs",		A(63,20,0),	AFRC_MASK,   PWRCOM,	PPCVLE,		{FRT, FRA, FRB}},
671462306a36Sopenharmony_ci{"fsub.",	A(63,20,1),	AFRC_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
671562306a36Sopenharmony_ci{"fs.",		A(63,20,1),	AFRC_MASK,   PWRCOM,	PPCVLE,		{FRT, FRA, FRB}},
671662306a36Sopenharmony_ci
671762306a36Sopenharmony_ci{"fadd",	A(63,21,0),	AFRC_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
671862306a36Sopenharmony_ci{"fa",		A(63,21,0),	AFRC_MASK,   PWRCOM,	PPCVLE,		{FRT, FRA, FRB}},
671962306a36Sopenharmony_ci{"fadd.",	A(63,21,1),	AFRC_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRB}},
672062306a36Sopenharmony_ci{"fa.",		A(63,21,1),	AFRC_MASK,   PWRCOM,	PPCVLE,		{FRT, FRA, FRB}},
672162306a36Sopenharmony_ci
672262306a36Sopenharmony_ci{"fsqrt",	A(63,22,0),    AFRAFRC_MASK, PPCPWR2,	TITAN|PPCVLE,	{FRT, FRB}},
672362306a36Sopenharmony_ci{"fsqrt.",	A(63,22,1),    AFRAFRC_MASK, PPCPWR2,	TITAN|PPCVLE,	{FRT, FRB}},
672462306a36Sopenharmony_ci
672562306a36Sopenharmony_ci{"fsel",	A(63,23,0),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
672662306a36Sopenharmony_ci{"fsel.",	A(63,23,1),	A_MASK,	     PPC,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
672762306a36Sopenharmony_ci
672862306a36Sopenharmony_ci{"fre",		A(63,24,0),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
672962306a36Sopenharmony_ci{"fre",		A(63,24,0),   AFRALFRC_MASK, POWER5,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
673062306a36Sopenharmony_ci{"fre.",	A(63,24,1),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
673162306a36Sopenharmony_ci{"fre.",	A(63,24,1),   AFRALFRC_MASK, POWER5,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
673262306a36Sopenharmony_ci
673362306a36Sopenharmony_ci{"fmul",	A(63,25,0),	AFRB_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC}},
673462306a36Sopenharmony_ci{"fm",		A(63,25,0),	AFRB_MASK,   PWRCOM,	PPCVLE|PPCVLE,	{FRT, FRA, FRC}},
673562306a36Sopenharmony_ci{"fmul.",	A(63,25,1),	AFRB_MASK,   PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC}},
673662306a36Sopenharmony_ci{"fm.",		A(63,25,1),	AFRB_MASK,   PWRCOM,	PPCVLE|PPCVLE,	{FRT, FRA, FRC}},
673762306a36Sopenharmony_ci
673862306a36Sopenharmony_ci{"frsqrte",	A(63,26,0),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
673962306a36Sopenharmony_ci{"frsqrte",	A(63,26,0),   AFRALFRC_MASK, PPC,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
674062306a36Sopenharmony_ci{"frsqrte.",	A(63,26,1),   AFRAFRC_MASK,  POWER7,	PPCVLE,		{FRT, FRB}},
674162306a36Sopenharmony_ci{"frsqrte.",	A(63,26,1),   AFRALFRC_MASK, PPC,	POWER7|PPCVLE,	{FRT, FRB, A_L}},
674262306a36Sopenharmony_ci
674362306a36Sopenharmony_ci{"fmsub",	A(63,28,0),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
674462306a36Sopenharmony_ci{"fms",		A(63,28,0),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
674562306a36Sopenharmony_ci{"fmsub.",	A(63,28,1),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
674662306a36Sopenharmony_ci{"fms.",	A(63,28,1),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
674762306a36Sopenharmony_ci
674862306a36Sopenharmony_ci{"fmadd",	A(63,29,0),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
674962306a36Sopenharmony_ci{"fma",		A(63,29,0),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
675062306a36Sopenharmony_ci{"fmadd.",	A(63,29,1),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
675162306a36Sopenharmony_ci{"fma.",	A(63,29,1),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
675262306a36Sopenharmony_ci
675362306a36Sopenharmony_ci{"fnmsub",	A(63,30,0),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
675462306a36Sopenharmony_ci{"fnms",	A(63,30,0),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
675562306a36Sopenharmony_ci{"fnmsub.",	A(63,30,1),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
675662306a36Sopenharmony_ci{"fnms.",	A(63,30,1),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
675762306a36Sopenharmony_ci
675862306a36Sopenharmony_ci{"fnmadd",	A(63,31,0),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
675962306a36Sopenharmony_ci{"fnma",	A(63,31,0),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
676062306a36Sopenharmony_ci{"fnmadd.",	A(63,31,1),	A_MASK,	     PPCCOM,	PPCEFS|PPCVLE,	{FRT, FRA, FRC, FRB}},
676162306a36Sopenharmony_ci{"fnma.",	A(63,31,1),	A_MASK,	     PWRCOM,	PPCVLE,		{FRT, FRA, FRC, FRB}},
676262306a36Sopenharmony_ci
676362306a36Sopenharmony_ci{"fcmpo",	X(63,32),	XBF_MASK,    COM,	PPCEFS|PPCVLE,	{BF, FRA, FRB}},
676462306a36Sopenharmony_ci
676562306a36Sopenharmony_ci{"dmulq",	XRC(63,34,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
676662306a36Sopenharmony_ci{"dmulq.",	XRC(63,34,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
676762306a36Sopenharmony_ci
676862306a36Sopenharmony_ci{"drrndq",	ZRC(63,35,0),	Z2_MASK,     POWER6,	PPCVLE,		{FRTp, FRA, FRBp, RMC}},
676962306a36Sopenharmony_ci{"drrndq.",	ZRC(63,35,1),	Z2_MASK,     POWER6,	PPCVLE,		{FRTp, FRA, FRBp, RMC}},
677062306a36Sopenharmony_ci
677162306a36Sopenharmony_ci{"xsmulqp",	XRC(63,36,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
677262306a36Sopenharmony_ci{"xsmulqpo",	XRC(63,36,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
677362306a36Sopenharmony_ci
677462306a36Sopenharmony_ci{"xsrqpxp",	Z(63,37),	Z2_MASK,     PPCVSX3,	PPCVLE,		{R, VD, VB, RMC}},
677562306a36Sopenharmony_ci
677662306a36Sopenharmony_ci{"mtfsb1",	XRC(63,38,0),	XRARB_MASK,  COM,	PPCVLE,		{BT}},
677762306a36Sopenharmony_ci{"mtfsb1.",	XRC(63,38,1),	XRARB_MASK,  COM,	PPCVLE,		{BT}},
677862306a36Sopenharmony_ci
677962306a36Sopenharmony_ci{"fneg",	XRC(63,40,0),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
678062306a36Sopenharmony_ci{"fneg.",	XRC(63,40,1),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
678162306a36Sopenharmony_ci
678262306a36Sopenharmony_ci{"mcrfs",      X(63,64), XRB_MASK|(3<<21)|(3<<16), COM,	PPCVLE,		{BF, BFA}},
678362306a36Sopenharmony_ci
678462306a36Sopenharmony_ci{"dscliq",	ZRC(63,66,0),	Z_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, SH16}},
678562306a36Sopenharmony_ci{"dscliq.",	ZRC(63,66,1),	Z_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, SH16}},
678662306a36Sopenharmony_ci
678762306a36Sopenharmony_ci{"dquaiq",	ZRC(63,67,0),	Z2_MASK,     POWER6,	PPCVLE,		{TE, FRTp, FRBp, RMC}},
678862306a36Sopenharmony_ci{"dquaiq.",	ZRC(63,67,1),	Z2_MASK,     POWER6,	PPCVLE,		{TE, FRTp, FRBp, RMC}},
678962306a36Sopenharmony_ci
679062306a36Sopenharmony_ci{"mtfsb0",	XRC(63,70,0),	XRARB_MASK,  COM,	PPCVLE,		{BT}},
679162306a36Sopenharmony_ci{"mtfsb0.",	XRC(63,70,1),	XRARB_MASK,  COM,	PPCVLE,		{BT}},
679262306a36Sopenharmony_ci
679362306a36Sopenharmony_ci{"fmr",		XRC(63,72,0),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
679462306a36Sopenharmony_ci{"fmr.",	XRC(63,72,1),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
679562306a36Sopenharmony_ci
679662306a36Sopenharmony_ci{"dscriq",	ZRC(63,98,0),	Z_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, SH16}},
679762306a36Sopenharmony_ci{"dscriq.",	ZRC(63,98,1),	Z_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, SH16}},
679862306a36Sopenharmony_ci
679962306a36Sopenharmony_ci{"drintxq",	ZRC(63,99,0),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRTp, FRBp, RMC}},
680062306a36Sopenharmony_ci{"drintxq.",	ZRC(63,99,1),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRTp, FRBp, RMC}},
680162306a36Sopenharmony_ci
680262306a36Sopenharmony_ci{"xscpsgnqp",	X(63,100),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
680362306a36Sopenharmony_ci
680462306a36Sopenharmony_ci{"ftdiv",	X(63,128),	XBF_MASK,    POWER7,	PPCVLE,		{BF, FRA, FRB}},
680562306a36Sopenharmony_ci
680662306a36Sopenharmony_ci{"dcmpoq",	X(63,130),	X_MASK,	     POWER6,	PPCVLE,		{BF, FRAp, FRBp}},
680762306a36Sopenharmony_ci
680862306a36Sopenharmony_ci{"xscmpoqp",	X(63,132),	XBF_MASK,    PPCVSX3,	PPCVLE,		{BF, VA, VB}},
680962306a36Sopenharmony_ci
681062306a36Sopenharmony_ci{"mtfsfi",  XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
681162306a36Sopenharmony_ci{"mtfsfi",  XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
681262306a36Sopenharmony_ci{"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}},
681362306a36Sopenharmony_ci{"mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}},
681462306a36Sopenharmony_ci
681562306a36Sopenharmony_ci{"fnabs",	XRC(63,136,0),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
681662306a36Sopenharmony_ci{"fnabs.",	XRC(63,136,1),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
681762306a36Sopenharmony_ci
681862306a36Sopenharmony_ci{"fctiwu",	XRC(63,142,0),	XRA_MASK,    POWER7,	PPCVLE,		{FRT, FRB}},
681962306a36Sopenharmony_ci{"fctiwu.",	XRC(63,142,1),	XRA_MASK,    POWER7,	PPCVLE,		{FRT, FRB}},
682062306a36Sopenharmony_ci{"fctiwuz",	XRC(63,143,0),	XRA_MASK,    POWER7,	PPCVLE,		{FRT, FRB}},
682162306a36Sopenharmony_ci{"fctiwuz.",	XRC(63,143,1),	XRA_MASK,    POWER7,	PPCVLE,		{FRT, FRB}},
682262306a36Sopenharmony_ci
682362306a36Sopenharmony_ci{"ftsqrt",	X(63,160),	XBF_MASK|FRA_MASK, POWER7, PPCVLE,	{BF, FRB}},
682462306a36Sopenharmony_ci
682562306a36Sopenharmony_ci{"dtstexq",	X(63,162),	X_MASK,	     POWER6,	PPCVLE,		{BF, FRAp, FRBp}},
682662306a36Sopenharmony_ci
682762306a36Sopenharmony_ci{"xscmpexpqp",	X(63,164),	XBF_MASK,    PPCVSX3,	PPCVLE,		{BF, VA, VB}},
682862306a36Sopenharmony_ci
682962306a36Sopenharmony_ci{"dtstdcq",	Z(63,194),	Z_MASK,	     POWER6,	PPCVLE,		{BF, FRAp, DCM}},
683062306a36Sopenharmony_ci{"dtstdgq",	Z(63,226),	Z_MASK,	     POWER6,	PPCVLE,		{BF, FRAp, DGM}},
683162306a36Sopenharmony_ci
683262306a36Sopenharmony_ci{"drintnq",	ZRC(63,227,0),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRTp, FRBp, RMC}},
683362306a36Sopenharmony_ci{"drintnq.",	ZRC(63,227,1),	Z2_MASK,     POWER6,	PPCVLE,		{R, FRTp, FRBp, RMC}},
683462306a36Sopenharmony_ci
683562306a36Sopenharmony_ci{"dctqpq",	XRC(63,258,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRB}},
683662306a36Sopenharmony_ci{"dctqpq.",	XRC(63,258,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRB}},
683762306a36Sopenharmony_ci
683862306a36Sopenharmony_ci{"fabs",	XRC(63,264,0),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
683962306a36Sopenharmony_ci{"fabs.",	XRC(63,264,1),	XRA_MASK,    COM,	PPCEFS|PPCVLE,	{FRT, FRB}},
684062306a36Sopenharmony_ci
684162306a36Sopenharmony_ci{"dctfixq",	XRC(63,290,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRBp}},
684262306a36Sopenharmony_ci{"dctfixq.",	XRC(63,290,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRBp}},
684362306a36Sopenharmony_ci
684462306a36Sopenharmony_ci{"ddedpdq",	XRC(63,322,0),	X_MASK,	     POWER6,	PPCVLE,		{SP, FRTp, FRBp}},
684562306a36Sopenharmony_ci{"ddedpdq.",	XRC(63,322,1),	X_MASK,	     POWER6,	PPCVLE,		{SP, FRTp, FRBp}},
684662306a36Sopenharmony_ci
684762306a36Sopenharmony_ci{"dxexq",	XRC(63,354,0),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRBp}},
684862306a36Sopenharmony_ci{"dxexq.",	XRC(63,354,1),	X_MASK,	     POWER6,	PPCVLE,		{FRT, FRBp}},
684962306a36Sopenharmony_ci
685062306a36Sopenharmony_ci{"xsmaddqp",	XRC(63,388,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
685162306a36Sopenharmony_ci{"xsmaddqpo",	XRC(63,388,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
685262306a36Sopenharmony_ci
685362306a36Sopenharmony_ci{"frin",	XRC(63,392,0),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
685462306a36Sopenharmony_ci{"frin.",	XRC(63,392,1),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
685562306a36Sopenharmony_ci
685662306a36Sopenharmony_ci{"xsmsubqp",	XRC(63,420,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
685762306a36Sopenharmony_ci{"xsmsubqpo",	XRC(63,420,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
685862306a36Sopenharmony_ci
685962306a36Sopenharmony_ci{"friz",	XRC(63,424,0),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
686062306a36Sopenharmony_ci{"friz.",	XRC(63,424,1),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
686162306a36Sopenharmony_ci
686262306a36Sopenharmony_ci{"xsnmaddqp",	XRC(63,452,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
686362306a36Sopenharmony_ci{"xsnmaddqpo",	XRC(63,452,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
686462306a36Sopenharmony_ci
686562306a36Sopenharmony_ci{"frip",	XRC(63,456,0),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
686662306a36Sopenharmony_ci{"frip.",	XRC(63,456,1),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
686762306a36Sopenharmony_ci
686862306a36Sopenharmony_ci{"xsnmsubqp",	XRC(63,484,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
686962306a36Sopenharmony_ci{"xsnmsubqpo",	XRC(63,484,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
687062306a36Sopenharmony_ci
687162306a36Sopenharmony_ci{"frim",	XRC(63,488,0),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
687262306a36Sopenharmony_ci{"frim.",	XRC(63,488,1),	XRA_MASK,    POWER5,	PPCVLE,		{FRT, FRB}},
687362306a36Sopenharmony_ci
687462306a36Sopenharmony_ci{"dsubq",	XRC(63,514,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
687562306a36Sopenharmony_ci{"dsubq.",	XRC(63,514,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
687662306a36Sopenharmony_ci
687762306a36Sopenharmony_ci{"xssubqp",	XRC(63,516,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
687862306a36Sopenharmony_ci{"xssubqpo",	XRC(63,516,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
687962306a36Sopenharmony_ci
688062306a36Sopenharmony_ci{"ddivq",	XRC(63,546,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
688162306a36Sopenharmony_ci{"ddivq.",	XRC(63,546,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRAp, FRBp}},
688262306a36Sopenharmony_ci
688362306a36Sopenharmony_ci{"xsdivqp",	XRC(63,548,0),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
688462306a36Sopenharmony_ci{"xsdivqpo",	XRC(63,548,1),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
688562306a36Sopenharmony_ci
688662306a36Sopenharmony_ci{"mffs",	XRC(63,583,0),	XRARB_MASK,  COM,	PPCEFS|PPCVLE,	{FRT}},
688762306a36Sopenharmony_ci{"mffs.",	XRC(63,583,1),	XRARB_MASK,  COM,	PPCEFS|PPCVLE,	{FRT}},
688862306a36Sopenharmony_ci
688962306a36Sopenharmony_ci{"mffsce",	XMMF(63,583,0,1), XMMF_MASK|RB_MASK, POWER9, PPCVLE,	{FRT}},
689062306a36Sopenharmony_ci{"mffscdrn",	XMMF(63,583,2,4), XMMF_MASK,         POWER9, PPCVLE,	{FRT, FRB}},
689162306a36Sopenharmony_ci{"mffscdrni",	XMMF(63,583,2,5), XMMF_MASK|(3<<14), POWER9, PPCVLE,	{FRT, DRM}},
689262306a36Sopenharmony_ci{"mffscrn",	XMMF(63,583,2,6), XMMF_MASK,         POWER9, PPCVLE,	{FRT, FRB}},
689362306a36Sopenharmony_ci{"mffscrni",	XMMF(63,583,2,7), XMMF_MASK|(7<<13), POWER9, PPCVLE,	{FRT, RM}},
689462306a36Sopenharmony_ci{"mffsl",	XMMF(63,583,3,0), XMMF_MASK|RB_MASK, POWER9, PPCVLE,	{FRT}},
689562306a36Sopenharmony_ci
689662306a36Sopenharmony_ci{"dcmpuq",	X(63,642),	X_MASK,	     POWER6,	PPCVLE,		{BF, FRAp, FRBp}},
689762306a36Sopenharmony_ci
689862306a36Sopenharmony_ci{"xscmpuqp",	X(63,644),	XBF_MASK,    PPCVSX3,	PPCVLE,		{BF, VA, VB}},
689962306a36Sopenharmony_ci
690062306a36Sopenharmony_ci{"dtstsfq",	X(63,674),	X_MASK,	     POWER6,	PPCVLE,		{BF, FRA, FRBp}},
690162306a36Sopenharmony_ci{"dtstsfiq",	X(63,675),	X_MASK|1<<22,POWER9,	PPCVLE,		{BF, UIM6, FRBp}},
690262306a36Sopenharmony_ci
690362306a36Sopenharmony_ci{"xststdcqp",	X(63,708),	X_MASK,	     PPCVSX3,	PPCVLE,		{BF, VB, DCMX}},
690462306a36Sopenharmony_ci
690562306a36Sopenharmony_ci{"mtfsf",	XFL(63,711,0),	XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE,	{FLM, FRB, XFL_L, W}},
690662306a36Sopenharmony_ci{"mtfsf",	XFL(63,711,0),	XFL_MASK,    COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
690762306a36Sopenharmony_ci{"mtfsf.",	XFL(63,711,1),	XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE,	{FLM, FRB, XFL_L, W}},
690862306a36Sopenharmony_ci{"mtfsf.",	XFL(63,711,1),	XFL_MASK,    COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}},
690962306a36Sopenharmony_ci
691062306a36Sopenharmony_ci{"drdpq",	XRC(63,770,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRBp}},
691162306a36Sopenharmony_ci{"drdpq.",	XRC(63,770,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRBp}},
691262306a36Sopenharmony_ci
691362306a36Sopenharmony_ci{"dcffixq",	XRC(63,802,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRB}},
691462306a36Sopenharmony_ci{"dcffixq.",	XRC(63,802,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRB}},
691562306a36Sopenharmony_ci
691662306a36Sopenharmony_ci{"xsabsqp",	XVA(63,804,0),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
691762306a36Sopenharmony_ci{"xsxexpqp",	XVA(63,804,2),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
691862306a36Sopenharmony_ci{"xsnabsqp",	XVA(63,804,8),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
691962306a36Sopenharmony_ci{"xsnegqp",	XVA(63,804,16),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
692062306a36Sopenharmony_ci{"xsxsigqp",	XVA(63,804,18),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
692162306a36Sopenharmony_ci{"xssqrtqp",	XVARC(63,804,27,0), XVA_MASK, PPCVSX3,	PPCVLE,		{VD, VB}},
692262306a36Sopenharmony_ci{"xssqrtqpo",	XVARC(63,804,27,1), XVA_MASK, PPCVSX3,	PPCVLE,		{VD, VB}},
692362306a36Sopenharmony_ci
692462306a36Sopenharmony_ci{"fctid",	XRC(63,814,0),	XRA_MASK,    PPC64,	PPCVLE,		{FRT, FRB}},
692562306a36Sopenharmony_ci{"fctid",	XRC(63,814,0),	XRA_MASK,    PPC476,	PPCVLE,		{FRT, FRB}},
692662306a36Sopenharmony_ci{"fctid.",	XRC(63,814,1),	XRA_MASK,    PPC64,	PPCVLE,		{FRT, FRB}},
692762306a36Sopenharmony_ci{"fctid.",	XRC(63,814,1),	XRA_MASK,    PPC476,	PPCVLE,		{FRT, FRB}},
692862306a36Sopenharmony_ci
692962306a36Sopenharmony_ci{"fctidz",	XRC(63,815,0),	XRA_MASK,    PPC64,	PPCVLE,		{FRT, FRB}},
693062306a36Sopenharmony_ci{"fctidz",	XRC(63,815,0),	XRA_MASK,    PPC476,	PPCVLE,		{FRT, FRB}},
693162306a36Sopenharmony_ci{"fctidz.",	XRC(63,815,1),	XRA_MASK,    PPC64,	PPCVLE,		{FRT, FRB}},
693262306a36Sopenharmony_ci{"fctidz.",	XRC(63,815,1),	XRA_MASK,    PPC476,	PPCVLE,		{FRT, FRB}},
693362306a36Sopenharmony_ci
693462306a36Sopenharmony_ci{"denbcdq",	XRC(63,834,0),	X_MASK,	     POWER6,	PPCVLE,		{S, FRTp, FRBp}},
693562306a36Sopenharmony_ci{"denbcdq.",	XRC(63,834,1),	X_MASK,	     POWER6,	PPCVLE,		{S, FRTp, FRBp}},
693662306a36Sopenharmony_ci
693762306a36Sopenharmony_ci{"xscvqpuwz",	XVA(63,836,1),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
693862306a36Sopenharmony_ci{"xscvudqp",	XVA(63,836,2),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
693962306a36Sopenharmony_ci{"xscvqpswz",	XVA(63,836,9),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
694062306a36Sopenharmony_ci{"xscvsdqp",	XVA(63,836,10),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
694162306a36Sopenharmony_ci{"xscvqpudz",	XVA(63,836,17),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
694262306a36Sopenharmony_ci{"xscvqpdp",	XVARC(63,836,20,0), XVA_MASK, PPCVSX3,	PPCVLE,		{VD, VB}},
694362306a36Sopenharmony_ci{"xscvqpdpo",	XVARC(63,836,20,1), XVA_MASK, PPCVSX3,	PPCVLE,		{VD, VB}},
694462306a36Sopenharmony_ci{"xscvdpqp",	XVA(63,836,22),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
694562306a36Sopenharmony_ci{"xscvqpsdz",	XVA(63,836,25),	XVA_MASK,    PPCVSX3,	PPCVLE,		{VD, VB}},
694662306a36Sopenharmony_ci
694762306a36Sopenharmony_ci{"fmrgow",	X(63,838),	X_MASK,	     PPCVSX2,	PPCVLE,		{FRT, FRA, FRB}},
694862306a36Sopenharmony_ci
694962306a36Sopenharmony_ci{"fcfid",	XRC(63,846,0),	XRA_MASK,    PPC64,	PPCVLE,		{FRT, FRB}},
695062306a36Sopenharmony_ci{"fcfid",	XRC(63,846,0),	XRA_MASK,    PPC476,	PPCVLE,		{FRT, FRB}},
695162306a36Sopenharmony_ci{"fcfid.",	XRC(63,846,1),	XRA_MASK,    PPC64,	PPCVLE,		{FRT, FRB}},
695262306a36Sopenharmony_ci{"fcfid.",	XRC(63,846,1),	XRA_MASK,    PPC476,	PPCVLE,		{FRT, FRB}},
695362306a36Sopenharmony_ci
695462306a36Sopenharmony_ci{"diexq",	XRC(63,866,0),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRA, FRBp}},
695562306a36Sopenharmony_ci{"diexq.",	XRC(63,866,1),	X_MASK,	     POWER6,	PPCVLE,		{FRTp, FRA, FRBp}},
695662306a36Sopenharmony_ci
695762306a36Sopenharmony_ci{"xsiexpqp",	X(63,868),	X_MASK,	     PPCVSX3,	PPCVLE,		{VD, VA, VB}},
695862306a36Sopenharmony_ci
695962306a36Sopenharmony_ci{"fctidu",	XRC(63,942,0),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
696062306a36Sopenharmony_ci{"fctidu.",	XRC(63,942,1),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
696162306a36Sopenharmony_ci
696262306a36Sopenharmony_ci{"fctiduz",	XRC(63,943,0),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
696362306a36Sopenharmony_ci{"fctiduz.",	XRC(63,943,1),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
696462306a36Sopenharmony_ci
696562306a36Sopenharmony_ci{"fmrgew",	X(63,966),	X_MASK,	     PPCVSX2,	PPCVLE,		{FRT, FRA, FRB}},
696662306a36Sopenharmony_ci
696762306a36Sopenharmony_ci{"fcfidu",	XRC(63,974,0),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
696862306a36Sopenharmony_ci{"fcfidu.",	XRC(63,974,1),	XRA_MASK, POWER7|PPCA2,	PPCVLE,		{FRT, FRB}},
696962306a36Sopenharmony_ci};
697062306a36Sopenharmony_ci
697162306a36Sopenharmony_ciconst int powerpc_num_opcodes =
697262306a36Sopenharmony_ci  sizeof (powerpc_opcodes) / sizeof (powerpc_opcodes[0]);
697362306a36Sopenharmony_ci
697462306a36Sopenharmony_ci/* The VLE opcode table.
697562306a36Sopenharmony_ci
697662306a36Sopenharmony_ci   The format of this opcode table is the same as the main opcode table.  */
697762306a36Sopenharmony_ci
697862306a36Sopenharmony_ciconst struct powerpc_opcode vle_opcodes[] = {
697962306a36Sopenharmony_ci{"se_illegal",	C(0),		C_MASK,		PPCVLE,	0,		{}},
698062306a36Sopenharmony_ci{"se_isync",	C(1),		C_MASK,		PPCVLE,	0,		{}},
698162306a36Sopenharmony_ci{"se_sc",	C(2),		C_MASK,		PPCVLE,	0,		{}},
698262306a36Sopenharmony_ci{"se_blr",	C_LK(2,0),	C_LK_MASK,	PPCVLE,	0,		{}},
698362306a36Sopenharmony_ci{"se_blrl",	C_LK(2,1),	C_LK_MASK,	PPCVLE,	0,		{}},
698462306a36Sopenharmony_ci{"se_bctr",	C_LK(3,0),	C_LK_MASK,	PPCVLE,	0,		{}},
698562306a36Sopenharmony_ci{"se_bctrl",	C_LK(3,1),	C_LK_MASK,	PPCVLE,	0,		{}},
698662306a36Sopenharmony_ci{"se_rfi",	C(8),		C_MASK,		PPCVLE,	0,		{}},
698762306a36Sopenharmony_ci{"se_rfci",	C(9),		C_MASK,		PPCVLE,	0,		{}},
698862306a36Sopenharmony_ci{"se_rfdi",	C(10),		C_MASK,		PPCVLE,	0,		{}},
698962306a36Sopenharmony_ci{"se_rfmci",	C(11),		C_MASK, PPCRFMCI|PPCVLE, 0,		{}},
699062306a36Sopenharmony_ci{"se_not",	SE_R(0,2),	SE_R_MASK,	PPCVLE,	0,		{RX}},
699162306a36Sopenharmony_ci{"se_neg",	SE_R(0,3),	SE_R_MASK,	PPCVLE,	0,		{RX}},
699262306a36Sopenharmony_ci{"se_mflr",	SE_R(0,8),	SE_R_MASK,	PPCVLE,	0,		{RX}},
699362306a36Sopenharmony_ci{"se_mtlr",	SE_R(0,9),	SE_R_MASK,	PPCVLE,	0,		{RX}},
699462306a36Sopenharmony_ci{"se_mfctr",	SE_R(0,10),	SE_R_MASK,	PPCVLE,	0,		{RX}},
699562306a36Sopenharmony_ci{"se_mtctr",	SE_R(0,11),	SE_R_MASK,	PPCVLE,	0,		{RX}},
699662306a36Sopenharmony_ci{"se_extzb",	SE_R(0,12),	SE_R_MASK,	PPCVLE,	0,		{RX}},
699762306a36Sopenharmony_ci{"se_extsb",	SE_R(0,13),	SE_R_MASK,	PPCVLE,	0,		{RX}},
699862306a36Sopenharmony_ci{"se_extzh",	SE_R(0,14),	SE_R_MASK,	PPCVLE,	0,		{RX}},
699962306a36Sopenharmony_ci{"se_extsh",	SE_R(0,15),	SE_R_MASK,	PPCVLE,	0,		{RX}},
700062306a36Sopenharmony_ci{"se_mr",	SE_RR(0,1),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
700162306a36Sopenharmony_ci{"se_mtar",	SE_RR(0,2),	SE_RR_MASK,	PPCVLE,	0,		{ARX, RY}},
700262306a36Sopenharmony_ci{"se_mfar",	SE_RR(0,3),	SE_RR_MASK,	PPCVLE,	0,		{RX, ARY}},
700362306a36Sopenharmony_ci{"se_add",	SE_RR(1,0),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
700462306a36Sopenharmony_ci{"se_mullw",	SE_RR(1,1),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
700562306a36Sopenharmony_ci{"se_sub",	SE_RR(1,2),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
700662306a36Sopenharmony_ci{"se_subf",	SE_RR(1,3),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
700762306a36Sopenharmony_ci{"se_cmp",	SE_RR(3,0),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
700862306a36Sopenharmony_ci{"se_cmpl",	SE_RR(3,1),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
700962306a36Sopenharmony_ci{"se_cmph",	SE_RR(3,2),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
701062306a36Sopenharmony_ci{"se_cmphl",	SE_RR(3,3),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
701162306a36Sopenharmony_ci
701262306a36Sopenharmony_ci{"e_cmpi",	SCI8BF(6,0,21),	SCI8BF_MASK,	PPCVLE,	0,		{CRD32, RA, SCLSCI8}},
701362306a36Sopenharmony_ci{"e_cmpwi",	SCI8BF(6,0,21),	SCI8BF_MASK,	PPCVLE,	0,		{CRD32, RA, SCLSCI8}},
701462306a36Sopenharmony_ci{"e_cmpli",	SCI8BF(6,1,21),	SCI8BF_MASK,	PPCVLE,	0,		{CRD32, RA, SCLSCI8}},
701562306a36Sopenharmony_ci{"e_cmplwi",	SCI8BF(6,1,21),	SCI8BF_MASK,	PPCVLE,	0,		{CRD32, RA, SCLSCI8}},
701662306a36Sopenharmony_ci{"e_addi",	SCI8(6,16),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8}},
701762306a36Sopenharmony_ci{"e_subi",	SCI8(6,16),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8N}},
701862306a36Sopenharmony_ci{"e_addi.",	SCI8(6,17),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8}},
701962306a36Sopenharmony_ci{"e_addic",	SCI8(6,18),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8}},
702062306a36Sopenharmony_ci{"e_subic",	SCI8(6,18),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8N}},
702162306a36Sopenharmony_ci{"e_addic.",	SCI8(6,19),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8}},
702262306a36Sopenharmony_ci{"e_subic.",	SCI8(6,19),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8N}},
702362306a36Sopenharmony_ci{"e_mulli",	SCI8(6,20),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8}},
702462306a36Sopenharmony_ci{"e_subfic",	SCI8(6,22),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8}},
702562306a36Sopenharmony_ci{"e_subfic.",	SCI8(6,23),	SCI8_MASK,	PPCVLE,	0,		{RT, RA, SCLSCI8}},
702662306a36Sopenharmony_ci{"e_andi",	SCI8(6,24),	SCI8_MASK,	PPCVLE,	0,		{RA, RS, SCLSCI8}},
702762306a36Sopenharmony_ci{"e_andi.",	SCI8(6,25),	SCI8_MASK,	PPCVLE,	0,		{RA, RS, SCLSCI8}},
702862306a36Sopenharmony_ci{"e_nop",	SCI8(6,26),	0xffffffff,	PPCVLE,	0,		{0}},
702962306a36Sopenharmony_ci{"e_ori",	SCI8(6,26),	SCI8_MASK,	PPCVLE,	0,		{RA, RS, SCLSCI8}},
703062306a36Sopenharmony_ci{"e_ori.",	SCI8(6,27),	SCI8_MASK,	PPCVLE,	0,		{RA, RS, SCLSCI8}},
703162306a36Sopenharmony_ci{"e_xori",	SCI8(6,28),	SCI8_MASK,	PPCVLE,	0,		{RA, RS, SCLSCI8}},
703262306a36Sopenharmony_ci{"e_xori.",	SCI8(6,29),	SCI8_MASK,	PPCVLE,	0,		{RA, RS, SCLSCI8}},
703362306a36Sopenharmony_ci{"e_lbzu",	OPVUP(6,0),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
703462306a36Sopenharmony_ci{"e_lhau",	OPVUP(6,3),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
703562306a36Sopenharmony_ci{"e_lhzu",	OPVUP(6,1),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
703662306a36Sopenharmony_ci{"e_lmw",	OPVUP(6,8),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
703762306a36Sopenharmony_ci{"e_lwzu",	OPVUP(6,2),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
703862306a36Sopenharmony_ci{"e_stbu",	OPVUP(6,4),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
703962306a36Sopenharmony_ci{"e_sthu",	OPVUP(6,5),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
704062306a36Sopenharmony_ci{"e_stwu",	OPVUP(6,6),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
704162306a36Sopenharmony_ci{"e_stmw",	OPVUP(6,9),	OPVUP_MASK,	PPCVLE,	0,		{RT, D8, RA0}},
704262306a36Sopenharmony_ci{"e_ldmvgprw",	OPVUPRT(6,16,0),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
704362306a36Sopenharmony_ci{"e_stmvgprw",	OPVUPRT(6,17,0),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
704462306a36Sopenharmony_ci{"e_ldmvsprw",	OPVUPRT(6,16,1),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
704562306a36Sopenharmony_ci{"e_stmvsprw",	OPVUPRT(6,17,1),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
704662306a36Sopenharmony_ci{"e_ldmvsrrw",	OPVUPRT(6,16,4),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
704762306a36Sopenharmony_ci{"e_stmvsrrw",	OPVUPRT(6,17,4),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
704862306a36Sopenharmony_ci{"e_ldmvcsrrw",	OPVUPRT(6,16,5),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
704962306a36Sopenharmony_ci{"e_stmvcsrrw",	OPVUPRT(6,17,5),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
705062306a36Sopenharmony_ci{"e_ldmvdsrrw",	OPVUPRT(6,16,6),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
705162306a36Sopenharmony_ci{"e_stmvdsrrw",	OPVUPRT(6,17,6),OPVUPRT_MASK,	PPCVLE,	0,		{D8, RA0}},
705262306a36Sopenharmony_ci{"e_add16i",	OP(7),		OP_MASK,	PPCVLE,	0,		{RT, RA, SI}},
705362306a36Sopenharmony_ci{"e_la",	OP(7),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
705462306a36Sopenharmony_ci{"e_sub16i",	OP(7),		OP_MASK,	PPCVLE,	0,		{RT, RA, NSI}},
705562306a36Sopenharmony_ci
705662306a36Sopenharmony_ci{"se_addi",	SE_IM5(8,0),	SE_IM5_MASK,	PPCVLE,	0,		{RX, OIMM5}},
705762306a36Sopenharmony_ci{"se_cmpli",	SE_IM5(8,1),	SE_IM5_MASK,	PPCVLE,	0,		{RX, OIMM5}},
705862306a36Sopenharmony_ci{"se_subi",	SE_IM5(9,0),	SE_IM5_MASK,	PPCVLE,	0,		{RX, OIMM5}},
705962306a36Sopenharmony_ci{"se_subi.",	SE_IM5(9,1),	SE_IM5_MASK,	PPCVLE,	0,		{RX, OIMM5}},
706062306a36Sopenharmony_ci{"se_cmpi",	SE_IM5(10,1),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
706162306a36Sopenharmony_ci{"se_bmaski",	SE_IM5(11,0),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
706262306a36Sopenharmony_ci{"se_andi",	SE_IM5(11,1),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
706362306a36Sopenharmony_ci
706462306a36Sopenharmony_ci{"e_lbz",	OP(12),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
706562306a36Sopenharmony_ci{"e_stb",	OP(13),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
706662306a36Sopenharmony_ci{"e_lha",	OP(14),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
706762306a36Sopenharmony_ci
706862306a36Sopenharmony_ci{"se_srw",	SE_RR(16,0),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
706962306a36Sopenharmony_ci{"se_sraw",	SE_RR(16,1),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
707062306a36Sopenharmony_ci{"se_slw",	SE_RR(16,2),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
707162306a36Sopenharmony_ci{"se_nop",	SE_RR(17,0),	0xffff,		PPCVLE,	0,		{0}},
707262306a36Sopenharmony_ci{"se_or",	SE_RR(17,0),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
707362306a36Sopenharmony_ci{"se_andc",	SE_RR(17,1),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
707462306a36Sopenharmony_ci{"se_and",	SE_RR(17,2),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
707562306a36Sopenharmony_ci{"se_and.",	SE_RR(17,3),	SE_RR_MASK,	PPCVLE,	0,		{RX, RY}},
707662306a36Sopenharmony_ci{"se_li",	IM7(9),		IM7_MASK,	PPCVLE,	0,		{RX, UI7}},
707762306a36Sopenharmony_ci
707862306a36Sopenharmony_ci{"e_lwz",	OP(20),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
707962306a36Sopenharmony_ci{"e_stw",	OP(21),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
708062306a36Sopenharmony_ci{"e_lhz",	OP(22),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
708162306a36Sopenharmony_ci{"e_sth",	OP(23),		OP_MASK,	PPCVLE,	0,		{RT, D, RA0}},
708262306a36Sopenharmony_ci
708362306a36Sopenharmony_ci{"se_bclri",	SE_IM5(24,0),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
708462306a36Sopenharmony_ci{"se_bgeni",	SE_IM5(24,1),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
708562306a36Sopenharmony_ci{"se_bseti",	SE_IM5(25,0),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
708662306a36Sopenharmony_ci{"se_btsti",	SE_IM5(25,1),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
708762306a36Sopenharmony_ci{"se_srwi",	SE_IM5(26,0),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
708862306a36Sopenharmony_ci{"se_srawi",	SE_IM5(26,1),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
708962306a36Sopenharmony_ci{"se_slwi",	SE_IM5(27,0),	SE_IM5_MASK,	PPCVLE,	0,		{RX, UI5}},
709062306a36Sopenharmony_ci
709162306a36Sopenharmony_ci{"e_lis",	I16L(28,28),	I16L_MASK,	PPCVLE,	0,		{RD, VLEUIMML}},
709262306a36Sopenharmony_ci{"e_and2is.",	I16L(28,29),	I16L_MASK,	PPCVLE,	0,		{RD, VLEUIMML}},
709362306a36Sopenharmony_ci{"e_or2is",	I16L(28,26),	I16L_MASK,	PPCVLE,	0,		{RD, VLEUIMML}},
709462306a36Sopenharmony_ci{"e_and2i.",	I16L(28,25),	I16L_MASK,	PPCVLE,	0,		{RD, VLEUIMML}},
709562306a36Sopenharmony_ci{"e_or2i",	I16L(28,24),	I16L_MASK,	PPCVLE,	0,		{RD, VLEUIMML}},
709662306a36Sopenharmony_ci{"e_cmphl16i",	IA16(28,23),	IA16_MASK,	PPCVLE,	0,		{RA, VLEUIMM}},
709762306a36Sopenharmony_ci{"e_cmph16i",	IA16(28,22),	IA16_MASK,	PPCVLE,	0,		{RA, VLESIMM}},
709862306a36Sopenharmony_ci{"e_cmpl16i",	I16A(28,21),	I16A_MASK,	PPCVLE,	0,		{RA, VLEUIMM}},
709962306a36Sopenharmony_ci{"e_mull2i",	I16A(28,20),	I16A_MASK,	PPCVLE,	0,		{RA, VLESIMM}},
710062306a36Sopenharmony_ci{"e_cmp16i",	IA16(28,19),	IA16_MASK,	PPCVLE,	0,		{RA, VLESIMM}},
710162306a36Sopenharmony_ci{"e_sub2is",	I16A(28,18),	I16A_MASK,	PPCVLE,	0,		{RA, VLENSIMM}},
710262306a36Sopenharmony_ci{"e_add2is",	I16A(28,18),	I16A_MASK,	PPCVLE,	0,		{RA, VLESIMM}},
710362306a36Sopenharmony_ci{"e_sub2i.",	I16A(28,17),	I16A_MASK,	PPCVLE,	0,		{RA, VLENSIMM}},
710462306a36Sopenharmony_ci{"e_add2i.",	I16A(28,17),	I16A_MASK,	PPCVLE,	0,		{RA, VLESIMM}},
710562306a36Sopenharmony_ci{"e_li",	LI20(28,0),	LI20_MASK,	PPCVLE,	0,		{RT, IMM20}},
710662306a36Sopenharmony_ci{"e_rlwimi",	M(29,0),	M_MASK,		PPCVLE,	0,		{RA, RS, SH, MB, ME}},
710762306a36Sopenharmony_ci{"e_rlwinm",	M(29,1),	M_MASK,		PPCVLE,	0,		{RA, RT, SH, MBE, ME}},
710862306a36Sopenharmony_ci{"e_b",		BD24(30,0,0),	BD24_MASK,	PPCVLE,	0,		{B24}},
710962306a36Sopenharmony_ci{"e_bl",	BD24(30,0,1),	BD24_MASK,	PPCVLE,	0,		{B24}},
711062306a36Sopenharmony_ci{"e_bdnz",	EBD15(30,8,BO32DNZ,0),	EBD15_MASK, PPCVLE, 0,		{B15}},
711162306a36Sopenharmony_ci{"e_bdnzl",	EBD15(30,8,BO32DNZ,1),	EBD15_MASK, PPCVLE, 0,		{B15}},
711262306a36Sopenharmony_ci{"e_bdz",	EBD15(30,8,BO32DZ,0),	EBD15_MASK, PPCVLE, 0,		{B15}},
711362306a36Sopenharmony_ci{"e_bdzl",	EBD15(30,8,BO32DZ,1),	EBD15_MASK, PPCVLE, 0,		{B15}},
711462306a36Sopenharmony_ci{"e_bge",	EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
711562306a36Sopenharmony_ci{"e_bgel",	EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
711662306a36Sopenharmony_ci{"e_bnl",	EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
711762306a36Sopenharmony_ci{"e_bnll",	EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
711862306a36Sopenharmony_ci{"e_blt",	EBD15BI(30,8,BO32T,CBLT,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
711962306a36Sopenharmony_ci{"e_bltl",	EBD15BI(30,8,BO32T,CBLT,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
712062306a36Sopenharmony_ci{"e_bgt",	EBD15BI(30,8,BO32T,CBGT,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
712162306a36Sopenharmony_ci{"e_bgtl",	EBD15BI(30,8,BO32T,CBGT,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
712262306a36Sopenharmony_ci{"e_ble",	EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
712362306a36Sopenharmony_ci{"e_blel",	EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
712462306a36Sopenharmony_ci{"e_bng",	EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
712562306a36Sopenharmony_ci{"e_bngl",	EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
712662306a36Sopenharmony_ci{"e_bne",	EBD15BI(30,8,BO32F,CBEQ,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
712762306a36Sopenharmony_ci{"e_bnel",	EBD15BI(30,8,BO32F,CBEQ,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
712862306a36Sopenharmony_ci{"e_beq",	EBD15BI(30,8,BO32T,CBEQ,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
712962306a36Sopenharmony_ci{"e_beql",	EBD15BI(30,8,BO32T,CBEQ,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
713062306a36Sopenharmony_ci{"e_bso",	EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
713162306a36Sopenharmony_ci{"e_bsol",	EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
713262306a36Sopenharmony_ci{"e_bun",	EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
713362306a36Sopenharmony_ci{"e_bunl",	EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
713462306a36Sopenharmony_ci{"e_bns",	EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
713562306a36Sopenharmony_ci{"e_bnsl",	EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
713662306a36Sopenharmony_ci{"e_bnu",	EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
713762306a36Sopenharmony_ci{"e_bnul",	EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, 0,	{CRS,B15}},
713862306a36Sopenharmony_ci{"e_bc",	BD15(30,8,0),	BD15_MASK,	PPCVLE,	0,		{BO32, BI32, B15}},
713962306a36Sopenharmony_ci{"e_bcl",	BD15(30,8,1),	BD15_MASK,	PPCVLE,	0,		{BO32, BI32, B15}},
714062306a36Sopenharmony_ci
714162306a36Sopenharmony_ci{"e_bf",	EBD15(30,8,BO32F,0), EBD15_MASK, PPCVLE, 0,		{BI32,B15}},
714262306a36Sopenharmony_ci{"e_bfl",	EBD15(30,8,BO32F,1), EBD15_MASK, PPCVLE, 0,		{BI32,B15}},
714362306a36Sopenharmony_ci{"e_bt",	EBD15(30,8,BO32T,0), EBD15_MASK, PPCVLE, 0,		{BI32,B15}},
714462306a36Sopenharmony_ci{"e_btl",	EBD15(30,8,BO32T,1), EBD15_MASK, PPCVLE, 0,		{BI32,B15}},
714562306a36Sopenharmony_ci
714662306a36Sopenharmony_ci{"e_cmph",	X(31,14),	X_MASK,		PPCVLE,	0,		{CRD, RA, RB}},
714762306a36Sopenharmony_ci{"e_cmphl",	X(31,46),	X_MASK,		PPCVLE,	0,		{CRD, RA, RB}},
714862306a36Sopenharmony_ci{"e_crandc",	XL(31,129),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
714962306a36Sopenharmony_ci{"e_crnand",	XL(31,225),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
715062306a36Sopenharmony_ci{"e_crnot",	XL(31,33),	XL_MASK,	PPCVLE,	0,		{BT, BA, BBA}},
715162306a36Sopenharmony_ci{"e_crnor",	XL(31,33),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
715262306a36Sopenharmony_ci{"e_crclr",	XL(31,193),	XL_MASK,	PPCVLE,	0,		{BT, BAT, BBA}},
715362306a36Sopenharmony_ci{"e_crxor",	XL(31,193),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
715462306a36Sopenharmony_ci{"e_mcrf",	XL(31,16),	XL_MASK,	PPCVLE,	0,		{CRD, CR}},
715562306a36Sopenharmony_ci{"e_slwi",	EX(31,112),	EX_MASK,	PPCVLE,	0,		{RA, RS, SH}},
715662306a36Sopenharmony_ci{"e_slwi.",	EX(31,113),	EX_MASK,	PPCVLE,	0,		{RA, RS, SH}},
715762306a36Sopenharmony_ci
715862306a36Sopenharmony_ci{"e_crand",	XL(31,257),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
715962306a36Sopenharmony_ci
716062306a36Sopenharmony_ci{"e_rlw",	EX(31,560),	EX_MASK,	PPCVLE,	0,		{RA, RS, RB}},
716162306a36Sopenharmony_ci{"e_rlw.",	EX(31,561),	EX_MASK,	PPCVLE,	0,		{RA, RS, RB}},
716262306a36Sopenharmony_ci
716362306a36Sopenharmony_ci{"e_crset",	XL(31,289),	XL_MASK,	PPCVLE,	0,		{BT, BAT, BBA}},
716462306a36Sopenharmony_ci{"e_creqv",	XL(31,289),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
716562306a36Sopenharmony_ci
716662306a36Sopenharmony_ci{"e_rlwi",	EX(31,624),	EX_MASK,	PPCVLE,	0,		{RA, RS, SH}},
716762306a36Sopenharmony_ci{"e_rlwi.",	EX(31,625),	EX_MASK,	PPCVLE,	0,		{RA, RS, SH}},
716862306a36Sopenharmony_ci
716962306a36Sopenharmony_ci{"e_crorc",	XL(31,417),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
717062306a36Sopenharmony_ci
717162306a36Sopenharmony_ci{"e_crmove",	XL(31,449),	XL_MASK,	PPCVLE,	0,		{BT, BA, BBA}},
717262306a36Sopenharmony_ci{"e_cror",	XL(31,449),	XL_MASK,	PPCVLE,	0,		{BT, BA, BB}},
717362306a36Sopenharmony_ci
717462306a36Sopenharmony_ci{"mtmas1",	XSPR(31,467,625), XSPR_MASK,	PPCVLE,	0,		{RS}},
717562306a36Sopenharmony_ci
717662306a36Sopenharmony_ci{"e_srwi",	EX(31,1136),	EX_MASK,	PPCVLE,	0,		{RA, RS, SH}},
717762306a36Sopenharmony_ci{"e_srwi.",	EX(31,1137),	EX_MASK,	PPCVLE,	0,		{RA, RS, SH}},
717862306a36Sopenharmony_ci
717962306a36Sopenharmony_ci{"se_lbz",	SD4(8),		SD4_MASK,	PPCVLE,	0,		{RZ, SE_SD, RX}},
718062306a36Sopenharmony_ci
718162306a36Sopenharmony_ci{"se_stb",	SD4(9),		SD4_MASK,	PPCVLE,	0,		{RZ, SE_SD, RX}},
718262306a36Sopenharmony_ci
718362306a36Sopenharmony_ci{"se_lhz",	SD4(10),	SD4_MASK,	PPCVLE,	0,		{RZ, SE_SDH, RX}},
718462306a36Sopenharmony_ci
718562306a36Sopenharmony_ci{"se_sth",	SD4(11),	SD4_MASK,	PPCVLE,	0,		{RZ, SE_SDH, RX}},
718662306a36Sopenharmony_ci
718762306a36Sopenharmony_ci{"se_lwz",	SD4(12),	SD4_MASK,	PPCVLE,	0,		{RZ, SE_SDW, RX}},
718862306a36Sopenharmony_ci
718962306a36Sopenharmony_ci{"se_stw",	SD4(13),	SD4_MASK,	PPCVLE,	0,		{RZ, SE_SDW, RX}},
719062306a36Sopenharmony_ci
719162306a36Sopenharmony_ci{"se_bge",	EBD8IO(28,0,0),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
719262306a36Sopenharmony_ci{"se_bnl",	EBD8IO(28,0,0),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
719362306a36Sopenharmony_ci{"se_ble",	EBD8IO(28,0,1),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
719462306a36Sopenharmony_ci{"se_bng",	EBD8IO(28,0,1),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
719562306a36Sopenharmony_ci{"se_bne",	EBD8IO(28,0,2),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
719662306a36Sopenharmony_ci{"se_bns",	EBD8IO(28,0,3),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
719762306a36Sopenharmony_ci{"se_bnu",	EBD8IO(28,0,3),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
719862306a36Sopenharmony_ci{"se_bf",	EBD8IO(28,0,0),	EBD8IO2_MASK,	PPCVLE,	0,		{BI16, B8}},
719962306a36Sopenharmony_ci{"se_blt",	EBD8IO(28,1,0),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
720062306a36Sopenharmony_ci{"se_bgt",	EBD8IO(28,1,1),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
720162306a36Sopenharmony_ci{"se_beq",	EBD8IO(28,1,2),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
720262306a36Sopenharmony_ci{"se_bso",	EBD8IO(28,1,3),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
720362306a36Sopenharmony_ci{"se_bun",	EBD8IO(28,1,3),	EBD8IO3_MASK,	PPCVLE,	0,		{B8}},
720462306a36Sopenharmony_ci{"se_bt",	EBD8IO(28,1,0),	EBD8IO2_MASK,	PPCVLE,	0,		{BI16, B8}},
720562306a36Sopenharmony_ci{"se_bc",	BD8IO(28),	BD8IO_MASK,	PPCVLE,	0,		{BO16, BI16, B8}},
720662306a36Sopenharmony_ci{"se_b",	BD8(58,0,0),	BD8_MASK,	PPCVLE,	0,		{B8}},
720762306a36Sopenharmony_ci{"se_bl",	BD8(58,0,1),	BD8_MASK,	PPCVLE,	0,		{B8}},
720862306a36Sopenharmony_ci};
720962306a36Sopenharmony_ci
721062306a36Sopenharmony_ciconst int vle_num_opcodes =
721162306a36Sopenharmony_ci  sizeof (vle_opcodes) / sizeof (vle_opcodes[0]);
721262306a36Sopenharmony_ci
721362306a36Sopenharmony_ci/* The macro table.  This is only used by the assembler.  */
721462306a36Sopenharmony_ci
721562306a36Sopenharmony_ci/* The expressions of the form (-x ! 31) & (x | 31) have the value 0
721662306a36Sopenharmony_ci   when x=0; 32-x when x is between 1 and 31; are negative if x is
721762306a36Sopenharmony_ci   negative; and are 32 or more otherwise.  This is what you want
721862306a36Sopenharmony_ci   when, for instance, you are emulating a right shift by a
721962306a36Sopenharmony_ci   rotate-left-and-mask, because the underlying instructions support
722062306a36Sopenharmony_ci   shifts of size 0 but not shifts of size 32.  By comparison, when
722162306a36Sopenharmony_ci   extracting x bits from some word you want to use just 32-x, because
722262306a36Sopenharmony_ci   the underlying instructions don't support extracting 0 bits but do
722362306a36Sopenharmony_ci   support extracting the whole word (32 bits in this case).  */
722462306a36Sopenharmony_ci
722562306a36Sopenharmony_ciconst struct powerpc_macro powerpc_macros[] = {
722662306a36Sopenharmony_ci{"extldi",   4,	PPC64,	"rldicr %0,%1,%3,(%2)-1"},
722762306a36Sopenharmony_ci{"extldi.",  4,	PPC64,	"rldicr. %0,%1,%3,(%2)-1"},
722862306a36Sopenharmony_ci{"extrdi",   4,	PPC64,	"rldicl %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"},
722962306a36Sopenharmony_ci{"extrdi.",  4,	PPC64,	"rldicl. %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"},
723062306a36Sopenharmony_ci{"insrdi",   4,	PPC64,	"rldimi %0,%1,64-((%2)+(%3)),%3"},
723162306a36Sopenharmony_ci{"insrdi.",  4,	PPC64,	"rldimi. %0,%1,64-((%2)+(%3)),%3"},
723262306a36Sopenharmony_ci{"rotrdi",   3,	PPC64,	"rldicl %0,%1,(-(%2)!63)&((%2)|63),0"},
723362306a36Sopenharmony_ci{"rotrdi.",  3,	PPC64,	"rldicl. %0,%1,(-(%2)!63)&((%2)|63),0"},
723462306a36Sopenharmony_ci{"sldi",     3,	PPC64,	"rldicr %0,%1,%2,63-(%2)"},
723562306a36Sopenharmony_ci{"sldi.",    3,	PPC64,	"rldicr. %0,%1,%2,63-(%2)"},
723662306a36Sopenharmony_ci{"srdi",     3,	PPC64,	"rldicl %0,%1,(-(%2)!63)&((%2)|63),%2"},
723762306a36Sopenharmony_ci{"srdi.",    3,	PPC64,	"rldicl. %0,%1,(-(%2)!63)&((%2)|63),%2"},
723862306a36Sopenharmony_ci{"clrrdi",   3,	PPC64,	"rldicr %0,%1,0,63-(%2)"},
723962306a36Sopenharmony_ci{"clrrdi.",  3,	PPC64,	"rldicr. %0,%1,0,63-(%2)"},
724062306a36Sopenharmony_ci{"clrlsldi", 4,	PPC64,	"rldic %0,%1,%3,(%2)-(%3)"},
724162306a36Sopenharmony_ci{"clrlsldi.",4,	PPC64,	"rldic. %0,%1,%3,(%2)-(%3)"},
724262306a36Sopenharmony_ci
724362306a36Sopenharmony_ci{"extlwi",   4,	PPCCOM,	"rlwinm %0,%1,%3,0,(%2)-1"},
724462306a36Sopenharmony_ci{"extlwi.",  4,	PPCCOM,	"rlwinm. %0,%1,%3,0,(%2)-1"},
724562306a36Sopenharmony_ci{"extrwi",   4,	PPCCOM,	"rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
724662306a36Sopenharmony_ci{"extrwi.",  4,	PPCCOM,	"rlwinm. %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
724762306a36Sopenharmony_ci{"inslwi",   4,	PPCCOM,	"rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
724862306a36Sopenharmony_ci{"inslwi.",  4,	PPCCOM,	"rlwimi. %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
724962306a36Sopenharmony_ci{"insrwi",   4,	PPCCOM,	"rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
725062306a36Sopenharmony_ci{"insrwi.",  4,	PPCCOM,	"rlwimi. %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
725162306a36Sopenharmony_ci{"rotrwi",   3,	PPCCOM,	"rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
725262306a36Sopenharmony_ci{"rotrwi.",  3,	PPCCOM,	"rlwinm. %0,%1,(-(%2)!31)&((%2)|31),0,31"},
725362306a36Sopenharmony_ci{"slwi",     3,	PPCCOM,	"rlwinm %0,%1,%2,0,31-(%2)"},
725462306a36Sopenharmony_ci{"sli",      3,	PWRCOM,	"rlinm %0,%1,%2,0,31-(%2)"},
725562306a36Sopenharmony_ci{"slwi.",    3,	PPCCOM,	"rlwinm. %0,%1,%2,0,31-(%2)"},
725662306a36Sopenharmony_ci{"sli.",     3,	PWRCOM,	"rlinm. %0,%1,%2,0,31-(%2)"},
725762306a36Sopenharmony_ci{"srwi",     3,	PPCCOM,	"rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
725862306a36Sopenharmony_ci{"sri",      3,	PWRCOM,	"rlinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
725962306a36Sopenharmony_ci{"srwi.",    3,	PPCCOM,	"rlwinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
726062306a36Sopenharmony_ci{"sri.",     3,	PWRCOM,	"rlinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
726162306a36Sopenharmony_ci{"clrrwi",   3,	PPCCOM,	"rlwinm %0,%1,0,0,31-(%2)"},
726262306a36Sopenharmony_ci{"clrrwi.",  3,	PPCCOM,	"rlwinm. %0,%1,0,0,31-(%2)"},
726362306a36Sopenharmony_ci{"clrlslwi", 4,	PPCCOM,	"rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
726462306a36Sopenharmony_ci{"clrlslwi.",4, PPCCOM,	"rlwinm. %0,%1,%3,(%2)-(%3),31-(%3)"},
726562306a36Sopenharmony_ci
726662306a36Sopenharmony_ci{"e_extlwi", 4,	PPCVLE, "e_rlwinm %0,%1,%3,0,(%2)-1"},
726762306a36Sopenharmony_ci{"e_extrwi", 4,	PPCVLE, "e_rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"},
726862306a36Sopenharmony_ci{"e_inslwi", 4,	PPCVLE, "e_rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
726962306a36Sopenharmony_ci{"e_insrwi", 4,	PPCVLE, "e_rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
727062306a36Sopenharmony_ci{"e_rotlwi", 3,	PPCVLE, "e_rlwinm %0,%1,%2,0,31"},
727162306a36Sopenharmony_ci{"e_rotrwi", 3,	PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"},
727262306a36Sopenharmony_ci{"e_slwi",   3,	PPCVLE, "e_rlwinm %0,%1,%2,0,31-(%2)"},
727362306a36Sopenharmony_ci{"e_srwi",   3,	PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"},
727462306a36Sopenharmony_ci{"e_clrlwi", 3,	PPCVLE, "e_rlwinm %0,%1,0,%2,31"},
727562306a36Sopenharmony_ci{"e_clrrwi", 3,	PPCVLE, "e_rlwinm %0,%1,0,0,31-(%2)"},
727662306a36Sopenharmony_ci{"e_clrlslwi",4, PPCVLE, "e_rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"},
727762306a36Sopenharmony_ci};
727862306a36Sopenharmony_ci
727962306a36Sopenharmony_ciconst int powerpc_num_macros =
728062306a36Sopenharmony_ci  sizeof (powerpc_macros) / sizeof (powerpc_macros[0]);
7281