diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2013-07-01 19:44:44 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2013-07-01 19:44:44 +0000 |
commit | 27253f5edd04791bfbd0b5dd6e228be1d8071fce (patch) | |
tree | 2b254a5e68e685a6c1d8e2df0e03985db744a28b /test/CodeGen/MSP430 | |
parent | 03fae50cfa5631349fbd47f4c232fc78f5b3b8af (diff) | |
download | external_llvm-27253f5edd04791bfbd0b5dd6e228be1d8071fce.zip external_llvm-27253f5edd04791bfbd0b5dd6e228be1d8071fce.tar.gz external_llvm-27253f5edd04791bfbd0b5dd6e228be1d8071fce.tar.bz2 |
Add jump tables handling for MSP430.
Patch by Job Noorman!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185364 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/MSP430')
-rw-r--r-- | test/CodeGen/MSP430/jumptable.ll | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/test/CodeGen/MSP430/jumptable.ll b/test/CodeGen/MSP430/jumptable.ll new file mode 100644 index 0000000..7e92420 --- /dev/null +++ b/test/CodeGen/MSP430/jumptable.ll @@ -0,0 +1,54 @@ +; RUN: llc -O0 < %s | FileCheck %s + +target datalayout = "e-p:16:16:16-i8:8:8-i16:16:16-i32:16:32-n8:16" +target triple = "msp430---elf" + +; Function Attrs: nounwind +define i16 @test(i16 %i) #0 { +entry: +; CHECK: test: + %retval = alloca i16, align 2 + %i.addr = alloca i16, align 2 + store i16 %i, i16* %i.addr, align 2 + %0 = load i16* %i.addr, align 2 +; CHECK: add.w #.LJTI0_0, [[REG1:r[0-9]+]] +; CHECK: mov.w 0([[REG1]]), [[REG2:r[0-9]+]] +; CHECK: br [[REG2]] + switch i16 %0, label %sw.default [ + i16 0, label %sw.bb + i16 1, label %sw.bb1 + i16 2, label %sw.bb2 + i16 3, label %sw.bb3 + ] + +sw.bb: ; preds = %entry + store i16 0, i16* %retval + br label %return + +sw.bb1: ; preds = %entry + store i16 1, i16* %retval + br label %return + +sw.bb2: ; preds = %entry + store i16 2, i16* %retval + br label %return + +sw.bb3: ; preds = %entry + store i16 3, i16* %retval + br label %return + +sw.default: ; preds = %entry + store i16 2, i16* %retval + br label %return + +return: ; preds = %sw.default, %sw.bb3, %sw.bb2, %sw.bb1, %sw.bb + %1 = load i16* %retval + ret i16 %1 +; CHECK: ret +} + +; CHECK: .LJTI0_0: +; CHECK-NEXT: .short .LBB0_2 +; CHECK-NEXT: .short .LBB0_3 +; CHECK-NEXT: .short .LBB0_4 +; CHECK-NEXT: .short .LBB0_5 |