diff options
author | Paul Brook <paul@codesourcery.com> | 2007-01-10 22:06:56 +0000 |
---|---|---|
committer | Paul Brook <pbrook@gcc.gnu.org> | 2007-01-10 22:06:56 +0000 |
commit | 26b53f802da435fe37da1ac3f18fd5cc751d13e1 (patch) | |
tree | 92b432b129f56f07893fdda1aa2eaf6a82b7b87e /gcc/config/arm/arm.c | |
parent | 567b96ed385df20740513a800a2fe152f1ac7183 (diff) | |
download | gcc-26b53f802da435fe37da1ac3f18fd5cc751d13e1.zip gcc-26b53f802da435fe37da1ac3f18fd5cc751d13e1.tar.gz gcc-26b53f802da435fe37da1ac3f18fd5cc751d13e1.tar.bz2 |
arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
2007-01-10 Paul Brook <paul@codesourcery.com>
gcc/
* config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
* config/arm/arm.md (mulsi3subsi): New insn.
From-SVN: r120651
Diffstat (limited to 'gcc/config/arm/arm.c')
-rw-r--r-- | gcc/config/arm/arm.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 731dbe2..20b8fd7 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -4752,6 +4752,14 @@ arm_rtx_costs_1 (rtx x, enum rtx_code code, enum rtx_code outer) ? 0 : 4)); case MINUS: + if (GET_CODE (XEXP (x, 1)) == MULT && mode == SImode && arm_arch_thumb2) + { + extra_cost = rtx_cost (XEXP (x, 1), code); + if (!REG_OR_SUBREG_REG (XEXP (x, 0))) + extra_cost += 4 * ARM_NUM_REGS (mode); + return extra_cost; + } + if (mode == DImode) return (4 + (REG_OR_SUBREG_REG (XEXP (x, 1)) ? 0 : 8) + ((REG_OR_SUBREG_REG (XEXP (x, 0)) |