Skip to content
  1. Feb 13, 2009
  2. Feb 12, 2009
  3. Feb 07, 2009
  4. Feb 06, 2009
  5. Feb 04, 2009
  6. Feb 03, 2009
  7. Jan 27, 2009
  8. Jan 26, 2009
  9. Jan 21, 2009
  10. Jan 19, 2009
  11. Jan 17, 2009
  12. 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
  13. Jan 10, 2009
  14. Dec 10, 2008
  15. Nov 27, 2008
  16. Nov 12, 2008
  17. Nov 11, 2008
    • Dan Gohman's avatar
      The 32-bit displacement field in an x86 address is signed. Arrange for it · 059c4fa8
      Dan Gohman authored
      to be sign-extended when it is promoted to 64 bits for intermediate
      offset calculations. The offset calculations are done as uint64_t so that
      overflow conditions are well defined.
      
      This fixes a problem which is currently hidden by the x86 AsmPrinter but
      which was exposed by r58917 (which is temporarily reverted).  See PR3027
      for details.
      
      llvm-svn: 59044
      059c4fa8
  18. Nov 05, 2008
    • Dan Gohman's avatar
      Eliminate the ISel priority queue, which used the topological order for a · f14b77eb
      Dan Gohman authored
      priority function. Instead, just iterate over the AllNodes list, which is
      already in topological order. This eliminates a fair amount of bookkeeping,
      and speeds up the isel phase by about 15% on many testcases.
      
      The impact on most targets is that AddToISelQueue calls can be simply removed.
      
      In the x86 target, there are two additional notable changes.
      
      The rule-bending AND+SHIFT optimization in MatchAddress that creates new
      pre-isel nodes during isel is now a little more verbose, but more robust.
      Instead of either creating an invalid DAG or creating an invalid topological
      sort, as it has historically done, it can now just insert the new nodes into
      the node list at a position where they will be consistent with the topological
      ordering.
      
      Also, the address-matching code has logic that checked to see if a node was
      "already selected". However, when a node is selected, it has all its uses
      taken away via ReplaceAllUsesWith or equivalent, so it won't recieve any
      further visits from MatchAddress. This code is now removed.
      
      llvm-svn: 58748
      f14b77eb
  19. Nov 04, 2008
  20. Oct 27, 2008
    • David Greene's avatar
      · ce2a9381
      David Greene authored
      Have TableGen emit setSubgraphColor calls under control of a -gen-debug
      flag.  Then in a debugger developers can set breakpoints at these calls
      to see waht is about to be selected and what the resulting subgraph
      looks like.  This really helps when debugging instruction selection.
      
      llvm-svn: 58278
      ce2a9381
  21. Oct 18, 2008
    • Dan Gohman's avatar
      Teach DAGCombine to fold constant offsets into GlobalAddress nodes, · 2fe6bee5
      Dan Gohman authored
      and add a TargetLowering hook for it to use to determine when this
      is legal (i.e. not in PIC mode, etc.)
      
      This allows instruction selection to emit folded constant offsets
      in more cases, such as the included testcase, eliminating the need
      for explicit arithmetic instructions.
      
      This eliminates the need for the C++ code in X86ISelDAGToDAG.cpp
      that attempted to achieve the same effect, but wasn't as effective.
      
      Also, fix handling of offsets in GlobalAddressSDNodes in several
      places, including changing GlobalAddressSDNode's offset from
      int to int64_t.
      
      The Mips, Alpha, Sparc, and CellSPU targets appear to be
      unaware of GlobalAddress offsets currently, so set the hook to
      false on those targets.
      
      llvm-svn: 57748
      2fe6bee5
  22. Oct 16, 2008
  23. Oct 14, 2008
  24. Oct 13, 2008
    • Dan Gohman's avatar
      When doing the very-late shift-and address-mode optimization, · 56b68851
      Dan Gohman authored
      create a new DAG node to represent the new shift to keep the
      DAG consistent, even though it'll almost always be folded into
      the address.
      
      If a user of the resulting address has multiple uses, the
      nodes may get revisited by a later MatchAddress call, in which
      case DAG inconsistencies do matter.
      
      This fixes PR2849.
      
      llvm-svn: 57465
      56b68851
  25. Oct 06, 2008
  26. Oct 04, 2008
  27. Oct 03, 2008
  28. Oct 02, 2008
  29. Sep 30, 2008
    • Dan Gohman's avatar
      Optimize SelectionDAG's AssignTopologicalOrder even further. · 86aa16a6
      Dan Gohman authored
      Completely eliminate the TopOrder std::vector. Instead, sort
      the AllNodes list in place. This also eliminates the need to
      call AllNodes.size(), a linear-time operation, before
      performing the sort.
      
      Also, eliminate the Sources temporary std::vector, since it
      essentially duplicates the sorted result as it is being
      built.
      
      This also changes the direction of the topological sort
      from bottom-up to top-down. The AllNodes list starts out in
      roughly top-down order, so this reduces the amount of
      reordering needed. Top-down is also more convenient for
      Legalize, and ISel needed only minor adjustments.
      
      llvm-svn: 56867
      86aa16a6
    • Dan Gohman's avatar
      Move the GlobalBaseReg field out of X86ISelDAGToDAG.cpp · 6ebe734c
      Dan Gohman authored
      and X86FastISel.cpp into X86MachineFunction.h, so that it
      can be shared, instead of having each selector keep track
      of its own.
      
      llvm-svn: 56825
      6ebe734c
  30. Sep 27, 2008
  31. Sep 26, 2008
Loading