[binutils-gdb] x86: tighten assertion in build_modrm_byte()

Jan Beulich jbeulich@sourceware.org
Thu Apr 26 06:31:00 GMT 2018


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

commit dcd7e323760ab296262a2e18e9869d37ff59f340
Author: Jan Beulich <jbeulich@novell.com>
Date:   Thu Apr 26 08:29:09 2018 +0200

    x86: tighten assertion in build_modrm_byte()
    
    All VEX3SOURCES cases should have VexW set, and all should have a SIMD
    register destination.

Diff:
---
 gas/ChangeLog        | 5 +++++
 gas/config/tc-i386.c | 7 +++----
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 057a45f..7cd0a10 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,10 @@
 2018-04-26  Jan Beulich  <jbeulich@suse.com>
 
+	* config/tc-i386.c (build_modrm_byte): Extend assertion in
+	vex_3_sources handling to cover more cases.
+
+2018-04-26  Jan Beulich  <jbeulich@suse.com>
+
 	* config/tc-i386.c (build_modrm_byte): Drop code dealing with
 	.veximmext and .immext set at the same time. Drop code dealing
 	with .cpufma when .vexsources == VEX3SOURCES.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 014720e..7126ca4 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -6591,10 +6591,9 @@ build_modrm_byte (void)
                   && i.tm.opcode_modifier.vexvvvv == VEXXDS
                   && (i.tm.opcode_modifier.veximmext
                       || (i.imm_operands == 1
-                          && i.types[0].bitfield.vec_imm4
-                          && (i.tm.opcode_modifier.vexw == VEXW0
-                              || i.tm.opcode_modifier.vexw == VEXW1)
-                          && i.tm.operand_types[dest].bitfield.regsimd)));
+			  && i.types[0].bitfield.vec_imm4))
+		  && i.tm.opcode_modifier.vexw
+		  && i.tm.operand_types[dest].bitfield.regsimd);
 
       if (i.imm_operands == 0)
         {



More information about the Binutils-cvs mailing list