x86: honor template rather than actual operands when updating i.xstate
This undoes a change to md_assemble() that 32930e4edb
("x86: Support
GNU_PROPERTY_X86_ISA_1_V[234] marker") did without any explanation. This
broke a CVTPI2PS property test that a subsequent test will add, and the
updates to existing tests also demonstrate what was wrong: For example,
AVX insns update the full YMM, even if a Vex128 variant is in use.
This commit is contained in:
parent
014d61ea14
commit
3d70986f21
5 changed files with 16 additions and 8 deletions
|
@ -1,3 +1,11 @@
|
|||
2021-02-16 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* config/tc-i386.c (md_assemble): Use template rather than
|
||||
actuals when updating i.xstate.
|
||||
* testsuite/gas/i386/property-4.d,
|
||||
testsuite/gas/i386/property-5.d,
|
||||
testsuite/gas/i386/property-12.d: Adjust expectations.
|
||||
|
||||
2021-02-16 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* config/tc-i386.c (output_insn): Handle ldmxcsr, stmxcsr,
|
||||
|
|
|
@ -4874,7 +4874,7 @@ md_assemble (char *line)
|
|||
for (j = 0; j < i.operands; j++)
|
||||
{
|
||||
i.types[j] = operand_type_and (i.types[j], i.tm.operand_types[j]);
|
||||
switch (i.types[j].bitfield.class)
|
||||
switch (i.tm.operand_types[j].bitfield.class)
|
||||
{
|
||||
default:
|
||||
break;
|
||||
|
@ -4885,13 +4885,13 @@ md_assemble (char *line)
|
|||
i.xstate |= xstate_mask;
|
||||
break;
|
||||
case RegSIMD:
|
||||
if (i.types[j].bitfield.tmmword)
|
||||
if (i.tm.operand_types[j].bitfield.tmmword)
|
||||
i.xstate |= xstate_tmm;
|
||||
else if (i.types[j].bitfield.zmmword)
|
||||
else if (i.tm.operand_types[j].bitfield.zmmword)
|
||||
i.xstate |= xstate_zmm;
|
||||
else if (i.types[j].bitfield.ymmword)
|
||||
else if (i.tm.operand_types[j].bitfield.ymmword)
|
||||
i.xstate |= xstate_ymm;
|
||||
else if (i.types[j].bitfield.xmmword)
|
||||
else if (i.tm.operand_types[j].bitfield.xmmword)
|
||||
i.xstate |= xstate_xmm;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -6,4 +6,4 @@ Displaying notes found in: .note.gnu.property
|
|||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA used: x86-64-baseline, x86-64-v4
|
||||
x86 feature used: x86, XMM, MASK
|
||||
x86 feature used: x86, XMM, YMM, ZMM, MASK
|
||||
|
|
|
@ -6,4 +6,4 @@ Displaying notes found in: .note.gnu.property
|
|||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA used: x86-64-baseline, x86-64-v3
|
||||
x86 feature used: x86, XMM
|
||||
x86 feature used: x86, XMM, YMM
|
||||
|
|
|
@ -6,4 +6,4 @@ Displaying notes found in: .note.gnu.property
|
|||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA used: x86-64-baseline, x86-64-v4
|
||||
x86 feature used: x86, XMM
|
||||
x86 feature used: x86, XMM, YMM, ZMM
|
||||
|
|
Loading…
Add table
Reference in a new issue