Commit 7706f2f3 by H.J. Lu Committed by H.J. Lu

i386: Restore Skylake SImode hard register store cost

On Skylake, we should move integer register to SSE register without
going through memory.  This patch restores Skylake SImode hard register
store cost to 6.

gcc/

	PR target/90878
	* config/i386/x86-tune-costs.h (skylake_cost): Restore SImode
	hard register store cost to 6.

gcc/testsuite/

	PR target/90878
	* gcc.target/i386/pr90878.c: New test.

From-SVN: r275906
parent 101a0841
2019-09-18 H.J. Lu <hongjiu.lu@intel.com>
PR target/90878
* config/i386/x86-tune-costs.h (skylake_cost): Restore SImode
hard register store cost to 6.
2019-09-18 H.J. Lu <hongjiu.lu@intel.com>
PR target/91446
* config/i386/x86-tune-costs.h (skylake_cost): Increase SImode
pseudo register store cost from 3 to 6 to make it the same as
......
......@@ -1594,7 +1594,7 @@ struct processor_costs skylake_cost = {
{4, 4, 4}, /* cost of loading integer registers
in QImode, HImode and SImode.
Relative to reg-reg move (2). */
{6, 6, 3}, /* cost of storing integer registers */
{6, 6, 6}, /* cost of storing integer registers */
2, /* cost of reg,reg fld/fst */
{6, 6, 8}, /* cost of loading fp registers
in SFmode, DFmode and XFmode */
......
2019-09-18 H.J. Lu <hongjiu.lu@intel.com>
PR target/90878
* gcc.target/i386/pr90878.c: New test.
2019-09-18 H.J. Lu <hongjiu.lu@intel.com>
PR target/91446
* gcc.target/i386/pr91446.c: New test.
......
/* { dg-do compile } */
/* { dg-options "-O2 -march=skylake" } */
union ieee754_float
{
float f;
struct
{
unsigned int mantissa:23;
unsigned int exponent:8;
unsigned int negative:1;
} ieee;
};
double
foo (float f)
{
union ieee754_float u;
u.f = f;
u.ieee.negative = 0;
return u.f;
}
/* { dg-final { scan-assembler-not "vcvtss2sd\[^\\n\]*\\\(%.sp\\\)" } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment