x86: drop dead code from build_modrm_byte()
There are no templates with VexImmExt and ImmExt set at the same time. There are also no VEX3SOURCES templates with CpuFMA. I assume both are left-overs from the implementation of an early specification which was later revised.
This commit is contained in:
parent
c47b0ff06d
commit
6b8d358865
|
@ -1,3 +1,9 @@
|
||||||
|
2018-04-26 Jan Beulich <jbeulich@suse.com>
|
||||||
|
|
||||||
|
* config/tc-i386.c (build_modrm_byte): Drop code dealing with
|
||||||
|
.veximmext and .immext set at the same time. Drop code dealing
|
||||||
|
with .cpufma when .vexsources == VEX3SOURCES.
|
||||||
|
|
||||||
2018-04-25 Christophe Lyon <christophe.lyon@st.com>
|
2018-04-25 Christophe Lyon <christophe.lyon@st.com>
|
||||||
Mickaël Guêné <mickael.guene@st.com>
|
Mickaël Guêné <mickael.guene@st.com>
|
||||||
|
|
||||||
|
|
|
@ -6567,22 +6567,16 @@ build_modrm_byte (void)
|
||||||
unsigned int source, dest;
|
unsigned int source, dest;
|
||||||
int vex_3_sources;
|
int vex_3_sources;
|
||||||
|
|
||||||
/* The first operand of instructions with VEX prefix and 3 sources
|
|
||||||
must be VEX_Imm4. */
|
|
||||||
vex_3_sources = i.tm.opcode_modifier.vexsources == VEX3SOURCES;
|
vex_3_sources = i.tm.opcode_modifier.vexsources == VEX3SOURCES;
|
||||||
if (vex_3_sources)
|
if (vex_3_sources)
|
||||||
{
|
{
|
||||||
unsigned int nds, reg_slot;
|
unsigned int nds, reg_slot;
|
||||||
expressionS *exp;
|
expressionS *exp;
|
||||||
|
|
||||||
if (i.tm.opcode_modifier.veximmext
|
gas_assert (!i.tm.opcode_modifier.veximmext
|
||||||
&& i.tm.opcode_modifier.immext)
|
|| !i.tm.opcode_modifier.immext);
|
||||||
{
|
|
||||||
dest = i.operands - 2;
|
dest = i.operands - 1;
|
||||||
gas_assert (dest == 3);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
dest = i.operands - 1;
|
|
||||||
nds = dest - 1;
|
nds = dest - 1;
|
||||||
|
|
||||||
/* There are 2 kinds of instructions:
|
/* There are 2 kinds of instructions:
|
||||||
|
@ -6623,15 +6617,6 @@ build_modrm_byte (void)
|
||||||
reg_slot = 0;
|
reg_slot = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FMA swaps REG and NDS. */
|
|
||||||
if (i.tm.cpu_flags.bitfield.cpufma)
|
|
||||||
{
|
|
||||||
unsigned int tmp;
|
|
||||||
tmp = reg_slot;
|
|
||||||
reg_slot = nds;
|
|
||||||
nds = tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
gas_assert (i.tm.operand_types[reg_slot].bitfield.regsimd);
|
gas_assert (i.tm.operand_types[reg_slot].bitfield.regsimd);
|
||||||
exp->X_op = O_constant;
|
exp->X_op = O_constant;
|
||||||
exp->X_add_number = register_number (i.op[reg_slot].regs) << 4;
|
exp->X_add_number = register_number (i.op[reg_slot].regs) << 4;
|
||||||
|
|
Loading…
Reference in New Issue