commit 06e8a74a8e6194095bd53618caf2f5845a32419c
Author: Kyrylo Tkachov <kyrylo.tkachov@arm.com>
Date: Mon Mar 2 17:39:20 2015 +0000
[AArch64] Properly cost sign_extend+ashiftrt version of sbfx
@@ -6190,6 +6190,26 @@ cost_plus:
return true;
}
+ if (GET_CODE (XEXP (x, 0)) == ASHIFTRT)
+ {
+ /* SBFX. */
+ machine_mode shft_mode = GET_MODE (XEXP (x, 0));
+
+ op0 = XEXP (XEXP (x, 0), 0);
+ op1 = XEXP (XEXP (x, 0), 1);
+
+ if (CONST_INT_P (op1)
+ && UINTVAL (op1) < GET_MODE_BITSIZE (shft_mode))
+ {
+ *cost += rtx_cost (op0, ASHIFTRT, 0, speed);
+
+ if (speed)
+ *cost += extra_cost->alu.bfx;
+
+ return true;
+ }
+ }
+
if (speed)
*cost += extra_cost->alu.extend;
return false;