Fix idiv latencies for znver3
authorJan Hubicka <jh@suse.cz>
Thu, 18 Mar 2021 16:15:34 +0000 (17:15 +0100)
committerJan Hubicka <jh@suse.cz>
Thu, 18 Mar 2021 16:15:34 +0000 (17:15 +0100)
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.

gcc/config/i386/x86-tune-costs.h

index db03738..58b3b81 100644 (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.  */