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