Skip to content
  1. Nov 12, 2012
    • Andrew Trick's avatar
      misched: Target-independent support for MacroFusion. · 26328024
      Andrew Trick authored
      Uses the infrastructure from r167742 to support clustering instructure
      that the target processor can "fuse". e.g. cmp+jmp.
      
      Next step: target hook implementations with test cases, and enable.
      
      llvm-svn: 167744
      26328024
    • Andrew Trick's avatar
      misched: Target-independent support for load/store clustering. · a7714a0f
      Andrew Trick authored
      This infrastructure is generally useful for any target that wants to
      strongly prefer two instructions to be adjacent after scheduling.
      
      A following checkin will add target-specific hooks with unit
      tests. Then this feature will be enabled by default with misched.
      
      llvm-svn: 167742
      a7714a0f
    • Andrew Trick's avatar
      misched: Infrastructure for weak DAG edges. · f1ff84c6
      Andrew Trick authored
      This adds support for weak DAG edges to the general scheduling
      infrastructure in preparation for MachineScheduler support for
      heuristics based on weak edges.
      
      llvm-svn: 167738
      f1ff84c6
  2. Nov 09, 2012
  3. Nov 07, 2012
    • Andrew Trick's avatar
      misched: Heuristics based on the machine model. · 3ca33acb
      Andrew Trick authored
      misched is disabled by default. With -enable-misched, these heuristics
      balance the schedule to simultaneously avoid saturating processor
      resources, expose ILP, and minimize register pressure. I've been
      analyzing the performance of these heuristics on everything in the
      llvm test suite in addition to a few other benchmarks. I would like
      each heuristic check to be verified by a unit test, but I'm still
      trying to figure out the best way to do that. The heuristics are still
      in considerable flux, but as they are refined we should be rigorous
      about unit testing the improvements.
      
      llvm-svn: 167527
      3ca33acb
  4. Nov 06, 2012
  5. Oct 16, 2012
  6. Oct 15, 2012
  7. Oct 10, 2012
  8. Oct 08, 2012
  9. Sep 14, 2012
  10. Sep 12, 2012
  11. Sep 11, 2012
    • Andrew Trick's avatar
      Reorganize MachineScheduler interfaces and publish them in the header. · 7a8e1004
      Andrew Trick authored
      The Hexagon target decided to use a lot of functionality from the
      target-independent scheduler. That's fine, and other targets should be
      able to do the same. This reorg and API update makes that easy.
      
      For the record, ScheduleDAGMI was not meant to be subclassed. Instead,
      new scheduling algorithms should be able to implement
      MachineSchedStrategy and be done. But if need be, it's nice to be
      able to extend ScheduleDAGMI, so I also made that easier. The target
      scheduler is somewhat more apt to break that way though.
      
      llvm-svn: 163580
      7a8e1004
  12. Sep 06, 2012
  13. Aug 23, 2012
    • Andrew Trick's avatar
      Simplify the computeOperandLatency API. · ae53561b
      Andrew Trick authored
      The logic for recomputing latency based on a ScheduleDAG edge was
      shady. This bypasses the problem by requiring the client to provide
      operand indices. This ensures consistent use of the machine model's
      API.
      
      llvm-svn: 162420
      ae53561b
  14. Aug 22, 2012
  15. Jul 23, 2012
  16. Jul 07, 2012
    • Andrew Trick's avatar
      I'm introducing a new machine model to simultaneously allow simple · 87255e34
      Andrew Trick authored
      subtarget CPU descriptions and support new features of
      MachineScheduler.
      
      MachineModel has three categories of data:
      1) Basic properties for coarse grained instruction cost model.
      2) Scheduler Read/Write resources for simple per-opcode and operand cost model (TBD).
      3) Instruction itineraties for detailed per-cycle reservation tables.
      
      These will all live side-by-side. Any subtarget can use any
      combination of them. Instruction itineraries will not change in the
      near term. In the long run, I expect them to only be relevant for
      in-order VLIW machines that have complex contraints and require a
      precise scheduling/bundling model. Once itineraries are only actively
      used by VLIW-ish targets, they could be replaced by something more
      appropriate for those targets.
      
      This tablegen backend rewrite sets things up for introducing
      MachineModel type #2: per opcode/operand cost model.
      
      llvm-svn: 159891
      87255e34
  17. Jul 02, 2012
  18. Jun 29, 2012
  19. Jun 16, 2012
  20. Jun 06, 2012
  21. Jun 05, 2012
  22. May 25, 2012
  23. May 18, 2012
  24. 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
Loading