i386.c (ix86_secondary_reload): Require QImode intermediate for QImode mask register spill only for...

* config/i386/i386.c (ix86_secondary_reload): Require QImode
	intermediate for QImode mask register spill only for !TARGET_AVX512DQ.
	Always use true_regnum to determine operand regno.

From-SVN: r243945
This commit is contained in:
Uros Bizjak 2016-12-27 22:25:09 +01:00 committed by Uros Bizjak
parent ab4bb1b300
commit 1b5d6ccdcf
2 changed files with 14 additions and 13 deletions

View File

@ -1,3 +1,9 @@
2016-12-27 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.c (ix86_secondary_reload): Require QImode
intermediate for mask register spill only for !TARGET_AVX512DQ.
Always use true_regnum to determine operand regno.
2016-12-27 Sandra Loosemore <sandra@codesourcery.com>
* doc/cppopts.texi: Delete redundant documentation for -x. Move

View File

@ -39752,24 +39752,19 @@ ix86_secondary_reload (bool in_p, rtx x, reg_class_t rclass,
/* QImode spills from non-QI registers require
intermediate register on 32bit targets. */
if (mode == QImode
&& (MAYBE_MASK_CLASS_P (rclass)
|| (!TARGET_64BIT && !in_p
&& INTEGER_CLASS_P (rclass)
&& MAYBE_NON_Q_CLASS_P (rclass))))
&& ((!TARGET_64BIT && !in_p
&& INTEGER_CLASS_P (rclass)
&& MAYBE_NON_Q_CLASS_P (rclass))
|| (!TARGET_AVX512DQ
&& MAYBE_MASK_CLASS_P (rclass))))
{
int regno;
if (REG_P (x))
regno = REGNO (x);
else
regno = -1;
if (regno >= FIRST_PSEUDO_REGISTER || SUBREG_P (x))
regno = true_regnum (x);
int regno = true_regnum (x);
/* Return Q_REGS if the operand is in memory. */
if (regno == -1)
return Q_REGS;
return NO_REGS;
}
/* This condition handles corner case where an expression involving