[ARM] PR target/70473: Reduce size of Cortex-A8 automaton
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Fri, 26 Aug 2016 10:23:20 +0000 (10:23 +0000)
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>
Fri, 26 Aug 2016 10:23:20 +0000 (10:23 +0000)
PR target/70473
* config/arm/cortex-a8-neon.md (cortex_a8_vfp_muld): Reduce
reservation duration to 15 cycles.
(cortex_a8_vfp_macs): Likewise.
(cortex_a8_vfp_macd): Likewise.
(cortex_a8_vfp_divs): Likewise.
(cortex_a8_vfp_divd): Likewise.

From-SVN: r239772

gcc/ChangeLog
gcc/config/arm/cortex-a8-neon.md

index 9c82debc2f452ef9cab27849f4c4453073088aab..dc3cb732c88eb96ed65dda4e9c6430df5cafb302 100644 (file)
@@ -1,3 +1,13 @@
+2016-08-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       PR target/70473
+       * config/arm/cortex-a8-neon.md (cortex_a8_vfp_muld): Reduce
+       reservation duration to 15 cycles.
+       (cortex_a8_vfp_macs): Likewise.
+       (cortex_a8_vfp_macd): Likewise.
+       (cortex_a8_vfp_divs): Likewise.
+       (cortex_a8_vfp_divd): Likewise.
+
 2016-08-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        * config/arm/arm.c (arm_sets_movw_movt_fusible_p): New function.
index 45f861f6c6f840bd113e468eeec5373e06058f6d..b16c29974a7278e70d64dc83b5b388aebb51718b 100644 (file)
        (eq_attr "type" "fmuls"))
   "cortex_a8_vfp,cortex_a8_vfplite*11")
 
+;; Don't model a reservation for more than 15 cycles as this explodes the
+;; state space of the automaton for little gain.  It is unlikely that the
+;; scheduler will find enough instructions to hide the full latency of the
+;; instructions.
 (define_insn_reservation "cortex_a8_vfp_muld" 17
   (and (eq_attr "tune" "cortexa8")
        (eq_attr "type" "fmuld"))
-  "cortex_a8_vfp,cortex_a8_vfplite*16")
+  "cortex_a8_vfp,cortex_a8_vfplite*15")
 
 (define_insn_reservation "cortex_a8_vfp_macs" 21
   (and (eq_attr "tune" "cortexa8")
        (eq_attr "type" "fmacs,ffmas"))
-  "cortex_a8_vfp,cortex_a8_vfplite*20")
+  "cortex_a8_vfp,cortex_a8_vfplite*15")
 
 (define_insn_reservation "cortex_a8_vfp_macd" 26
   (and (eq_attr "tune" "cortexa8")
        (eq_attr "type" "fmacd,ffmad"))
-  "cortex_a8_vfp,cortex_a8_vfplite*25")
+  "cortex_a8_vfp,cortex_a8_vfplite*15")
 
 (define_insn_reservation "cortex_a8_vfp_divs" 37
   (and (eq_attr "tune" "cortexa8")
        (eq_attr "type" "fdivs, fsqrts"))
-  "cortex_a8_vfp,cortex_a8_vfplite*36")
+  "cortex_a8_vfp,cortex_a8_vfplite*15")
 
 (define_insn_reservation "cortex_a8_vfp_divd" 65
   (and (eq_attr "tune" "cortexa8")
        (eq_attr "type" "fdivd, fsqrtd"))
-  "cortex_a8_vfp,cortex_a8_vfplite*64")
+  "cortex_a8_vfp,cortex_a8_vfplite*15")
 
 ;; Comparisons can actually take 7 cycles sometimes instead of four,
 ;; but given all the other instructions lumped into type=ffarith that