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:
Jan Beulich 2018-04-26 08:28:38 +02:00 committed by Jan Beulich
parent c47b0ff06d
commit 6b8d358865
2 changed files with 10 additions and 19 deletions

View File

@ -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>

View File

@ -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;