Add a note.
authorEvan Cheng <evan.cheng@apple.com>
Thu, 1 Feb 2007 02:46:20 +0000 (02:46 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Thu, 1 Feb 2007 02:46:20 +0000 (02:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33743 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/README-Thumb.txt

index dd0d265af38f19a007f0d93ea668c3ee24d57abc..3bb8695b3a387ff37254f496dc16dbc1bd06680b 100644 (file)
@@ -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