PATCH: Check rex_ignored

H.J. Lu hongjiu.lu@intel.com
Fri Nov 13 23:15:00 GMT 2009


Hi,

For VEX insn, REX prefix will be ignored. I checked in this patch to
fix it.


H.J.
---
gas/testsuite/

2009-11-13  H.J. Lu  <hongjiu.lu@intel.com>

	* gas/i386/rex.s: Add a test for VEX insn.
	* gas/i386/rex.d: Updated.

opcodes/

2009-11-13  H.J. Lu  <hongjiu.lu@intel.com>

	* i386-dis.c (print_insn): Check rex_ignored.


diff --git a/gas/testsuite/gas/i386/rex.d b/gas/testsuite/gas/i386/rex.d
index 9023b49..ed59033 100644
--- a/gas/testsuite/gas/i386/rex.d
+++ b/gas/testsuite/gas/i386/rex.d
@@ -14,6 +14,7 @@ Disassembly of section .text:
 [	 ]*[0-9a-f]+:[	 ]+4a 0f ae 04 05 00 00 00 00[	 ]+(rex.WX? )?fxsaveq?[	 ]+(0x0)?\(,%r8(,1)?\)
 [	 ]*[0-9a-f]+:[	 ]+43 0f ae 04 00[	 ]+fxsavel?[	 ]+\(%r8,%r8(,1)?\)
 [	 ]*[0-9a-f]+:[	 ]+4b 0f ae 04 00[	 ]+(rex.W(XB)? )?fxsaveq?[	 ]+\(%r8,%r8(,1)?\)
+[	 ]*[0-9a-f]+:[	 ]+40 c5 f9 28 00[	 ]+rex vmovapd \(%rax\),%xmm0
 [	 ]*[0-9a-f]+:[	 ]+40[	 ]+rex
 [	 ]*[0-9a-f]+:[	 ]+41[	 ]+rex.B
 [	 ]*[0-9a-f]+:[	 ]+42[	 ]+rex.X
diff --git a/gas/testsuite/gas/i386/rex.s b/gas/testsuite/gas/i386/rex.s
index a0736c4..055edb7 100644
--- a/gas/testsuite/gas/i386/rex.s
+++ b/gas/testsuite/gas/i386/rex.s
@@ -10,6 +10,9 @@ _start:
 	rex/fxsave (%r8,%r8)
 	rex64/fxsave (%r8,%r8)
 
+	.byte 0x40
+	vmovapd (%rax),%xmm0
+
 # Test prefixes family.
 	rex
 	rex.B
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index 4d71a00..2b5718f 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -10491,7 +10491,7 @@ print_insn (bfd_vma pc, disassemble_info *info)
     }
 
   /* Check if the REX prefix used.  */
-  if ((rex ^ rex_used) == 0)
+  if (rex_ignored == 0 && (rex ^ rex_used) == 0)
     all_prefixes[last_rex_prefix] = 0;
 
   /* Check if the SEG prefix used.  */



More information about the Binutils mailing list