diff options
author | mkuvyrkov <mkuvyrkov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-05-22 07:26:00 +0000 |
---|---|---|
committer | mkuvyrkov <mkuvyrkov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-05-22 07:26:00 +0000 |
commit | d9d89d92ed2db17abea5f21c65dc2a4e83382945 (patch) | |
tree | ee9f4c968ffd6c4f3e6f24c445abeb18d376052e /gcc/doc | |
parent | 507af1c13e34764d40f217334513bacd4924e1f9 (diff) | |
download | gcc-d9d89d92ed2db17abea5f21c65dc2a4e83382945.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210747 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/tm.texi | 31 | ||||
-rw-r--r-- | gcc/doc/tm.texi.in | 2 |
2 files changed, 12 insertions, 21 deletions
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 1a26bcd0448..05342b3d8ac 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. diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in index 9c81f201664..8a66842fd77 100644 --- a/gcc/doc/tm.texi.in +++ b/gcc/doc/tm.texi.in @@ -5019,8 +5019,6 @@ them: try the first ones in this list first. @hook TARGET_SCHED_GEN_SPEC_CHECK -@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC - @hook TARGET_SCHED_SET_SCHED_FLAGS @hook TARGET_SCHED_SMS_RES_MII |