llvm/test/CodeGen/Thumb2
Evan Cheng 66ac53165e Change Thumb2 jumptable codegen to one that uses two level jumps:
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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77024 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-25 00:33:29 +00:00
..
2009-07-17-CrossRegClassCopy.ll Emit cross regclass register moves for thumb2. 2009-07-16 23:26:06 +00:00
2009-07-21-ISelBug.ll Do not select tSXTB / tSXTH in thumb2 mode. 2009-07-21 18:15:26 +00:00
2009-07-23-CPIslandBug.ll Fix up ARM constant island pass for Thumb2. 2009-07-23 18:27:47 +00:00
carry.ll Use "adcs/sbcs" only when the carry-out is live, otherwise use "adc/sbc". 2009-06-26 20:45:56 +00:00
dg.exp
load-global.ll Fix these tests. 2009-07-24 22:42:22 +00:00
mul_const.ll Fix ARM isle code that optimize multiply by constants which are power-of-2 +/- 1. 2009-07-21 00:31:12 +00:00
pic-load.ll Fix these tests. 2009-07-24 22:42:22 +00:00
thumb2-adc2.ll Use "adcs/sbcs" only when the carry-out is live, otherwise use "adc/sbc". 2009-06-26 20:45:56 +00:00
thumb2-adc.ll Thumb-2 tests 2009-06-29 22:25:22 +00:00
thumb2-add2.ll Thumb-2 tests 2009-06-29 22:25:22 +00:00
thumb2-add3.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-add4.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-add5.ll Enhance tests to include shifted-register operand testing. 2009-06-30 01:02:20 +00:00
thumb2-add6.ll More spelling Count as count. 2009-06-26 18:35:07 +00:00
thumb2-add.ll
thumb2-and2.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-and.ll Enhance tests to include shifted-register operand testing. 2009-06-30 01:02:20 +00:00
thumb2-asr2.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-asr.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-bcc.ll Don't put IT instruction before conditional branches. 2009-07-11 07:26:20 +00:00
thumb2-bfc.ll Fix detection of valid BFC immediates. 2009-07-14 00:57:56 +00:00
thumb2-bic2.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-bic.ll Enhance tests to include shifted-register operand testing. 2009-06-30 01:02:20 +00:00
thumb2-clz.ll Thumb-2 has CLZ. 2009-06-26 20:47:43 +00:00
thumb2-cmn2.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-cmn.ll Enhance tests to include shifted-register operand testing. 2009-06-30 01:02:20 +00:00
thumb2-cmp2.ll Enhance tests to include shifted-register operand testing. 2009-06-30 01:02:20 +00:00
thumb2-cmp.ll Enhance tests to include shifted-register operand testing. 2009-06-30 01:02:20 +00:00
thumb2-eor2.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-eor.ll Enhance tests to include shifted-register operand testing. 2009-06-30 01:02:20 +00:00
thumb2-jtbl.ll Change Thumb2 jumptable codegen to one that uses two level jumps: 2009-07-25 00:33:29 +00:00
thumb2-ldr_ext.ll A few more load instructions. 2009-06-30 02:15:48 +00:00
thumb2-ldr_post.ll Thumb2 pre/post indexed loads. 2009-07-02 07:28:31 +00:00
thumb2-ldr_pre.ll Sign extending pre/post indexed loads. 2009-07-02 23:16:11 +00:00
thumb2-ldr.ll Implement Thumb2 ldr. 2009-06-29 07:51:04 +00:00
thumb2-ldrb.ll A few more load instructions. 2009-06-30 02:15:48 +00:00
thumb2-ldrh.ll A few more load instructions. 2009-06-30 02:15:48 +00:00
thumb2-lsl2.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-lsl.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-lsr2.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-lsr.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-mla.ll More spelling Count as count. 2009-06-26 18:35:07 +00:00
thumb2-mls.ll More spelling Count as count. 2009-06-26 18:35:07 +00:00
thumb2-mov2.ll
thumb2-mov3.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-mov4.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-mov.ll
thumb2-mul.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-mulhi.ll Use common code for both ARM and Thumb-2 instruction and register info. 2009-07-08 23:10:31 +00:00
thumb2-mvn2.ll Enhance tests to include shifted-register operand testing. 2009-06-30 01:02:20 +00:00
thumb2-mvn.ll Fix spelling of 'count' 2009-06-26 01:33:02 +00:00
thumb2-neg.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-orn2.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-orn.ll Enhance tests to include shifted-register operand testing. 2009-06-30 01:02:20 +00:00
thumb2-orr2.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-orr.ll Enhance tests to include shifted-register operand testing. 2009-06-30 01:02:20 +00:00
thumb2-pack.ll Add Thumb2 pkhbt / pkhtb. 2009-07-07 05:35:52 +00:00
thumb2-rev16.ll Add rev16 test... xfail for now 2009-07-08 16:15:06 +00:00
thumb2-rev.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-ror2.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-ror.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-rsb2.ll Thumb-2 tests 2009-06-26 22:37:07 +00:00
thumb2-rsb.ll Enhance tests to include shifted-register operand testing. 2009-06-30 01:02:20 +00:00
thumb2-sbc2.ll Thumb-2 tests 2009-06-29 22:25:22 +00:00
thumb2-select_xform.ll Add a thumb2 pass to insert IT blocks. 2009-07-10 01:54:42 +00:00
thumb2-select.ll convert test to use FileCheck, which is much more precise and faster than 2009-07-10 18:34:47 +00:00
thumb2-shifter.ll
thumb2-smla.ll Add some more Thumb2 multiplication instructions. 2009-07-07 01:17:28 +00:00
thumb2-smul.ll Add some more Thumb2 multiplication instructions. 2009-07-07 01:17:28 +00:00
thumb2-str_post.ll Added indexed stores. 2009-07-03 00:06:39 +00:00
thumb2-str_pre.ll Added indexed stores. 2009-07-03 00:06:39 +00:00
thumb2-str.ll Add thumb-2 store word, halfword, and byte. 2009-06-30 22:11:34 +00:00
thumb2-strb.ll Add thumb-2 store word, halfword, and byte. 2009-06-30 22:11:34 +00:00
thumb2-strh.ll Add thumb-2 store word, halfword, and byte. 2009-06-30 22:11:34 +00:00
thumb2-sub2.ll Thumb-2 tests 2009-06-29 22:25:22 +00:00
thumb2-sub4.ll Enhance tests to include shifted-register operand testing. 2009-06-30 01:02:20 +00:00
thumb2-sub5.ll Thumb-2 tests 2009-06-29 22:25:22 +00:00
thumb2-sub.ll Thumb-2 tests 2009-06-29 22:25:22 +00:00
thumb2-sxt_rot.ll Add thumb2 sign / zero extend with rotate instructions. 2009-07-03 01:43:10 +00:00
thumb2-teq2.ll Enhance tests to include shifted-register operand testing. 2009-06-30 01:02:20 +00:00
thumb2-teq.ll Add Thumb-2 support for TEQ amd TST. 2009-06-29 22:49:42 +00:00
thumb2-tst2.ll Enhance tests to include shifted-register operand testing. 2009-06-30 01:02:20 +00:00
thumb2-tst.ll Add Thumb-2 support for TEQ amd TST. 2009-06-29 22:49:42 +00:00
thumb2-uxt_rot.ll Add thumb2 sign / zero extend with rotate instructions. 2009-07-03 01:43:10 +00:00
thumb2-uxtb.ll Add thumb2 sign / zero extend with rotate instructions. 2009-07-03 01:43:10 +00:00
tls1.ll Add PIC load and store patterns for Thumb-2. 2009-07-01 00:01:13 +00:00
tls2.ll Add PIC load and store patterns for Thumb-2. 2009-07-01 00:01:13 +00:00