aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2019-10-24 11:13:00 +0800
committerliuhongt <hongtao.liu@intel.com>2020-08-21 12:48:36 +0800
commit16516644d8f5c13e666251470d604778d347f796 (patch)
tree7a0c0863b9b3f0647c742c45d5b82c83428725ea
parent2d2bc36c4440c126decee5a8379c158d9012adfc (diff)
downloadgcc-16516644d8f5c13e666251470d604778d347f796.zip
gcc-16516644d8f5c13e666251470d604778d347f796.tar.gz
gcc-16516644d8f5c13e666251470d604778d347f796.tar.bz2
According to instruction_tables.pdf
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.
-rw-r--r--gcc/config/i386/x86-tune-costs.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/config/i386/x86-tune-costs.h b/gcc/config/i386/x86-tune-costs.h
index 256c84e..a782a9d 100644
--- a/gcc/config/i386/x86-tune-costs.h
+++ b/gcc/config/i386/x86-tune-costs.h
@@ -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. */
},