summaryrefslogtreecommitdiff
path: root/test/CodeGen/Mips/nacl-align.ll
diff options
context:
space:
mode:
authorSasa Stankovic <Sasa.Stankovic@imgtec.com>2014-03-07 22:08:46 +0000
committerSasa Stankovic <Sasa.Stankovic@imgtec.com>2014-03-07 22:08:46 +0000
commitfa14948a116b8f7b82f36224f7a42c953e376b3e (patch)
treebf42d95ace72907b69b3f99a703586b0c2dda9bc /test/CodeGen/Mips/nacl-align.ll
parent1630c3cd32ae9d84b635b2c106502ea3570b12f6 (diff)
downloadllvm-fa14948a116b8f7b82f36224f7a42c953e376b3e.tar.gz
llvm-fa14948a116b8f7b82f36224f7a42c953e376b3e.tar.bz2
llvm-fa14948a116b8f7b82f36224f7a42c953e376b3e.tar.xz
Moved test file from test/MC/Mips to test/CodeGen/Mips.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203298 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/Mips/nacl-align.ll')
-rw-r--r--test/CodeGen/Mips/nacl-align.ll96
1 files changed, 96 insertions, 0 deletions
diff --git a/test/CodeGen/Mips/nacl-align.ll b/test/CodeGen/Mips/nacl-align.ll
new file mode 100644
index 0000000000..e61b834776
--- /dev/null
+++ b/test/CodeGen/Mips/nacl-align.ll
@@ -0,0 +1,96 @@
+; RUN: llc -filetype=asm -mtriple=mipsel-none-nacl -relocation-model=static \
+; RUN: -O3 < %s | FileCheck %s
+
+
+; This test tests that NaCl functions are bundle-aligned.
+
+define void @test0() {
+ ret void
+
+; CHECK: .align 4
+; CHECK-NOT: .align
+; CHECK-LABEL: test0:
+
+}
+
+
+; This test tests that blocks that are jumped to through jump table are
+; bundle-aligned.
+
+define i32 @test1(i32 %i) {
+entry:
+ switch i32 %i, label %default [
+ i32 0, label %bb1
+ i32 1, label %bb2
+ i32 2, label %bb3
+ i32 3, label %bb4
+ ]
+
+bb1:
+ ret i32 111
+bb2:
+ ret i32 222
+bb3:
+ ret i32 333
+bb4:
+ ret i32 444
+default:
+ ret i32 555
+
+
+; CHECK-LABEL: test1:
+
+; CHECK: .align 4
+; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}:
+; CHECK-NEXT: jr $ra
+; CHECK-NEXT: addiu $2, $zero, 111
+; CHECK-NEXT: .align 4
+; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}:
+; CHECK-NEXT: jr $ra
+; CHECK-NEXT: addiu $2, $zero, 222
+; CHECK-NEXT: .align 4
+; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}:
+; CHECK-NEXT: jr $ra
+; CHECK-NEXT: addiu $2, $zero, 333
+; CHECK-NEXT: .align 4
+; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}:
+; CHECK-NEXT: jr $ra
+; CHECK-NEXT: addiu $2, $zero, 444
+
+}
+
+
+; This test tests that a block whose address is taken is bundle-aligned in NaCl.
+
+@bb_array = constant [2 x i8*] [i8* blockaddress(@test2, %bb1),
+ i8* blockaddress(@test2, %bb2)], align 4
+
+define i32 @test2(i32 %i) {
+entry:
+ %elementptr = getelementptr inbounds [2 x i8*]* @bb_array, i32 0, i32 %i
+ %0 = load i8** %elementptr, align 4
+ indirectbr i8* %0, [label %bb1, label %bb2]
+
+bb1:
+ ret i32 111
+bb2:
+ ret i32 222
+
+
+; CHECK-LABEL: test2:
+
+; Note that there are two consecutive labels - one temporary and one for
+; basic block.
+
+; CHECK: .align 4
+; CHECK-NEXT: ${{[a-zA-Z0-9]+}}:
+; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}:
+; CHECK-NEXT: jr $ra
+; CHECK-NEXT: addiu $2, $zero, 111
+; CHECK-NEXT: .align 4
+; CHECK-NEXT: ${{[a-zA-Z0-9]+}}:
+; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}:
+; CHECK-NEXT: jr $ra
+; CHECK-NEXT: addiu $2, $zero, 222
+
+}