mirror of git://gcc.gnu.org/git/gcc.git
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:
parent
ab4bb1b300
commit
1b5d6ccdcf
|
@ -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>
|
2016-12-27 Sandra Loosemore <sandra@codesourcery.com>
|
||||||
|
|
||||||
* doc/cppopts.texi: Delete redundant documentation for -x. Move
|
* doc/cppopts.texi: Delete redundant documentation for -x. Move
|
||||||
|
|
|
@ -39752,24 +39752,19 @@ ix86_secondary_reload (bool in_p, rtx x, reg_class_t rclass,
|
||||||
/* QImode spills from non-QI registers require
|
/* QImode spills from non-QI registers require
|
||||||
intermediate register on 32bit targets. */
|
intermediate register on 32bit targets. */
|
||||||
if (mode == QImode
|
if (mode == QImode
|
||||||
&& (MAYBE_MASK_CLASS_P (rclass)
|
&& ((!TARGET_64BIT && !in_p
|
||||||
|| (!TARGET_64BIT && !in_p
|
&& INTEGER_CLASS_P (rclass)
|
||||||
&& INTEGER_CLASS_P (rclass)
|
&& MAYBE_NON_Q_CLASS_P (rclass))
|
||||||
&& MAYBE_NON_Q_CLASS_P (rclass))))
|
|| (!TARGET_AVX512DQ
|
||||||
|
&& MAYBE_MASK_CLASS_P (rclass))))
|
||||||
{
|
{
|
||||||
int regno;
|
int regno = true_regnum (x);
|
||||||
|
|
||||||
if (REG_P (x))
|
|
||||||
regno = REGNO (x);
|
|
||||||
else
|
|
||||||
regno = -1;
|
|
||||||
|
|
||||||
if (regno >= FIRST_PSEUDO_REGISTER || SUBREG_P (x))
|
|
||||||
regno = true_regnum (x);
|
|
||||||
|
|
||||||
/* Return Q_REGS if the operand is in memory. */
|
/* Return Q_REGS if the operand is in memory. */
|
||||||
if (regno == -1)
|
if (regno == -1)
|
||||||
return Q_REGS;
|
return Q_REGS;
|
||||||
|
|
||||||
|
return NO_REGS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This condition handles corner case where an expression involving
|
/* This condition handles corner case where an expression involving
|
||||||
|
|
Loading…
Reference in New Issue