24 {
psq_lx,
"psq_lx",
OPM(4, 6),
OPM_MASK, {
OP_FD,
OP_RA,
OP_RB,
OP_WC,
OP_IC },
"Paired Single Quantized Load Indexed" },
25 {
psq_stx,
"psq_stx",
OPM(4, 7),
OPM_MASK, {
OP_FS,
OP_RA,
OP_RB,
OP_WC,
OP_IC },
"Paired Single Quantized Store Indexed" },
26 {
psq_lux,
"psq_lux",
OPM(4, 38),
OPM_MASK, {
OP_FD,
OP_RA,
OP_RB,
OP_WC,
OP_IC },
"Paired Single Quantized Load with update Indexed" },
27 {
psq_stux,
"psq_stux",
OPM(4, 39),
OPM_MASK, {
OP_FS,
OP_RA,
OP_RB,
OP_WC,
OP_IC },
"Paired Single Quantized Store with update Indexed" },
34 {
ps_div,
"ps_div",
OPSC(4, 18, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FB },
"Paired Single Divide" },
35 {
ps_div_dot,
"ps_div.",
OPSC(4, 18, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FB },
"Paired Single Divide" },
36 {
ps_sub,
"ps_sub",
OPSC(4, 20, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FB },
"Paired Single Subtract" },
37 {
ps_sub_dot,
"ps_sub.",
OPSC(4, 20, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FB },
"Paired Single Subtract" },
38 {
ps_add,
"ps_add",
OPSC(4, 21, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FB },
"Paired Single Add" },
39 {
ps_add_dot,
"ps_add.",
OPSC(4, 21, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FB },
"Paired Single Add" },
40 {
ps_sel,
"ps_sel",
OPSC(4, 23, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single Select" },
41 {
ps_sel_dot,
"ps_sel.",
OPSC(4, 23, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single Select" },
44 {
ps_mul,
"ps_mul",
OPSC(4, 25, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FC },
"Paired Single Multiply" },
45 {
ps_mul_dot,
"ps_mul.",
OPSC(4, 25, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FC },
"Paired Single Multiply" },
48 {
ps_msub,
"ps_msub",
OPSC(4, 28, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single Multiply-Subtract" },
49 {
ps_msub_dot,
"ps_msub.",
OPSC(4, 28, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single Multiply-Subtract" },
50 {
ps_madd,
"ps_madd",
OPSC(4, 29, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single Multiply-Add" },
51 {
ps_madd_dot,
"ps_madd.",
OPSC(4, 29, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single Multiply-Add" },
52 {
ps_nmsub,
"ps_nmsub",
OPSC(4, 30, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single Negative Multiply-Subtract" },
53 {
ps_nmsub_dot,
"ps_nmsub.",
OPSC(4, 30, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single Negative Multiply-Subtract" },
54 {
ps_nmadd,
"ps_nmadd",
OPSC(4, 31, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single Negative Multiply-Add" },
55 {
ps_nmadd_dot,
"ps_nmadd.",
OPSC(4, 31, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single Negative Multiply-Add" },
66 {
ps_sum0,
"ps_sum0",
OPSC(4, 10, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single vector SUM high" },
67 {
ps_sum0_dot,
"ps_sum0.",
OPSC(4, 10, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single vector SUM high" },
68 {
ps_sum1,
"ps_sum1",
OPSC(4, 11, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single vector SUM low" },
69 {
ps_sum1_dot,
"ps_sum1.",
OPSC(4, 11, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single vector SUM low" },
70 {
ps_muls0,
"ps_muls0",
OPSC(4, 12, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FC },
"Paired Single Multiply Scalar high" },
71 {
ps_muls0_dot,
"ps_muls0.",
OPSC(4, 12, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FC },
"Paired Single Multiply Scalar high" },
72 {
ps_muls1,
"ps_muls1",
OPSC(4, 13, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FC },
"Paired Single Multiply Scalar low" },
73 {
ps_muls1_dot,
"ps_muls1.",
OPSC(4, 13, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FC },
"Paired Single Multiply Scalar low" },
74 {
ps_madds0,
"ps_madds0",
OPSC(4, 14, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single Multiply-Add Scalar high" },
75 {
ps_madds0_dot,
"ps_madds0.",
OPSC(4, 14, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single Multiply-Add Scalar high" },
76 {
ps_madds1,
"ps_madds1",
OPSC(4, 15, 0),
OPS_MASK, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single Multiply-Add Scalar low" },
77 {
ps_madds1_dot,
"ps_madds1.",
OPSC(4, 15, 1),
OPS_MASK_DOT, {
OP_FD,
OP_FA,
OP_FC,
OP_FB },
"Paired Single Multiply-Add Scalar low" },
84 {
ps_merge00,
"ps_merge00",
OPLC(4, 528, 0),
OPL_MASK, {
OP_FD,
OP_FA,
OP_FB },
"Paired Single MERGE high" },
85 {
ps_merge00_dot,
"ps_merge00.",
OPLC(4, 528, 1),
OPL_MASK_DOT, {
OP_FD,
OP_FA,
OP_FB },
"Paired Single MERGE high" },
86 {
ps_merge01,
"ps_merge01",
OPLC(4, 560, 0),
OPL_MASK, {
OP_FD,
OP_FA,
OP_FB },
"Paired Single MERGE direct" },
87 {
ps_merge01_dot,
"ps_merge01.",
OPLC(4, 560, 1),
OPL_MASK_DOT, {
OP_FD,
OP_FA,
OP_FB },
"Paired Single MERGE direct" },
88 {
ps_merge10,
"ps_merge10",
OPLC(4, 592, 0),
OPL_MASK, {
OP_FD,
OP_FA,
OP_FB },
"Paired Single MERGE swapped" },
89 {
ps_merge10_dot,
"ps_merge10.",
OPLC(4, 592, 1),
OPL_MASK_DOT, {
OP_FD,
OP_FA,
OP_FB },
"Paired Single MERGE swapped" },
90 {
ps_merge11,
"ps_merge11",
OPLC(4, 624, 0),
OPL_MASK, {
OP_FD,
OP_FA,
OP_FB },
"Paired Single MERGE low" },
91 {
ps_merge11_dot,
"ps_merge11.",
OPLC(4, 624, 1),
OPL_MASK_DOT, {
OP_FD,
OP_FA,
OP_FB },
"Paired Single MERGE low" },
100 if ((
op ==
OP(4)) || (
op ==
OP(56)) ||
107 for (l = 0; l <
size; l++) {
110 for (; j < 6 &&
instruction->operands[j] != 0; j++) {
114 int bits = (data >> ps_operand->
shift) & ((1 << ps_operand->
bits) - 1);
151 st16 displacement = 0;
155 displacement = -1 *
imm;
181 for (
i = 0;
add > 0 &&
i < instr->
n &&
add < bufsize;
i++) {
int bits(struct state *s, int need)
#define OP(v, w, x, y, z)
void libps_snprint(char *str, int size, ut64 addr, ppcps_t *instr)
bool libps_decode(ut32 data, ppcps_t *ps)
ps_opcode_t ps_opcodes_array[]
ps_operand_t ps_operands_array[]
#define OPSC(op, xop, rc)
#define OPLC(op, xop, rc)
ppcps_field_t operands[6]
ut64(WINAPI *w32_GetEnabledXStateFeatures)()