This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [DFA Branch] DFA Scheduler Fix
- From: Vladimir Makarov <vmakarov at redhat dot com>
- To: law at redhat dot com
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 18 Apr 2002 12:18:11 -0400
- Subject: Re: [DFA Branch] DFA Scheduler Fix
- References: <2776.1019141901@porcupine.cygnus.com>
law@redhat.com wrote:
>
> ....
> Anyway, with the attached patch, folks should now be able to get 100% identical
> code using the two different schemes for describing pipelines.
>
Yes, that really would help with the transition of from old descritions
to new ones. I never checked the possibility to have the same result.
I should have done that.
Thanks, Jeff. The patch is ok for me. Could you commit it into the
branch, please.
Vlad
> This is important as there are classes of machines where the DFA scheme is
> not going to result in any performance gains, but we will still want to
> convert those ports to enable software pipelining later and to reduce our
> maintenance burden). The ability to get 100% identical schedules means we
> can safely convert those ports without introducing performance regressions.
>
> * sched-rgn.c (init_ready_list): Make the DFA code handle
> USE/CLOBBER insns in the same way as the traditional
> scheduler.
> (new_ready): Similarly..
>
> Index: sched-rgn.c
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/sched-rgn.c,v
> retrieving revision 1.15.2.3
> diff -c -3 -p -r1.15.2.3 sched-rgn.c
> *** sched-rgn.c 15 Feb 2002 20:30:00 -0000 1.15.2.3
> --- sched-rgn.c 18 Apr 2002 14:38:28 -0000
> *************** init_ready_list (ready)
> *** 2061,2069 ****
> && insn_issue_delay (insn) <= 3)
> || (targetm.sched.use_dfa_pipeline_interface
> && (*targetm.sched.use_dfa_pipeline_interface) ()
> ! && recog_memoized (insn) >= 0
> ! && min_insn_conflict_delay (curr_state, insn,
> ! insn) <= 3))
> && check_live (insn, bb_src)
> && is_exception_free (insn, bb_src, target_bb))))
> {
> --- 2061,2069 ----
> && insn_issue_delay (insn) <= 3)
> || (targetm.sched.use_dfa_pipeline_interface
> && (*targetm.sched.use_dfa_pipeline_interface) ()
> ! && (recog_memoized (insn) < 0
> ! || min_insn_conflict_delay (curr_state,
> ! insn, insn) <= 3)))
> && check_live (insn, bb_src)
> && is_exception_free (insn, bb_src, target_bb))))
> {
> *************** new_ready (next)
> *** 2174,2182 ****
> && (0
> || (targetm.sched.use_dfa_pipeline_interface
> && (*targetm.sched.use_dfa_pipeline_interface) ()
> ! && (recog_memoized (next) < 0
> ! || min_insn_conflict_delay (curr_state, next,
> ! next) > 3))
> || ((!targetm.sched.use_dfa_pipeline_interface
> || !(*targetm.sched.use_dfa_pipeline_interface) ())
> && insn_issue_delay (next) > 3)
> --- 2174,2182 ----
> && (0
> || (targetm.sched.use_dfa_pipeline_interface
> && (*targetm.sched.use_dfa_pipeline_interface) ()
> ! && recog_memoized (next) >= 0
> ! && min_insn_conflict_delay (curr_state, next,
> ! next) > 3)
> || ((!targetm.sched.use_dfa_pipeline_interface
> || !(*targetm.sched.use_dfa_pipeline_interface) ())
> && insn_issue_delay (next) > 3)