x86: StaticRounding implies SAE

This implication allows to simplify some conditionals, thus slightly
improving performance. This change also paves the way for re-using
StaticRounding for non-EVEX insns.
This commit is contained in:
Jan Beulich 2019-07-01 08:31:50 +02:00
parent a0a1771e89
commit a80195f122
2 changed files with 8 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2019-07-01 Jan Beulich <jbeulich@suse.com>
* config/tc-i386.c (is_evex_encoding): Don't check for SAE.
(check_VecOperands): Simplify static rounding / SAE checking.
2019-07-01 Jan Beulich <jbeulich@suse.com>
* config/tc-i386.c (optimize_encoding): Make j unsigned. Handle

View File

@ -3557,7 +3557,7 @@ is_evex_encoding (const insn_template *t)
{
return t->opcode_modifier.evex || t->opcode_modifier.disp8memshift
|| t->opcode_modifier.broadcast || t->opcode_modifier.masking
|| t->opcode_modifier.staticrounding || t->opcode_modifier.sae;
|| t->opcode_modifier.sae;
}
static INLINE bfd_boolean
@ -5469,11 +5469,8 @@ check_VecOperands (const insn_template *t)
/* Check RC/SAE. */
if (i.rounding)
{
if ((i.rounding->type != saeonly
&& !t->opcode_modifier.staticrounding)
|| (i.rounding->type == saeonly
&& (t->opcode_modifier.staticrounding
|| !t->opcode_modifier.sae)))
if (!t->opcode_modifier.sae
|| (i.rounding->type != saeonly && !t->opcode_modifier.staticrounding))
{
i.error = unsupported_rc_sae;
return 1;