diff options
author | Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> | 2016-01-20 20:00:48 +0100 |
---|---|---|
committer | Linaro Code Review <review@review.linaro.org> | 2016-01-27 11:48:05 +0000 |
commit | bd7cbe40dc3d29d34716fde6d775c08101d07db1 (patch) | |
tree | 52aac55e1c579fd3d31c3900f8736bea04e6f106 | |
parent | cfc75e27f939b0bb49438e8ac27910980df27ba9 (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.c | 6 |
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); |