aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2013-11-29 15:19:34 +0000
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>2013-11-29 15:19:34 +0000
commit61cd472df7c8962ebb80bce29e207417b335dbcb (patch)
tree6b9d79d283fbd044bb1ef7b2b1a1122787c3275e
parent6a58cccac65539b1ab89af806b829b5423b6de9a (diff)
downloadgcc-61cd472df7c8962ebb80bce29e207417b335dbcb.zip
gcc-61cd472df7c8962ebb80bce29e207417b335dbcb.tar.gz
gcc-61cd472df7c8962ebb80bce29e207417b335dbcb.tar.bz2
re PR target/59289 ([ARM] regression on unsigned-extend-2.c)
2013-11-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com> PR target/59289 * config/arm/arm.c (cortexa15_extra_costs): Adjust costs. From-SVN: r205529
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/arm.c114
2 files changed, 62 insertions, 57 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6a0b66c..8423528 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2013-11-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/59289
+ * config/arm/arm.c (cortexa15_extra_costs): Adjust costs.
+
2013-11-29 Richard Biener <rguenther@suse.de>
PR middle-end/59208
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 3b15ba8..61a3c7f 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -1168,94 +1168,94 @@ const struct cpu_cost_table cortexa15_extra_costs =
{
/* ALU */
{
- COSTS_N_INSNS (1), /* Arith. */
- COSTS_N_INSNS (1), /* Logical. */
- COSTS_N_INSNS (1), /* Shift. */
- COSTS_N_INSNS (1), /* Shift_reg. */
+ 0, /* Arith. */
+ 0, /* Logical. */
+ 0, /* Shift. */
+ 0, /* Shift_reg. */
COSTS_N_INSNS (1), /* Arith_shift. */
COSTS_N_INSNS (1), /* Arith_shift_reg. */
COSTS_N_INSNS (1), /* Log_shift. */
COSTS_N_INSNS (1), /* Log_shift_reg. */
- COSTS_N_INSNS (1), /* Extend. */
- COSTS_N_INSNS (2), /* Extend_arith. */
- COSTS_N_INSNS (2), /* Bfi. */
- COSTS_N_INSNS (1), /* Bfx. */
- COSTS_N_INSNS (1), /* Clz. */
- COSTS_N_INSNS (1), /* non_exec. */
+ 0, /* Extend. */
+ COSTS_N_INSNS (1), /* Extend_arith. */
+ COSTS_N_INSNS (1), /* Bfi. */
+ 0, /* Bfx. */
+ 0, /* Clz. */
+ 0, /* non_exec. */
true /* non_exec_costs_exec. */
},
/* MULT SImode */
{
{
- COSTS_N_INSNS (3), /* Simple. */
- COSTS_N_INSNS (4), /* Flag_setting. */
- COSTS_N_INSNS (3), /* Extend. */
- COSTS_N_INSNS (4), /* Add. */
- COSTS_N_INSNS (4), /* Extend_add. */
- COSTS_N_INSNS (19) /* Idiv. */
+ COSTS_N_INSNS (2), /* Simple. */
+ COSTS_N_INSNS (3), /* Flag_setting. */
+ COSTS_N_INSNS (2), /* Extend. */
+ COSTS_N_INSNS (2), /* Add. */
+ COSTS_N_INSNS (2), /* Extend_add. */
+ COSTS_N_INSNS (18) /* Idiv. */
},
/* MULT DImode */
{
0, /* Simple (N/A). */
0, /* Flag_setting (N/A). */
- COSTS_N_INSNS (4), /* Extend. */
+ COSTS_N_INSNS (3), /* Extend. */
0, /* Add (N/A). */
- COSTS_N_INSNS (6), /* Extend_add. */
+ COSTS_N_INSNS (3), /* Extend_add. */
0 /* Idiv (N/A). */
}
},
/* LD/ST */
{
- COSTS_N_INSNS (4), /* Load. */
- COSTS_N_INSNS (4), /* Load_sign_extend. */
- COSTS_N_INSNS (4), /* Ldrd. */
- COSTS_N_INSNS (5), /* Ldm_1st. */
+ COSTS_N_INSNS (3), /* Load. */
+ COSTS_N_INSNS (3), /* Load_sign_extend. */
+ COSTS_N_INSNS (3), /* Ldrd. */
+ COSTS_N_INSNS (4), /* Ldm_1st. */
1, /* Ldm_regs_per_insn_1st. */
2, /* Ldm_regs_per_insn_subsequent. */
- COSTS_N_INSNS (5), /* Loadf. */
- COSTS_N_INSNS (5), /* Loadd. */
- COSTS_N_INSNS (1), /* Load_unaligned. */
- COSTS_N_INSNS (1), /* Store. */
- COSTS_N_INSNS (1), /* Strd. */
- COSTS_N_INSNS (2), /* Stm_1st. */
+ COSTS_N_INSNS (4), /* Loadf. */
+ COSTS_N_INSNS (4), /* Loadd. */
+ 0, /* Load_unaligned. */
+ 0, /* Store. */
+ 0, /* Strd. */
+ COSTS_N_INSNS (1), /* Stm_1st. */
1, /* Stm_regs_per_insn_1st. */
2, /* Stm_regs_per_insn_subsequent. */
- COSTS_N_INSNS (1), /* Storef. */
- COSTS_N_INSNS (1), /* Stored. */
- COSTS_N_INSNS (1) /* Store_unaligned. */
+ 0, /* Storef. */
+ 0, /* Stored. */
+ 0 /* Store_unaligned. */
},
{
/* FP SFmode */
{
- COSTS_N_INSNS (18), /* Div. */
- COSTS_N_INSNS (5), /* Mult. */
- COSTS_N_INSNS (3), /* Mult_addsub. */
- COSTS_N_INSNS (13), /* Fma. */
- COSTS_N_INSNS (5), /* Addsub. */
- COSTS_N_INSNS (5), /* Fpconst. */
- COSTS_N_INSNS (3), /* Neg. */
- COSTS_N_INSNS (3), /* Compare. */
- COSTS_N_INSNS (3), /* Widen. */
- COSTS_N_INSNS (3), /* Narrow. */
- COSTS_N_INSNS (3), /* Toint. */
- COSTS_N_INSNS (3), /* Fromint. */
- COSTS_N_INSNS (3) /* Roundint. */
+ COSTS_N_INSNS (17), /* Div. */
+ COSTS_N_INSNS (4), /* Mult. */
+ COSTS_N_INSNS (8), /* Mult_addsub. */
+ COSTS_N_INSNS (8), /* Fma. */
+ COSTS_N_INSNS (4), /* Addsub. */
+ COSTS_N_INSNS (2), /* Fpconst. */
+ COSTS_N_INSNS (2), /* Neg. */
+ COSTS_N_INSNS (5), /* Compare. */
+ COSTS_N_INSNS (4), /* Widen. */
+ COSTS_N_INSNS (4), /* Narrow. */
+ COSTS_N_INSNS (4), /* Toint. */
+ COSTS_N_INSNS (4), /* Fromint. */
+ COSTS_N_INSNS (4) /* Roundint. */
},
/* FP DFmode */
{
- COSTS_N_INSNS (32), /* Div. */
- COSTS_N_INSNS (5), /* Mult. */
- COSTS_N_INSNS (3), /* Mult_addsub. */
- COSTS_N_INSNS (13), /* Fma. */
- COSTS_N_INSNS (5), /* Addsub. */
- COSTS_N_INSNS (3), /* Fpconst. */
- COSTS_N_INSNS (3), /* Neg. */
- COSTS_N_INSNS (3), /* Compare. */
- COSTS_N_INSNS (3), /* Widen. */
- COSTS_N_INSNS (3), /* Narrow. */
- COSTS_N_INSNS (3), /* Toint. */
- COSTS_N_INSNS (3), /* Fromint. */
- COSTS_N_INSNS (3) /* Roundint. */
+ COSTS_N_INSNS (31), /* Div. */
+ COSTS_N_INSNS (4), /* Mult. */
+ COSTS_N_INSNS (8), /* Mult_addsub. */
+ COSTS_N_INSNS (8), /* Fma. */
+ COSTS_N_INSNS (4), /* Addsub. */
+ COSTS_N_INSNS (2), /* Fpconst. */
+ COSTS_N_INSNS (2), /* Neg. */
+ COSTS_N_INSNS (2), /* Compare. */
+ COSTS_N_INSNS (4), /* Widen. */
+ COSTS_N_INSNS (4), /* Narrow. */
+ COSTS_N_INSNS (4), /* Toint. */
+ COSTS_N_INSNS (4), /* Fromint. */
+ COSTS_N_INSNS (4) /* Roundint. */
}
},
/* Vector */