On Fri, Jun 10, 2016 at 09:29:46AM +0100, James Greenhalgh wrote: > On Fri, Jun 03, 2016 at 09:35:50AM +0100, James Greenhalgh wrote: > > > > Hi, > > > > This patch rebases the floating-point cost table for Cortex-A57 to be > > relative to the cost of a floating-point move. This in response to this > > feedback from Richard Sandiford [2] on Ramana's patch to calls.c [1] from > > 2014: > > > > I think this is really a bug in the backend. The backend is assigning a > > cost of COSTS_N_INSNS (3) to a floating-point constant not because the > > constant itself is expensive -- it's actually as cheap as a register > > in this context -- but because the backend considers floating-point > > moves to be 3 times more expensive than cheap integer moves. > > > > The argument is that a move in mode X should be treated with cost > > COSTS_N_INSNS (1), and other instructions should have a cost relative to > > that move. For example, in this patch we say that instructions building a > > floating-point constant are the same cost as a floating-point register to > > register move. Fixing this fixes the issue Ramana was seeing, in a way > > consistent with what other back-ends do. > > > > This patch gives a small improvement to Spec2000FP on a Cortex-A57 > > platform. > > > > Bootstrapped on aarch64-none-linux-gnu with no issues. > > > > OK? > > *ping*
*ping^* https://gcc.gnu.org/ml/gcc-patches/2016-06/msg00251.html Thanks, James > > 2016-06-03 James Greenhalgh <james.greenha...@arm.com> > > > > * config/arm/aarch-cost-tables.h (cortexa57_extra_costs): Make FP > > costs relative to the cost of a register move. > > >