e2k: update disassembler

This commit is contained in:
Denis Drakhnia 2024-03-23 08:09:43 +02:00
parent 9e855a1ead
commit 16fd915344
2 changed files with 56 additions and 49 deletions

View File

@ -68,6 +68,8 @@ struct e2k_private_data
unsigned short version; unsigned short version;
int lines; int lines;
int align;
}; };
#define implement_me(c) assert((c) && "implement me"); #define implement_me(c) assert((c) && "implement me");
@ -82,7 +84,7 @@ struct e2k_private_data
print_styled (info, dis_style_mnemonic, __VA_ARGS__) print_styled (info, dis_style_mnemonic, __VA_ARGS__)
#define print_align(info) \ #define print_align(info) \
print_text (info, "\t") print_text (info, " ")
#define print_aligned_text(info, ...) \ #define print_aligned_text(info, ...) \
print_align (info); \ print_align (info); \
@ -93,7 +95,7 @@ struct e2k_private_data
print_styled (info, dis_style_mnemonic, __VA_ARGS__) print_styled (info, dis_style_mnemonic, __VA_ARGS__)
#define print_operand_alignment(info, width) \ #define print_operand_alignment(info, width) \
print_text (info, "%c", width < 8 ? '\t' : ' '); print_text (info, "%*c", width < 8 ? 8 - width % 8 : 4 - width % 4, ' ')
#define print_sub_mnemonic(info, ...) \ #define print_sub_mnemonic(info, ...) \
print_styled (info, dis_style_sub_mnemonic, __VA_ARGS__) print_styled (info, dis_style_sub_mnemonic, __VA_ARGS__)
@ -488,7 +490,7 @@ print_syllable_impl (struct disassemble_info *info)
if (pd->syll_cur >= pd->syll_len) if (pd->syll_cur >= pd->syll_len)
{ {
print_text (info, "%20c", ' '); print_text (info, "%16c", ' ');
return; return;
} }
@ -698,7 +700,8 @@ static void
print_nl (struct disassemble_info *info) print_nl (struct disassemble_info *info)
{ {
struct e2k_private_data *pd = info->private_data; struct e2k_private_data *pd = info->private_data;
print_styled (info, dis_style_comment_stop, "\n\t"); print_styled (info, dis_style_comment_stop, "\n");
print_text (info, "%*c", pd->align, ' ');
print_syllable (pd, info); print_syllable (pd, info);
++pd->lines; ++pd->lines;
} }
@ -891,7 +894,7 @@ decode_pls (struct disassemble_info *info,
if (!used[i + 4]) if (!used[i + 4])
continue; continue;
print_text (info, "plu%d\t", i); print_text (info, "plu%d ", i);
switch (pls & LP_OPC_MASK) switch (pls & LP_OPC_MASK)
{ {
case LP_ANDP: case LP_ANDP:
@ -1735,10 +1738,13 @@ decode_al (bfd_vma memaddr, struct disassemble_info *info,
return; return;
} }
print_text (info, "alc%d", ch);
if (ALS_DECODE_SM (als)) if (ALS_DECODE_SM (als))
print_sub_mnemonic (info, ".sm"); {
print_text (info, "\t"); print_text (info, "alc%d", ch);
print_sub_mnemonic (info, ".sm ");
}
else
print_text (info, "alc%d ", ch);
print_mnemonic (info, "%s", opcode->name); print_mnemonic (info, "%s", opcode->name);
width = strlen (opcode->name); width = strlen (opcode->name);
@ -1947,7 +1953,7 @@ decode_al (bfd_vma memaddr, struct disassemble_info *info,
/* Special case for staa instructions. */ /* Special case for staa instructions. */
if (opcode->format == ALF10_MAS && ALS_DECODE_AA_INC (als)) if (opcode->format == ALF10_MAS && ALS_DECODE_AA_INC (als))
{ {
print_text (info, "alc%d\t", ch); print_text (info, "alc%d ", ch);
print_mnemonic (info, "incr"); print_mnemonic (info, "incr");
print_operand_alignment (info, 4); print_operand_alignment (info, 4);
print_aaincr (info, ALS_DECODE_AA_INCR (als)); print_aaincr (info, ALS_DECODE_AA_INCR (als));
@ -2007,7 +2013,6 @@ print_bundle (bfd_vma memaddr, struct disassemble_info *info)
return status; return status;
} }
print_text (info, "\n\t");
len = HS_DECODE_BSZ (packet[0]); len = HS_DECODE_BSZ (packet[0]);
status = (*info->read_memory_func) (memaddr, packet, len, info); status = (*info->read_memory_func) (memaddr, packet, len, info);
if (status != 0 || !bundle_unpack (pd, packet, len, &bundle)) if (status != 0 || !bundle_unpack (pd, packet, len, &bundle))
@ -2069,7 +2074,7 @@ print_bundle (bfd_vma memaddr, struct disassemble_info *info)
decode_nop (info, bundle.hs); decode_nop (info, bundle.hs);
} }
//print_aligned_text (info, "--"); print_aligned_text (info, "--");
/* Force print tail syllables. */ /* Force print tail syllables. */
if (pd->show_syllables) if (pd->show_syllables)
@ -2093,6 +2098,8 @@ print_insn_e2k (bfd_vma memaddr, struct disassemble_info *info)
pd = info->private_data; pd = info->private_data;
pd->align = MAX((64 - clz64(memaddr) + 3) / 4, 8) + 5;
if (info->disassembler_options != NULL) if (info->disassembler_options != NULL)
{ {
set_isa_version (pd, info->mach); set_isa_version (pd, info->mach);

View File

@ -848,7 +848,7 @@ const struct al_format_info al_format_info[ALF_MAX] =
/* ALF13_MAS */ {0x7f000000, 0xffff, {U,U,5,U,U,2}, "4,1,2m?"}, /* ALF13_MAS */ {0x7f000000, 0xffff, {U,U,5,U,U,2}, "4,1,2m?"},
/* ALF15 */ {0x7fff0000, 0xffff, {U,U,U,U,U,U}, "S,2?"}, /* ALF15 */ {0x7fff0000, 0xffff, {U,U,U,U,U,U}, "S,2?"},
/* ALF16 */ {0x7f00ff00, 0xffff, {U,U,U,U,U,U}, "D,s?"}, /* ALF16 */ {0x7f00ff00, 0xffff, {U,U,U,U,U,U}, "D,s?"},
/* ALF17 */ {0x7f000000, 0xffff, {U,U,U,U,U,U}, "P,1,2?"}, /* ALF17 */ {0x7f0000e0, 0xffff, {U,U,U,U,U,U}, "P,1,2?"},
/* ALF21 */ {0x7f000000, 0xff00, {U,U,U,U,U,U}, "D,1,2,3?"}, /* ALF21 */ {0x7f000000, 0xff00, {U,U,U,U,U,U}, "D,1,2,3?"},
/* ALF21_LT3 */ {0x7f000000, 0xff00, {U,U,U,U,U,U}, "D,1,2,L?"}, /* ALF21_LT3 */ {0x7f000000, 0xff00, {U,U,U,U,U,U}, "D,1,2,L?"},
/* ALF21_MERGE */ {0x7f000000, 0xff00, {U,U,U,U,U,U}, "D,1,2,3,p?"}, /* ALF21_MERGE */ {0x7f000000, 0xff00, {U,U,U,U,U,U}, "D,1,2,3,p?"},
@ -895,7 +895,7 @@ const struct al_opcode al_opcodes[] =
{"addw", 0x10000000, 0x0000, { 1, 1, 1, 1, 1, 1}, S,S,S,0, ALF1, 0}, {"addw", 0x10000000, 0x0000, { 1, 1, 1, 1, 1, 1}, S,S,S,0, ALF1, 0},
{"addd", 0x11000000, 0x0000, { 1, 1, 1, 1, 1, 1}, D,D,D,0, ALF1, 0}, {"addd", 0x11000000, 0x0000, { 1, 1, 1, 1, 1, 1}, D,D,D,0, ALF1, 0},
{"negw", 0x12c00000, 0x0000, { 1, 1, 1, 1, 1, 1}, S,S,S,0, ALF2, AF_ALIAS}, {"negw", 0x12c00000, 0x0000, { 1, 1, 1, 1, 1, 1}, S,S,S,0, ALF2, AF_ALIAS},
{"subs", 0x12000000, 0x0000, { 1, 1, 1, 1, 1, 1}, S,S,S,0, ALF1, 0}, {"subw", 0x12000000, 0x0000, { 1, 1, 1, 1, 1, 1}, S,S,S,0, ALF1, 0},
{"negd", 0x13c00000, 0x0000, { 1, 1, 1, 1, 1, 1}, D,D,D,0, ALF2, AF_ALIAS}, {"negd", 0x13c00000, 0x0000, { 1, 1, 1, 1, 1, 1}, D,D,D,0, ALF2, AF_ALIAS},
{"subd", 0x13000000, 0x0000, { 1, 1, 1, 1, 1, 1}, D,D,D,0, ALF1, 0}, {"subd", 0x13000000, 0x0000, { 1, 1, 1, 1, 1, 1}, D,D,D,0, ALF1, 0},
{"sclw", 0x14000000, 0x0000, { 1, 1, 1, 1, 1, 1}, S,S,S,0, ALF1, 0}, {"sclw", 0x14000000, 0x0000, { 1, 1, 1, 1, 1, 1}, S,S,S,0, ALF1, 0},
@ -935,7 +935,7 @@ const struct al_opcode al_opcodes[] =
{"cmpandpdb", 0x230000a0, 0x0000, { 1, 1, 0, 1, 1, 0}, 0,D,D,0, ALF7, 0}, {"cmpandpdb", 0x230000a0, 0x0000, { 1, 1, 0, 1, 1, 0}, 0,D,D,0, ALF7, 0},
{"cmpandledb", 0x230000e0, 0x0000, { 1, 1, 0, 1, 1, 0}, 0,D,D,0, ALF7, 0}, {"cmpandledb", 0x230000e0, 0x0000, { 1, 1, 0, 1, 1, 0}, 0,D,D,0, ALF7, 0},
{"cctopo", 0x24c00000, 0x0000, { 1, 0, 0, 1, 0, 0}, 0,0,S,0, ALF8, 0}, {"cctopo", 0x24c00000, 0x0000, { 1, 0, 0, 1, 0, 0}, 0,0,S,0, ALF8, 0},
{"stb", 0x24000000, 0x0000, { 0, 0, 1, 0, 0, 1}, S,D,D,0, ALF3_MAS, 0}, {"sb", 0x24000000, 0x0000, { 0, 0, 1, 0, 0, 1}, S,D,D,0, ALF3_MAS, 0},
{"cctopb", 0x24c00020, 0x0000, { 1, 0, 0, 1, 0, 0}, 0,0,S,0, ALF8, 0}, {"cctopb", 0x24c00020, 0x0000, { 1, 0, 0, 1, 0, 0}, 0,0,S,0, ALF8, 0},
{"cctope", 0x24c00040, 0x0000, { 1, 0, 0, 1, 0, 0}, 0,0,S,0, ALF8, 0}, {"cctope", 0x24c00040, 0x0000, { 1, 0, 0, 1, 0, 0}, 0,0,S,0, ALF8, 0},
{"cctopbe", 0x24c00060, 0x0000, { 1, 0, 0, 1, 0, 0}, 0,0,S,0, ALF8, 0}, {"cctopbe", 0x24c00060, 0x0000, { 1, 0, 0, 1, 0, 0}, 0,0,S,0, ALF8, 0},
@ -943,10 +943,10 @@ const struct al_opcode al_opcodes[] =
{"cctopp", 0x24c000a0, 0x0000, { 1, 0, 0, 1, 0, 0}, 0,0,S,0, ALF8, 0}, {"cctopp", 0x24c000a0, 0x0000, { 1, 0, 0, 1, 0, 0}, 0,0,S,0, ALF8, 0},
{"cctopl", 0x24c000c0, 0x0000, { 1, 0, 0, 1, 0, 0}, 0,0,S,0, ALF8, 0}, {"cctopl", 0x24c000c0, 0x0000, { 1, 0, 0, 1, 0, 0}, 0,0,S,0, ALF8, 0},
{"cctople", 0x24c000e0, 0x0000, { 1, 0, 0, 1, 0, 0}, 0,0,S,0, ALF8, 0}, {"cctople", 0x24c000e0, 0x0000, { 1, 0, 0, 1, 0, 0}, 0,0,S,0, ALF8, 0},
{"sth", 0x25000000, 0x0000, { 0, 0, 1, 0, 0, 1}, S,D,D,0, ALF3_MAS, 0}, {"sh", 0x25000000, 0x0000, { 0, 0, 1, 0, 0, 1}, S,D,D,0, ALF3_MAS, 0},
{"stw", 0x26000000, 0x0000, { 0, 0, 1, 0, 0, 1}, S,D,D,0, ALF3_MAS, 0}, {"sw", 0x26000000, 0x0000, { 0, 0, 1, 0, 0, 1}, S,D,D,0, ALF3_MAS, 0},
{"bitrevw", 0x26c00000, 0x0000, { 2, 2, 0, 2, 2, 0}, S,0,S,0, ALF2, 0}, {"bitrevw", 0x26c00000, 0x0000, { 2, 2, 0, 2, 2, 0}, S,0,S,0, ALF2, 0},
{"std", 0x27000000, 0x0000, { 0, 0, 1, 0, 0, 1}, D,D,D,0, ALF3_MAS, 0}, {"sd", 0x27000000, 0x0000, { 0, 0, 1, 0, 0, 1}, D,D,D,0, ALF3_MAS, 0},
{"bitrevd", 0x27c00000, 0x0000, { 2, 2, 0, 2, 2, 0}, D,0,D,0, ALF2, 0}, {"bitrevd", 0x27c00000, 0x0000, { 2, 2, 0, 2, 2, 0}, D,0,D,0, ALF2, 0},
{"fxcmpeqsb", 0x28000000, 0x0000, { 1, 1, 0, 1, 1, 0}, 0,X,S,0, ALF7, 0}, {"fxcmpeqsb", 0x28000000, 0x0000, { 1, 1, 0, 1, 1, 0}, 0,X,S,0, ALF7, 0},
{"stcsb", 0x28000000, 0x0000, { 0, 0, 1, 0, 0, 1}, S,S,S,0, ALF3_MAS, 0}, {"stcsb", 0x28000000, 0x0000, { 0, 0, 1, 0, 0, 1}, S,S,S,0, ALF3_MAS, 0},
@ -1096,41 +1096,41 @@ const struct al_opcode al_opcodes[] =
{"fxrsubdd", 0x59000000, 0x0000, { 1, 1, 0, 1, 1, 0}, D,X,D,0, ALF1, 0}, {"fxrsubdd", 0x59000000, 0x0000, { 1, 1, 0, 1, 1, 0}, D,X,D,0, ALF1, 0},
{"fxsqrtuxx", 0x59000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,X,X,0, ALF1, 0}, {"fxsqrtuxx", 0x59000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,X,X,0, ALF1, 0},
{"fxrsubsx", 0x5a000000, 0x0000, { 1, 1, 0, 1, 1, 0}, X,X,S,0, ALF1, 0}, {"fxrsubsx", 0x5a000000, 0x0000, { 1, 1, 0, 1, 1, 0}, X,X,S,0, ALF1, 0},
{"fxsqrtusx", 0x5a000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,X,S,0, ALF1, 0}, {"fxsqrtusx", 0x5a000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,S,X,0, ALF1, 0},
{"fxrsubdx", 0x5b000000, 0x0000, { 1, 1, 0, 1, 1, 0}, X,X,D,0, ALF1, 0}, {"fxrsubdx", 0x5b000000, 0x0000, { 1, 1, 0, 1, 1, 0}, X,X,D,0, ALF1, 0},
{"fxsqrtudx", 0x5b000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,X,D,0, ALF1, 0}, {"fxsqrtudx", 0x5b000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,D,X,0, ALF1, 0},
{"movfi", 0x5cc00000, 0x0000, { 2, 1, 0, 2, 1, 0}, S,0,X,0, ALF2, 0}, {"movfi", 0x5cc00000, 0x0000, { 2, 1, 0, 2, 1, 0}, S,0,X,0, ALF2, 0},
{"fxsqrttxx", 0x5d000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,X,X,0, ALF1, 0}, {"fxsqrttxx", 0x5d000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,X,X,0, ALF1, 0},
{"fxsqrttsx", 0x5e000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,X,S,0, ALF1, 0}, {"fxsqrttsx", 0x5e000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,S,X,0, ALF1, 0},
{"movif", 0x5e000000, 0x0000, { 2, 1, 0, 2, 1, 0}, X,D,S,0, ALF1, 0}, {"movif", 0x5e000000, 0x0000, { 2, 1, 0, 2, 1, 0}, X,D,S,0, ALF1, 0},
{"fxsqrttdx", 0x5f000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,X,D,0, ALF1, 0}, {"fxsqrttdx", 0x5f000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,D,X,0, ALF1, 0},
{"movx", 0x5fc00000, 0x0000, { 2, 2, 0, 2, 2, 0}, X,0,X,0, ALF2, 0}, {"movx", 0x5fc00000, 0x0000, { 2, 2, 0, 2, 2, 0}, X,0,X,0, ALF2, 0},
{"movxa", 0x5fc10000, 0x0000, { 2, 2, 0, 2, 2, 0}, X,0,X,0, ALF2, 0}, {"movxa", 0x5fc10000, 0x0000, { 2, 2, 0, 2, 2, 0}, X,0,X,0, ALF2, 0},
{"movxc", 0x5fc20000, 0x0000, { 2, 2, 0, 2, 2, 0}, X,0,X,0, ALF2, 0}, {"movxc", 0x5fc20000, 0x0000, { 2, 2, 0, 2, 2, 0}, X,0,X,0, ALF2, 0},
{"fxdivtss", 0x60000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,S,S,0, ALF1, 0}, {"fxdivtss", 0x60000000, 0x0000, { 0, 0, 0, 0, 0, 1}, S,S,X,0, ALF1, 0},
{"movts", 0x60c00000, 0x0000, { 1, 1, 0, 1, 1, 0}, S,0,S,0, ALF2, 0}, {"movts", 0x60c00000, 0x0000, { 1, 1, 0, 1, 1, 0}, S,0,S,0, ALF2, 0},
{"movtcs", 0x60c10000, 0x0000, { 1, 1, 0, 1, 1, 0}, S,0,S,0, ALF2, 0}, {"movtcs", 0x60c10000, 0x0000, { 1, 1, 0, 1, 1, 0}, S,0,S,0, ALF2, 0},
{"movtrs", 0x60c20000, 0x0000, { 1, 1, 0, 1, 1, 0}, S,0,S,0, ALF2, 0}, {"movtrs", 0x60c20000, 0x0000, { 1, 1, 0, 1, 1, 0}, S,0,S,0, ALF2, 0},
{"movtrcs", 0x60c30000, 0x0000, { 1, 1, 0, 1, 1, 0}, S,0,S,0, ALF2, 0}, {"movtrcs", 0x60c30000, 0x0000, { 1, 1, 0, 1, 1, 0}, S,0,S,0, ALF2, 0},
{"fxdivtdd", 0x61000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,D,D,0, ALF1, 0}, {"fxdivtdd", 0x61000000, 0x0000, { 0, 0, 0, 0, 0, 1}, D,D,X,0, ALF1, 0},
{"movtd", 0x61c00000, 0x0000, { 1, 1, 0, 1, 1, 0}, D,0,D,0, ALF2_MOVTD, 0}, {"movtd", 0x61c00000, 0x0000, { 1, 1, 0, 1, 1, 0}, D,0,D,0, ALF2_MOVTD, 0},
{"movtcd", 0x61c10000, 0x0000, { 1, 1, 0, 1, 1, 0}, D,0,D,0, ALF2_MOVTD, 0}, {"movtcd", 0x61c10000, 0x0000, { 1, 1, 0, 1, 1, 0}, D,0,D,0, ALF2_MOVTD, 0},
{"movtrd", 0x61c20000, 0x0000, { 1, 1, 0, 1, 1, 0}, D,0,D,0, ALF2_MOVTD, 0}, {"movtrd", 0x61c20000, 0x0000, { 1, 1, 0, 1, 1, 0}, D,0,D,0, ALF2_MOVTD, 0},
{"movtrcd", 0x61c30000, 0x0000, { 1, 1, 0, 1, 1, 0}, D,0,D,0, ALF2_MOVTD, 0}, {"movtrcd", 0x61c30000, 0x0000, { 1, 1, 0, 1, 1, 0}, D,0,D,0, ALF2_MOVTD, 0},
{"fxdivtsx", 0x62000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,X,S,0, ALF1, 0}, {"fxdivtsx", 0x62000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,S,X,0, ALF1, 0},
{"getsap", 0x62ec0000, 0x0000, { 1, 1, 0, 0, 0, 0}, Q,0,S,0, ALF2, AF_PAIR}, {"getsap", 0x62ec0000, 0x0000, { 1, 1, 0, 0, 0, 0}, Q,0,S,0, ALF2, AF_PAIR},
{"cudtoap", 0x62f00000, 0x0000, { 1, 1, 0, 1, 1, 0}, Q,0,S,0, ALF2, AF_PAIR}, {"cudtoap", 0x62f00000, 0x0000, { 1, 1, 0, 1, 1, 0}, Q,0,S,0, ALF2, AF_PAIR},
{"gdtoap", 0x62f20000, 0x0000, { 1, 1, 0, 1, 1, 0}, Q,0,S,0, ALF2, AF_PAIR}, {"gdtoap", 0x62f20000, 0x0000, { 1, 1, 0, 1, 1, 0}, Q,0,S,0, ALF2, AF_PAIR},
{"fxdivtdx", 0x63000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,X,D,0, ALF1, 0}, {"fxdivtdx", 0x63000000, 0x0000, { 0, 0, 0, 0, 0, 1}, X,D,X,0, ALF1, 0},
{"vfsi", 0x63000000, 0x0000, { 0, 1, 0, 0, 1, 0}, D,S,D,0, ALF1, 0}, {"vfsi", 0x63000000, 0x0000, { 0, 1, 0, 0, 1, 0}, D,S,D,0, ALF1, 0},
{"getpl", 0x63f00000, 0x0000, { 1, 0, 0, 1, 0, 0}, D,0,S,0, ALF2, 0}, {"getpl", 0x63f00000, 0x0000, { 1, 0, 0, 1, 0, 0}, D,0,S,0, ALF2, 0},
{"ldb", 0x64000000, 0x0000, { 1, 0, 1, 1, 0, 1}, D,D,D,0, ALF1_MAS, 0}, {"lb", 0x64000000, 0x0000, { 1, 0, 1, 1, 0, 1}, D,D,D,0, ALF1_MAS, 0},
{"lzcnts", 0x64c00000, 0x0000, { 0, 2, 0, 0, 2, 0}, S,0,S,0, ALF2, 0}, {"lzcnts", 0x64c00000, 0x0000, { 0, 2, 0, 0, 2, 0}, S,0,S,0, ALF2, 0},
{"ldh", 0x65000000, 0x0000, { 1, 0, 1, 1, 0, 1}, D,D,D,0, ALF1_MAS, 0}, {"lh", 0x65000000, 0x0000, { 1, 0, 1, 1, 0, 1}, D,D,D,0, ALF1_MAS, 0},
{"lzcntd", 0x65c00000, 0x0000, { 0, 2, 0, 0, 2, 0}, D,0,D,0, ALF2, 0}, {"lzcntd", 0x65c00000, 0x0000, { 0, 2, 0, 0, 2, 0}, D,0,D,0, ALF2, 0},
{"ldw", 0x66000000, 0x0000, { 1, 0, 1, 1, 0, 1}, D,D,D,0, ALF1_MAS, 0}, {"lw", 0x66000000, 0x0000, { 1, 0, 1, 1, 0, 1}, D,D,D,0, ALF1_MAS, 0},
{"popcnts", 0x66c00000, 0x0000, { 0, 2, 0, 0, 2, 0}, S,0,S,0, ALF2, 0}, {"popcnts", 0x66c00000, 0x0000, { 0, 2, 0, 0, 2, 0}, S,0,S,0, ALF2, 0},
{"ldd", 0x67000000, 0x0000, { 1, 0, 1, 1, 0, 1}, D,D,D,0, ALF1_MAS, 0}, {"ld", 0x67000000, 0x0000, { 1, 0, 1, 1, 0, 1}, D,D,D,0, ALF1_MAS, 0},
{"popcntd", 0x67c00000, 0x0000, { 0, 2, 0, 0, 2, 0}, D,0,D,0, ALF2, 0}, {"popcntd", 0x67c00000, 0x0000, { 0, 2, 0, 0, 2, 0}, D,0,D,0, ALF2, 0},
{"ldcsb", 0x68000000, 0x0000, { 1, 0, 1, 1, 0, 1}, D,S,S,0, ALF1_MAS, 0}, {"ldcsb", 0x68000000, 0x0000, { 1, 0, 1, 1, 0, 1}, D,S,S,0, ALF1_MAS, 0},
{"vfbgv", 0x68000000, 0x0000, { 0, 6, 0, 0, 6, 0}, S,S,S,0, ALF1, 0}, {"vfbgv", 0x68000000, 0x0000, { 0, 6, 0, 0, 6, 0}, S,S,S,0, ALF1, 0},
@ -1163,7 +1163,7 @@ const struct al_opcode al_opcodes[] =
{"punpckhbh", 0x00000000, 0x01c0, { 0, 1, 0, 0, 1, 0}, D,D,D,0, ALF11, 0}, {"punpckhbh", 0x00000000, 0x01c0, { 0, 1, 0, 0, 1, 0}, D,D,D,0, ALF11, 0},
{"pminsh", 0x01000000, 0x01c0, { 1, 0, 0, 1, 0, 0}, D,D,D,0, ALF11, 0}, {"pminsh", 0x01000000, 0x01c0, { 1, 0, 0, 1, 0, 0}, D,D,D,0, ALF11, 0},
{"punpcklbh", 0x01000000, 0x01c0, { 0, 1, 0, 0, 1, 0}, D,D,D,0, ALF11, 0}, {"punpcklbh", 0x01000000, 0x01c0, { 0, 1, 0, 0, 1, 0}, D,D,D,0, ALF11, 0},
{"stq", 0x01000000, 0x01c0, { 0, 0, 5, 0, 0, 5}, Q,D,D,0, ALF13_MAS, AF_PAIR}, {"sq", 0x01000000, 0x01c0, { 0, 0, 5, 0, 0, 5}, Q,D,D,0, ALF13_MAS, AF_PAIR},
{"pmaxub", 0x02000000, 0x01c0, { 1, 0, 0, 1, 0, 0}, D,D,D,0, ALF11, 0}, {"pmaxub", 0x02000000, 0x01c0, { 1, 0, 0, 1, 0, 0}, D,D,D,0, ALF11, 0},
{"punpckhhw", 0x02000000, 0x01c0, { 0, 1, 0, 0, 1, 0}, D,D,D,0, ALF11, 0}, {"punpckhhw", 0x02000000, 0x01c0, { 0, 1, 0, 0, 1, 0}, D,D,D,0, ALF11, 0},
{"stcsq", 0x02000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, Q,S,S,0, ALF13_MAS, AF_PAIR}, {"stcsq", 0x02000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, Q,S,S,0, ALF13_MAS, AF_PAIR},
@ -1235,7 +1235,7 @@ const struct al_opcode al_opcodes[] =
{"pmulubhh", 0x1d000000, 0x01c0, { 0, 2, 0, 0, 2, 0}, D,D,D,0, ALF11, 0}, {"pmulubhh", 0x1d000000, 0x01c0, { 0, 2, 0, 0, 2, 0}, D,D,D,0, ALF11, 0},
{"aaurww", 0x1e000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, S,0,0,0, AAURW, 0}, {"aaurww", 0x1e000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, S,0,0,0, AAURW, 0},
{"staaw", 0x1e000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, S,0,0,0, ALF10_MAS, 0}, {"staaw", 0x1e000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, S,0,0,0, ALF10_MAS, 0},
{"pextrh", 0x1e000000, 0x0100, { 0, 1, 0, 0, 1, 0}, S,D,D,0, ALF11_LIT8, 0}, {"pextrh", 0x1e000000, 0x0100, { 0, 1, 0, 0, 1, 0}, D,D,D,0, ALF11_LIT8, 0},
{"pavgusb", 0x1e000000, 0x01c0, { 1, 0, 0, 1, 0, 0}, D,D,D,0, ALF11, 0}, {"pavgusb", 0x1e000000, 0x01c0, { 1, 0, 0, 1, 0, 0}, D,D,D,0, ALF11, 0},
{"aaurwd", 0x1f000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, D,0,0,0, AAURW, 0}, {"aaurwd", 0x1f000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, D,0,0,0, AAURW, 0},
{"staad", 0x1f000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, D,0,0,0, ALF10_MAS, 0}, {"staad", 0x1f000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, D,0,0,0, ALF10_MAS, 0},
@ -1248,7 +1248,7 @@ const struct al_opcode al_opcodes[] =
{"fscales", 0x24000000, 0x01c0, { 0, 4, 0, 0, 4, 0}, S,S,S,0, ALF11, 0}, {"fscales", 0x24000000, 0x01c0, { 0, 4, 0, 0, 4, 0}, S,S,S,0, ALF11, 0},
{"stgdb", 0x24000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, S,S,S,0, ALF13_MAS, 0}, {"stgdb", 0x24000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, S,S,S,0, ALF13_MAS, 0},
{"gettc", 0x24c00000, 0x01c0, { 1, 0, 0, 0, 0, 0}, D,0,S,0, ALF12, 0}, {"gettc", 0x24c00000, 0x01c0, { 1, 0, 0, 0, 0, 0}, D,0,S,0, ALF12, 0},
{"fscaled", 0x25000000, 0x01c0, { 0, 4, 0, 0, 4, 0}, D,S,D,0, ALF11, 0}, {"fscaled", 0x25000000, 0x01c0, { 0, 4, 0, 0, 4, 0}, D,D,S,0, ALF11, 0},
{"puttc", 0x25000000, 0x01c0, { 1, 0, 0, 0, 0, 0}, D,D,D,0, ALF11, 0}, {"puttc", 0x25000000, 0x01c0, { 1, 0, 0, 0, 0, 0}, D,D,D,0, ALF11, 0},
{"stgdh", 0x25000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, S,S,S,0, ALF13_MAS, 0}, {"stgdh", 0x25000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, S,S,S,0, ALF13_MAS, 0},
{"puttst", 0x25c00000, 0x01c0, { 0, 0, 0, 3, 0, 0}, D,0,D,0, ALF12, 0}, {"puttst", 0x25c00000, 0x01c0, { 0, 0, 0, 3, 0, 0}, D,0,D,0, ALF12, 0},
@ -1259,11 +1259,11 @@ const struct al_opcode al_opcodes[] =
{"fxscalesx", 0x27000000, 0x01c0, { 0, 4, 0, 0, 4, 0}, X,X,S,0, ALF11, 0}, {"fxscalesx", 0x27000000, 0x01c0, { 0, 4, 0, 0, 4, 0}, X,X,S,0, ALF11, 0},
{"stgdd", 0x27000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, D,S,S,0, ALF13_MAS, 0}, {"stgdd", 0x27000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, D,S,S,0, ALF13_MAS, 0},
{"stapb", 0x28000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, S,Q,S,0, ALF13_MAS, 0}, {"stapb", 0x28000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, S,Q,S,0, ALF13_MAS, 0},
{"fxcmpudsf", 0x28000000, 0x01c3, { 1, 1, 0, 1, 1, 0}, S,X,X,0, ALF11, 0}, {"fxcmpudsf", 0x28000000, 0x01c3, { 1, 1, 0, 1, 1, 0}, S,X,S,0, ALF11, 0},
{"fxcmpodsf", 0x28000000, 0x01c7, { 1, 1, 0, 1, 1, 0}, S,X,X,0, ALF11, 0}, {"fxcmpodsf", 0x28000000, 0x01c7, { 1, 1, 0, 1, 1, 0}, S,X,S,0, ALF11, 0},
{"staph", 0x29000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, S,Q,S,0, ALF13_MAS, 0}, {"staph", 0x29000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, S,Q,S,0, ALF13_MAS, 0},
{"fxcmpuddf", 0x29000000, 0x01c3, { 1, 1, 0, 1, 1, 0}, S,X,X,0, ALF11, 0}, {"fxcmpuddf", 0x29000000, 0x01c3, { 1, 1, 0, 1, 1, 0}, S,X,D,0, ALF11, 0},
{"fxcmpoddf", 0x29000000, 0x01c7, { 1, 1, 0, 1, 1, 0}, S,X,X,0, ALF11, 0}, {"fxcmpoddf", 0x29000000, 0x01c7, { 1, 1, 0, 1, 1, 0}, S,X,D,0, ALF11, 0},
{"stapw", 0x2a000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, S,Q,S,0, ALF13_MAS, 0}, {"stapw", 0x2a000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, S,Q,S,0, ALF13_MAS, 0},
{"stapd", 0x2b000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, D,Q,S,0, ALF13_MAS, 0}, {"stapd", 0x2b000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, D,Q,S,0, ALF13_MAS, 0},
{"fxcmpudxf", 0x2b000000, 0x01c3, { 1, 1, 0, 1, 1, 0}, S,X,X,0, ALF11, 0}, {"fxcmpudxf", 0x2b000000, 0x01c3, { 1, 1, 0, 1, 1, 0}, S,X,X,0, ALF11, 0},
@ -1333,12 +1333,12 @@ const struct al_opcode al_opcodes[] =
{"rww", 0x3cc00000, 0x01c0, { 1, 0, 0, 0, 0, 0}, 0,0,S,0, ALF15, 0}, {"rww", 0x3cc00000, 0x01c0, { 1, 0, 0, 0, 0, 0}, 0,0,S,0, ALF15, 0},
{"stodpq", 0x3d000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, Q,Q,S,0, ALF13_MAS, AF_PAIR | AF_REMOVED_IN_V3}, {"stodpq", 0x3d000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, Q,Q,S,0, ALF13_MAS, AF_PAIR | AF_REMOVED_IN_V3},
{"rwd", 0x3dc00000, 0x01c0, { 1, 0, 0, 0, 0, 0}, 0,0,D,0, ALF15, 0}, {"rwd", 0x3dc00000, 0x01c0, { 1, 0, 0, 0, 0, 0}, 0,0,D,0, ALF15, 0},
{"rrs", 0x3e00c000, 0x01c0, { 1, 0, 0, 0, 0, 0}, S,0,0,0, ALF16, 0}, {"rrw", 0x3e00c000, 0x01c0, { 1, 0, 0, 0, 0, 0}, S,0,0,0, ALF16, 0},
{"aaurwq", 0x3f000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, Q,0,0,0, AAURW, AF_PAIR}, {"aaurwq", 0x3f000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, Q,0,0,0, AAURW, AF_PAIR},
{"staaq", 0x3f000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, Q,0,0,0, ALF10_MAS, AF_PAIR}, {"staaq", 0x3f000000, 0x01c0, { 0, 0, 1, 0, 0, 1}, Q,0,0,0, ALF10_MAS, AF_PAIR},
{"rrd", 0x3f00c000, 0x01c0, { 1, 0, 0, 0, 0, 0}, D,0,0,0, ALF16, 0}, {"rrd", 0x3f00c000, 0x01c0, { 1, 0, 0, 0, 0, 0}, D,0,0,0, ALF16, 0},
{"pmrgp", 0x40000000, 0x01c0, { 6, 6, 0, 6, 6, 0}, D,D,D,0, ALF11_MERGE, 0}, {"pmrgp", 0x40000000, 0x01c0, { 6, 6, 0, 6, 6, 0}, D,D,D,0, ALF11_MERGE, 0},
{"ldq", 0x41000000, 0x01c0, { 5, 0, 5, 5, 0, 5}, Q,D,D,0, ALF11_MAS, AF_PAIR}, {"lq", 0x41000000, 0x01c0, { 5, 0, 5, 5, 0, 5}, Q,D,D,0, ALF11_MAS, AF_PAIR},
{"ldfsq", 0x45000000, 0x01c0, { 1, 0, 1, 1, 0, 1}, Q,D,D,0, ALF11_MAS, AF_PAIR}, {"ldfsq", 0x45000000, 0x01c0, { 1, 0, 1, 1, 0, 1}, Q,D,D,0, ALF11_MAS, AF_PAIR},
{"ldgsq", 0x46000000, 0x01c0, { 1, 0, 1, 1, 0, 1}, Q,D,D,0, ALF11_MAS, AF_PAIR}, {"ldgsq", 0x46000000, 0x01c0, { 1, 0, 1, 1, 0, 1}, Q,D,D,0, ALF11_MAS, AF_PAIR},
{"ldssq", 0x47000000, 0x01c0, { 1, 0, 1, 1, 0, 1}, Q,D,D,0, ALF11_MAS, AF_PAIR}, {"ldssq", 0x47000000, 0x01c0, { 1, 0, 1, 1, 0, 1}, Q,D,D,0, ALF11_MAS, AF_PAIR},
@ -1467,17 +1467,17 @@ const struct al_opcode al_opcodes[] =
{"pminuw", 0x20000000, 0x02c0, { 3, 0, 0, 3, 0, 0}, D,D,D,0, ALF11, 0}, {"pminuw", 0x20000000, 0x02c0, { 3, 0, 0, 3, 0, 0}, D,D,D,0, ALF11, 0},
{"staaqp", 0x20000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,0,0,0, ALF10_MAS, 0}, {"staaqp", 0x20000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,0,0,0, ALF10_MAS, 0},
{"pminsw", 0x21000000, 0x02c0, { 3, 0, 0, 3, 0, 0}, D,D,D,0, ALF11, 0}, {"pminsw", 0x21000000, 0x02c0, { 3, 0, 0, 3, 0, 0}, D,D,D,0, ALF11, 0},
{"stqp", 0x21000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0}, {"sqp", 0x21000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0},
{"pmaxuw", 0x22000000, 0x02c0, { 3, 0, 0, 3, 0, 0}, D,D,D,0, ALF11, 0}, {"pmaxuw", 0x22000000, 0x02c0, { 3, 0, 0, 3, 0, 0}, D,D,D,0, ALF11, 0},
{"stcsqp", 0x22000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0}, {"stcsqp", 0x22000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0},
{"pmaxsw", 0x23000000, 0x02c0, { 3, 0, 0, 3, 0, 0}, D,D,D,0, ALF11, 0}, {"pmaxsw", 0x23000000, 0x02c0, { 3, 0, 0, 3, 0, 0}, D,D,D,0, ALF11, 0},
{"stdsqp", 0x23000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0}, {"stdsqp", 0x23000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0},
{"stesqp", 0x24000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0}, {"stesqp", 0x24000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0},
{"qpsrad", 0x25000000, 0x02c0, { 6, 6, 0, 6, 6, 0}, P,D,P,0, ALF11, 0}, {"qpsrad", 0x25000000, 0x02c0, { 6, 6, 0, 6, 6, 0}, P,P,D,0, ALF11, 0},
{"stfsqp", 0x25000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0}, {"stfsqp", 0x25000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0},
{"qpsrcw", 0x26000000, 0x02c0, { 5, 5, 0, 5, 5, 0}, P,D,P,0, ALF11, 0}, {"qpsrcw", 0x26000000, 0x02c0, { 5, 5, 0, 5, 5, 0}, P,P,D,0, ALF11, 0},
{"stgsqp", 0x26000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0}, {"stgsqp", 0x26000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0},
{"qpsrcd", 0x27000000, 0x02c0, { 5, 5, 0, 5, 5, 0}, P,D,P,0, ALF11, 0}, {"qpsrcd", 0x27000000, 0x02c0, { 5, 5, 0, 5, 5, 0}, P,P,D,0, ALF11, 0},
{"stssqp", 0x27000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0}, {"stssqp", 0x27000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0},
{"pcmpeqbop", 0x28000000, 0x02c0, { 6, 0, 0, 6, 0, 0}, 0,D,D,0, ALF17, 0}, {"pcmpeqbop", 0x28000000, 0x02c0, { 6, 0, 0, 6, 0, 0}, 0,D,D,0, ALF17, 0},
{"pcmpeqhop", 0x28000000, 0x02c1, { 6, 0, 0, 6, 0, 0}, 0,D,D,0, ALF17, 0}, {"pcmpeqhop", 0x28000000, 0x02c1, { 6, 0, 0, 6, 0, 0}, 0,D,D,0, ALF17, 0},
@ -1500,7 +1500,7 @@ const struct al_opcode al_opcodes[] =
{"phaddw", 0x2a000000, 0x02c0, { 3, 0, 0, 3, 0, 0}, D,D,D,0, ALF11, 0}, {"phaddw", 0x2a000000, 0x02c0, { 3, 0, 0, 3, 0, 0}, D,D,D,0, ALF11, 0},
{"stapqp", 0x2a000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,Q,S,0, ALF13_MAS, 0}, {"stapqp", 0x2a000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,Q,S,0, ALF13_MAS, 0},
{"phaddsh", 0x2b000000, 0x02c0, { 3, 0, 0, 3, 0, 0}, D,D,D,0, ALF11, 0}, {"phaddsh", 0x2b000000, 0x02c0, { 3, 0, 0, 3, 0, 0}, D,D,D,0, ALF11, 0},
{"strqp", 0x2b000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0}, {"srqp", 0x2b000000, 0x02c0, { 0, 0, 5, 0, 0, 5}, P,D,D,0, ALF13_MAS, 0},
{"qpcmpeqbop", 0x2c000000, 0x02c0, { 6, 0, 0, 6, 0, 0}, 0,P,P,0, ALF17, 0}, {"qpcmpeqbop", 0x2c000000, 0x02c0, { 6, 0, 0, 6, 0, 0}, 0,P,P,0, ALF17, 0},
{"qpcmpeqhop", 0x2c000000, 0x02c1, { 6, 0, 0, 6, 0, 0}, 0,P,P,0, ALF17, 0}, {"qpcmpeqhop", 0x2c000000, 0x02c1, { 6, 0, 0, 6, 0, 0}, 0,P,P,0, ALF17, 0},
{"qpcmpeqwop", 0x2c000000, 0x02c2, { 6, 0, 0, 6, 0, 0}, 0,P,P,0, ALF17, 0}, {"qpcmpeqwop", 0x2c000000, 0x02c2, { 6, 0, 0, 6, 0, 0}, 0,P,P,0, ALF17, 0},
@ -1593,12 +1593,12 @@ const struct al_opcode al_opcodes[] =
{"qpcmpgth", 0x5c000000, 0x02c0, { 5, 0, 0, 5, 0, 0}, P,P,P,0, ALF11, 0}, {"qpcmpgth", 0x5c000000, 0x02c0, { 5, 0, 0, 5, 0, 0}, P,P,P,0, ALF11, 0},
{"qpsadbw", 0x5c000000, 0x02c0, { 0, 5, 0, 0, 5, 0}, P,P,P,0, ALF11, 0}, {"qpsadbw", 0x5c000000, 0x02c0, { 0, 5, 0, 0, 5, 0}, P,P,P,0, ALF11, 0},
{"qpcmpgtw", 0x5d000000, 0x02c0, { 5, 0, 0, 5, 0, 0}, P,P,P,0, ALF11, 0}, {"qpcmpgtw", 0x5d000000, 0x02c0, { 5, 0, 0, 5, 0, 0}, P,P,P,0, ALF11, 0},
{"qpmulubhh", 0x5d000000, 0x02c0, { 0, 5, 0, 0, 5, 0}, P,P,P,0, ALF11, 0}, {"qpmulubhh", 0x5d000000, 0x02c0, { 0, 5, 0, 0, 5, 0}, P,D,P,0, ALF11, 0},
{"qpavgusb", 0x5e000000, 0x02c0, { 5, 0, 0, 5, 0, 0}, P,P,P,0, ALF11, 0}, {"qpavgusb", 0x5e000000, 0x02c0, { 5, 0, 0, 5, 0, 0}, P,P,P,0, ALF11, 0},
{"qpmullw", 0x5e000000, 0x02c0, { 0, 5, 0, 0, 5, 0}, P,P,P,0, ALF11, 0}, {"qpmullw", 0x5e000000, 0x02c0, { 0, 5, 0, 0, 5, 0}, P,P,P,0, ALF11, 0},
{"qpavgush", 0x5f000000, 0x02c0, { 5, 0, 0, 5, 0, 0}, P,P,P,0, ALF11, 0}, {"qpavgush", 0x5f000000, 0x02c0, { 5, 0, 0, 5, 0, 0}, P,P,P,0, ALF11, 0},
{"qpmrgp", 0x60000000, 0x02c0, { 6, 6, 0, 6, 6, 0}, P,P,P,0, ALF11_MERGE, 0}, {"qpmrgp", 0x60000000, 0x02c0, { 6, 6, 0, 6, 6, 0}, P,P,P,0, ALF11_MERGE, 0},
{"ldqp", 0x61000000, 0x02c0, { 5, 0, 5, 5, 0, 5}, P,D,D,0, ALF11_MAS, 0}, {"lqp", 0x61000000, 0x02c0, { 5, 0, 5, 5, 0, 5}, P,D,D,0, ALF11_MAS, 0},
{"ldcsqp", 0x62000000, 0x02c0, { 5, 0, 5, 5, 0, 5}, P,D,D,0, ALF11_MAS, 0}, {"ldcsqp", 0x62000000, 0x02c0, { 5, 0, 5, 5, 0, 5}, P,D,D,0, ALF11_MAS, 0},
{"lddsqp", 0x63000000, 0x02c0, { 5, 0, 5, 5, 0, 5}, P,D,D,0, ALF11_MAS, 0}, {"lddsqp", 0x63000000, 0x02c0, { 5, 0, 5, 5, 0, 5}, P,D,D,0, ALF11_MAS, 0},
{"ldesqp", 0x64000000, 0x02c0, { 5, 0, 5, 5, 0, 5}, P,D,D,0, ALF11_MAS, 0}, {"ldesqp", 0x64000000, 0x02c0, { 5, 0, 5, 5, 0, 5}, P,D,D,0, ALF11_MAS, 0},
@ -1610,9 +1610,9 @@ const struct al_opcode al_opcodes[] =
{"ldgdqp", 0x69000000, 0x02c0, { 5, 0, 5, 5, 0, 5}, P,D,D,0, ALF11_MAS, 0}, {"ldgdqp", 0x69000000, 0x02c0, { 5, 0, 5, 5, 0, 5}, P,D,D,0, ALF11_MAS, 0},
{"qpmulhrsh", 0x69000000, 0x02c0, { 0, 5, 0, 0, 5, 0}, P,P,P,0, ALF11, 0}, {"qpmulhrsh", 0x69000000, 0x02c0, { 0, 5, 0, 0, 5, 0}, P,P,P,0, ALF11, 0},
{"ldapqp", 0x6a000000, 0x02c0, { 5, 0, 5, 5, 0, 5}, P,D,D,0, ALF11_MAS, 0}, {"ldapqp", 0x6a000000, 0x02c0, { 5, 0, 5, 5, 0, 5}, P,D,D,0, ALF11_MAS, 0},
{"qphminposuh", 0x6a000000, 0x02c0, { 0, 5, 0, 0, 5, 0}, P,P,P,0, ALF11, 0}, {"qphminposuh", 0x6a000000, 0x02c0, { 0, 5, 0, 0, 5, 0}, D,P,P,0, ALF11, 0},
{"ldrqp", 0x6b000000, 0x02c0, { 5, 0, 5, 5, 0, 5}, P,D,D,0, ALF11_MAS, 0}, {"lrqp", 0x6b000000, 0x02c0, { 5, 0, 5, 5, 0, 5}, P,D,D,0, ALF11_MAS, 0},
{"qpmpsadbh", 0x6b000000, 0x02c0, { 0, 5, 0, 0, 5, 0}, P,P,P,0, ALF11, 0}, {"qpmpsadbh", 0x6b000000, 0x02c0, { 0, 5, 0, 0, 5, 0}, P,P,S,0, ALF11, 0},
{"puttagqp", 0x6c000000, 0x02c0, { 5, 5, 0, 5, 5, 0}, P,P,S,0, ALF11, 0}, {"puttagqp", 0x6c000000, 0x02c0, { 5, 5, 0, 5, 5, 0}, P,P,S,0, ALF11, 0},
{"qpfstois", 0x6dc80000, 0x02c0, { 5, 5, 0, 5, 5, 0}, P,0,P,0, ALF12, 0}, {"qpfstois", 0x6dc80000, 0x02c0, { 5, 5, 0, 5, 5, 0}, P,0,P,0, ALF12, 0},
{"qpfstoistr", 0x6dca0000, 0x02c0, { 5, 5, 0, 5, 5, 0}, P,0,P,0, ALF12, 0}, {"qpfstoistr", 0x6dca0000, 0x02c0, { 5, 5, 0, 5, 5, 0}, P,0,P,0, ALF12, 0},
@ -2320,7 +2320,7 @@ const struct al_opcode al_opcodes[] =
{"pfhsub_addsubs", 0x66000000, 0x0f00, { 3, 3, 4, 3, 3, 4}, D,D,D,D, ALF21, 0}, {"pfhsub_addsubs", 0x66000000, 0x0f00, { 3, 3, 4, 3, 3, 4}, D,D,D,D, ALF21, 0},
{"pfmul_addsubs", 0x68000000, 0x0f00, { 3, 3, 4, 3, 3, 4}, D,D,D,D, ALF21, 0}, {"pfmul_addsubs", 0x68000000, 0x0f00, { 3, 3, 4, 3, 3, 4}, D,D,D,D, ALF21, 0},
{"pmerge", 0x6d000000, 0x0f00, { 2, 2, 0, 2, 2, 0}, D,D,D,D, ALF21_MERGE, 0}, {"pmerge", 0x6d000000, 0x0f00, { 2, 2, 0, 2, 2, 0}, D,D,D,D, ALF21_MERGE, 0},
{"pfaddsub_addsubs", 0x6e000000, 0x0f00, { 3, 3, 4, 3, 3, 4}, D,D,D,D, ALF21, AF_ALIAS}, {"pfaddsub_addsubs", 0x6e000000, 0x0f00, { 3, 3, 4, 3, 3, 4}, D,D,D,D, ALF21, 0},
{"plog_and", 0x00000000, 0x1100, { 5, 5, 0, 5, 5, 0}, D,D,D,D, ALF21, AF_ALIAS}, {"plog_and", 0x00000000, 0x1100, { 5, 5, 0, 5, 5, 0}, D,D,D,D, ALF21, AF_ALIAS},
{"plog_xor", 0x16000000, 0x1100, { 5, 5, 0, 5, 5, 0}, D,D,D,D, ALF21, AF_ALIAS}, {"plog_xor", 0x16000000, 0x1100, { 5, 5, 0, 5, 5, 0}, D,D,D,D, ALF21, AF_ALIAS},
{"plog_sel3", 0x58000000, 0x1100, { 5, 5, 0, 5, 5, 0}, D,D,D,D, ALF21, AF_ALIAS}, {"plog_sel3", 0x58000000, 0x1100, { 5, 5, 0, 5, 5, 0}, D,D,D,D, ALF21, AF_ALIAS},