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:
parent
03bdb69f1d
commit
16d83dd6f8
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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++)
|
||||
|
|
|
@ -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) \
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue