Skip to content
  1. Feb 24, 2010
  2. Feb 21, 2010
  3. Feb 18, 2010
  4. Feb 17, 2010
  5. Feb 16, 2010
  6. Feb 15, 2010
    • Evan Cheng's avatar
      Split SelectionDAGISel::IsLegalAndProfitableToFold to · 5e73ff2e
      Evan Cheng authored
      IsLegalToFold and IsProfitableToFold. The generic version of the later simply checks whether the folding candidate has a single use.
      
      This allows the target isel routines more flexibility in deciding whether folding makes sense. The specific case we are interested in is folding constant pool loads with multiple uses.
      
      llvm-svn: 96255
      5e73ff2e
    • Chris Lattner's avatar
      Check in the first big step of rewriting DAGISelEmitter to · b02cdaaa
      Chris Lattner authored
      produce a table based matcher instead of gobs of C++ Code.
      
      Though it's not done yet, the shrinkage seems promising,
      the table for the X86 ISel is 75K and still has a lot of 
      optimization to come (compare to the ~1.5M of .o generated
      the old way, much of which will go away).
      
      The code is currently disabled by default (the #if 0 in
      DAGISelEmitter.cpp).  When enabled it generates a dead
      SelectCode2 function in the DAGISel Header which will
      eventually replace SelectCode.
      
      There is still a lot of stuff left to do, which are
      documented with a trail of FIXMEs.
      
      llvm-svn: 96215
      b02cdaaa
  7. Feb 14, 2010
  8. Feb 13, 2010
  9. Jan 05, 2010
  10. Jan 04, 2010
  11. Dec 19, 2009
  12. Nov 24, 2009
  13. Nov 14, 2009
  14. Nov 08, 2009
  15. Oct 30, 2009
  16. Oct 29, 2009
  17. Oct 15, 2009
  18. Sep 25, 2009
    • Dan Gohman's avatar
      Improve MachineMemOperand handling. · 48b185d6
      Dan Gohman authored
       - Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions.
         This eliminates MachineInstr's std::list member and allows the data to be
         created by isel and live for the remainder of codegen, avoiding a lot of
         copying and unnecessary translation. This also shrinks MemSDNode.
       - Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated
         fields for MachineMemOperands.
       - Change MemSDNode to have a MachineMemOperand member instead of its own
         fields with the same information. This introduces some redundancy, but
         it's more consistent with what MachineInstr will eventually want.
       - Ignore alignment when searching for redundant loads for CSE, but remember
         the greatest alignment.
      
      Target-specific code which previously used MemOperandSDNodes with generic
      SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range
      so that the SelectionDAG framework knows that MachineMemOperand information
      is available.
      
      llvm-svn: 82794
      48b185d6
    • Dan Gohman's avatar
      Rename getTargetNode to getMachineNode, for consistency with the · 32f71d71
      Dan Gohman authored
      naming scheme used in SelectionDAG, where there are multiple kinds
      of "target" nodes, but "machine" nodes are nodes which represent
      a MachineInstr.
      
      llvm-svn: 82790
      32f71d71
Loading