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]

[patch][autovect] SMS improvements





I have checked in several improvements of SMS into the autovect branch,
that includes:
1. Make SMS work in cfg-layout mode and use loop information.
2. Use the loop versioning to handle loops with unknown count at compile
   time.
3. Use backtracking- If at some point we cannot find a cycle to
   schedule a node we used to increase the II and start over again the
   whole scheduling process.  Now we start unscheduling dependant nodes
   until we can schedule the desired node; after that we schedule again
   all the unscheduled nodes.
4. Ignore register anti dependencies, use register copies instead.
5. Undo the SMSed kernel if it is not profitable.
6. Make clear_bb_flags not clear the BB_DISABLE_SCHEDULE so the second
   scheduling pass doesn't mess up schedule the SMSed loops.
7. Add loop-header-copying at RTL level, to make SMS applicable to more
   loops.  This is provisional until
   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19038 is fixed.

2005-01-11 Mostafa Hagog <mustafa@il.ibm.com>

      * cfg.c (clear_bb_flags): Don't clear BB_DISABLE_SCHEDULE.
      * cfgloop.h (doloop_valid_p): Make external.
      (rtl_loop_copy_header): New.
      * common.opt (frtl-loop-hc): New.
      * ddg.c (create_ddg_dependence): Ignore register ANTI_DEP.
      * loop-doloop.c (doloop_valid_p): Make external.
      * loop-unroll.c (SIMPLE_LOOP_P, rtl_loop_single_full_bb_p,
      rtl_loop_ch_appropriate_p, cfg_duplicate_sese_region,
      rtl_loop_copy_header) : New.
      * modulo-sched.c: Many changes to use loop info and work in
      cfg-layout mode and updates to the scheduling algorithm.
      * params.def (PARAM_LOOP_CH_MAX_SIZE): New.
      * params.h (LOOP_CH_MAX_SIZE): New.
      * passes.c (rest_of_handle_sms): Call cfg_layout_initialize and
      cfg_layout_finalize.
      (rest_of_handle_loop2): Call rtl_loop_copy_header.

(See attached file: sms_autovect2.patch)

Attachment: sms_autovect2.patch
Description: Binary data


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