From: Richard Kenner Date: Fri, 12 Mar 1993 00:10:28 +0000 (-0500) Subject: (RTX_COST, case MULT): Handle s8addx and s4addx. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b49e978eeb127b2df5125bfe80b841c464eef8fd;p=gcc.git (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 --- 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: \