diff options
author | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2014-05-22 07:26:00 +0000 |
---|---|---|
committer | Maxim Kuvyrkov <mkuvyrkov@gcc.gnu.org> | 2014-05-22 07:26:00 +0000 |
commit | 4960a0cb385939bfebf5fb158d60a200d1c3e19e (patch) | |
tree | ee9f4c968ffd6c4f3e6f24c445abeb18d376052e /gcc/doc/tm.texi | |
parent | 16d83dd6f873552cce2116602073412cb0c297ed (diff) | |
download | gcc-4960a0cb385939bfebf5fb158d60a200d1c3e19e.zip gcc-4960a0cb385939bfebf5fb158d60a200d1c3e19e.tar.gz gcc-4960a0cb385939bfebf5fb158d60a200d1c3e19e.tar.bz2 |
Cleanup and improve multipass_dfa_lookahead_guard
* config/i386/i386.c (core2i7_first_cycle_multipass_filter_ready_try,)
(core2i7_first_cycle_multipass_begin,)
(core2i7_first_cycle_multipass_issue,)
(core2i7_first_cycle_multipass_backtrack): Update signature.
* config/ia64/ia64.c
(ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Remove.
(ia64_first_cycle_multipass_dfa_lookahead_guard): Update signature.
(TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC): Remove
hook definition.
(ia64_first_cycle_multipass_dfa_lookahead_guard): Merge logic from
ia64_first_cycle_multipass_dfa_lookahead_guard_spec. Update return
values.
* config/rs6000/rs6000.c (rs6000_use_sched_lookahead_guard): Update
return values.
* doc/tm.texi: Regenerate.
* doc/tm.texi.in
(TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC): Remove.
* haifa-sched.c (ready_try): Make signed to allow negative values.
(rebug_ready_list_1): Update.
(choose_ready): Simplify.
(sched_extend_ready_list): Update.
From-SVN: r210747
Diffstat (limited to 'gcc/doc/tm.texi')
-rw-r--r-- | gcc/doc/tm.texi | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 1a26bcd..05342b3d8a 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -6716,26 +6716,32 @@ schedules to choose the best one. The default is no multipass scheduling. @end deftypefn -@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx @var{insn}) +@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx @var{insn}, int @var{ready_index}) This hook controls what insns from the ready insn queue will be considered for the multipass insn scheduling. If the hook returns -zero for @var{insn}, the insn will be not chosen to -be issued. +zero for @var{insn}, the insn will be considered in multipass scheduling. +Positive return values will remove @var{insn} from consideration on +the current round of multipass scheduling. +Negative return values will remove @var{insn} from consideration for given +number of cycles. +Backends should be careful about returning non-zero for highest priority +instruction at position 0 in the ready list. @var{ready_index} is passed +to allow backends make correct judgements. The default is that any ready insns can be chosen to be issued. @end deftypefn -@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BEGIN (void *@var{data}, char *@var{ready_try}, int @var{n_ready}, bool @var{first_cycle_insn_p}) +@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BEGIN (void *@var{data}, signed char *@var{ready_try}, int @var{n_ready}, bool @var{first_cycle_insn_p}) This hook prepares the target backend for a new round of multipass scheduling. @end deftypefn -@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_ISSUE (void *@var{data}, char *@var{ready_try}, int @var{n_ready}, rtx @var{insn}, const void *@var{prev_data}) +@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_ISSUE (void *@var{data}, signed char *@var{ready_try}, int @var{n_ready}, rtx @var{insn}, const void *@var{prev_data}) This hook is called when multipass scheduling evaluates instruction INSN. @end deftypefn -@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BACKTRACK (const void *@var{data}, char *@var{ready_try}, int @var{n_ready}) +@deftypefn {Target Hook} void TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BACKTRACK (const void *@var{data}, signed char *@var{ready_try}, int @var{n_ready}) This is called when multipass scheduling backtracks from evaluation of an instruction. @end deftypefn @@ -6843,19 +6849,6 @@ a pattern for a branchy check corresponding to a simple check denoted by @var{insn} should be generated. In this case @var{label} can't be null. @end deftypefn -@deftypefn {Target Hook} bool TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC (const_rtx @var{insn}) -This hook is used as a workaround for -@samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD} not being -called on the first instruction of the ready list. The hook is used to -discard speculative instructions that stand first in the ready list from -being scheduled on the current cycle. If the hook returns @code{false}, -@var{insn} will not be chosen to be issued. -For non-speculative instructions, -the hook should always return @code{true}. For example, in the ia64 backend -the hook is used to cancel data speculative insns when the ALAT table -is nearly full. -@end deftypefn - @deftypefn {Target Hook} void TARGET_SCHED_SET_SCHED_FLAGS (struct spec_info_def *@var{spec_info}) This hook is used by the insn scheduler to find out what features should be enabled/used. |