Skip to content
  1. Oct 23, 2010
  2. Sep 10, 2010
    • Evan Cheng's avatar
      Teach if-converter to be more careful with predicating instructions that would · bf407075
      Evan Cheng authored
      take multiple cycles to decode.
      For the current if-converter clients (actually only ARM), the instructions that
      are predicated on false are not nops. They would still take machine cycles to
      decode. Micro-coded instructions such as LDM / STM can potentially take multiple
      cycles to decode. If-converter should take treat them as non-micro-coded
      simple instructions.
      
      llvm-svn: 113570
      bf407075
  3. Jul 24, 2010
  4. Jun 29, 2010
  5. May 11, 2010
  6. May 01, 2010
  7. Mar 10, 2010
  8. Oct 18, 2009
  9. Oct 12, 2009
  10. Oct 10, 2009
    • Dan Gohman's avatar
      Factor out LiveIntervalAnalysis' code to determine whether an instruction · 87b02d5b
      Dan Gohman authored
      is trivially rematerializable and integrate it into
      TargetInstrInfo::isTriviallyReMaterializable. This way, all places that
      need to know whether an instruction is rematerializable will get the
      same answer.
      
      This enables the useful parts of the aggressive-remat option by
      default -- using AliasAnalysis to determine whether a memory location
      is invariant, and removes the questionable parts -- rematting operations
      with virtual register inputs that may not be live everywhere.
      
      llvm-svn: 83687
      87b02d5b
  11. Sep 18, 2009
  12. Aug 19, 2009
  13. Feb 11, 2009
    • Dan Gohman's avatar
      When scheduling a block in parts, keep track of the overall · dfaf646c
      Dan Gohman authored
      instruction index across each part. Instruction indices are used
      to make live range queries, and live ranges can extend beyond
      scheduling region boundaries.
      
      Refactor the ScheduleDAGSDNodes class some more so that it
      doesn't have to worry about this additional information.
      
      llvm-svn: 64288
      dfaf646c
    • Dan Gohman's avatar
      Factor out more code for computing register live-range informationfor · b9543435
      Dan Gohman authored
      scheduling, and generalize is so that preserves state across
      scheduling regions. This fixes incorrect live-range information around
      terminators and labels, which are effective region boundaries.
      
      In place of looking for terminators to anchor inter-block dependencies,
      introduce special entry and exit scheduling units for this purpose.
      
      llvm-svn: 64254
      b9543435
  14. Feb 06, 2009
  15. Jan 20, 2009
  16. Jan 15, 2009
    • Dan Gohman's avatar
      Move a few containers out of ScheduleDAGInstrs::BuildSchedGraph · 619ef48a
      Dan Gohman authored
      and into the ScheduleDAGInstrs class, so that they don't get
      destructed and re-constructed for each block. This fixes a
      compile-time hot spot in the post-pass scheduler.
      
      To help facilitate this, tidy and do some minor reorganization
      in the scheduler constructor functions.
      
      llvm-svn: 62275
      619ef48a
  17. Dec 23, 2008
  18. Dec 22, 2008
  19. Dec 16, 2008
    • Dan Gohman's avatar
      Fix some register-alias-related bugs in the post-RA scheduler liveness · dddc1ac7
      Dan Gohman authored
      computation code. Also, avoid adding output-depenency edges when both
      defs are dead, which frequently happens with EFLAGS defs.
      
      Compute Depth and Height lazily, and always in terms of edge latency
      values. For the schedulers that don't care about latency, edge latencies
      are set to 1.
      
      Eliminate Cycle and CycleBound, and LatencyPriorityQueue's Latencies array.
      These are all subsumed by the Depth and Height fields.
      
      llvm-svn: 61073
      dddc1ac7
  20. Dec 09, 2008
    • Dan Gohman's avatar
      Rewrite the SDep class, and simplify some of the related code. · 2d170896
      Dan Gohman authored
      The Cost field is removed. It was only being used in a very limited way,
      to indicate when the scheduler should attempt to protect a live register,
      and it isn't really needed to do that. If we ever want the scheduler to
      start inserting copies in non-prohibitive situations, we'll have to
      rethink some things anyway.
      
      A Latency field is added. Instead of giving each node a single
      fixed latency, each edge can have its own latency. This will eventually
      be used to model various micro-architecture properties more accurately.
      
      The PointerIntPair class and an internal union are now used, which
      reduce the overall size.
      
      llvm-svn: 60806
      2d170896
  21. Nov 21, 2008
  22. Nov 20, 2008
    • Dan Gohman's avatar
      Experimental post-pass scheduling support. Post-pass scheduling · 60cb69e6
      Dan Gohman authored
      is currently off by default, and can be enabled with
      -disable-post-RA-scheduler=false.
      
      This doesn't have a significant impact on most code yet because it doesn't
      yet do anything to address anti-dependencies and it doesn't attempt to
      disambiguate memory references. Also, several popular targets
      don't have pipeline descriptions yet.
      
      The majority of the changes here are splitting the SelectionDAG-specific
      code out of ScheduleDAG, so that ScheduleDAG can be moved to
      libLLVMCodeGen.a. The interface between ScheduleDAG-using code and
      the rest of the scheduling code is somewhat rough and will evolve.
      
      llvm-svn: 59676
      60cb69e6
Loading