This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [DFA Branch] DFA Scheduler Fix


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)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]