Skip to content
  1. Oct 21, 2009
  2. Oct 20, 2009
  3. Oct 14, 2009
  4. Oct 13, 2009
  5. Oct 10, 2009
  6. Oct 06, 2009
  7. Oct 01, 2009
  8. Sep 30, 2009
  9. Sep 28, 2009
  10. Sep 09, 2009
  11. Sep 04, 2009
  12. Sep 01, 2009
  13. Aug 28, 2009
  14. Aug 27, 2009
  15. Aug 21, 2009
  16. Aug 19, 2009
  17. Aug 13, 2009
  18. Aug 12, 2009
  19. Aug 11, 2009
  20. Aug 09, 2009
  21. Aug 08, 2009
  22. Aug 06, 2009
  23. Aug 04, 2009
  24. Jul 29, 2009
  25. Jul 28, 2009
  26. 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
Loading