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
This commit is contained in:
parent
101a0841b6
commit
7706f2f312
@ -1,3 +1,9 @@
|
||||
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
|
||||
|
@ -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 */
|
||||
|
@ -1,3 +1,8 @@
|
||||
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
|
||||
|
25
gcc/testsuite/gcc.target/i386/pr90878.c
Normal file
25
gcc/testsuite/gcc.target/i386/pr90878.c
Normal file
@ -0,0 +1,25 @@
|
||||
/* { 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\\\)" } } */
|
Loading…
Reference in New Issue
Block a user