Remove IA64 speculation tweaking flags

* config/ia64/ia64.c (ia64_set_sched_flags): Delete handling of
	speculation tuning flags.
	(msched-prefer-non-data-spec-insns,)
	(msched-prefer-non-control-spec-insns): Obsolete options.
	* haifa-sched.c (choose_ready): Remove handling of
	PREFER_NON_CONTROL_SPEC and PREFER_NON_DATA_SPEC.
	* sched-int.h (enum SPEC_SCHED_FLAGS): Remove PREFER_NON_CONTROL_SPEC
	and PREFER_NON_DATA_SPEC.
	* sel-sched.c (process_spec_exprs): Remove handling of
	PREFER_NON_CONTROL_SPEC and PREFER_NON_DATA_SPEC.

From-SVN: r210746
This commit is contained in:
Maxim Kuvyrkov 2014-05-22 07:25:48 +00:00 committed by Maxim Kuvyrkov
parent 03bdb69f1d
commit 16d83dd6f8
6 changed files with 25 additions and 95 deletions

View File

@ -1,3 +1,17 @@
2014-05-22 Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org>
Remove IA64 speculation tweaking flags
* config/ia64/ia64.c (ia64_set_sched_flags): Delete handling of
speculation tuning flags.
(msched-prefer-non-data-spec-insns,)
(msched-prefer-non-control-spec-insns): Obsolete options.
* haifa-sched.c (choose_ready): Remove handling of
PREFER_NON_CONTROL_SPEC and PREFER_NON_DATA_SPEC.
* sched-int.h (enum SPEC_SCHED_FLAGS): Remove PREFER_NON_CONTROL_SPEC
and PREFER_NON_DATA_SPEC.
* sel-sched.c (process_spec_exprs): Remove handling of
PREFER_NON_CONTROL_SPEC and PREFER_NON_DATA_SPEC.
2014-05-22 Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org>
Improve scheduling debug output

View File

@ -7943,17 +7943,9 @@ ia64_set_sched_flags (spec_info_t spec_info)
spec_info->flags = 0;
if ((mask & DATA_SPEC) && mflag_sched_prefer_non_data_spec_insns)
spec_info->flags |= PREFER_NON_DATA_SPEC;
if (mask & CONTROL_SPEC)
{
if (mflag_sched_prefer_non_control_spec_insns)
spec_info->flags |= PREFER_NON_CONTROL_SPEC;
if (sel_sched_p () && mflag_sel_sched_dont_check_control_spec)
spec_info->flags |= SEL_SCHED_SPEC_DONT_CHECK_CONTROL;
}
if ((mask & CONTROL_SPEC)
&& sel_sched_p () && mflag_sel_sched_dont_check_control_spec)
spec_info->flags |= SEL_SCHED_SPEC_DONT_CHECK_CONTROL;
if (sched_verbose >= 1)
spec_info->dump = sched_dump;

View File

@ -164,12 +164,10 @@ Target Report Var(mflag_sched_spec_control_ldc) Init(0)
Use simple data speculation check for control speculation
msched-prefer-non-data-spec-insns
Target Report Var(mflag_sched_prefer_non_data_spec_insns) Init(0)
If set, data speculative instructions will be chosen for schedule only if there are no other choices at the moment
Target Ignore Warn(switch %qs is no longer supported)
msched-prefer-non-control-spec-insns
Target Report Var(mflag_sched_prefer_non_control_spec_insns) Init(0)
If set, control speculative instructions will be chosen for schedule only if there are no other choices at the moment
Target Ignore Warn(switch %qs is no longer supported)
msched-count-spec-in-critical-path
Target Report Var(mflag_sched_count_spec_in_critical_path) Init(0)

View File

