Commit 16d83dd6 by Maxim Kuvyrkov Committed by Maxim Kuvyrkov

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
parent 03bdb69f
2014-05-22 Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> 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 Improve scheduling debug output
* haifa-sched.c (debug_ready_list): Remove unnecessary prototype. * haifa-sched.c (debug_ready_list): Remove unnecessary prototype.
(advance_one_cycle): Update. (advance_one_cycle): Update.
......
...@@ -7943,17 +7943,9 @@ ia64_set_sched_flags (spec_info_t spec_info) ...@@ -7943,17 +7943,9 @@ ia64_set_sched_flags (spec_info_t spec_info)
spec_info->flags = 0; spec_info->flags = 0;
if ((mask & DATA_SPEC) && mflag_sched_prefer_non_data_spec_insns) if ((mask & CONTROL_SPEC)
spec_info->flags |= PREFER_NON_DATA_SPEC; && sel_sched_p () && mflag_sel_sched_dont_check_control_spec)
spec_info->flags |= SEL_SCHED_SPEC_DONT_CHECK_CONTROL;
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 (sched_verbose >= 1) if (sched_verbose >= 1)
spec_info->dump = sched_dump; spec_info->dump = sched_dump;
......
...@@ -164,12 +164,10 @@ Target Report Var(mflag_sched_spec_control_ldc) Init(0) ...@@ -164,12 +164,10 @@ Target Report Var(mflag_sched_spec_control_ldc) Init(0)
Use simple data speculation check for control speculation Use simple data speculation check for control speculation
msched-prefer-non-data-spec-insns msched-prefer-non-data-spec-insns
Target Report Var(mflag_sched_prefer_non_data_spec_insns) Init(0) Target Ignore Warn(switch %qs is no longer supported)
If set, data speculative instructions will be chosen for schedule only if there are no other choices at the moment
msched-prefer-non-control-spec-insns msched-prefer-non-control-spec-insns
Target Report Var(mflag_sched_prefer_non_control_spec_insns) Init(0) Target Ignore Warn(switch %qs is no longer supported)
If set, control speculative instructions will be chosen for schedule only if there are no other choices at the moment
msched-count-spec-in-critical-path msched-count-spec-in-critical-path
Target Report Var(mflag_sched_count_spec_in_critical_path) Init(0) Target Report Var(mflag_sched_count_spec_in_critical_path) Init(0)
......
...@@ -5567,9 +5567,8 @@ choose_ready (struct ready_list *ready, bool first_cycle_insn_p, ...@@ -5567,9 +5567,8 @@ choose_ready (struct ready_list *ready, bool first_cycle_insn_p,
else else
{ {
/* Try to choose the better insn. */ /* Try to choose the better insn. */
int index = 0, i, n; int index = 0, i;
rtx insn; rtx insn;
int try_data = 1, try_control = 1;
ds_t ts; ds_t ts;
insn = ready_element (ready, 0); insn = ready_element (ready, 0);
...@@ -5579,43 +5578,10 @@ choose_ready (struct ready_list *ready, bool first_cycle_insn_p, ...@@ -5579,43 +5578,10 @@ choose_ready (struct ready_list *ready, bool first_cycle_insn_p,
return 0; 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); ts = TODO_SPEC (insn);
if ((ts & SPECULATIVE) if ((ts & SPECULATIVE)
&& (((!try_data && (ts & DATA_SPEC)) && (targetm.sched.first_cycle_multipass_dfa_lookahead_guard_spec
|| (!try_control && (ts & CONTROL_SPEC))) && (!targetm.sched
|| (targetm.sched.first_cycle_multipass_dfa_lookahead_guard_spec
&& !targetm.sched
.first_cycle_multipass_dfa_lookahead_guard_spec (insn)))) .first_cycle_multipass_dfa_lookahead_guard_spec (insn))))
/* Discard speculative instruction that stands first in the ready /* Discard speculative instruction that stands first in the ready
list. */ list. */
...@@ -5624,16 +5590,8 @@ choose_ready (struct ready_list *ready, bool first_cycle_insn_p, ...@@ -5624,16 +5590,8 @@ choose_ready (struct ready_list *ready, bool first_cycle_insn_p,
return 1; return 1;
} }
ready_try[0] = 0; for (i = 0; i < ready->n_ready; i++)
ready_try [i] = 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)));
}
/* Let the target filter the search space. */ /* Let the target filter the search space. */
for (i = 1; i < ready->n_ready; i++) for (i = 1; i < ready->n_ready; i++)
......
...@@ -1141,9 +1141,7 @@ enum SCHED_FLAGS { ...@@ -1141,9 +1141,7 @@ enum SCHED_FLAGS {
enum SPEC_SCHED_FLAGS { enum SPEC_SCHED_FLAGS {
COUNT_SPEC_IN_CRITICAL_PATH = 1, COUNT_SPEC_IN_CRITICAL_PATH = 1,
PREFER_NON_DATA_SPEC = COUNT_SPEC_IN_CRITICAL_PATH << 1, SEL_SCHED_SPEC_DONT_CHECK_CONTROL = 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
}; };
#define NOTE_NOT_BB_P(NOTE) (NOTE_P (NOTE) && (NOTE_KIND (NOTE) \ #define NOTE_NOT_BB_P(NOTE) (NOTE_P (NOTE) && (NOTE_KIND (NOTE) \
......
...@@ -3502,8 +3502,6 @@ process_pipelined_exprs (av_set_t *av_ptr) ...@@ -3502,8 +3502,6 @@ process_pipelined_exprs (av_set_t *av_ptr)
static void static void
process_spec_exprs (av_set_t *av_ptr) process_spec_exprs (av_set_t *av_ptr)
{ {
bool try_data_p = true;
bool try_control_p = true;
expr_t expr; expr_t expr;
av_set_iterator si; av_set_iterator si;
...@@ -3529,34 +3527,6 @@ process_spec_exprs (av_set_t *av_ptr) ...@@ -3529,34 +3527,6 @@ process_spec_exprs (av_set_t *av_ptr)
av_set_iter_remove (&si); av_set_iter_remove (&si);
continue; 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);
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment