(multcosts): Do not compute cost of constant power-of-two multiplies as if they were...
authorJim Wilson <wilson@gcc.gnu.org>
Sat, 21 Jan 1995 01:11:01 +0000 (17:11 -0800)
committerJim Wilson <wilson@gcc.gnu.org>
Sat, 21 Jan 1995 01:11:01 +0000 (17:11 -0800)
(multcosts): Do not compute cost of constant power-of-two
multiplies as if they were shifts.  Reduce multiply cost from 5 to 3.
Delete variable insn_cost.

From-SVN: r8777

gcc/config/sh/sh.c

index 4b76a602e300d7540e1113efa13008a1ec0313a2..ce64a4e50a2400884391ae8ac9a743d1f712d4b1 100644 (file)
@@ -1537,38 +1537,20 @@ int
 multcosts (RTX)
      rtx RTX;
 {
-  /* If mult by a power of 2 then work out how we'd shift to make it */
-  int insn_cost = 0;
-
-  if (GET_CODE (XEXP (RTX, 1)) == CONST_INT)
-    {
-      int i = exact_log2 (INTVAL (XEXP (RTX, 1)));
-      if (i >= 0)
-       insn_cost = howshift (i);
-      else
-       insn_cost = 100000;
-    }
   if (TARGET_SH2)
     {
       /* We have a mul insn, so we can never take more than the mul and the
-        read of the mac reg, but count more because of the latency and extra reg
-        usage */
+        read of the mac reg, but count more because of the latency and extra
+        reg usage */
       if (TARGET_SMALLCODE)
        return 2;
-      if (insn_cost > 5)
-       return 5;
-      return insn_cost;
+      return 3;
     }
 
-  /* If we we're aiming at small code, then just count the number of
+  /* If we're aiming at small code, then just count the number of
      insns in a multiply call sequence */
-
   if (TARGET_SMALLCODE)
-    {
-      if (insn_cost > 6)
-       return 6;
-      return insn_cost;
-    }
+    return 6;
 
   /* Otherwise count all the insns in the routine we'd be calling too */
   return 20;