@ -5567,9 +5567,8 @@ choose_ready (struct ready_list *ready, bool first_cycle_insn_p,
else
{
/* Try to choose the better insn. */
int index = 0, i, n;
int index = 0, i;
rtx insn;
int try_data = 1, try_control = 1;
ds_t ts;
insn = ready_element (ready, 0);
@ -5579,43 +5578,10 @@ choose_ready (struct ready_list *ready, bool first_cycle_insn_p,
return 0;
}
if (spec_info
&& spec_info->flags & (PREFER_NON_DATA_SPEC
| PREFER_NON_CONTROL_SPEC))
{
for (i = 0, n = ready->n_ready; i < n; i++)
{
rtx x;
ds_t s;
x = ready_element (ready, i);
s = TODO_SPEC (x);
if (spec_info->flags & PREFER_NON_DATA_SPEC
&& !(s & DATA_SPEC))
{
try_data = 0;
if (!(spec_info->flags & PREFER_NON_CONTROL_SPEC)
|| !try_control)
break;
}
if (spec_info->flags & PREFER_NON_CONTROL_SPEC
&& !(s & CONTROL_SPEC))
{
try_control = 0;
if (!(spec_info->flags & PREFER_NON_DATA_SPEC) || !try_data)
break;
}
}
}
ts = TODO_SPEC (insn);
if ((ts & SPECULATIVE)
&& (((!try_data && (ts & DATA_SPEC))
|| (!try_control && (ts & CONTROL_SPEC)))
|| (targetm.sched.first_cycle_multipass_dfa_lookahead_guard_spec
&& !targetm.sched
&& (targetm.sched.first_cycle_multipass_dfa_lookahead_guard_spec
&& (!targetm.sched
.first_cycle_multipass_dfa_lookahead_guard_spec (insn))))
/* Discard speculative instruction that stands first in the ready
list. */
@ -5624,16 +5590,8 @@ choose_ready (struct ready_list *ready, bool first_cycle_insn_p,
return 1;
}
ready_try[0] = 0;
for (i = 1; i < ready->n_ready; i++)
{
insn = ready_element (ready, i);
ready_try [i]
= ((!try_data && (TODO_SPEC (insn) & DATA_SPEC))
|| (!try_control && (TODO_SPEC (insn) & CONTROL_SPEC)));
}
for (i = 0; i < ready->n_ready; i++)
ready_try [i] = 0;
/* Let the target filter the search space. */
for (i = 1; i < ready->n_ready; i++)

View File

@ -1141,9 +1141,7 @@ enum SCHED_FLAGS {
enum SPEC_SCHED_FLAGS {
COUNT_SPEC_IN_CRITICAL_PATH = 1,
PREFER_NON_DATA_SPEC = COUNT_SPEC_IN_CRITICAL_PATH << 1,
PREFER_NON_CONTROL_SPEC = PREFER_NON_DATA_SPEC << 1,
SEL_SCHED_SPEC_DONT_CHECK_CONTROL = PREFER_NON_CONTROL_SPEC << 1
SEL_SCHED_SPEC_DONT_CHECK_CONTROL = COUNT_SPEC_IN_CRITICAL_PATH << 1
};
#define NOTE_NOT_BB_P(NOTE) (NOTE_P (NOTE) && (NOTE_KIND (NOTE) \

View File

@ -3502,8 +3502,6 @@ process_pipelined_exprs (av_set_t *av_ptr)
static void
process_spec_exprs (av_set_t *av_ptr)
{
bool try_data_p = true;
bool try_control_p = true;
expr_t expr;
av_set_iterator si;
@ -3529,34 +3527,6 @@ process_spec_exprs (av_set_t *av_ptr)
av_set_iter_remove (&si);
continue;
}
if ((spec_info->flags & PREFER_NON_DATA_SPEC)
&& !(ds & BEGIN_DATA))
try_data_p = false;
if ((spec_info->flags & PREFER_NON_CONTROL_SPEC)
&& !(ds & BEGIN_CONTROL))
try_control_p = false;
}
FOR_EACH_EXPR_1 (expr, si, av_ptr)
{
ds_t ds;
ds = EXPR_SPEC_DONE_DS (expr);
if (ds & SPECULATIVE)
{
if ((ds & BEGIN_DATA) && !try_data_p)
/* We don't want any data speculative instructions right
now. */
av_set_iter_remove (&si);
if ((ds & BEGIN_CONTROL) && !try_control_p)
/* We don't want any control speculative instructions right
now. */
av_set_iter_remove (&si);
}
}
}