Fix idiv latencies for znver3

update costs of integer divides to match actual latencies (the scheduler model
already does the right thing).  It is essentially no-op, since we end up
expanding idiv for all sensible constants, so this only may end up disabling
vectorization in some cases, but I did not find any such examples.  However in
general it is better ot have actual latencies than random numbers.

gcc/ChangeLog:

2021-03-18  Jan Hubicka  <hubicka@ucw.cz>

	* config/i386/x86-tune-costs.h (struct processor_costs): Fix costs of
	integer divides1.
This commit is contained in:
Jan Hubicka 2021-03-18 17:15:34 +01:00
parent d9f0ade001
commit ab03c0d575

View file

@ -1741,13 +1741,11 @@ struct processor_costs znver3_cost = {
COSTS_N_INSNS (3)}, /* other. */
0, /* cost of multiply per each bit
set. */
/* Depending on parameters, idiv can get faster on ryzen. This is upper
bound. */
{COSTS_N_INSNS (16), /* cost of a divide/mod for QI. */
COSTS_N_INSNS (22), /* HI. */
COSTS_N_INSNS (30), /* SI. */
COSTS_N_INSNS (45), /* DI. */
COSTS_N_INSNS (45)}, /* other. */
{COSTS_N_INSNS (9), /* cost of a divide/mod for QI. */
COSTS_N_INSNS (10), /* HI. */
COSTS_N_INSNS (12), /* SI. */
COSTS_N_INSNS (17), /* DI. */
COSTS_N_INSNS (17)}, /* other. */
COSTS_N_INSNS (1), /* cost of movsx. */
COSTS_N_INSNS (1), /* cost of movzx. */
8, /* "large" insn. */