From 16516644d8f5c13e666251470d604778d347f796 Mon Sep 17 00:00:00 2001 From: liuhongt Date: Thu, 24 Oct 2019 11:13:00 +0800 Subject: [PATCH] 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. --- gcc/config/i386/x86-tune-costs.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gcc/config/i386/x86-tune-costs.h b/gcc/config/i386/x86-tune-costs.h index 256c84e364e..a782a9dd9e3 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. */ }, -- 2.30.2