Increase rtx cost of sse_to_integer in skylake_cost.
authorliuhongt <hongtao.liu@intel.com>
Wed, 16 Sep 2020 02:53:52 +0000 (10:53 +0800)
committerliuhongt <hongtao.liu@intel.com>
Sat, 19 Sep 2020 14:54:02 +0000 (22:54 +0800)
As https://gcc.gnu.org/pipermail/gcc-patches/2019-August/528839.html
indicates, movement between SSE and gpr should be much expensive than
movement inside gpr(which is 2 as default).

gcc/ChangeLog

PR target/96861
* config/i386/x86-tune-costs.h (skylake_cost): increase rtx
cost of sse_to_integer from 2 to 6.

gcc/testsuite

* gcc.target/i386/pr95021-3.c: Add -mtune=generic.

gcc/config/i386/x86-tune-costs.h
gcc/testsuite/gcc.target/i386/pr95021-3.c

index 0ad4b28903cc56b9be77d030c574c9c03076f64c..5de414935f85a543ba9e7d3b30d9234053dd9c05 100644 (file)
@@ -1769,7 +1769,7 @@ struct processor_costs skylake_cost = {
   {6, 6, 6, 10, 20},                   /* cost of unaligned loads.  */
   {8, 8, 8, 8, 16},                    /* cost of unaligned stores.  */
   2, 2, 4,                             /* cost of moving XMM,YMM,ZMM register */
-  2,                                   /* cost of moving SSE register to integer.  */
+  6,                                   /* cost of moving SSE register to integer.  */
   20, 8,                               /* Gather load static, per_elt.  */
   22, 10,                              /* Gather store static, per_elt.  */
   64,                                  /* size of l1 cache.  */
index 1748161a77c90787f302d191a6297f9ecca0aca5..52f9e4569b36502cf7f5e15290c35098759786f1 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile { target ia32 } } */
-/* { dg-options "-O2 -msse2 -mstv -mregparm=3 -W" } */
+/* { dg-options "-O2 -msse2 -mstv -mregparm=3 -W -mtune=generic" } */
 /* { dg-final { scan-assembler "movq\[ \t\]+\[^\n\]*, %xmm" } } */
 
 #include "pr95021-1.c"