diff options
author | liuhongt <hongtao.liu@intel.com> | 2019-10-24 11:13:00 +0800 |
---|---|---|
committer | liuhongt <hongtao.liu@intel.com> | 2020-08-21 12:48:36 +0800 |
commit | 16516644d8f5c13e666251470d604778d347f796 (patch) | |
tree | 7a0c0863b9b3f0647c742c45d5b82c83428725ea | |
parent | 2d2bc36c4440c126decee5a8379c158d9012adfc (diff) | |
download | gcc-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.h | 8 |
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. */ }, |