aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2021-02-16 11:33:04 +0100
committerJan Beulich <jbeulich@suse.com>2021-02-16 11:33:04 +0100
commit3d70986f2181a3aa4b9660729a8e1313e5ece4e0 (patch)
tree575b26c167206c674245dfb38efc16f854139fcc /gas
parent014d61ea14540cc524a6f75d2b925e7bb1a6d289 (diff)
downloadbinutils-3d70986f2181a3aa4b9660729a8e1313e5ece4e0.zip
binutils-3d70986f2181a3aa4b9660729a8e1313e5ece4e0.tar.gz
binutils-3d70986f2181a3aa4b9660729a8e1313e5ece4e0.tar.bz2
x86: honor template rather than actual operands when updating i.xstate
This undoes a change to md_assemble() that 32930e4edbc0 ("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.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog8
-rw-r--r--gas/config/tc-i386.c10
-rw-r--r--gas/testsuite/gas/i386/property-12.d2
-rw-r--r--gas/testsuite/gas/i386/property-4.d2
-rw-r--r--gas/testsuite/gas/i386/property-5.d2
5 files changed, 16 insertions, 8 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index a269303..443511f 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,13 @@
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,
vldmxcsr, vstmxcsr, vzeroall, and vzeroupper.
* testsuite/gas/i386/property-ldmxcsr.s,
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 94783f5..2aaffff 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -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;
}
diff --git a/gas/testsuite/gas/i386/property-12.d b/gas/testsuite/gas/i386/property-12.d
index 1a5c297..1cb010a 100644
--- a/gas/testsuite/gas/i386/property-12.d
+++ b/gas/testsuite/gas/i386/property-12.d
@@ -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
diff --git a/gas/testsuite/gas/i386/property-4.d b/gas/testsuite/gas/i386/property-4.d
index 46450c8..3345c17 100644
--- a/gas/testsuite/gas/i386/property-4.d
+++ b/gas/testsuite/gas/i386/property-4.d
@@ -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
diff --git a/gas/testsuite/gas/i386/property-5.d b/gas/testsuite/gas/i386/property-5.d
index c04a6b8..cad4a4d 100644
--- a/gas/testsuite/gas/i386/property-5.d
+++ b/gas/testsuite/gas/i386/property-5.d
@@ -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