| From 89bd94250827f887b38211ac048b4006229dc9c0 Mon Sep 17 00:00:00 2001 |
| From: ktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4> |
| Date: Fri, 26 Aug 2016 10:23:20 +0000 |
| Subject: [PATCH] [ARM] PR target/70473: Reduce size of Cortex-A8 automaton |
| |
| 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. |
| |
| git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@239772 138bc75d-0d04-0410-961f-82ee72b054a4 |
| |
| [Backport from gcc upstream commit 79f5d5e3cd5a668d5ecb2b6b0cce80ef5706ac53.] |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| --- |
| gcc/config/arm/cortex-a8-neon.md | 14 +++++++++----- |
| 1 file changed, 9 insertions(+), 5 deletions(-) |
| |
| diff --git a/gcc/config/arm/cortex-a8-neon.md b/gcc/config/arm/cortex-a8-neon.md |
| index 04fa01e..4e6d05d 100644 |
| --- a/gcc/config/arm/cortex-a8-neon.md |
| +++ b/gcc/config/arm/cortex-a8-neon.md |
| @@ -357,30 +357,34 @@ |
| (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 |
| -- |
| 2.7.4 |
| |