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 7define 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 20define i32 @test1(i32 %i) { 21entry: 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 29bb1: 30 ret i32 111 31bb2: 32 ret i32 222 33bb3: 34 ret i32 333 35bb4: 36 ret i32 444 37default: 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: .align 4 48; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: 49; CHECK-NEXT: jr $ra 50; CHECK-NEXT: addiu $2, $zero, 222 51; CHECK-NEXT: .align 4 52; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: 53; CHECK-NEXT: jr $ra 54; CHECK-NEXT: addiu $2, $zero, 333 55; CHECK-NEXT: .align 4 56; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: 57; CHECK-NEXT: jr $ra 58; CHECK-NEXT: addiu $2, $zero, 444 59 60} 61 62 63; This test tests that a block whose address is taken is bundle-aligned in NaCl. 64 65@bb_array = constant [2 x i8*] [i8* blockaddress(@test2, %bb1), 66 i8* blockaddress(@test2, %bb2)], align 4 67 68define i32 @test2(i32 %i) { 69entry: 70 %elementptr = getelementptr inbounds [2 x i8*]* @bb_array, i32 0, i32 %i 71 %0 = load i8** %elementptr, align 4 72 indirectbr i8* %0, [label %bb1, label %bb2] 73 74bb1: 75 ret i32 111 76bb2: 77 ret i32 222 78 79 80; CHECK-LABEL: test2: 81 82; Note that there are two consecutive labels - one temporary and one for 83; basic block. 84 85; CHECK: .align 4 86; CHECK-NEXT: ${{[a-zA-Z0-9]+}}: 87; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: 88; CHECK-NEXT: jr $ra 89; CHECK-NEXT: addiu $2, $zero, 111 90; CHECK-NEXT: .align 4 91; CHECK-NEXT: ${{[a-zA-Z0-9]+}}: 92; CHECK-NEXT: ${{BB[0-9]+_[0-9]+}}: 93; CHECK-NEXT: jr $ra 94; CHECK-NEXT: addiu $2, $zero, 222 95 96} 97