diff options
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-i386.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 050c872..3985756 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -3948,7 +3948,10 @@ optimize_encoding (void) && i.tm.extension_opcode == 0x4) || ((i.tm.base_opcode == 0xf6 || i.tm.base_opcode == 0xc6) - && i.tm.extension_opcode == 0x0))))) + && i.tm.extension_opcode == 0x0))) + || (fits_in_imm7 (i.op[0].imms->X_add_number) + && i.tm.base_opcode == 0x83 + && i.tm.extension_opcode == 0x4))) || (i.types[0].bitfield.qword && ((i.reg_operands == 2 && i.op[0].regs == i.op[1].regs @@ -3962,6 +3965,7 @@ optimize_encoding (void) { /* Optimize: -O: andq $imm31, %r64 -> andl $imm31, %r32 + andq $imm7, %r64 -> andl $imm7, %r32 testq $imm31, %r64 -> testl $imm31, %r32 xorq %r64, %r64 -> xorl %r32, %r32 subq %r64, %r64 -> subl %r32, %r32 |