brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · 1339afe Raw
76 lines · plain
1; Test branch weight metadata, estimated trip count metadata, and block2; frequencies after loop peeling.3 4; RUN: opt < %s -S -passes='print<block-freq>' 2>&1 | \5; RUN:   FileCheck -check-prefix=CHECK %s6 7; The -implicit-check-not options make sure that no additional labels or calls8; to @f show up.9; RUN: opt < %s -S -passes='loop-unroll,print<block-freq>' \10; RUN:     -unroll-force-peel-count=2 2>&1 | \11; RUN:   FileCheck %s -check-prefix=CHECK-UR \12; RUN:       -implicit-check-not='{{^[^ ;]*:}}' \13; RUN:       -implicit-check-not='call void @f'14 15; CHECK: block-frequency-info: test16; CHECK: do.body: float = 10.0,17 18; The sum should still be ~10.19;20; CHECK-UR: block-frequency-info: test21; CHECK-UR: - [[DO_BODY_PEEL:.*]]: float = 1.0,22; CHECK-UR: - [[DO_BODY_PEEL2:.*]]: float = 0.9,23; CHECK-UR: - [[DO_BODY:.*]]: float = 8.1,24 25declare void @f(i32)26 27define void @test(i32 %n) {28; CHECK-UR-LABEL: define void @test(29;       CHECK-UR: [[ENTRY:.*]]:30;       CHECK-UR:   br label %[[DO_BODY_PEEL_BEGIN:.*]]31;       CHECK-UR: [[DO_BODY_PEEL_BEGIN]]:32;       CHECK-UR:   br label %[[DO_BODY_PEEL:.*]]33;       CHECK-UR: [[DO_BODY_PEEL]]:34;       CHECK-UR:   call void @f35;       CHECK-UR:   br i1 %{{.*}}, label %[[DO_END:.*]], label %[[DO_BODY_PEEL_NEXT:.*]], !prof ![[#PROF:]]36;       CHECK-UR: [[DO_BODY_PEEL_NEXT]]:37;       CHECK-UR:   br label %[[DO_BODY_PEEL2:.*]]38;       CHECK-UR: [[DO_BODY_PEEL2]]:39;       CHECK-UR:   call void @f40;       CHECK-UR:   br i1 %{{.*}}, label %[[DO_END]], label %[[DO_BODY_PEEL_NEXT1:.*]], !prof ![[#PROF]]41;       CHECK-UR: [[DO_BODY_PEEL_NEXT1]]:42;       CHECK-UR:   br label %[[DO_BODY_PEEL_NEXT5:.*]]43;       CHECK-UR: [[DO_BODY_PEEL_NEXT5]]:44;       CHECK-UR:   br label %[[ENTRY_PEEL_NEWPH:.*]]45;       CHECK-UR: [[ENTRY_PEEL_NEWPH]]:46;       CHECK-UR:   br label %[[DO_BODY]]47;       CHECK-UR: [[DO_BODY]]:48;       CHECK-UR:   call void @f49;       CHECK-UR:   br i1 %{{.*}}, label %[[DO_END_LOOPEXIT:.*]], label %[[DO_BODY]], !prof ![[#PROF]], !llvm.loop ![[#LOOP_UR_LATCH:]]50;       CHECK-UR: [[DO_END_LOOPEXIT]]:51;       CHECK-UR:   br label %[[DO_END]]52;       CHECK-UR: [[DO_END]]:53;       CHECK-UR:   ret void54 55entry:56  br label %do.body57 58do.body:59  %i = phi i32 [ 0, %entry ], [ %inc, %do.body ]60  %inc = add i32 %i, 161  call void @f(i32 %i)62  %c = icmp sge i32 %inc, %n63  br i1 %c, label %do.end, label %do.body, !prof !064 65do.end:66  ret void67}68 69!0 = !{!"branch_weights", i32 1, i32 9}70 71; CHECK-UR: ![[#PROF]] = !{!"branch_weights", i32 1, i32 9}72; CHECK-UR: ![[#LOOP_UR_LATCH]] = distinct !{![[#LOOP_UR_LATCH]], ![[#LOOP_UR_PC:]], ![[#LOOP_UR_TC:]], ![[#DISABLE:]]}73; CHECK-UR: ![[#LOOP_UR_PC]] = !{!"llvm.loop.peeled.count", i32 2}74; CHECK-UR: ![[#LOOP_UR_TC]] = !{!"llvm.loop.estimated_trip_count", i32 8}75; CHECK-UR: ![[#DISABLE]] = !{!"llvm.loop.unroll.disable"}76