diff options
author | Yvan Roux <yvan.roux@linaro.org> | 2015-08-23 22:04:56 +0200 |
---|---|---|
committer | Yvan Roux <yvan.roux@linaro.org> | 2015-08-23 22:04:56 +0200 |
commit | 4e32dec74b2e5406a16066ca4fdadc5d0ae3d045 (patch) | |
tree | fcdbfef68ed1f8ba88f8c0a480ce9c73ad5e4f30 | |
parent | ea7c65481b92d1cf7727388df0f6f75487f18a15 (diff) |
gcc/
Backport from trunk r222638.
2015-04-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/aarch64/aarch64.c (aarch64_rtx_costs): Handle pattern for
fabd in ABS case.
Change-Id: I2e1acbb51c73278a9dc30d2f83bc36e764e7f95a
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 53d99b6280d..7ddb7447025 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -6319,7 +6319,19 @@ cost_plus: case ABS: if (GET_MODE_CLASS (mode) == MODE_FLOAT) { - /* FABS and FNEG are analogous. */ + op0 = XEXP (x, 0); + + /* FABD, which is analogous to FADD. */ + if (GET_CODE (op0) == MINUS) + { + *cost += rtx_cost (XEXP (op0, 0), MINUS, 0, speed); + + rtx_cost (XEXP (op0, 1), MINUS, 1, speed); + if (speed) + *cost += extra_cost->fp[mode == DFmode].addsub; + + return true; + } + /* Simple FABS is analogous to FNEG. */ if (speed) *cost += extra_cost->fp[mode == DFmode].neg; } |