94 lines · plain
1; RUN: llc -O2 < %s | FileCheck %s2 3target triple = "powerpc64le-grtev4-linux-gnu"4 5; No duplication of loop header into entry block.6define void @no_duplicate1(i64 %a) {7; CHECK-LABEL: no_duplicate18; CHECK: mr 30, 39; CHECK-NEXT: std 0, 64(1)10; CHECK-NEXT: b .LBB0_211 12; CHECK: .LBB0_2:13; CHECK-NEXT: # =>This Inner Loop Header: Depth=114; CHECK-NEXT: cmpldi 30, 10015; CHECK-NEXT: bne 0, .LBB0_116entry:17 br label %header18 19header:20 %ind = phi i64 [%a, %entry], [%val3, %latch]21 %cond1 = icmp eq i64 %ind, 10022 br i1 %cond1, label %middle, label %latch23 24middle:25 %condx = call i1 @foo()26 %val1 = xor i64 %ind, 227 br label %latch28 29latch:30 %val2 = phi i64 [%ind, %header], [%val1, %middle]31 %val3 = add i64 %val2, 132 %cond2 = call i1 @foo()33 br i1 %cond2, label %end, label %header34 35end:36 ret void37}38 39; No duplication of loop header into latches.40define void @no_duplicate2(i64 %a) {41; CHECK-LABEL: no_duplicate242; CHECK: mr 30, 343; CHECK-NEXT: std 0, 64(1)44; CHECK-NEXT: b .LBB1_245 46; CHECK: .LBB1_2:47; CHECK-NEXT: # =>This Inner Loop Header: Depth=148; CHECK-NEXT: cmpldi 30, 10049; CHECK-NEXT: bne 0, .LBB1_150 51; CHECK: %latch252; CHECK: b .LBB1_253 54; CHECK: %latch355; CHECK: b .LBB1_256entry:57 br label %header58 59header:60 %ind = phi i64 [%a, %entry], [%val1, %latch1], [%val2, %latch2], [%val2, %latch3]61 %cond1 = icmp eq i64 %ind, 10062 br i1 %cond1, label %middle1, label %latch163 64latch1:65 %cond2 = call i1 @foo()66 %val1 = xor i64 %ind, 267 br i1 %cond2, label %end, label %header68 69middle1:70 %cond3 = call i1 @foo()71 br i1 %cond3, label %latch1, label %middle272 73middle2:74 %cond4 = call i1 @foo()75 %val2 = add i64 %ind, 176 br i1 %cond4, label %latch2, label %latch377 78latch2:79 call void @a()80 br label %header81 82latch3:83 call void @b()84 br label %header85 86end:87 ret void88}89 90 91declare i1 @foo()92declare void @a()93declare void @b()94