[AArch64 costs 6/18] Set default costs and handle vector modes. 70/41170/1
authorjgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 16 May 2014 08:52:30 +0000 (08:52 +0000)
committerNikolai Bozhenov <n.bozhenov@samsung.com>
Thu, 11 Jun 2015 11:06:14 +0000 (14:06 +0300)
git cherry-pick 8c31cc6

gcc/

* config/aarch64/aarch64.c (aarch64_rtx_costs): Set default costs.

Change-Id: I66a380a13616fa0572d2b6597f2ca5416479fd54
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210498 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/aarch64/aarch64.c

index e44f0e1..665a593 100644 (file)
@@ -1,4 +1,8 @@
 2014-05-16  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       * config/aarch64/aarch64.c (aarch64_rtx_costs): Set default costs.
+
+2014-05-16  James Greenhalgh  <james.greenhalgh@arm.com>
            Philipp Tomsich  <philipp.tomsich@theobroma-systems.com>
 
        * config/aarch64/aarch64.c (aarch64_strip_shift_or_extend): Rename
index b0ff554..196bb80 100644 (file)
@@ -4793,6 +4793,21 @@ aarch64_rtx_costs (rtx x, int code, int outer ATTRIBUTE_UNUSED,
     = aarch64_tune_params->insn_extra_cost;
   enum machine_mode mode = GET_MODE (x);
 
+  /* By default, assume that everything has equivalent cost to the
+     cheapest instruction.  Any additional costs are applied as a delta
+     above this default.  */
+  *cost = COSTS_N_INSNS (1);
+
+  /* TODO: The cost infrastructure currently does not handle
+     vector operations.  Assume that all vector operations
+     are equally expensive.  */
+  if (VECTOR_MODE_P (mode))
+    {
+      if (speed)
+       *cost += extra_cost->vect.alu;
+      return true;
+    }
+
   switch (code)
     {
     case SET: