This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix instability of -fschedule-insn for x86
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Yuri Rumyantsev <ysrumyan at gmail dot com>, Igor Zamyatin <izamyatin at gmail dot com>
- Date: Tue, 18 Sep 2012 13:31:29 +0200
- Subject: Re: [PATCH] Fix instability of -fschedule-insn for x86
Hello!
> This patch aims to fix all stability issues related to using the first
> scheduler in gcc
> for x86 target (there several reported issues related to this problem).
>
> Main idea of this activity is mostly to provide user a possibility to
> safely turn on first scheduler for his codes. In some cases this could
> positively affect performance, especially for in-order Atom.
>
> Below is short description of proposed changes.
> 2012-09-18 Yuri Rumyantsev <ysrumyan@gmail.com>
>
> * config/i386/i386.c (ix86_dep_by_shift_count_body) : Add
> check on reload_completed since it can be invoked before
> register allocation phase in 1st scheduler.
> (ia32_multipass_dfa_lookahead) : Do not use dfa_lookahead for 1st
> Scheduler to save compile time.
> (ix86_sched_reorder) : Do not perform ready list reordering for 1st
> Scheduler to save compile time.
> (insn_is_function_arg) : New function. Returns true if lhs of insn is
> HW function argument register.
> (add_parameter_dependencies) : New function. Add output dependencies
> for chain of function adjacent arguments if only there is a move to
> likely spilled HW registers. Return first argument if at least one
> dependence was added or NULL otherwise.
> (avoid_func_arg_motion) : New function. Add output or anti dependency
> from insn to first_arg to restrict code motion.
> (add_dependee_for_func_arg) : New function. Avoid cross block motion of
> function argument through adding dependency from the first non-jump
> insn in bb.
> (ix86_dependencies_evaluation_hook) : New function. Hook for schedule1:
> avoid motion of function arguments passed in passed in likely spilled
> HW registers.
> (ix86_adjust_priority) : New function. Hook for schedule1: set priority
> of moves from likely spilled HW registers to maximum to schedule them
> as soon as possible.
> (ix86_sched_init_global): Do not perform multipass scheduling for 1st
> Scheduler to save compile time.
I would kindly ask scheduler expert to review the patch from the
scheduler functionality POV.
Thanks,
Uros.