aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/config/tc-i386.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 9e13f2f..95f5810 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -9850,11 +9850,13 @@ check_byte_reg (void)
if (i.types[op].bitfield.class != Reg)
continue;
- /* If this is an eight bit register, it's OK. If it's the 16 or
- 32 bit version of an eight bit register, we will just use the
- low portion, and that's OK too. */
+ /* If this is an eight bit register, it's OK. */
if (i.types[op].bitfield.byte)
- continue;
+ {
+ if (i.tm.opcode_modifier.checkoperandsize)
+ break;
+ continue;
+ }
/* I/O port address operands are OK too. */
if (i.tm.operand_types[op].bitfield.instance == RegD
@@ -9908,6 +9910,9 @@ check_long_reg (void)
i.suffix);
return 0;
}
+ else if (i.tm.opcode_modifier.checkoperandsize)
+ break;
+
return 1;
}
@@ -9943,6 +9948,9 @@ check_qword_reg (void)
register_prefix, i.op[op].regs->reg_name, i.suffix);
return 0;
}
+ else if (i.tm.opcode_modifier.checkoperandsize)
+ break;
+
return 1;
}
@@ -9978,6 +9986,9 @@ check_word_reg (void)
i.suffix);
return 0;
}
+ else if (i.tm.opcode_modifier.checkoperandsize)
+ break;
+
return 1;
}