diff options
author | Jan Hubicka <jh@suse.cz> | 2021-03-18 17:15:34 +0100 |
---|---|---|
committer | Jan Hubicka <jh@suse.cz> | 2021-03-18 17:15:34 +0100 |
commit | ab03c0d5753549f1a78eeb706510b55fb97c8651 (patch) | |
tree | 57dcd87df1c2c19386d2afd6891923322205a87a /gcc | |
parent | d9f0ade001533c9544bf2153b6baa8844ec0bee4 (diff) | |
download | gcc-ab03c0d5753549f1a78eeb706510b55fb97c8651.zip gcc-ab03c0d5753549f1a78eeb706510b55fb97c8651.tar.gz gcc-ab03c0d5753549f1a78eeb706510b55fb97c8651.tar.bz2 |
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/i386/x86-tune-costs.h | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/gcc/config/i386/x86-tune-costs.h b/gcc/config/i386/x86-tune-costs.h index db03738..58b3b81 100644 --- a/gcc/config/i386/x86-tune-costs.h +++ b/gcc/config/i386/x86-tune-costs.h @@ -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. */ |