mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 01:50:24 +08:00
2009-12-11 Quentin Neill <quentin.neill@amd.com>
gas/testsuite/ * gas/i386/fma4.d: Add test cases. * gas/i386/fma4.s: Add test cases. * gas/i386/x86-64-fma4.d: Add test cases. * gas/i386/x86-64-fma4.s: Add test cases. opcodes/ * i386-dis.c (get_vex_imm8): Extend logic to apply in all cases, to avoid fetching ahead for the immediate bytes when OP_E_memory has already been called. Fix indentation.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2009-12-11 Quentin Neill <quentin.neill@amd.com>
|
||||||
|
|
||||||
|
* gas/i386/fma4.d: Add test cases.
|
||||||
|
* gas/i386/fma4.s: Add test cases.
|
||||||
|
* gas/i386/x86-64-fma4.d: Add test cases.
|
||||||
|
* gas/i386/x86-64-fma4.s: Add test cases.
|
||||||
|
|
||||||
2009-12-07 H.J. Lu <hongjiu.lu@intel.com>
|
2009-12-07 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
PR gas/11037
|
PR gas/11037
|
||||||
|
@ -10,6 +10,8 @@ Disassembly of section .text:
|
|||||||
[ ]*[a-f0-9]+: c4 e3 ed 69 39 60 vfmaddpd \(%ecx\),%ymm6,%ymm2,%ymm7
|
[ ]*[a-f0-9]+: c4 e3 ed 69 39 60 vfmaddpd \(%ecx\),%ymm6,%ymm2,%ymm7
|
||||||
[ ]*[a-f0-9]+: c4 e3 ed 68 fc 60 vfmaddps %ymm4,%ymm6,%ymm2,%ymm7
|
[ ]*[a-f0-9]+: c4 e3 ed 68 fc 60 vfmaddps %ymm4,%ymm6,%ymm2,%ymm7
|
||||||
[ ]*[a-f0-9]+: c4 e3 ed 68 39 60 vfmaddps \(%ecx\),%ymm6,%ymm2,%ymm7
|
[ ]*[a-f0-9]+: c4 e3 ed 68 39 60 vfmaddps \(%ecx\),%ymm6,%ymm2,%ymm7
|
||||||
|
[ ]*[a-f0-9]+: c4 e3 59 68 6c da 01 30 vfmaddps %xmm3,0x1\(%edx,%ebx,8\),%xmm4,%xmm5
|
||||||
|
[ ]*[a-f0-9]+: c4 e3 49 68 8c 81 80 00 00 00 70 vfmaddps %xmm7,0x80\(%ecx,%eax,4\),%xmm6,%xmm1
|
||||||
[ ]*[a-f0-9]+: c4 e3 ed 5d fc 60 vfmaddsubpd %ymm4,%ymm6,%ymm2,%ymm7
|
[ ]*[a-f0-9]+: c4 e3 ed 5d fc 60 vfmaddsubpd %ymm4,%ymm6,%ymm2,%ymm7
|
||||||
[ ]*[a-f0-9]+: c4 e3 ed 5d 39 60 vfmaddsubpd \(%ecx\),%ymm6,%ymm2,%ymm7
|
[ ]*[a-f0-9]+: c4 e3 ed 5d 39 60 vfmaddsubpd \(%ecx\),%ymm6,%ymm2,%ymm7
|
||||||
[ ]*[a-f0-9]+: c4 e3 ed 5c fc 60 vfmaddsubps %ymm4,%ymm6,%ymm2,%ymm7
|
[ ]*[a-f0-9]+: c4 e3 ed 5c fc 60 vfmaddsubps %ymm4,%ymm6,%ymm2,%ymm7
|
||||||
|
@ -8,6 +8,8 @@ _start:
|
|||||||
vfmaddpd (%ecx),%ymm6,%ymm2,%ymm7
|
vfmaddpd (%ecx),%ymm6,%ymm2,%ymm7
|
||||||
vfmaddps %ymm4,%ymm6,%ymm2,%ymm7
|
vfmaddps %ymm4,%ymm6,%ymm2,%ymm7
|
||||||
vfmaddps (%ecx),%ymm6,%ymm2,%ymm7
|
vfmaddps (%ecx),%ymm6,%ymm2,%ymm7
|
||||||
|
vfmaddps %xmm3,0x01(%edx,%ebx,8),%xmm4,%xmm5
|
||||||
|
vfmaddps %xmm7,0x80(%ecx,%eax,4),%xmm6,%xmm1
|
||||||
vfmaddsubpd %ymm4,%ymm6,%ymm2,%ymm7
|
vfmaddsubpd %ymm4,%ymm6,%ymm2,%ymm7
|
||||||
vfmaddsubpd (%ecx),%ymm6,%ymm2,%ymm7
|
vfmaddsubpd (%ecx),%ymm6,%ymm2,%ymm7
|
||||||
vfmaddsubps %ymm4,%ymm6,%ymm2,%ymm7
|
vfmaddsubps %ymm4,%ymm6,%ymm2,%ymm7
|
||||||
|
@ -10,6 +10,8 @@ Disassembly of section .text:
|
|||||||
[ ]*[a-f0-9]+: c4 e3 ed 69 39 60 vfmaddpd \(%rcx\),%ymm6,%ymm2,%ymm7
|
[ ]*[a-f0-9]+: c4 e3 ed 69 39 60 vfmaddpd \(%rcx\),%ymm6,%ymm2,%ymm7
|
||||||
[ ]*[a-f0-9]+: c4 e3 ed 68 fc 60 vfmaddps %ymm4,%ymm6,%ymm2,%ymm7
|
[ ]*[a-f0-9]+: c4 e3 ed 68 fc 60 vfmaddps %ymm4,%ymm6,%ymm2,%ymm7
|
||||||
[ ]*[a-f0-9]+: c4 e3 ed 68 39 60 vfmaddps \(%rcx\),%ymm6,%ymm2,%ymm7
|
[ ]*[a-f0-9]+: c4 e3 ed 68 39 60 vfmaddps \(%rcx\),%ymm6,%ymm2,%ymm7
|
||||||
|
[ ]*[a-f0-9]+: c4 63 41 68 5c da 01 40 vfmaddps %xmm4,0x1\(%rdx,%rbx,8\),%xmm7,%xmm11
|
||||||
|
[ ]*[a-f0-9]+: c4 e3 49 68 a4 81 80 00 00 00 80 vfmaddps %xmm8,0x80\(%rcx,%rax,4\),%xmm6,%xmm4
|
||||||
[ ]*[a-f0-9]+: c4 e3 ed 5d fc 60 vfmaddsubpd %ymm4,%ymm6,%ymm2,%ymm7
|
[ ]*[a-f0-9]+: c4 e3 ed 5d fc 60 vfmaddsubpd %ymm4,%ymm6,%ymm2,%ymm7
|
||||||
[ ]*[a-f0-9]+: c4 e3 ed 5d 39 60 vfmaddsubpd \(%rcx\),%ymm6,%ymm2,%ymm7
|
[ ]*[a-f0-9]+: c4 e3 ed 5d 39 60 vfmaddsubpd \(%rcx\),%ymm6,%ymm2,%ymm7
|
||||||
[ ]*[a-f0-9]+: c4 e3 ed 5c fc 60 vfmaddsubps %ymm4,%ymm6,%ymm2,%ymm7
|
[ ]*[a-f0-9]+: c4 e3 ed 5c fc 60 vfmaddsubps %ymm4,%ymm6,%ymm2,%ymm7
|
||||||
|
@ -8,6 +8,8 @@ _start:
|
|||||||
vfmaddpd (%rcx),%ymm6,%ymm2,%ymm7
|
vfmaddpd (%rcx),%ymm6,%ymm2,%ymm7
|
||||||
vfmaddps %ymm4,%ymm6,%ymm2,%ymm7
|
vfmaddps %ymm4,%ymm6,%ymm2,%ymm7
|
||||||
vfmaddps (%rcx),%ymm6,%ymm2,%ymm7
|
vfmaddps (%rcx),%ymm6,%ymm2,%ymm7
|
||||||
|
vfmaddps %xmm4,0x01(%rdx,%rbx,8),%xmm7,%xmm11
|
||||||
|
vfmaddps %xmm8,0x80(%rcx,%rax,4),%xmm6,%xmm4
|
||||||
vfmaddsubpd %ymm4,%ymm6,%ymm2,%ymm7
|
vfmaddsubpd %ymm4,%ymm6,%ymm2,%ymm7
|
||||||
vfmaddsubpd (%rcx),%ymm6,%ymm2,%ymm7
|
vfmaddsubpd (%rcx),%ymm6,%ymm2,%ymm7
|
||||||
vfmaddsubps %ymm4,%ymm6,%ymm2,%ymm7
|
vfmaddsubps %ymm4,%ymm6,%ymm2,%ymm7
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2009-12-11 Quentin Neill <quentin.neill@amd.com>
|
||||||
|
|
||||||
|
* i386-dis.c (get_vex_imm8): Extend logic to apply in all cases,
|
||||||
|
to avoid fetching ahead for the immediate bytes when OP_E_memory
|
||||||
|
has already been called. Fix indentation.
|
||||||
|
|
||||||
2009-12-11 Nick Clifton <nickc@redhat.com>
|
2009-12-11 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* Makefile.in: Regenerate.
|
* Makefile.in: Regenerate.
|
||||||
|
@ -13717,67 +13717,76 @@ get_vex_imm8 (int sizeflag, int opnum)
|
|||||||
{
|
{
|
||||||
/* There are SIB/displacement bytes. */
|
/* There are SIB/displacement bytes. */
|
||||||
if ((sizeflag & AFLAG) || address_mode == mode_64bit)
|
if ((sizeflag & AFLAG) || address_mode == mode_64bit)
|
||||||
{
|
{
|
||||||
/* 32/64 bit address mode */
|
/* 32/64 bit address mode */
|
||||||
int base = modrm.rm;
|
int base = modrm.rm;
|
||||||
|
|
||||||
/* Check SIB byte. */
|
/* Check SIB byte. */
|
||||||
if (base == 4)
|
if (base == 4)
|
||||||
{
|
{
|
||||||
FETCH_DATA (the_info, codep + 1);
|
FETCH_DATA (the_info, codep + 1);
|
||||||
base = *codep & 7;
|
base = *codep & 7;
|
||||||
/* When decoding the third source, don't increase
|
/* When decoding the third source, don't increase
|
||||||
bytes_before_imm as this has already been incremented
|
bytes_before_imm as this has already been incremented
|
||||||
by one in OP_E_memory while decoding the second
|
by one in OP_E_memory while decoding the second
|
||||||
source operand. */
|
source operand. */
|
||||||
if (opnum == 0)
|
|
||||||
bytes_before_imm++;
|
|
||||||
}
|
|
||||||
switch (modrm.mod)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
/* When modrm.rm == 5 or modrm.rm == 4 and base in
|
|
||||||
SIB == 5, there is a 4 byte displacement. */
|
|
||||||
if (base != 5)
|
|
||||||
/* No displacement. */
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
/* 4 byte displacement. */
|
|
||||||
bytes_before_imm += 4;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
/* 1 byte displacement: when decoding the third source,
|
|
||||||
don't increase bytes_before_imm as this has already
|
|
||||||
been incremented by one in OP_E_memory while decoding
|
|
||||||
the second source operand. */
|
|
||||||
if (opnum == 0)
|
if (opnum == 0)
|
||||||
bytes_before_imm++;
|
bytes_before_imm++;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
/* Don't increase bytes_before_imm when decoding the third source,
|
||||||
}
|
it has already been incremented by OP_E_memory while decoding
|
||||||
}
|
the second source operand. */
|
||||||
|
if (opnum == 0)
|
||||||
|
{
|
||||||
|
switch (modrm.mod)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
/* When modrm.rm == 5 or modrm.rm == 4 and base in
|
||||||
|
SIB == 5, there is a 4 byte displacement. */
|
||||||
|
if (base != 5)
|
||||||
|
/* No displacement. */
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
/* 4 byte displacement. */
|
||||||
|
bytes_before_imm += 4;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
/* 1 byte displacement. */
|
||||||
|
bytes_before_imm++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{ /* 16 bit address mode */
|
{
|
||||||
switch (modrm.mod)
|
/* 16 bit address mode */
|
||||||
{
|
/* Don't increase bytes_before_imm when decoding the third source,
|
||||||
case 0:
|
it has already been incremented by OP_E_memory while decoding
|
||||||
/* When modrm.rm == 6, there is a 2 byte displacement. */
|
the second source operand. */
|
||||||
if (modrm.rm != 6)
|
if (opnum == 0)
|
||||||
/* No displacement. */
|
{
|
||||||
break;
|
switch (modrm.mod)
|
||||||
case 2:
|
{
|
||||||
/* 2 byte displacement. */
|
case 0:
|
||||||
bytes_before_imm += 2;
|
/* When modrm.rm == 6, there is a 2 byte displacement. */
|
||||||
break;
|
if (modrm.rm != 6)
|
||||||
case 1:
|
/* No displacement. */
|
||||||
/* 1 byte displacement: when decoding the third source,
|
break;
|
||||||
don't increase bytes_before_imm as this has already
|
case 2:
|
||||||
been incremented by one in OP_E_memory while decoding
|
/* 2 byte displacement. */
|
||||||
the second source operand. */
|
bytes_before_imm += 2;
|
||||||
if (opnum == 0)
|
break;
|
||||||
bytes_before_imm++;
|
case 1:
|
||||||
|
/* 1 byte displacement: when decoding the third source,
|
||||||
|
don't increase bytes_before_imm as this has already
|
||||||
|
been incremented by one in OP_E_memory while decoding
|
||||||
|
the second source operand. */
|
||||||
|
if (opnum == 0)
|
||||||
|
bytes_before_imm++;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user