69 lines · plain
1; Test branch weight metadata, estimated trip count metadata, and block2; frequencies after partial loop unrolling without -unroll-runtime.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-count=4 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: - [[ENTRY:.*]]:22; CHECK-UR: - [[DO_BODY:.*]]: float = 2.9078,23; CHECK-UR: - [[DO_BODY_1:.*]]: float = 2.617,24; CHECK-UR: - [[DO_BODY_2:.*]]: float = 2.3553,25; CHECK-UR: - [[DO_BODY_3:.*]]: float = 2.1198,26; CHECK-UR: - [[DO_END:.*]]:27 28declare void @f(i32)29 30define void @test(i32 %n) {31; CHECK-UR-LABEL: define void @test(i32 %{{.*}}) {32; CHECK-UR: [[ENTRY]]:33; CHECK-UR: br label %[[DO_BODY]]34; CHECK-UR: [[DO_BODY]]:35; CHECK-UR: call void @f36; CHECK-UR: br i1 %{{.*}}, label %[[DO_END]], label %[[DO_BODY_1]], !prof ![[#PROF:]]37; CHECK-UR: [[DO_BODY_1]]:38; CHECK-UR: call void @f39; CHECK-UR: br i1 %{{.*}}, label %[[DO_END]], label %[[DO_BODY_2]], !prof ![[#PROF]]40; CHECK-UR: [[DO_BODY_2]]:41; CHECK-UR: call void @f42; CHECK-UR: br i1 %{{.*}}, label %[[DO_END]], label %[[DO_BODY_3]], !prof ![[#PROF]]43; CHECK-UR: [[DO_BODY_3]]:44; CHECK-UR: call void @f45; CHECK-UR: br i1 %{{.*}}, label %[[DO_END]], label %[[DO_BODY]], !prof ![[#PROF]], !llvm.loop ![[#LOOP_UR_LATCH:]]46; CHECK-UR: [[DO_END]]:47; CHECK-UR: ret void48 49entry:50 br label %do.body51 52do.body:53 %i = phi i32 [ 0, %entry ], [ %inc, %do.body ]54 %inc = add i32 %i, 155 call void @f(i32 %i)56 %c = icmp sge i32 %inc, %n57 br i1 %c, label %do.end, label %do.body, !prof !058 59do.end:60 ret void61}62 63!0 = !{!"branch_weights", i32 1, i32 9}64 65; CHECK-UR: ![[#PROF]] = !{!"branch_weights", i32 1, i32 9}66; CHECK-UR: ![[#LOOP_UR_LATCH]] = distinct !{![[#LOOP_UR_LATCH]], ![[#LOOP_UR_TC:]], ![[#DISABLE:]]}67; CHECK-UR: ![[#LOOP_UR_TC]] = !{!"llvm.loop.estimated_trip_count", i32 3}68; CHECK-UR: ![[#DISABLE]] = !{!"llvm.loop.unroll.disable"}69