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.
This commit is contained in:
liuhongt 2019-10-24 11:13:00 +08:00
parent 2d2bc36c44
commit 16516644d8

View 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. */
},