| ; 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: .p2align 4 |
| ; CHECK-NOT: .p2align |
| ; 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: .p2align 4 |
| ; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: |
| ; CHECK-NEXT: jr $ra |
| ; CHECK-NEXT: addiu $2, $zero, 111 |
| ; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: |
| ; CHECK-NEXT: jr $ra |
| ; CHECK-NEXT: addiu $2, $zero, 555 |
| ; CHECK-NEXT: .p2align 4 |
| ; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: |
| ; CHECK-NEXT: jr $ra |
| ; CHECK-NEXT: addiu $2, $zero, 222 |
| ; CHECK-NEXT: .p2align 4 |
| ; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: |
| ; CHECK-NEXT: jr $ra |
| ; CHECK-NEXT: addiu $2, $zero, 333 |
| |
| } |
| |
| |
| ; 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*], [2 x i8*]* @bb_array, i32 0, i32 %i |
| %0 = load i8*, 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: .p2align 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: .p2align 4 |
| ; CHECK-NEXT: ${{[a-zA-Z0-9]+}}: |
| ; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: |
| ; CHECK-NEXT: jr $ra |
| ; CHECK-NEXT: addiu $2, $zero, 222 |
| |
| } |