aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrathamesh Kulkarni <prathamesh.kulkarni@linaro.org>2016-01-20 20:00:48 +0100
committerLinaro Code Review <review@review.linaro.org>2016-01-27 11:48:05 +0000
commitbd7cbe40dc3d29d34716fde6d775c08101d07db1 (patch)
tree52aac55e1c579fd3d31c3900f8736bea04e6f106
parentcfc75e27f939b0bb49438e8ac27910980df27ba9 (diff)
gcc/
Backport from trunk r232442. 2016-01-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/aarch64/aarch64.c (aarch64_if_then_else_costs): Handle CSEL of zero_extended registers. Change-Id: I472f2a333da81964734c544d61de1c9908a31acb
-rw-r--r--gcc/config/aarch64/aarch64.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index d3b75240d16..7758316df48 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -5794,6 +5794,12 @@ aarch64_if_then_else_costs (rtx op0, rtx op1, rtx op2, int *cost, bool speed)
|| GET_CODE (op1) == NOT
|| (GET_CODE (op1) == PLUS && XEXP (op1, 1) == const1_rtx))
op1 = XEXP (op1, 0);
+ else if (GET_CODE (op1) == ZERO_EXTEND && GET_CODE (op2) == ZERO_EXTEND)
+ {
+ /* CSEL with zero-extension (*cmovdi_insn_uxtw). */
+ op1 = XEXP (op1, 0);
+ op2 = XEXP (op2, 0);
+ }
*cost += rtx_cost (op1, IF_THEN_ELSE, 1, speed);
*cost += rtx_cost (op2, IF_THEN_ELSE, 2, speed);