Skip to content
  1. Nov 07, 2009
  2. Nov 02, 2009
  3. Nov 01, 2009
  4. Oct 28, 2009
  5. Sep 15, 2009
    • Bob Wilson's avatar
      Handle AddrMode4 for Thumb2 in rewriteT2FrameIndex. This occurs for · 967bf27d
      Bob Wilson authored
      VLDM/VSTM instructions, and without this check, the code assumes that an
      offset is allowed, as it would be with VLDR/VSTR.  The asm printer,
      however, silently drops the offset, producing incorrect code.  Since the
      address register in this case is either the stack or frame pointer, the
      spill location ends up conflicting with some other stack slot or with
      outgoing arguments on the stack.
      
      llvm-svn: 81879
      967bf27d
  6. Aug 27, 2009
  7. Aug 11, 2009
  8. Aug 10, 2009
  9. Aug 07, 2009
  10. Aug 03, 2009
  11. Aug 02, 2009
  12. Jul 29, 2009
  13. 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
  14. Jul 27, 2009
  15. Jul 25, 2009
    • Evan Cheng's avatar
      Get rid of a couple of unnecessary getOpcode calls. · c1a5cfa9
      Evan Cheng authored
      llvm-svn: 77035
      c1a5cfa9
    • 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
  16. Jul 24, 2009
  17. Jul 23, 2009
  18. Jul 17, 2009
  19. 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
  20. Jul 10, 2009
  21. Jul 09, 2009
  22. Jul 08, 2009
  23. Jul 03, 2009
  24. Jun 27, 2009
  25. Jun 26, 2009
Loading