mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 11:39:26 +08:00
x86: drop FloatD
It can be expressed by D, when making the consumer look at operand size to tell apart both uses.
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2018-03-08 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* config/tc-i386.c (operand_size_match): Drop / replace uses of
|
||||
.floatd.
|
||||
|
||||
2018-03-08 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* testsuite/gas/i386/intel-intel.d: New.
|
||||
|
@ -2027,7 +2027,7 @@ operand_size_match (const insn_template *t)
|
||||
|
||||
if (match)
|
||||
return match;
|
||||
else if (!t->opcode_modifier.d && !t->opcode_modifier.floatd)
|
||||
else if (!t->opcode_modifier.d)
|
||||
{
|
||||
mismatch:
|
||||
i.error = operand_size_mismatch;
|
||||
@ -5446,7 +5446,7 @@ match_template (char mnem_suffix)
|
||||
operand_types[1])))
|
||||
{
|
||||
/* Check if other direction is valid ... */
|
||||
if (!t->opcode_modifier.d && !t->opcode_modifier.floatd)
|
||||
if (!t->opcode_modifier.d)
|
||||
continue;
|
||||
|
||||
check_reverse:
|
||||
@ -5464,14 +5464,14 @@ check_reverse:
|
||||
/* Does not match either direction. */
|
||||
continue;
|
||||
}
|
||||
/* found_reverse_match holds which of D or FloatDR
|
||||
/* found_reverse_match holds which of D or FloatR
|
||||
we've found. */
|
||||
if (t->opcode_modifier.d)
|
||||
found_reverse_match = Opcode_D;
|
||||
else if (t->opcode_modifier.floatd)
|
||||
if (!t->opcode_modifier.d)
|
||||
found_reverse_match = 0;
|
||||
else if (operand_types[0].bitfield.tbyte)
|
||||
found_reverse_match = Opcode_FloatD;
|
||||
else
|
||||
found_reverse_match = 0;
|
||||
found_reverse_match = Opcode_D;
|
||||
if (t->opcode_modifier.floatr)
|
||||
found_reverse_match |= Opcode_FloatR;
|
||||
}
|
||||
|
@ -1,3 +1,12 @@
|
||||
2018-03-08 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* i386-gen.c (opcode_modifiers): Delete FloatD.
|
||||
* i386-opc.h (FloatD): Delete.
|
||||
(struct i386_opcode_modifier): Delete floatd.
|
||||
* i386-opc.tbl (fadd, fsub, fsubr, fmul, fdiv, fdivr): Replace
|
||||
FloatD by D.
|
||||
* i386-tlb.h: Re-generate.
|
||||
|
||||
2018-03-08 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* i386-dis.c (float_reg): Adjust DC and DE fsub*/fdiv* patterns.
|
||||
|
@ -598,7 +598,6 @@ static bitfield opcode_modifiers[] =
|
||||
BITFIELD (JumpInterSegment),
|
||||
BITFIELD (FloatMF),
|
||||
BITFIELD (FloatR),
|
||||
BITFIELD (FloatD),
|
||||
BITFIELD (Size16),
|
||||
BITFIELD (Size32),
|
||||
BITFIELD (Size64),
|
||||
|
@ -398,8 +398,6 @@ enum
|
||||
FloatMF,
|
||||
/* src/dest swap for floats. */
|
||||
FloatR,
|
||||
/* has float insn direction bit. */
|
||||
FloatD,
|
||||
/* needs size prefix if in 32-bit mode */
|
||||
Size16,
|
||||
/* needs size prefix if in 16-bit mode */
|
||||
@ -633,7 +631,6 @@ typedef struct i386_opcode_modifier
|
||||
unsigned int jumpintersegment:1;
|
||||
unsigned int floatmf:1;
|
||||
unsigned int floatr:1;
|
||||
unsigned int floatd:1;
|
||||
unsigned int size16:1;
|
||||
unsigned int size32:1;
|
||||
unsigned int size64:1;
|
||||
|
@ -604,7 +604,7 @@ fldz, 0, 0xd9ee, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSu
|
||||
// Arithmetic.
|
||||
|
||||
// add
|
||||
fadd, 2, 0xd8c0, None, 2, CpuFP, ShortForm|FloatD|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { FloatReg, FloatAcc }
|
||||
fadd, 2, 0xd8c0, None, 2, CpuFP, ShortForm|D|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { FloatReg, FloatAcc }
|
||||
// alias for fadd %st(i), %st
|
||||
fadd, 1, 0xd8c0, None, 2, CpuFP, ShortForm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { FloatReg }
|
||||
// alias for faddp
|
||||
@ -620,11 +620,11 @@ faddp, 2, 0xdec0, None, 2, CpuFP, ShortForm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_q
|
||||
|
||||
// subtract
|
||||
fsub, 1, 0xd8e0, None, 2, CpuFP, ShortForm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { FloatReg }
|
||||
fsub, 2, 0xd8e0, None, 2, CpuFP, ShortForm|FloatD|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ATTMnemonic|ATTSyntax, { FloatReg, FloatAcc }
|
||||
fsub, 2, 0xd8e0, None, 2, CpuFP, ShortForm|D|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ATTMnemonic|ATTSyntax, { FloatReg, FloatAcc }
|
||||
// alias for fsubp
|
||||
fsub, 0, 0xdee1, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Ugh|ATTMnemonic|ATTSyntax, { 0 }
|
||||
fsub, 0, 0xdee9, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Ugh|ATTMnemonic, { 0 }
|
||||
fsub, 2, 0xd8e0, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|No_qSuf|ShortForm|FloatD|FloatR, { FloatReg, FloatAcc }
|
||||
fsub, 2, 0xd8e0, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|No_qSuf|ShortForm|D|FloatR, { FloatReg, FloatAcc }
|
||||
fsub, 1, 0xd8, 0x4, 1, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Dword|Qword|Unspecified|BaseIndex }
|
||||
fisub, 1, 0xde, 0x4, 1, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Word|Dword|Unspecified|BaseIndex }
|
||||
|
||||
@ -639,11 +639,11 @@ fsubp, 0, 0xdee9, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldS
|
||||
|
||||
// subtract reverse
|
||||
fsubr, 1, 0xd8e8, None, 2, CpuFP, ShortForm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { FloatReg }
|
||||
fsubr, 2, 0xd8e8, None, 2, CpuFP, ShortForm|FloatD|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ATTMnemonic|ATTSyntax, { FloatReg, FloatAcc }
|
||||
fsubr, 2, 0xd8e8, None, 2, CpuFP, ShortForm|D|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ATTMnemonic|ATTSyntax, { FloatReg, FloatAcc }
|
||||
// alias for fsubrp
|
||||
fsubr, 0, 0xdee9, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Ugh|ATTMnemonic|ATTSyntax, { 0 }
|
||||
fsubr, 0, 0xdee1, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Ugh|ATTMnemonic, { 0 }
|
||||
fsubr, 2, 0xd8e8, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|No_qSuf|ShortForm|FloatD|FloatR, { FloatReg, FloatAcc }
|
||||
fsubr, 2, 0xd8e8, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|No_qSuf|ShortForm|D|FloatR, { FloatReg, FloatAcc }
|
||||
fsubr, 1, 0xd8, 0x5, 1, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Dword|Qword|Unspecified|BaseIndex }
|
||||
fisubr, 1, 0xde, 0x5, 1, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Word|Dword|Unspecified|BaseIndex }
|
||||
|
||||
@ -657,7 +657,7 @@ fsubrp, 1, 0xdee0, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|No_q
|
||||
fsubrp, 0, 0xdee1, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|No_qSuf, { 0 }
|
||||
|
||||
// multiply
|
||||
fmul, 2, 0xd8c8, None, 2, CpuFP, ShortForm|FloatD|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { FloatReg, FloatAcc }
|
||||
fmul, 2, 0xd8c8, None, 2, CpuFP, ShortForm|D|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { FloatReg, FloatAcc }
|
||||
fmul, 1, 0xd8c8, None, 2, CpuFP, ShortForm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { FloatReg }
|
||||
// alias for fmulp
|
||||
fmul, 0, 0xdec9, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Ugh|ATTMnemonic, { 0 }
|
||||
@ -671,11 +671,11 @@ fmulp, 2, 0xdec8, None, 2, CpuFP, ShortForm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_q
|
||||
|
||||
// divide
|
||||
fdiv, 1, 0xd8f0, None, 2, CpuFP, ShortForm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { FloatReg }
|
||||
fdiv, 2, 0xd8f0, None, 2, CpuFP, ShortForm|FloatD|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ATTMnemonic|ATTSyntax, { FloatReg, FloatAcc }
|
||||
fdiv, 2, 0xd8f0, None, 2, CpuFP, ShortForm|D|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ATTMnemonic|ATTSyntax, { FloatReg, FloatAcc }
|
||||
// alias for fdivp
|
||||
fdiv, 0, 0xdef1, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Ugh|ATTMnemonic|ATTSyntax, { 0 }
|
||||
fdiv, 0, 0xdef9, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Ugh|ATTMnemonic, { 0 }
|
||||
fdiv, 2, 0xd8f0, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|No_qSuf|ShortForm|FloatD|FloatR, { FloatReg, FloatAcc }
|
||||
fdiv, 2, 0xd8f0, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|No_qSuf|ShortForm|D|FloatR, { FloatReg, FloatAcc }
|
||||
fdiv, 1, 0xd8, 0x6, 1, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Dword|Qword|Unspecified|BaseIndex }
|
||||
fidiv, 1, 0xde, 0x6, 1, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Word|Dword|Unspecified|BaseIndex }
|
||||
|
||||
@ -690,11 +690,11 @@ fdivp, 0, 0xdef9, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|No_qS
|
||||
|
||||
// divide reverse
|
||||
fdivr, 1, 0xd8f8, None, 2, CpuFP, ShortForm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { FloatReg }
|
||||
fdivr, 2, 0xd8f8, None, 2, CpuFP, ShortForm|FloatD|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ATTMnemonic|ATTSyntax, { FloatReg, FloatAcc }
|
||||
fdivr, 2, 0xd8f8, None, 2, CpuFP, ShortForm|D|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ATTMnemonic|ATTSyntax, { FloatReg, FloatAcc }
|
||||
// alias for fdivrp
|
||||
fdivr, 0, 0xdef9, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Ugh|ATTMnemonic|ATTSyntax, { 0 }
|
||||
fdivr, 0, 0xdef1, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|Ugh|ATTMnemonic, { 0 }
|
||||
fdivr, 2, 0xd8f8, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|No_qSuf|ShortForm|FloatD|FloatR, { FloatReg, FloatAcc }
|
||||
fdivr, 2, 0xd8f8, None, 2, CpuFP, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|No_qSuf|ShortForm|D|FloatR, { FloatReg, FloatAcc }
|
||||
fdivr, 1, 0xd8, 0x7, 1, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Dword|Qword|Unspecified|BaseIndex }
|
||||
fidivr, 1, 0xde, 0x7, 1, CpuFP, Modrm|FloatMF|No_bSuf|No_wSuf|No_qSuf|No_ldSuf, { Word|Dword|Unspecified|BaseIndex }
|
||||
|
||||
|
39448
opcodes/i386-tbl.h
39448
opcodes/i386-tbl.h
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user