[binutils-gdb] x86: honor template rather than actual operands when updating i.xstate

Jan Beulich jbeulich@sourceware.org
Tue Feb 16 10:34:43 GMT 2021


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=3d70986f2181a3aa4b9660729a8e1313e5ece4e0

commit 3d70986f2181a3aa4b9660729a8e1313e5ece4e0
Author: Jan Beulich <jbeulich@suse.com>
Date:   Tue Feb 16 11:33:04 2021 +0100

    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.

Diff:
---
 gas/ChangeLog                        |  8 ++++++++
 gas/config/tc-i386.c                 | 10 +++++-----
 gas/testsuite/gas/i386/property-12.d |  2 +-
 gas/testsuite/gas/i386/property-4.d  |  2 +-
 gas/testsuite/gas/i386/property-5.d  |  2 +-
 5 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index a269303e080..443511f91c3 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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,
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 94783f51550..2aaffff2187 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 1a5c2978075..1cb010aab67 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 46450c87af4..3345c17eb1d 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 c04a6b84f5d..cad4a4d3ff0 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


More information about the Binutils-cvs mailing list