brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 9cc417f Raw
90 lines · plain
1; RUN: split-file %s %t2; RUN: cat %t/main.ll %t/probable-or.prof > %t/probable-or.ll3; RUN: cat %t/main.ll %t/probable-and.prof > %t/probable-and.ll4; RUN: opt -passes='loop(simple-loop-unswitch<nontrivial>)' -S %t/probable-or.ll -o -| FileCheck %t/probable-or.prof5; RUN: opt -passes='loop(simple-loop-unswitch<nontrivial>)' -S %t/probable-and.ll -o -| FileCheck %t/probable-and.prof6 7;--- main.ll8declare i32 @a()9declare i32 @b()10 11define i32 @or(ptr %ptr, i1 %cond) !prof !0 {12entry:13  br label %loop_begin14 15loop_begin:16  %v1 = load i1, ptr %ptr17  %cond_or = or i1 %v1, %cond18  br i1 %cond_or, label %loop_a, label %loop_b, !prof !119 20loop_a:21  call i32 @a()22  br label %latch23 24loop_b:25  call i32 @b()26  br label %latch27 28latch:29  %v2 = load i1, ptr %ptr30  br i1 %v2, label %loop_begin, label %loop_exit, !prof !231 32loop_exit:33  ret i32 034}35 36define i32 @and(ptr %ptr, i1 %cond) !prof !0 {37entry:38  br label %loop_begin39 40loop_begin:41  %v1 = load i1, ptr %ptr42  %cond_and = and i1 %v1, %cond43  br i1 %cond_and, label %loop_a, label %loop_b, !prof !144 45loop_a:46  call i32 @a()47  br label %latch48 49loop_b:50  call i32 @b()51  br label %latch52 53latch:54  %v2 = load i1, ptr %ptr55  br i1 %v2, label %loop_begin, label %loop_exit, !prof !256 57loop_exit:58  ret i32 059}60 61;--- probable-or.prof62!0 = !{!"function_entry_count", i32 10}63!1 = !{!"branch_weights", i32 1, i32 1000}64!2 = !{!"branch_weights", i32 5, i32 7}65; CHECK-LABEL: @or66; CHECK-LABEL: entry:67; CHECK-NEXT:   %cond.fr = freeze i1 %cond68; CHECK-NEXT:   br i1 %cond.fr, label %entry.split.us, label %entry.split, !prof !169; CHECK-LABEL: @and70; CHECK-LABEL: entry:71; CHECK-NEXT:   %cond.fr = freeze i1 %cond72; CHECK-NEXT:   br i1 %cond.fr, label %entry.split, label %entry.split.us, !prof !373; CHECK: !1 = !{!"branch_weights", i32 1, i32 1000}74; CHECK: !3 = !{!"unknown", !"simple-loop-unswitch"}75 76;--- probable-and.prof77!0 = !{!"function_entry_count", i32 10}78!1 = !{!"branch_weights", i32 1000, i32 1}79!2 = !{!"branch_weights", i32 5, i32 7}80; CHECK-LABEL: @or81; CHECK-LABEL: entry:82; CHECK-NEXT:   %cond.fr = freeze i1 %cond83; CHECK-NEXT:   br i1 %cond.fr, label %entry.split.us, label %entry.split, !prof !184; CHECK-LABEL: @and85; CHECK-LABEL: entry:86; CHECK-NEXT:   %cond.fr = freeze i1 %cond87; CHECK-NEXT:   br i1 %cond.fr, label %entry.split, label %entry.split.us, !prof !388; CHECK: !1 = !{!"unknown", !"simple-loop-unswitch"}89; CHECK: !3 = !{!"branch_weights", i32 1000, i32 1}90