This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Patch: Flags to enable/disable scheduling heuristics
- From: Vladimir Makarov <vmakarov at redhat dot com>
- To: "Shobaki, Ghassan" <Ghassan dot Shobaki at amd dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Tue, 14 Jul 2009 12:27:32 -0400
- Subject: Re: Patch: Flags to enable/disable scheduling heuristics
- References: <D60441ACF713E84E9952ADA42F2E08B716728E@ssvlexmb2.amd.com> <912DA18E911D8B418824641EF1541F3C417E84@ssvlexmb2.amd.com> <20090603125414.GA16367@kam.mff.cuni.cz> <84fc9c000906030719n129b4816qee87cc50c0838ad3@mail.gmail.com> <912DA18E911D8B418824641EF1541F3C418387@ssvlexmb2.amd.com> <84fc9c000906041356v731ab35ct9a2b807c7920c01e@mail.gmail.com> <912DA18E911D8B418824641EF1541F3C41849D@ssvlexmb2.amd.com> <84fc9c000906050200u11ff9809u7fa2e62ad9918fb2@mail.gmail.com> <912DA18E911D8B418824641EF1541F3C418548@ssvlexmb2.amd.com> <84fc9c000906050801u71327776ge0d4f46d93f3f862@mail.gmail.com> <de8d50360906081116p5ef491d0m9a2c656d6b937bd5@mail.gmail.com> <912DA18E911D8B418824641EF1541F3C4AC399@ssvlexmb2.amd.com> <4A2DCA99.1080502@redhat.com> <534C8623EDA7174AA9FF7ADD752AD8E425748F@ssvlexmb2.amd.com> <4A57A4D9.6050601@redhat.com> <534C8623EDA7174AA9FF7ADD752AD8E4257C69@ssvlexmb2.amd.com>
Shobaki, Ghassan wrote:
I have made the minor changes requested by Vladimir and checked in the patch. Here is a another patch which adds heuristic descriptions to invoke.texi. Is this OK?
Yes, that is ok. Thanks for the patch, Ghassan.
2009-07-13 Ghassan Shobaki <ghassan.shobaki@amd.com>
* doc/invoke.texi: Added descriptions of the
scheduling heuristics that are enabled/disabled
by the flags introduced by a previous patch.
Index: doc/invoke.texi
===================================================================
--- doc/invoke.texi (revision 149603)
+++ doc/invoke.texi (working copy)
@@ -6235,46 +6235,56 @@ This only makes sense when scheduling af
@item -fsched-group-heuristic
@opindex fsched-group-heuristic
-Enable the group heuristic in the scheduler. This is enabled by default
-when scheduling is enabled, i.e.@: with @option{-fschedule-insns}
+Enable the group heuristic in the scheduler. This heuristic favors
+the instruction that belongs to a schedule group. This is enabled
+by default when scheduling is enabled, i.e.@: with @option{-fschedule-insns}
or @option{-fschedule-insns2} or at @option{-O2} or higher.
@item -fsched-critical-path-heuristic
@opindex fsched-critical-path-heuristic
-Enable the critical-path heuristic in the scheduler. This is enabled
-by default when scheduling is enabled, i.e.@: with @option{-fschedule-insns}
+Enable the critical-path heuristic in the scheduler. This heuristic favors
+instructions on the critical path. This is enabled by default when
+scheduling is enabled, i.e.@: with @option{-fschedule-insns}
or @option{-fschedule-insns2} or at @option{-O2} or higher.
@item -fsched-spec-insn-heuristic
@opindex fsched-spec-insn-heuristic
-Enable the speculative instruction heuristic in the scheduler. This is
-enabled by default when scheduling is enabled, i.e.@: with
-@option{-fschedule-insns} or @option{-fschedule-insns2} or
-at @option{-O2} or higher.
+Enable the speculative instruction heuristic in the scheduler. This
+heuristic favors speculative instructions with greater dependency weakness.
+This is enabled by default when scheduling is enabled, i.e.@:
+with @option{-fschedule-insns} or @option{-fschedule-insns2}
+or at @option{-O2} or higher.
@item -fsched-reg-pressure-heuristic
@opindex fsched-reg-pressure-heuristic
-Enable the register pressure heuristic in the scheduler. This only makes
-sense when scheduling before register allocation, i.e.@:
+Enable the register pressure heuristic in the scheduler. This heuristic
+favors the instruction with smaller contribution to register pressure.
+This only makes sense when scheduling before register allocation, i.e.@:
with @option{-fschedule-insns} or at @option{-O2} or higher.
@item -fsched-rank-heuristic
@opindex fsched-rank-heuristic
-Enable the rank heuristic in the scheduler. This is enabled by default
-when scheduling is enabled, i.e.@: with @option{-fschedule-insns}
-or @option{-fschedule-insns2} or at @option{-O2} or higher.
+Enable the rank heuristic in the scheduler. This heuristic favors
+the instruction belonging to a basic block with greater size or frequency.
+This is enabled by default when scheduling is enabled, i.e.@:
+with @option{-fschedule-insns} or @option{-fschedule-insns2} or
+at @option{-O2} or higher.
@item -fsched-last-insn-heuristic
@opindex fsched-last-insn-heuristic
-Enable the last-instruction heuristic in the scheduler. This is enabled
-by default when scheduling is enabled, i.e.@: with @option{-fschedule-insns}
-or @option{-fschedule-insns2} or at @option{-O2} or higher.
+Enable the last-instruction heuristic in the scheduler. This heuristic
+favors the instruction that is less dependent on the last instruction
+scheduled. This is enabled by default when scheduling is enabled,
+i.e.@: with @option{-fschedule-insns} or @option{-fschedule-insns2} or
+at @option{-O2} or higher.
@item -fsched-dep-count-heuristic
@opindex fsched-dep-count-heuristic
-Enable the dependent-count heuristic in the scheduler. This is enabled
-by default when scheduling is enabled, i.e.@: with @option{-fschedule-insns}
-or @option{-fschedule-insns2} or at @option{-O2} or higher.
+Enable the dependent-count heuristic in the scheduler. This heuristic
+favors the instruction that has more instructions depending on it.
+This is enabled by default when scheduling is enabled, i.e.@:
+with @option{-fschedule-insns} or @option{-fschedule-insns2} or
+at @option{-O2} or higher.
@item -fsched2-use-traces
@opindex fsched2-use-traces