+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
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;
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)
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);
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. */
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++)
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) \
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;
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);
- }
}
}