Skip to content
  1. Jan 11, 2013
  2. Jan 09, 2013
    • Andrew Trick's avatar
      MIsched: add an ILP window property to machine model. · 9f0b95f2
      Andrew Trick authored
      This was an experimental option, but needs to be defined
      per-target. e.g. PPC A2 needs to aggressively hide latency.
      
      I converted some in-order scheduling tests to A2. Hal is working on
      more test cases.
      
      llvm-svn: 171946
      9f0b95f2
  3. Dec 18, 2012
  4. Dec 03, 2012
    • Chandler Carruth's avatar
      Use the new script to sort the includes of every file under lib. · ed0881b2
      Chandler Carruth authored
      Sooooo many of these had incorrect or strange main module includes.
      I have manually inspected all of these, and fixed the main module
      include to be the nearest plausible thing I could find. If you own or
      care about any of these source files, I encourage you to take some time
      and check that these edits were sensible. I can't have broken anything
      (I strictly added headers, and reordered them, never removed), but they
      may not be the headers you'd really like to identify as containing the
      API being implemented.
      
      Many forward declarations and missing includes were added to a header
      files to allow them to parse cleanly when included first. The main
      module rule does in fact have its merits. =]
      
      llvm-svn: 169131
      ed0881b2
  5. Dec 01, 2012
  6. Nov 29, 2012
  7. Nov 28, 2012
  8. Nov 13, 2012
    • Andrew Trick's avatar
      misched: Allow subtargets to enable misched and dependent options. · 108c88c5
      Andrew Trick authored
      This allows me to begin enabling (or backing out) misched by default
      for one subtarget at a time. To run misched we typically want to:
      - Disable SelectionDAG scheduling (use the source order scheduler)
      - Enable more aggressive coalescing (until we decide to always run the coalescer this way)
      - Enable MachineScheduler pass itself.
      
      Disabling PostRA sched may follow for some subtargets.
      
      llvm-svn: 167826
      108c88c5
  9. Nov 12, 2012
  10. Nov 09, 2012
  11. 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
  12. Nov 06, 2012
  13. Oct 16, 2012
  14. Oct 15, 2012
  15. Oct 10, 2012
  16. Oct 08, 2012
  17. Sep 14, 2012
  18. Sep 12, 2012
  19. 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
  20. Sep 06, 2012
  21. 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
  22. Aug 22, 2012
  23. Jul 23, 2012
  24. 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
  25. Jul 02, 2012
  26. Jun 29, 2012
  27. Jun 16, 2012
  28. Jun 06, 2012
Loading