Skip to content
  1. Oct 19, 2009
  2. Oct 18, 2009
  3. Oct 17, 2009
  4. Oct 16, 2009
  5. Oct 15, 2009
  6. Oct 14, 2009
  7. Oct 13, 2009
  8. Oct 12, 2009
  9. Oct 10, 2009
  10. Oct 09, 2009
  11. Oct 08, 2009
  12. Oct 07, 2009
    • Dan Gohman's avatar
      Replace TargetInstrInfo::isInvariantLoad and its target-specific · be8137b0
      Dan Gohman authored
      implementations with a new MachineInstr::isInvariantLoad, which uses
      MachineMemOperands and is target-independent. This brings MachineLICM
      and other functionality to targets which previously lacked an
      isInvariantLoad implementation.
      
      llvm-svn: 83475
      be8137b0
    • Jim Grosbach's avatar
      Add register-reuse to frame-index register scavenging. When a target uses · fa14dd43
      Jim Grosbach authored
      a virtual register to eliminate a frame index, it can return that register
      and the constant stored there to PEI to track. When scavenging to allocate
      for those registers, PEI then tracks the last-used register and value, and
      if it is still available and matches the value for the next index, reuses
      the existing value rather and removes the re-materialization instructions.
      Fancier tracking and adjustment of scavenger allocations to keep more
      values live for longer is possible, but not yet implemented and would likely
      be better done via a different, less special-purpose, approach to the
      problem.
      
      eliminateFrameIndex() is modified so the target implementations can return
      the registers they wish to be tracked for reuse.
      
      ARM Thumb1 implements and utilizes the new mechanism. All other targets are
      simply modified to adjust for the changed eliminateFrameIndex() prototype.
      
      llvm-svn: 83467
      fa14dd43
  13. Oct 06, 2009
  14. Oct 05, 2009
  15. Oct 01, 2009
  16. Sep 28, 2009
  17. 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
  18. Sep 24, 2009
  19. Sep 23, 2009
  20. Sep 21, 2009
Loading