brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · cde9d46 Raw
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