According to instruction_tables.pdf
authorliuhongt <hongtao.liu@intel.com>
Thu, 24 Oct 2019 03:13:00 +0000 (11:13 +0800)
committerliuhongt <hongtao.liu@intel.com>
Fri, 21 Aug 2020 04:48:36 +0000 (12:48 +0800)
1. Set cost of movement inside mask registers a bit higher than gpr's.
2. Set cost of movement between mask register and gpr much higher than movement
   inside gpr, but still less equal than load/store.
3. Set cost of mask register load/store a bit higher than gpr load/store.

gcc/
* config/i386/x86-tune-costs.h (skylake_cost): Adjust cost
model.

gcc/config/i386/x86-tune-costs.h

index 256c84e364edb14a7bfcb1f19f05b5f9bfd2cad6..a782a9dd9e35f0545b20172378ae18a3706aa96f 100644 (file)
@@ -1727,12 +1727,12 @@ struct processor_costs skylake_cost = {
   {8, 8, 8, 12, 24},                   /* cost of storing SSE registers
                                           in 32,64,128,256 and 512-bit */
   6, 6,                                        /* SSE->integer and integer->SSE moves */
-  2, 2,                                /* mask->integer and integer->mask moves */
-  {4, 4, 4},                           /* cost of loading mask register
+  4, 6,                                /* mask->integer and integer->mask moves */
+  {6, 6, 6},                           /* cost of loading mask register
                                           in QImode, HImode, SImode.  */
-  {6, 6, 6},                           /* cost if storing mask register
+  {8, 8, 8},                           /* cost if storing mask register
                                           in QImode, HImode, SImode.  */
-  2,                                   /* cost of moving mask register.  */
+  3,                                   /* cost of moving mask register.  */
   /* End of register allocator costs.  */
   },