New pass sched_fusion 23/45823/1
authoramker <amker@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Nov 2014 02:32:38 +0000 (02:32 +0000)
committerNikolai Bozhenov <n.bozhenov@samsung.com>
Tue, 11 Aug 2015 14:12:33 +0000 (17:12 +0300)
commit3981a0cebceae6a1a9bed80dde2f124e1c60ca4b
treee30ec7b4d121e5f88eb50054dc587ba1bf145169
parente75c7b0978dd9504d8abc35c48eeadc113c503c6
New pass sched_fusion

* timevar.def (TV_SCHED_FUSION): New time var.
* passes.def (pass_sched_fusion): New pass.
* config/arm/arm.c (TARGET_SCHED_FUSION_PRIORITY): New.
(extract_base_offset_in_addr, fusion_load_store): New.
(arm_sched_fusion_priority): New.
(arm_option_override): Disable scheduling fusion by default
on non-armv7 processors or ldrd/strd isn't preferred.
* sched-int.h (struct _haifa_insn_data): New field.
(INSN_FUSION_PRIORITY, FUSION_MAX_PRIORITY, sched_fusion): New.
* sched-rgn.c (rest_of_handle_sched_fusion): New.
(pass_data_sched_fusion, pass_sched_fusion): New.
(make_pass_sched_fusion): New.
* haifa-sched.c (sched_fusion): New.
(insn_cost): Handle sched_fusion.
(priority): Handle sched_fusion by calling target hook.
(enum rfs_decision): New enum value.
(rfs_str): New element for RFS_FUSION.
(rank_for_schedule): Support sched_fusion.
(schedule_insn, max_issue, prune_ready_list): Handle sched_fusion.
(schedule_block, fix_tick_ready): Handle sched_fusion.
* common.opt (flag_schedule_fusion): New.
* tree-pass.h (make_pass_sched_fusion): New.
* target.def (fusion_priority): New.
* doc/tm.texi.in (TARGET_SCHED_FUSION_PRIORITY): New.
* doc/tm.texi: Regenerated.
* doc/invoke.texi (-fschedule-fusion): New.

testsuite:
* gcc.target/arm/ldrd-strd-pair-1.c: New test.
* gcc.target/arm/vfp-1.c: Improve scanning string.

Change-Id: Icbb39322a7611ecddaf7dbe24c6e8e3faac309e0
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217533 138bc75d-0d04-0410-961f-82ee72b054a4
16 files changed:
gcc/ChangeLog
gcc/common.opt
gcc/config/arm/arm.c
gcc/doc/invoke.texi
gcc/doc/tm.texi
gcc/doc/tm.texi.in
gcc/haifa-sched.c
gcc/passes.def
gcc/sched-int.h
gcc/sched-rgn.c
gcc/target.def
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/ldrd-strd-pair-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/vfp-1.c
gcc/timevar.def
gcc/tree-pass.h