xref: /llvm-project/llvm/test/CodeGen/RISCV/align-loops.ll (revision 08165c444e11defd42d417fa88a3dede83b230e5)
1*a1944386SFangrui Song; RUN: llc < %s -mtriple=riscv64 | FileCheck %s
2*a1944386SFangrui Song; RUN: llc < %s -mtriple=riscv64 -align-loops=16 | FileCheck %s -check-prefix=ALIGN_16
3*a1944386SFangrui Song; RUN: llc < %s -mtriple=riscv64 -align-loops=32 | FileCheck %s -check-prefix=ALIGN_32
4*a1944386SFangrui Song
5*a1944386SFangrui Songdeclare void @foo()
6*a1944386SFangrui Song
7*a1944386SFangrui Songdefine void @test(i32 %n, i32 %m) nounwind {
8*a1944386SFangrui Song; CHECK-LABEL:    test:
9*a1944386SFangrui Song; CHECK-NOT:        .p2align
10*a1944386SFangrui Song; CHECK:            ret
11*a1944386SFangrui Song
12*a1944386SFangrui Song; ALIGN_16-LABEL: test:
13*a1944386SFangrui Song; ALIGN_16:         .p2align 4{{$}}
14*a1944386SFangrui Song; ALIGN_16-NEXT:  .LBB0_1: # %outer
15*a1944386SFangrui Song; ALIGN_16:         .p2align 4{{$}}
16*a1944386SFangrui Song; ALIGN_16-NEXT:  .LBB0_2: # %inner
17*a1944386SFangrui Song
18*a1944386SFangrui Song; ALIGN_32-LABEL: test:
19*a1944386SFangrui Song; ALIGN_32:         .p2align 5{{$}}
20*a1944386SFangrui Song; ALIGN_32-NEXT:  .LBB0_1: # %outer
21*a1944386SFangrui Song; ALIGN_32:         .p2align 5{{$}}
22*a1944386SFangrui Song; ALIGN_32-NEXT:  .LBB0_2: # %inner
23*a1944386SFangrui Songentry:
24*a1944386SFangrui Song  br label %outer
25*a1944386SFangrui Song
26*a1944386SFangrui Songouter:
27*a1944386SFangrui Song  %outer.iv = phi i32 [0, %entry], [%outer.iv.next, %outer_bb]
28*a1944386SFangrui Song  br label %inner
29*a1944386SFangrui Song
30*a1944386SFangrui Songinner:
31*a1944386SFangrui Song  %inner.iv = phi i32 [0, %outer], [%inner.iv.next, %inner]
32*a1944386SFangrui Song  call void @foo()
33*a1944386SFangrui Song  %inner.iv.next = add i32 %inner.iv, 1
34*a1944386SFangrui Song  %inner.cond = icmp ne i32 %inner.iv.next, %m
35*a1944386SFangrui Song  br i1 %inner.cond, label %inner, label %outer_bb
36*a1944386SFangrui Song
37*a1944386SFangrui Songouter_bb:
38*a1944386SFangrui Song  %outer.iv.next = add i32 %outer.iv, 1
39*a1944386SFangrui Song  %outer.cond = icmp ne i32 %outer.iv.next, %n
40*a1944386SFangrui Song  br i1 %outer.cond, label %outer, label %exit
41*a1944386SFangrui Song
42*a1944386SFangrui Songexit:
43*a1944386SFangrui Song  ret void
44*a1944386SFangrui Song}
45