mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-30 12:44:10 +08:00
x86: reduce check_{byte,word,long,qword}_reg() overhead
These run after template matching. Therefore it is quite pointless for them to check all operands, when operand sizes matching across operands is already known. Exit the loops early in such cases. In check_byte_reg() also drop a long-stale part of a comment.
This commit is contained in:
parent
9736d941f2
commit
939c703789
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user