mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 20:28:28 +08:00
gas/testsuite/
2008-12-18 H.J. Lu <hongjiu.lu@intel.com> * gas/i386/intel.d: Remove trailing white spaces after nop. * gas/i386/intelpic.d: Likewise. * gas/i386/nops16-1.d: Likewise. * gas/i386/nops-1-i686.d: Likewise. * gas/i386/nops-3.d: Likewise. * gas/i386/nops-3-i386.d: Likewise. * gas/i386/nops-3-i686.d: Likewise. * gas/i386/nops-4.d: Likewise. * gas/i386/nops-4-i386.d: Likewise. * gas/i386/nops-4-i686.d: Likewise. * gas/i386/opcode.d: Likewise. * gas/i386/opcode-suffix.d: Likewise. * gas/i386/reloc.d: Likewise. * gas/i386/tlsnopic.d: Likewise. * gas/i386/x86-64-nops-1.d: Likewise. * gas/i386/x86-64-nops-1-nocona.d: Likewise. * gas/i386/x86-64-nops-2.d: Likewise. * gas/i386/x86-64-nops-3.d: Likewise. * gas/i386/x86-64-nops-4-core2.d: Likewise. * gas/i386/x86-64-nops-4.d: Likewise. * gas/i386/x86-64-nops-4-k8.d: Likewise. * gas/i386/x86-64-opcode.d: Likewise. ld/testsuite/ 2008-12-18 H.J. Lu <hongjiu.lu@intel.com> * ld-i386/tlsld1.dd: Remove trailing white spaces after nop. opcodes/ 2008-12-18 H.J. Lu <hongjiu.lu@intel.com> * i386-dis.c (mnemonicendp): New. (op): Likewise. (print_insn): Use mnemonicendp. (OP_3DNowSuffix): Likewise. (CMP_Fixup): Likewise. (CMPXCHG8B_Fixup): Likewise. (CRC32_Fixup): Likewise. (OP_DREX_FCMP): Likewise. (OP_DREX_ICMP): Likewise. (VZERO_Fixup): Likewise. (VCMP_Fixup): Likewise. (PCLMUL_Fixup): Likewise. (VPERMIL2_Fixup): Likewise. (MOVBE_Fixup): Likewise. (putop): Update mnemonicendp. (oappend): Use stpcpy. (simd_cmp_op): Changed to struct op. (vex_cmp_op): Likewise. (pclmul_op): Likewise. (vpermil2_op): Likewise.
This commit is contained in:
@ -1,3 +1,28 @@
|
|||||||
|
2008-12-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* gas/i386/intel.d: Remove trailing white spaces after nop.
|
||||||
|
* gas/i386/intelpic.d: Likewise.
|
||||||
|
* gas/i386/nops16-1.d: Likewise.
|
||||||
|
* gas/i386/nops-1-i686.d: Likewise.
|
||||||
|
* gas/i386/nops-3.d: Likewise.
|
||||||
|
* gas/i386/nops-3-i386.d: Likewise.
|
||||||
|
* gas/i386/nops-3-i686.d: Likewise.
|
||||||
|
* gas/i386/nops-4.d: Likewise.
|
||||||
|
* gas/i386/nops-4-i386.d: Likewise.
|
||||||
|
* gas/i386/nops-4-i686.d: Likewise.
|
||||||
|
* gas/i386/opcode.d: Likewise.
|
||||||
|
* gas/i386/opcode-suffix.d: Likewise.
|
||||||
|
* gas/i386/reloc.d: Likewise.
|
||||||
|
* gas/i386/tlsnopic.d: Likewise.
|
||||||
|
* gas/i386/x86-64-nops-1.d: Likewise.
|
||||||
|
* gas/i386/x86-64-nops-1-nocona.d: Likewise.
|
||||||
|
* gas/i386/x86-64-nops-2.d: Likewise.
|
||||||
|
* gas/i386/x86-64-nops-3.d: Likewise.
|
||||||
|
* gas/i386/x86-64-nops-4-core2.d: Likewise.
|
||||||
|
* gas/i386/x86-64-nops-4.d: Likewise.
|
||||||
|
* gas/i386/x86-64-nops-4-k8.d: Likewise.
|
||||||
|
* gas/i386/x86-64-opcode.d: Likewise.
|
||||||
|
|
||||||
2008-12-15 Richard Earnshaw <rearnsha@arm.com>
|
2008-12-15 Richard Earnshaw <rearnsha@arm.com>
|
||||||
|
|
||||||
* gas/arm/group-reloc-ldc.d: Disassembly of VFP instructions now uses
|
* gas/arm/group-reloc-ldc.d: Disassembly of VFP instructions now uses
|
||||||
|
@ -142,7 +142,7 @@ Disassembly of section .text:
|
|||||||
*[0-9a-f]+: 8d 90 90 90 90 90[ ]+leal[ ]+-0x6f6f6f70\(%eax\),%edx
|
*[0-9a-f]+: 8d 90 90 90 90 90[ ]+leal[ ]+-0x6f6f6f70\(%eax\),%edx
|
||||||
*[0-9a-f]+: 8e 90 90 90 90 90[ ]+movw[ ]+-0x6f6f6f70\(%eax\),%ss
|
*[0-9a-f]+: 8e 90 90 90 90 90[ ]+movw[ ]+-0x6f6f6f70\(%eax\),%ss
|
||||||
*[0-9a-f]+: 8f 80 90 90 90 90[ ]+popl[ ]+-0x6f6f6f70\(%eax\)
|
*[0-9a-f]+: 8f 80 90 90 90 90[ ]+popl[ ]+-0x6f6f6f70\(%eax\)
|
||||||
*[0-9a-f]+: 90[ ]+nop[ ]+
|
*[0-9a-f]+: 90[ ]+nop
|
||||||
*[0-9a-f]+: 91[ ]+xchgl[ ]+%eax,%ecx
|
*[0-9a-f]+: 91[ ]+xchgl[ ]+%eax,%ecx
|
||||||
*[0-9a-f]+: 92[ ]+xchgl[ ]+%eax,%edx
|
*[0-9a-f]+: 92[ ]+xchgl[ ]+%eax,%edx
|
||||||
*[0-9a-f]+: 93[ ]+xchgl[ ]+%eax,%ebx
|
*[0-9a-f]+: 93[ ]+xchgl[ ]+%eax,%ebx
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2008-12-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* ld-i386/tlsld1.dd: Remove trailing white spaces after nop.
|
||||||
|
|
||||||
2008-12-17 Hans-Peter Nilsson <hp@axis.com>
|
2008-12-17 Hans-Peter Nilsson <hp@axis.com>
|
||||||
|
|
||||||
* ld-cris/expalltst3, ld-cris/expdyn2.s, ld-cris/libdso-15.d: New
|
* ld-cris/expalltst3, ld-cris/expdyn2.s, ld-cris/libdso-15.d: New
|
||||||
|
@ -1,3 +1,26 @@
|
|||||||
|
2008-12-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* i386-dis.c (mnemonicendp): New.
|
||||||
|
(op): Likewise.
|
||||||
|
(print_insn): Use mnemonicendp.
|
||||||
|
(OP_3DNowSuffix): Likewise.
|
||||||
|
(CMP_Fixup): Likewise.
|
||||||
|
(CMPXCHG8B_Fixup): Likewise.
|
||||||
|
(CRC32_Fixup): Likewise.
|
||||||
|
(OP_DREX_FCMP): Likewise.
|
||||||
|
(OP_DREX_ICMP): Likewise.
|
||||||
|
(VZERO_Fixup): Likewise.
|
||||||
|
(VCMP_Fixup): Likewise.
|
||||||
|
(PCLMUL_Fixup): Likewise.
|
||||||
|
(VPERMIL2_Fixup): Likewise.
|
||||||
|
(MOVBE_Fixup): Likewise.
|
||||||
|
(putop): Update mnemonicendp.
|
||||||
|
(oappend): Use stpcpy.
|
||||||
|
(simd_cmp_op): Changed to struct op.
|
||||||
|
(vex_cmp_op): Likewise.
|
||||||
|
(pclmul_op): Likewise.
|
||||||
|
(vpermil2_op): Likewise.
|
||||||
|
|
||||||
2008-12-15 Richard Earnshaw <rearnsha@arm.com>
|
2008-12-15 Richard Earnshaw <rearnsha@arm.com>
|
||||||
|
|
||||||
* arm-dis.c (coprocessor_opcodes): Disassemble VFP instructions using
|
* arm-dis.c (coprocessor_opcodes): Disassemble VFP instructions using
|
||||||
|
@ -1931,6 +1931,7 @@ static const unsigned char twobyte_has_modrm[256] = {
|
|||||||
|
|
||||||
static char obuf[100];
|
static char obuf[100];
|
||||||
static char *obufp;
|
static char *obufp;
|
||||||
|
static char *mnemonicendp;
|
||||||
static char scratchbuf[100];
|
static char scratchbuf[100];
|
||||||
static unsigned char *start_codep;
|
static unsigned char *start_codep;
|
||||||
static unsigned char *insn_codep;
|
static unsigned char *insn_codep;
|
||||||
@ -1961,6 +1962,12 @@ static unsigned char need_vex;
|
|||||||
static unsigned char need_vex_reg;
|
static unsigned char need_vex_reg;
|
||||||
static unsigned char vex_w_done;
|
static unsigned char vex_w_done;
|
||||||
|
|
||||||
|
struct op
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
unsigned int len;
|
||||||
|
};
|
||||||
|
|
||||||
/* If we are accessing mod/rm/reg without need_modrm set, then the
|
/* If we are accessing mod/rm/reg without need_modrm set, then the
|
||||||
values are stale. Hitting this abort likely indicates that you
|
values are stale. Hitting this abort likely indicates that you
|
||||||
need to update onebyte_has_modrm or twobyte_has_modrm. */
|
need to update onebyte_has_modrm or twobyte_has_modrm. */
|
||||||
@ -10359,7 +10366,7 @@ print_insn (bfd_vma pc, disassemble_info *info)
|
|||||||
if (prefix_obuf[0] != 0)
|
if (prefix_obuf[0] != 0)
|
||||||
(*info->fprintf_func) (info->stream, "%s", prefix_obuf);
|
(*info->fprintf_func) (info->stream, "%s", prefix_obuf);
|
||||||
|
|
||||||
obufp = obuf + strlen (obuf);
|
obufp = mnemonicendp;
|
||||||
for (i = strlen (obuf) + strlen (prefix_obuf); i < 6; i++)
|
for (i = strlen (obuf) + strlen (prefix_obuf); i < 6; i++)
|
||||||
oappend (" ");
|
oappend (" ");
|
||||||
oappend (" ");
|
oappend (" ");
|
||||||
@ -11184,14 +11191,14 @@ case_Q:
|
|||||||
alt = 0;
|
alt = 0;
|
||||||
}
|
}
|
||||||
*obufp = 0;
|
*obufp = 0;
|
||||||
|
mnemonicendp = obufp;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
oappend (const char *s)
|
oappend (const char *s)
|
||||||
{
|
{
|
||||||
strcpy (obufp, s);
|
obufp = stpcpy (obufp, s);
|
||||||
obufp += strlen (s);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -12769,7 +12776,7 @@ OP_3DNowSuffix (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
|
|||||||
/* AMD 3DNow! instructions are specified by an opcode suffix in the
|
/* AMD 3DNow! instructions are specified by an opcode suffix in the
|
||||||
place where an 8-bit immediate would normally go. ie. the last
|
place where an 8-bit immediate would normally go. ie. the last
|
||||||
byte of the instruction. */
|
byte of the instruction. */
|
||||||
obufp = obuf + strlen (obuf);
|
obufp = mnemonicendp;
|
||||||
mnemonic = Suffix3DNow[*codep++ & 0xff];
|
mnemonic = Suffix3DNow[*codep++ & 0xff];
|
||||||
if (mnemonic)
|
if (mnemonic)
|
||||||
oappend (mnemonic);
|
oappend (mnemonic);
|
||||||
@ -12783,17 +12790,19 @@ OP_3DNowSuffix (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
|
|||||||
op_out[1][0] = '\0';
|
op_out[1][0] = '\0';
|
||||||
BadOp ();
|
BadOp ();
|
||||||
}
|
}
|
||||||
|
mnemonicendp = obufp;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *simd_cmp_op[] = {
|
static struct op simd_cmp_op[] =
|
||||||
"eq",
|
{
|
||||||
"lt",
|
{ STRING_COMMA_LEN ("eq") },
|
||||||
"le",
|
{ STRING_COMMA_LEN ("lt") },
|
||||||
"unord",
|
{ STRING_COMMA_LEN ("le") },
|
||||||
"neq",
|
{ STRING_COMMA_LEN ("unord") },
|
||||||
"nlt",
|
{ STRING_COMMA_LEN ("neq") },
|
||||||
"nle",
|
{ STRING_COMMA_LEN ("nlt") },
|
||||||
"ord"
|
{ STRING_COMMA_LEN ("nle") },
|
||||||
|
{ STRING_COMMA_LEN ("ord") }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -12806,11 +12815,12 @@ CMP_Fixup (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
|
|||||||
if (cmp_type < ARRAY_SIZE (simd_cmp_op))
|
if (cmp_type < ARRAY_SIZE (simd_cmp_op))
|
||||||
{
|
{
|
||||||
char suffix [3];
|
char suffix [3];
|
||||||
char *p = obuf + strlen (obuf) - 2;
|
char *p = mnemonicendp - 2;
|
||||||
suffix[0] = p[0];
|
suffix[0] = p[0];
|
||||||
suffix[1] = p[1];
|
suffix[1] = p[1];
|
||||||
suffix[2] = '\0';
|
suffix[2] = '\0';
|
||||||
sprintf (p, "%s%s", simd_cmp_op[cmp_type], suffix);
|
sprintf (p, "%s%s", simd_cmp_op[cmp_type].name, suffix);
|
||||||
|
mnemonicendp += simd_cmp_op[cmp_type].len;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -12914,8 +12924,8 @@ CMPXCHG8B_Fixup (int bytemode, int sizeflag)
|
|||||||
if (rex & REX_W)
|
if (rex & REX_W)
|
||||||
{
|
{
|
||||||
/* Change cmpxchg8b to cmpxchg16b. */
|
/* Change cmpxchg8b to cmpxchg16b. */
|
||||||
char *p = obuf + strlen (obuf) - 2;
|
char *p = mnemonicendp - 2;
|
||||||
strcpy (p, "16b");
|
mnemonicendp = stpcpy (p, "16b");
|
||||||
bytemode = o_mode;
|
bytemode = o_mode;
|
||||||
}
|
}
|
||||||
OP_M (bytemode, sizeflag);
|
OP_M (bytemode, sizeflag);
|
||||||
@ -12947,19 +12957,19 @@ static void
|
|||||||
CRC32_Fixup (int bytemode, int sizeflag)
|
CRC32_Fixup (int bytemode, int sizeflag)
|
||||||
{
|
{
|
||||||
/* Add proper suffix to "crc32". */
|
/* Add proper suffix to "crc32". */
|
||||||
char *p = obuf + strlen (obuf);
|
char *p = mnemonicendp;
|
||||||
|
|
||||||
switch (bytemode)
|
switch (bytemode)
|
||||||
{
|
{
|
||||||
case b_mode:
|
case b_mode:
|
||||||
if (intel_syntax)
|
if (intel_syntax)
|
||||||
break;
|
goto skip;
|
||||||
|
|
||||||
*p++ = 'b';
|
*p++ = 'b';
|
||||||
break;
|
break;
|
||||||
case v_mode:
|
case v_mode:
|
||||||
if (intel_syntax)
|
if (intel_syntax)
|
||||||
break;
|
goto skip;
|
||||||
|
|
||||||
USED_REX (REX_W);
|
USED_REX (REX_W);
|
||||||
if (rex & REX_W)
|
if (rex & REX_W)
|
||||||
@ -12974,8 +12984,10 @@ CRC32_Fixup (int bytemode, int sizeflag)
|
|||||||
oappend (INTERNAL_DISASSEMBLER_ERROR);
|
oappend (INTERNAL_DISASSEMBLER_ERROR);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
mnemonicendp = p;
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
|
||||||
|
skip:
|
||||||
if (modrm.mod == 3)
|
if (modrm.mod == 3)
|
||||||
{
|
{
|
||||||
int add;
|
int add;
|
||||||
@ -13303,7 +13315,7 @@ OP_DREX_FCMP (int bytemode ATTRIBUTE_UNUSED,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
sprintf (scratchbuf, "com%s%s", cmp_test[byte], obuf+3);
|
sprintf (scratchbuf, "com%s%s", cmp_test[byte], obuf+3);
|
||||||
strcpy (obuf, scratchbuf);
|
mnemonicendp = stpcpy (obuf, scratchbuf);
|
||||||
codep++;
|
codep++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -13345,7 +13357,7 @@ OP_DREX_ICMP (int bytemode ATTRIBUTE_UNUSED,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
sprintf (scratchbuf, "pcom%s%s", cmp_test[byte], obuf+4);
|
sprintf (scratchbuf, "pcom%s%s", cmp_test[byte], obuf+4);
|
||||||
strcpy (obuf, scratchbuf);
|
mnemonicendp = stpcpy (obuf, scratchbuf);
|
||||||
codep++;
|
codep++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -13665,49 +13677,50 @@ VZERO_Fixup (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
|
|||||||
switch (vex.length)
|
switch (vex.length)
|
||||||
{
|
{
|
||||||
case 128:
|
case 128:
|
||||||
strcpy (obuf, "vzeroupper");
|
mnemonicendp = stpcpy (obuf, "vzeroupper");
|
||||||
break;
|
break;
|
||||||
case 256:
|
case 256:
|
||||||
strcpy (obuf, "vzeroall");
|
mnemonicendp = stpcpy (obuf, "vzeroall");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
abort ();
|
abort ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *vex_cmp_op[] = {
|
static struct op vex_cmp_op[] =
|
||||||
"eq",
|
{
|
||||||
"lt",
|
{ STRING_COMMA_LEN ("eq") },
|
||||||
"le",
|
{ STRING_COMMA_LEN ("lt") },
|
||||||
"unord",
|
{ STRING_COMMA_LEN ("le") },
|
||||||
"neq",
|
{ STRING_COMMA_LEN ("unord") },
|
||||||
"nlt",
|
{ STRING_COMMA_LEN ("neq") },
|
||||||
"nle",
|
{ STRING_COMMA_LEN ("nlt") },
|
||||||
"ord",
|
{ STRING_COMMA_LEN ("nle") },
|
||||||
"eq_uq",
|
{ STRING_COMMA_LEN ("ord") },
|
||||||
"nge",
|
{ STRING_COMMA_LEN ("eq_uq") },
|
||||||
"ngt",
|
{ STRING_COMMA_LEN ("nge") },
|
||||||
"false",
|
{ STRING_COMMA_LEN ("ngt") },
|
||||||
"neq_oq",
|
{ STRING_COMMA_LEN ("false") },
|
||||||
"ge",
|
{ STRING_COMMA_LEN ("neq_oq") },
|
||||||
"gt",
|
{ STRING_COMMA_LEN ("ge") },
|
||||||
"true",
|
{ STRING_COMMA_LEN ("gt") },
|
||||||
"eq_os",
|
{ STRING_COMMA_LEN ("true") },
|
||||||
"lt_oq",
|
{ STRING_COMMA_LEN ("eq_os") },
|
||||||
"le_oq",
|
{ STRING_COMMA_LEN ("lt_oq") },
|
||||||
"unord_s",
|
{ STRING_COMMA_LEN ("le_oq") },
|
||||||
"neq_us",
|
{ STRING_COMMA_LEN ("unord_s") },
|
||||||
"nlt_uq",
|
{ STRING_COMMA_LEN ("neq_us") },
|
||||||
"nle_uq",
|
{ STRING_COMMA_LEN ("nlt_uq") },
|
||||||
"ord_s",
|
{ STRING_COMMA_LEN ("nle_uq") },
|
||||||
"eq_us",
|
{ STRING_COMMA_LEN ("ord_s") },
|
||||||
"nge_uq",
|
{ STRING_COMMA_LEN ("eq_us") },
|
||||||
"ngt_uq",
|
{ STRING_COMMA_LEN ("nge_uq") },
|
||||||
"false_os",
|
{ STRING_COMMA_LEN ("ngt_uq") },
|
||||||
"neq_os",
|
{ STRING_COMMA_LEN ("false_os") },
|
||||||
"ge_oq",
|
{ STRING_COMMA_LEN ("neq_os") },
|
||||||
"gt_oq",
|
{ STRING_COMMA_LEN ("ge_oq") },
|
||||||
"true_us"
|
{ STRING_COMMA_LEN ("gt_oq") },
|
||||||
|
{ STRING_COMMA_LEN ("true_us") },
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -13720,11 +13733,12 @@ VCMP_Fixup (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
|
|||||||
if (cmp_type < ARRAY_SIZE (vex_cmp_op))
|
if (cmp_type < ARRAY_SIZE (vex_cmp_op))
|
||||||
{
|
{
|
||||||
char suffix [3];
|
char suffix [3];
|
||||||
char *p = obuf + strlen (obuf) - 2;
|
char *p = mnemonicendp - 2;
|
||||||
suffix[0] = p[0];
|
suffix[0] = p[0];
|
||||||
suffix[1] = p[1];
|
suffix[1] = p[1];
|
||||||
suffix[2] = '\0';
|
suffix[2] = '\0';
|
||||||
sprintf (p, "%s%s", vex_cmp_op[cmp_type], suffix);
|
sprintf (p, "%s%s", vex_cmp_op[cmp_type].name, suffix);
|
||||||
|
mnemonicendp += vex_cmp_op[cmp_type].len;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -13736,11 +13750,12 @@ VCMP_Fixup (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *pclmul_op[] = {
|
static const struct op pclmul_op[] =
|
||||||
"lql",
|
{
|
||||||
"hql",
|
{ STRING_COMMA_LEN ("lql") },
|
||||||
"lqh",
|
{ STRING_COMMA_LEN ("hql") },
|
||||||
"hqh"
|
{ STRING_COMMA_LEN ("lqh") },
|
||||||
|
{ STRING_COMMA_LEN ("hqh") }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -13765,12 +13780,13 @@ PCLMUL_Fixup (int bytemode ATTRIBUTE_UNUSED,
|
|||||||
if (pclmul_type < ARRAY_SIZE (pclmul_op))
|
if (pclmul_type < ARRAY_SIZE (pclmul_op))
|
||||||
{
|
{
|
||||||
char suffix [4];
|
char suffix [4];
|
||||||
char *p = obuf + strlen (obuf) - 3;
|
char *p = mnemonicendp - 3;
|
||||||
suffix[0] = p[0];
|
suffix[0] = p[0];
|
||||||
suffix[1] = p[1];
|
suffix[1] = p[1];
|
||||||
suffix[2] = p[2];
|
suffix[2] = p[2];
|
||||||
suffix[3] = '\0';
|
suffix[3] = '\0';
|
||||||
sprintf (p, "%s%s", pclmul_op[pclmul_type], suffix);
|
sprintf (p, "%s%s", pclmul_op[pclmul_type].name, suffix);
|
||||||
|
mnemonicendp += pclmul_op[pclmul_type].len;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -13782,11 +13798,12 @@ PCLMUL_Fixup (int bytemode ATTRIBUTE_UNUSED,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *vpermil2_op[] = {
|
static const struct op vpermil2_op[] =
|
||||||
"td",
|
{
|
||||||
"td",
|
{ STRING_COMMA_LEN ("td") },
|
||||||
"mo",
|
{ STRING_COMMA_LEN ("td") },
|
||||||
"mz"
|
{ STRING_COMMA_LEN ("mo") },
|
||||||
|
{ STRING_COMMA_LEN ("mz") }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -13800,12 +13817,13 @@ VPERMIL2_Fixup (int bytemode ATTRIBUTE_UNUSED,
|
|||||||
if (vpermil2_type < ARRAY_SIZE (vpermil2_op))
|
if (vpermil2_type < ARRAY_SIZE (vpermil2_op))
|
||||||
{
|
{
|
||||||
char suffix [4];
|
char suffix [4];
|
||||||
char *p = obuf + strlen (obuf) - 3;
|
char *p = mnemonicendp - 3;
|
||||||
suffix[0] = p[0];
|
suffix[0] = p[0];
|
||||||
suffix[1] = p[1];
|
suffix[1] = p[1];
|
||||||
suffix[2] = p[2];
|
suffix[2] = p[2];
|
||||||
suffix[3] = '\0';
|
suffix[3] = '\0';
|
||||||
sprintf (p, "%s%s", vpermil2_op[vpermil2_type], suffix);
|
sprintf (p, "%s%s", vpermil2_op[vpermil2_type].name, suffix);
|
||||||
|
mnemonicendp += vpermil2_op[vpermil2_type].len;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -13821,13 +13839,13 @@ static void
|
|||||||
MOVBE_Fixup (int bytemode, int sizeflag)
|
MOVBE_Fixup (int bytemode, int sizeflag)
|
||||||
{
|
{
|
||||||
/* Add proper suffix to "movbe". */
|
/* Add proper suffix to "movbe". */
|
||||||
char *p = obuf + strlen (obuf);
|
char *p = mnemonicendp;
|
||||||
|
|
||||||
switch (bytemode)
|
switch (bytemode)
|
||||||
{
|
{
|
||||||
case v_mode:
|
case v_mode:
|
||||||
if (intel_syntax)
|
if (intel_syntax)
|
||||||
break;
|
goto skip;
|
||||||
|
|
||||||
USED_REX (REX_W);
|
USED_REX (REX_W);
|
||||||
if (sizeflag & SUFFIX_ALWAYS)
|
if (sizeflag & SUFFIX_ALWAYS)
|
||||||
@ -13845,7 +13863,9 @@ MOVBE_Fixup (int bytemode, int sizeflag)
|
|||||||
oappend (INTERNAL_DISASSEMBLER_ERROR);
|
oappend (INTERNAL_DISASSEMBLER_ERROR);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
mnemonicendp = p;
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
|
||||||
|
skip:
|
||||||
OP_M (bytemode, sizeflag);
|
OP_M (bytemode, sizeflag);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user