diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.h | 11 |
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 755ad30..656551c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -6,6 +6,9 @@ * reload1.c (choose_reload_regs): Never set reload_override_in for an optional reload. + * config/ia64/ia64.h (RTX_COSTS): A few more entries, and a more + accurate value for MULT. + 2000-10-28 Neil Booth <neilb@earthling.net> New macro expander. diff --git a/gcc/config/ia64/ia64.h b/gcc/config/ia64/ia64.h index 7802e39..d94491f 100644 --- a/gcc/config/ia64/ia64.h +++ b/gcc/config/ia64/ia64.h @@ -1851,9 +1851,16 @@ do { \ case MULT: \ /* For multiplies wider than HImode, we have to go to the FPU, \ which normally involves copies. Plus there's the latency \ - of the multiply itself. */ \ + of the multiply itself, and the latency of the instructions to \ + transfer integer regs to FP regs. */ \ if (GET_MODE_SIZE (GET_MODE (X)) > 2) \ - return COSTS_N_INSNS (4); \ + return COSTS_N_INSNS (10); \ + return COSTS_N_INSNS (2); \ + case PLUS: \ + case MINUS: \ + case ASHIFT: \ + case ASHIFTRT: \ + case LSHIFTRT: \ return COSTS_N_INSNS (1); \ case DIV: \ case UDIV: \ |