summaryrefslogtreecommitdiff
path: root/lib/Target/ARM/README-Thumb.txt
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2007-02-01 02:46:20 +0000
committerEvan Cheng <evan.cheng@apple.com>2007-02-01 02:46:20 +0000
commit736cefff8551d0f76ad5d8c726fe267eb0ee22d5 (patch)
tree911f8f1545c4e5564a6551d32c4281964dc8cc9e /lib/Target/ARM/README-Thumb.txt
parentac94c58319f251153812fe688a7176515c1d4583 (diff)
downloadllvm-736cefff8551d0f76ad5d8c726fe267eb0ee22d5.tar.gz
llvm-736cefff8551d0f76ad5d8c726fe267eb0ee22d5.tar.bz2
llvm-736cefff8551d0f76ad5d8c726fe267eb0ee22d5.tar.xz
Add a note.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33743 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/README-Thumb.txt')
-rw-r--r--lib/Target/ARM/README-Thumb.txt61
1 files changed, 61 insertions, 0 deletions
diff --git a/lib/Target/ARM/README-Thumb.txt b/lib/Target/ARM/README-Thumb.txt
index dd0d265af3..3bb8695b3a 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