(RTX_COST, case MULT): Handle s8addx and s4addx.
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 12 Mar 1993 00:10:28 +0000 (19:10 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 12 Mar 1993 00:10:28 +0000 (19:10 -0500)
(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

index 23adda288eaf94857380b8b97d5b4f073de74bec..67123e8eb0c1239577166e8fee979521b0aecf5b 100644 (file)
@@ -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:                                            \