Skip to content
  1. Oct 22, 2009
  2. Oct 01, 2009
  3. Sep 29, 2009
  4. Sep 27, 2009
  5. Sep 26, 2009
  6. Sep 25, 2009
    • Evan Cheng's avatar
      fd6aad7f
    • 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
  7. Sep 11, 2009
  8. Aug 18, 2009
    • Jakob Stoklund Olesen's avatar
      Simplify RegScavenger::FindUnusedReg. · 36d74774
      Jakob Stoklund Olesen authored
      - Drop the Candidates argument and fix all callers. Now that RegScavenger
        tracks available registers accurately, there is no need to restict the
        search.
      - Make sure that no aliases of the found register are in use. This was a potential bug.
      
      llvm-svn: 79369
      36d74774
  9. Aug 13, 2009
  10. Aug 11, 2009
  11. Aug 08, 2009
  12. Aug 07, 2009
    • Evan Cheng's avatar
      It turns out most of the thumb2 instructions are not allowed to touch SP. The... · b972e563
      Evan Cheng authored
      It turns out most of the thumb2 instructions are not allowed to touch SP. The semantics of such instructions are unpredictable. We have just been lucky that tests have been passing.
      
      This patch takes pain to ensure all the PEI lowering code does the right thing when lowering frame indices, insert code to manipulate stack pointers, etc. It's also custom lowering dynamic stack alloc into pseudo instructions so we can insert the right instructions at scheduling time.
      
      This fixes PR4659 and PR4682.
      
      llvm-svn: 78361
      b972e563
  13. Aug 04, 2009
  14. Jul 14, 2009
  15. Jul 11, 2009
    • Evan Cheng's avatar
      Major changes to Thumb (not Thumb2). Many 16-bit instructions either modifies... · cd4cdd11
      Evan Cheng authored
      Major changes to Thumb (not Thumb2). Many 16-bit instructions either modifies CPSR  when they are outside the IT blocks, or they can predicated when in Thumb2. Move the implicit def of CPSR to an optional def which defaults CPSR. This allows the 's' bit to be toggled dynamically.
      
      A side-effect of this change is asm printer is now using unified assembly. There are some minor clean ups and fixes as well.
      
      llvm-svn: 75359
      cd4cdd11
  16. Jul 10, 2009
  17. Jul 08, 2009
  18. Jun 20, 2009
  19. Jun 19, 2009
  20. Jun 18, 2009
    • Evan Cheng's avatar
      - Update register allocation hint after coalescing. This is done by the target... · 0e796035
      Evan Cheng authored
      - Update register allocation hint after coalescing. This is done by the target since the hint is target dependent. This is important for ARM register pair hints.
      - Register allocator should resolve the second part of the hint (register number) before passing it to the target since it knows virtual register to physical register mapping.
      - More fixes to get ARM load / store double word working.
      
      llvm-svn: 73671
      0e796035
  21. Jun 15, 2009
    • Evan Cheng's avatar
      Typo. · ad0dba58
      Evan Cheng authored
      llvm-svn: 73422
      ad0dba58
    • Evan Cheng's avatar
      eba57e41
    • Evan Cheng's avatar
      Silence a warning. · 1cf0f193
      Evan Cheng authored
      llvm-svn: 73406
      1cf0f193
    • Evan Cheng's avatar
      Part 1. · 1283c6a0
      Evan Cheng authored
      - Change register allocation hint to a pair of unsigned integers. The hint type is zero (which means prefer the register specified as second part of the pair) or entirely target dependent.
      - Allow targets to specify alternative register allocation orders based on allocation hint.
      
      Part 2.
      - Use the register allocation hint system to implement more aggressive load / store multiple formation.
      - Aggressively form LDRD / STRD. These are formed *before* register allocation. It has to be done this way to shorten live interval of base and offset registers. e.g.
      v1025 = LDR v1024, 0
      v1026 = LDR v1024, 0
      =>
      v1025,v1026 = LDRD v1024, 0
      
      If this transformation isn't done before allocation, v1024 will overlap v1025 which means it more difficult to allocate a register pair.
      
      - Even with the register allocation hint, it may not be possible to get the desired allocation. In that case, the post-allocation load / store multiple pass must fix the ldrd / strd instructions. They can either become ldm / stm instructions or back to a pair of ldr / str instructions.
      
      This is work in progress, not yet enabled.
      
      llvm-svn: 73381
      1283c6a0
  22. Jun 13, 2009
  23. Jun 05, 2009
  24. Jun 04, 2009
  25. Jun 03, 2009
  26. May 13, 2009
    • Bill Wendling's avatar
      Change MachineInstrBuilder::addReg() to take a flag instead of a list of · f7b83c7a
      Bill Wendling authored
      booleans. This gives a better indication of what the "addReg()" is
      doing. Remembering what all of those booleans mean isn't easy, especially if you
      aren't spending all of your time in that code.
      
      I took Jakob's suggestion and made it illegal to pass in "true" for the
      flag. This should hopefully prevent any unintended misuse of this (by reverting
      to the old way of using addReg()).
      
      llvm-svn: 71722
      f7b83c7a
  27. Feb 13, 2009
  28. Oct 03, 2008
Loading