1 ; RUN: llc -filetype=asm -mtriple=mipsel-none-nacl -relocation-model=static \ 2 ; RUN: -O3 < %s | FileCheck %s 3 4 5 ; This test tests that NaCl functions are bundle-aligned. 6 7 define void @test0() { 8 ret void 9 10 ; CHECK: .align 4 11 ; CHECK-NOT: .align 12 ; CHECK-LABEL: test0: 13 14 } 15 16 17 ; This test tests that blocks that are jumped to through jump table are 18 ; bundle-aligned. 19 20 define i32 @test1(i32 %i) { 21 entry: 22 switch i32 %i, label %default [ 23 i32 0, label %bb1 24 i32 1, label %bb2 25 i32 2, label %bb3 26 i32 3, label %bb4 27 ] 28 29 bb1: 30 ret i32 111 31 bb2: 32 ret i32 222 33 bb3: 34 ret i32 333 35 bb4: 36 ret i32 444 37 default: 38 ret i32 555 39 40 41 ; CHECK-LABEL: test1: 42 43 ; CHECK: .align 4 44 ; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: 45 ; CHECK-NEXT: jr $ra 46 ; CHECK-NEXT: addiu $2, $zero, 111 47 ; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: 48 ; CHECK-NEXT: jr $ra 49 ; CHECK-NEXT: addiu $2, $zero, 555 50 ; CHECK-NEXT: .align 4 51 ; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: 52 ; CHECK-NEXT: jr $ra 53 ; CHECK-NEXT: addiu $2, $zero, 222 54 ; CHECK-NEXT: .align 4 55 ; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: 56 ; CHECK-NEXT: jr $ra 57 ; CHECK-NEXT: addiu $2, $zero, 333 58 59 } 60 61 62 ; This test tests that a block whose address is taken is bundle-aligned in NaCl. 63 64 @bb_array = constant [2 x i8*] [i8* blockaddress(@test2, %bb1), 65 i8* blockaddress(@test2, %bb2)], align 4 66 67 define i32 @test2(i32 %i) { 68 entry: 69 %elementptr = getelementptr inbounds [2 x i8*], [2 x i8*]* @bb_array, i32 0, i32 %i 70 %0 = load i8*, i8** %elementptr, align 4 71 indirectbr i8* %0, [label %bb1, label %bb2] 72 73 bb1: 74 ret i32 111 75 bb2: 76 ret i32 222 77 78 79 ; CHECK-LABEL: test2: 80 81 ; Note that there are two consecutive labels - one temporary and one for 82 ; basic block. 83 84 ; CHECK: .align 4 85 ; CHECK-NEXT: ${{[a-zA-Z0-9]+}}: 86 ; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: 87 ; CHECK-NEXT: jr $ra 88 ; CHECK-NEXT: addiu $2, $zero, 111 89 ; CHECK-NEXT: .align 4 90 ; CHECK-NEXT: ${{[a-zA-Z0-9]+}}: 91 ; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: 92 ; CHECK-NEXT: jr $ra 93 ; CHECK-NEXT: addiu $2, $zero, 222 94 95 } 96