X86: Ignore REX_B bit for 32-bit XOP instructions
[deliverable/binutils-gdb.git] / opcodes / i386-dis.c
index 5f49f919935ad61563c805337b6c79f49f37d18a..ada44010de56189da01ab2f0048fc8bc1a51c3f4 100644 (file)
@@ -12670,11 +12670,15 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info)
        rex |= REX_W;
 
       vex.register_specifier = (~(*codep >> 3)) & 0xf;
-      if (address_mode != mode_64bit
-         && vex.register_specifier > 0x7)
+      if (address_mode != mode_64bit)
        {
-         dp = &bad_opcode;
-         return dp;
+         /* In 16/32-bit mode REX_B is silently ignored.  */
+         rex &= ~REX_B;
+         if (vex.register_specifier > 0x7)
+           {
+             dp = &bad_opcode;
+             return dp;
+           }
        }
 
       vex.length = (*codep & 0x4) ? 256 : 128;
This page took 0.023157 seconds and 4 git commands to generate.