Skip to content
  1. May 25, 2012
  2. May 18, 2012
  3. May 17, 2012
    • Andrew Trick's avatar
      misched: trace ReadyQ. · 276a3e8c
      Andrew Trick authored
      llvm-svn: 157007
      276a3e8c
    • Andrew Trick's avatar
      misched: Added 3-level regpressure back-off. · 2202577d
      Andrew Trick authored
      Introduce the basic strategy for register pressure scheduling.
      
      1) Respect target limits at all times.
      
      2) Indentify critical register classes (pressure sets).
         Track pressure within the scheduled region.
         Avoid increasing scheduled pressure for critical registers.
      
      3) Avoid exceeding the max pressure of the region prior to scheduling.
      
      Added logic for picking between the top and bottom ready Q's based on
      regpressure heuristics.
      
      Status: functional but needs to be asjusted to achieve good results.
      llvm-svn: 157006
      2202577d
    • Andrew Trick's avatar
      comment · 47a1feae
      Andrew Trick authored
      llvm-svn: 157005
      47a1feae
    • Andrew Trick's avatar
      misched: fix liveness iterators · 463b2f1f
      Andrew Trick authored
      llvm-svn: 157003
      463b2f1f
  4. May 10, 2012
  5. Apr 24, 2012
  6. Apr 01, 2012
  7. Mar 21, 2012
  8. Mar 19, 2012
  9. Mar 14, 2012
    • Benjamin Kramer's avatar
      Silence operator precedence warnings. · 05e7a843
      Benjamin Kramer authored
      llvm-svn: 152711
      05e7a843
    • Andrew Trick's avatar
      misched: implemented a framework for top-down or bottom-up scheduling. · 8823decd
      Andrew Trick authored
      New flags: -misched-topdown, -misched-bottomup. They can be used with
      the default scheduler or with -misched=shuffle. Without either
      topdown/bottomup flag -misched=shuffle now alternates scheduling
      direction.
      
      LiveIntervals update is unimplemented with bottom-up scheduling, so
      only -misched-topdown currently works.
      
      Capped the ScheduleDAG hierarchy with a concrete ScheduleDAGMI class.
      ScheduleDAGMI is aware of the top and bottom of the unscheduled zone
      within the current region. Scheduling policy can be plugged into
      the ScheduleDAGMI driver by implementing MachineSchedStrategy.
      ConvergingScheduler is now the default scheduling algorithm.
      It exercises the new driver but still does no reordering.
      
      llvm-svn: 152700
      8823decd
    • Andrew Trick's avatar
      misched comments · 72515bef
      Andrew Trick authored
      llvm-svn: 152699
      72515bef
  10. Mar 09, 2012
  11. Mar 08, 2012
  12. Mar 07, 2012
    • Andrew Trick's avatar
      misched preparation: clarify ScheduleDAG and ScheduleDAGInstrs roles. · 60cf03e7
      Andrew Trick authored
      ScheduleDAG is responsible for the DAG: SUnits and SDeps. It provides target hooks for latency computation.
      
      ScheduleDAGInstrs extends ScheduleDAG and defines the current scheduling region in terms of MachineInstr iterators. It has access to the target's scheduling itinerary data. ScheduleDAGInstrs provides the logic for building the ScheduleDAG for the sequence of MachineInstrs in the current region. Target's can implement highly custom schedulers by extending this class.
      
      ScheduleDAGPostRATDList provides the driver and diagnostics for current postRA scheduling. It maintains a current Sequence of scheduled machine instructions and logic for splicing them into the block. During scheduling, it uses the ScheduleHazardRecognizer provided by the target.
      
      Specific changes:
      - Removed driver code from ScheduleDAG. clearDAG is the only interface needed.
      
      - Added enterRegion/exitRegion hooks to ScheduleDAGInstrs to delimit the scope of each scheduling region and associated DAG. They should be used to setup and cleanup any region-specific state in addition to the DAG itself. This is necessary because we reuse the same ScheduleDAG object for the entire function. The target may extend these hooks to do things at regions boundaries, like bundle terminators. The hooks are called even if we decide not to schedule the region. So all instructions in a block are "covered" by these calls.
      
      - Added ScheduleDAGInstrs::begin()/end() public API.
      
      - Moved Sequence into the driver layer, which is specific to the scheduling algorithm.
      
      llvm-svn: 152208
      60cf03e7
    • Andrew Trick's avatar
      Added -view-misched=dags options. · a5f19560
      Andrew Trick authored
      llvm-svn: 152178
      a5f19560
    • Andrew Trick's avatar
      misched: Use the StartBlock/FinishBlock hooks · 3b6eb1e5
      Andrew Trick authored
      llvm-svn: 152172
      3b6eb1e5
Loading