[aarch64/arm] Updating the cost table for xgene1.
authorChristoph Muellner <christoph.muellner@theobroma-systems.com>
Fri, 23 Nov 2018 17:49:19 +0000 (17:49 +0000)
committerPhilipp Tomsich <ptomsich@gcc.gnu.org>
Fri, 23 Nov 2018 17:49:19 +0000 (17:49 +0000)
2018-11-23  Christoph Muellner <christoph.muellner@theobroma-system.com>

* config/arm/aarch-cost-tables.h (xgene1_extra_costs): Update the cost table
for Xgene1.

From-SVN: r266411

gcc/ChangeLog
gcc/config/arm/aarch-cost-tables.h

index 7a2ee245c39d0aee96231bc6699f68dd225f601d..5b1cd907edda2087a896157b5a8d5307de32d48a 100644 (file)
@@ -1,3 +1,8 @@
+2018-11-23  Christoph Muellner  <christoph.muellner@theobroma-systems.com>
+
+       * config/arm/aarch-cost-tables.h (xgene1_extra_costs): Update the cost table
+       for Xgene1.
+
 2018-11-23  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/88149
index 0bd93ba3671cbba0d7432ae6ab9130692bd679d1..2a283471032653a1b6df5ab7d3d2a1e16e20f0b5 100644 (file)
@@ -440,26 +440,26 @@ const struct cpu_cost_table xgene1_extra_costs =
   {
     0,                 /* arith.  */
     0,                 /* logical.  */
-    0,                 /* shift.  */
+    COSTS_N_INSNS (1), /* shift.  */
     COSTS_N_INSNS (1), /* shift_reg.  */
-    COSTS_N_INSNS (1), /* arith_shift.  */
-    COSTS_N_INSNS (1), /* arith_shift_reg.  */
-    COSTS_N_INSNS (1), /* log_shift.  */
-    COSTS_N_INSNS (1), /* log_shift_reg.  */
-    COSTS_N_INSNS (1), /* extend.  */
-    0,                 /* extend_arithm.  */
-    COSTS_N_INSNS (1), /* bfi.  */
-    COSTS_N_INSNS (1), /* bfx.  */
+    COSTS_N_INSNS (2), /* arith_shift.  */
+    COSTS_N_INSNS (2), /* arith_shift_reg.  */
+    COSTS_N_INSNS (2), /* log_shift.  */
+    COSTS_N_INSNS (2), /* log_shift_reg.  */
+    0,                 /* extend.  */
+    COSTS_N_INSNS (1), /* extend_arithm.  */
+    0,                 /* bfi.  */
+    0,                 /* bfx.  */
     0,                 /* clz.  */
-    COSTS_N_INSNS (1), /* rev.  */
+    0,                 /* rev.  */
     0,                 /* non_exec.  */
     true               /* non_exec_costs_exec.  */
   },
   {
     /* MULT SImode */
     {
-      COSTS_N_INSNS (4),       /* simple.  */
-      COSTS_N_INSNS (4),       /* flag_setting.  */
+      COSTS_N_INSNS (3),       /* simple.  */
+      COSTS_N_INSNS (3),       /* flag_setting.  */
       COSTS_N_INSNS (4),       /* extend.  */
       COSTS_N_INSNS (4),       /* add.  */
       COSTS_N_INSNS (4),       /* extend_add.  */
@@ -467,8 +467,8 @@ const struct cpu_cost_table xgene1_extra_costs =
     },
     /* MULT DImode */
     {
-      COSTS_N_INSNS (5),       /* simple.  */
-      0,                       /* flag_setting (N/A).  */
+      COSTS_N_INSNS (4),       /* simple.  */
+      COSTS_N_INSNS (4),       /* flag_setting (N/A).  */
       COSTS_N_INSNS (5),       /* extend.  */
       COSTS_N_INSNS (5),       /* add.  */
       COSTS_N_INSNS (5),       /* extend_add.  */
@@ -477,55 +477,55 @@ const struct cpu_cost_table xgene1_extra_costs =
   },
   /* LD/ST */
   {
-    COSTS_N_INSNS (5),         /* load.  */
-    COSTS_N_INSNS (6),         /* load_sign_extend.  */
-    COSTS_N_INSNS (5),         /* ldrd.  */
+    COSTS_N_INSNS (4),         /* load.  */
+    COSTS_N_INSNS (5),         /* load_sign_extend.  */
+    COSTS_N_INSNS (4),         /* ldrd.  */
     COSTS_N_INSNS (5),         /* ldm_1st.  */
     1,                         /* ldm_regs_per_insn_1st.  */
     1,                         /* ldm_regs_per_insn_subsequent.  */
-    COSTS_N_INSNS (10),        /* loadf.  */
-    COSTS_N_INSNS (10),        /* loadd.  */
-    COSTS_N_INSNS (5),         /* load_unaligned.  */
+    COSTS_N_INSNS (9),         /* loadf.  */
+    COSTS_N_INSNS (9),         /* loadd.  */
+    0,                         /* load_unaligned.  */
     0,                         /* store.  */
     0,                         /* strd.  */
     0,                         /* stm_1st.  */
     1,                         /* stm_regs_per_insn_1st.  */
     1,                         /* stm_regs_per_insn_subsequent.  */
-    0,                         /* storef.  */
-    0,                         /* stored.  */
+    COSTS_N_INSNS (3),         /* storef.  */
+    COSTS_N_INSNS (3),         /* stored.  */
     0,                         /* store_unaligned.  */
-    COSTS_N_INSNS (1),         /* loadv.  */
-    COSTS_N_INSNS (1)          /* storev.  */
+    COSTS_N_INSNS (9),         /* loadv.  */
+    COSTS_N_INSNS (3)          /* storev.  */
   },
   {
     /* FP SFmode */
     {
-      COSTS_N_INSNS (23),      /* div.  */
-      COSTS_N_INSNS (5),       /* mult.  */
-      COSTS_N_INSNS (5),       /* mult_addsub. */
-      COSTS_N_INSNS (5),       /* fma.  */
-      COSTS_N_INSNS (5),       /* addsub.  */
-      COSTS_N_INSNS (2),       /* fpconst. */
-      COSTS_N_INSNS (3),       /* neg.  */
-      COSTS_N_INSNS (2),       /* compare.  */
-      COSTS_N_INSNS (6),       /* widen.  */
-      COSTS_N_INSNS (6),       /* narrow.  */
+      COSTS_N_INSNS (22),      /* div.  */
+      COSTS_N_INSNS (4),       /* mult.  */
+      COSTS_N_INSNS (4),       /* mult_addsub. */
+      COSTS_N_INSNS (4),       /* fma.  */
+      COSTS_N_INSNS (4),       /* addsub.  */
+      COSTS_N_INSNS (1),       /* fpconst. */
+      COSTS_N_INSNS (4),       /* neg.  */
+      COSTS_N_INSNS (9),       /* compare.  */
+      COSTS_N_INSNS (4),       /* widen.  */
+      COSTS_N_INSNS (4),       /* narrow.  */
       COSTS_N_INSNS (4),       /* toint.  */
       COSTS_N_INSNS (4),       /* fromint.  */
       COSTS_N_INSNS (4)        /* roundint.  */
     },
     /* FP DFmode */
     {
-      COSTS_N_INSNS (29),      /* div.  */
-      COSTS_N_INSNS (5),       /* mult.  */
-      COSTS_N_INSNS (5),       /* mult_addsub.  */
-      COSTS_N_INSNS (5),       /* fma.  */
-      COSTS_N_INSNS (5),       /* addsub.  */
-      COSTS_N_INSNS (3),       /* fpconst.  */
-      COSTS_N_INSNS (3),       /* neg.  */
-      COSTS_N_INSNS (2),       /* compare.  */
-      COSTS_N_INSNS (6),       /* widen.  */
-      COSTS_N_INSNS (6),       /* narrow.  */
+      COSTS_N_INSNS (27),      /* div.  */
+      COSTS_N_INSNS (4),       /* mult.  */
+      COSTS_N_INSNS (4),       /* mult_addsub.  */
+      COSTS_N_INSNS (4),       /* fma.  */
+      COSTS_N_INSNS (4),       /* addsub.  */
+      COSTS_N_INSNS (1),       /* fpconst.  */
+      COSTS_N_INSNS (4),       /* neg.  */
+      COSTS_N_INSNS (9),       /* compare.  */
+      COSTS_N_INSNS (4),       /* widen.  */
+      COSTS_N_INSNS (4),       /* narrow.  */
       COSTS_N_INSNS (4),       /* toint.  */
       COSTS_N_INSNS (4),       /* fromint.  */
       COSTS_N_INSNS (4)        /* roundint.  */