Skip to content
  1. Aug 13, 2010
  2. Aug 11, 2010
  3. Aug 10, 2010
  4. Aug 08, 2010
  5. Jul 31, 2010
  6. Jul 30, 2010
    • Jim Grosbach's avatar
      Many Thumb2 instructions can reference the full ARM register set (i.e., · d343166a
      Jim Grosbach authored
      have 4 bits per register in the operand encoding), but have undefined
      behavior when the operand value is 13 or 15 (SP and PC, respectively).
      The trivial coalescer in linear scan sometimes will merge a copy from
      SP into a subsequent instruction which uses the copy, and if that
      instruction cannot legally reference SP, we get bad code such as:
        mls r0,r9,r0,sp
      instead of:
        mov r2, sp
        mls r0, r9, r0, r2
      
      This patch adds a new register class for use by Thumb2 that excludes
      the problematic registers (SP and PC) and is used instead of GPR
      for those operands which cannot legally reference PC or SP. The
      trivial coalescer explicitly requires that the register class
      of the destination for the COPY instruction contain the source
      register for the COPY to be considered for coalescing. This prevents
      errant instructions like that above.
      
      PR7499
      
      llvm-svn: 109842
      d343166a
    • Nate Begeman's avatar
      c4a96c0e
  7. Jul 29, 2010
  8. Jul 20, 2010
  9. Jul 17, 2010
  10. Jul 14, 2010
  11. Jun 29, 2010
  12. Jun 24, 2010
  13. Jun 21, 2010
  14. Jun 19, 2010
    • Evan Cheng's avatar
      Allow ARM if-converter to be run after post allocation scheduling. · 2d51c7c5
      Evan Cheng authored
      - This fixed a number of bugs in if-converter, tail merging, and post-allocation
        scheduler. If-converter now runs branch folding / tail merging first to
        maximize if-conversion opportunities.
      - Also changed the t2IT instruction slightly. It now defines the ITSTATE
        register which is read by instructions in the IT block.
      - Added Thumb2 specific hazard recognizer to ensure the scheduler doesn't
        change the instruction ordering in the IT block (since IT mask has been
        finalized). It also ensures no other instructions can be scheduled between
        instructions in the IT block.
      
      This is not yet enabled.
      
      llvm-svn: 106344
      2d51c7c5
  15. Jun 02, 2010
  16. May 28, 2010
  17. May 26, 2010
  18. May 25, 2010
  19. May 24, 2010
  20. May 19, 2010
  21. May 16, 2010
  22. May 06, 2010
  23. May 05, 2010
  24. Apr 09, 2010
  25. Mar 16, 2010
  26. Mar 13, 2010
    • Bob Wilson's avatar
      Change ARM ld/st multiple instructions to have variant instructions for · 947f04ba
      Bob Wilson authored
      writebacks to the address register.  This gets rid of the hack that the
      first register on the list was the magic writeback register operand.  There
      was an implicit constraint that if that operand was not reg0 it had to match
      the base register operand.  The post-RA scheduler's antidependency breaker
      did not understand that constraint and sometimes changed one without the
      other.  This also fixes Radar 7495976 and should help the verifier work
      better for ARM code.
      
      There are now new ld/st instructions explicit writeback operands and explicit
      constraints that tie those registers together.
      
      llvm-svn: 98409
      947f04ba
  27. Mar 11, 2010
Loading