| ; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s | |
| define void @test(i1 %cnd) !prof !{!"function_entry_count", i64 1024} { | |
| ; CHECK-LABEL: @test | |
| ; Using the assembly comments to indicate block order.. | |
| ; CHECK: # %loop | |
| ; CHECK: # %backedge | |
| ; CHECK: # %exit | |
| ; CHECK: # %rare | |
| ; CHECK: # %rare.1 | |
| br i1 undef, label %rare.1, label %preheader, !prof !{!"branch_weights", i32 0, i32 1000} | |
| rare.1: | |
| call void @foo() | |
| br label %preheader | |
| preheader: | |
| br label %loop | |
| loop: | |
| %iv = phi i32 [0, %preheader], [%iv.next, %backedge] | |
| call void @foo() | |
| br i1 %cnd, label %backedge, label %rare, !prof !{!"branch_weights", i32 1000000, i32 1} | |
| rare: | |
| call void @foo() | |
| br label %backedge | |
| backedge: | |
| call void @foo() | |
| %iv.next = add i32 %iv, 1 | |
| %cmp = icmp eq i32 %iv.next, 200 | |
| br i1 %cmp, label %loop, label %exit, !prof !{!"branch_weights", i32 1000, i32 1} | |
| exit: | |
| ret void | |
| } | |
| declare void @foo() |