From b49e978eeb127b2df5125bfe80b841c464eef8fd Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Thu, 11 Mar 1993 19:10:28 -0500 Subject: [PATCH] (RTX_COST, case MULT): Handle s8addx and s4addx. (RTX_COST, case MULT): Correctly assign cost to multiplies by a power of two. (RTX_COST, case ASHIFT, ASHIFTRT, LSHIFTRT, IF_THEN_ELSE): New cases. From-SVN: r3710 --- gcc/config/alpha/alpha.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h index 23adda288ea..67123e8eb0c 100644 --- a/gcc/config/alpha/alpha.h +++ b/gcc/config/alpha/alpha.h @@ -1290,12 +1290,26 @@ extern char *current_function_name; case MINUS: \ if (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT) \ return COSTS_N_INSNS (6); \ + else if (GET_CODE (XEXP (X, 0)) == MULT \ + && const48_operand (XEXP (XEXP (X, 0), 1), VOIDmode)) \ + return 2 + rtx_cost (XEXP (XEXP (X, 0), 0)) + rtx_cost (XEXP (X, 1)); \ break; \ case MULT: \ if (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT) \ return COSTS_N_INSNS (6); \ - else \ + else if (GET_CODE (XEXP (X, 1)) != CONST_INT \ + || exact_log2 (INTVAL (XEXP (X, 1))) < 0) \ return COSTS_N_INSNS (21); \ + else if (const48_operand (XEXP (X, 1), VOIDmode)) \ + break; \ + return COSTS_N_INSNS (2); \ + case ASHIFT: \ + if (GET_CODE (XEXP (X, 1)) == CONST_INT \ + && INTVAL (XEXP (X, 1)) <= 3) \ + break; \ + /* ... fall through ... */ \ + case ASHIFTRT: case LSHIFTRT: case IF_THEN_ELSE: \ + return COSTS_N_INSNS (2); \ case DIV: \ case UDIV: \ case MOD: \ -- 2.30.2