Skip to content
  1. Oct 22, 2009
  2. Sep 28, 2009
  3. Aug 22, 2009
  4. Aug 04, 2009
  5. Aug 02, 2009
  6. Jul 28, 2009
    • Evan Cheng's avatar
      - More refactoring. This gets rid of all of the getOpcode calls. · 780748d5
      Evan Cheng authored
      - This change also makes it possible to switch between ARM / Thumb on a
        per-function basis.
      - Fixed thumb2 routine which expand reg + arbitrary immediate. It was using
        using ARM so_imm logic.
      - Use movw and movt to do reg + imm when profitable.
      - Other code clean ups and minor optimizations.
      
      llvm-svn: 77300
      780748d5
  7. Jul 27, 2009
  8. Jul 25, 2009
    • Evan Cheng's avatar
      Change Thumb2 jumptable codegen to one that uses two level jumps: · f3a1fce8
      Evan Cheng authored
      Before:
            adr r12, #LJTI3_0_0
            ldr pc, [r12, +r0, lsl #2]
      LJTI3_0_0:
            .long    LBB3_24
            .long    LBB3_30
            .long    LBB3_31
            .long    LBB3_32
      
      After:
            adr r12, #LJTI3_0_0
            add pc, r12, +r0, lsl #2
      LJTI3_0_0:
            b.w    LBB3_24
            b.w    LBB3_30
            b.w    LBB3_31
            b.w    LBB3_32
      
      This has several advantages.
      1. This will make it easier to optimize this to a TBB / TBH instruction +
         (smaller) table.
      2. This eliminate the need for ugly asm printer hack to force the address
         into thumb addresses (bit 0 is one).
      3. Same codegen for pic and non-pic.
      4. This eliminate the need to align the table so constantpool island pass
         won't have to over-estimate the size.
      
      Based on my calculation, the later is probably slightly faster as well since
      ldr pc with shifter address is very slow. That is, it should be a win as long
      as the HW implementation can do a reasonable job of branch predict the second
      branch.
      
      llvm-svn: 77024
      f3a1fce8
  9. Jul 24, 2009
  10. Jul 23, 2009
  11. Jul 16, 2009
  12. Jul 08, 2009
  13. Jul 03, 2009
  14. Jul 01, 2009
  15. Jun 30, 2009
  16. Jun 27, 2009
  17. Jun 26, 2009
  18. Jun 23, 2009
  19. Jun 16, 2009
  20. May 14, 2009
  21. 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
    • Jim Grosbach's avatar
      Add support for GCC compatible builtin setjmp and longjmp intrinsics. This is · aeca45dd
      Jim Grosbach authored
      a supporting preliminary patch for GCC-compatible SjLJ exception handling. Note that these intrinsics are not designed to be invoked directly by the user, but
      rather used by the front-end as target hooks for exception handling.
      
      llvm-svn: 71610
      aeca45dd
  22. Apr 07, 2009
    • Jim Grosbach's avatar
      PR2985 / <rdar://problem/6584986> · fde2110a
      Jim Grosbach authored
      When compiling in Thumb mode, only the low (R0-R7) registers are available
      for most instructions. Breaking the low registers into a new register class
      handles this. Uses of R12, SP, etc, are handled explicitly where needed
      with copies inserted to move results into low registers where the rest of
      the code generator can deal with them.
      
      llvm-svn: 68545
      fde2110a
  23. Apr 03, 2009
  24. Feb 18, 2009
  25. Feb 13, 2009
  26. Feb 12, 2009
  27. Feb 09, 2009
  28. Feb 06, 2009
Loading