From 736cefff8551d0f76ad5d8c726fe267eb0ee22d5 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Thu, 1 Feb 2007 02:46:20 +0000 Subject: [PATCH] Add a note. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33743 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/README-Thumb.txt | 61 +++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/lib/Target/ARM/README-Thumb.txt b/lib/Target/ARM/README-Thumb.txt index dd0d265af38..3bb8695b3a3 100644 --- a/lib/Target/ARM/README-Thumb.txt +++ b/lib/Target/ARM/README-Thumb.txt @@ -63,3 +63,64 @@ LPCRELL0: ldr r0, LCPI1_0 => ldr r0, pc, #((LCPI1_0-(LPCRELL0+4))&0xfffffffc) + + +//===---------------------------------------------------------------------===// + +We compiles the following using a jump table. + +define i16 @func_entry_2E_ce(i32 %i) { +newFuncRoot: + br label %entry.ce + +bb12.exitStub: ; preds = %entry.ce + ret i16 0 + +bb4.exitStub: ; preds = %entry.ce, %entry.ce, %entry.ce + ret i16 1 + +bb9.exitStub: ; preds = %entry.ce, %entry.ce, %entry.ce + ret i16 2 + +bb.exitStub: ; preds = %entry.ce + ret i16 3 + +entry.ce: ; preds = %newFuncRoot + switch i32 %i, label %bb12.exitStub [ + i32 0, label %bb4.exitStub + i32 1, label %bb9.exitStub + i32 2, label %bb4.exitStub + i32 3, label %bb4.exitStub + i32 7, label %bb9.exitStub + i32 8, label %bb.exitStub + i32 9, label %bb9.exitStub + ] +} + +gcc compiles to: + + cmp r0, #9 + @ lr needed for prologue + bhi L2 + ldr r3, L11 + mov r2, #1 + mov r1, r2, asl r0 + ands r0, r3, r2, asl r0 + movne r0, #2 + bxne lr + tst r1, #13 + beq L9 +L3: + mov r0, r2 + bx lr +L9: + tst r1, #256 + movne r0, #3 + bxne lr +L2: + mov r0, #0 + bx lr +L12: + .align 2 +L11: + .long 642 -- 2.34.1