diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/switch-density.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/switch-density.ll | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/switch-density.ll b/llvm/test/CodeGen/X86/switch-density.ll index 52216fb4d7c..8055a2b8764 100644 --- a/llvm/test/CodeGen/X86/switch-density.ll +++ b/llvm/test/CodeGen/X86/switch-density.ll @@ -79,3 +79,72 @@ return: ret void ; CHECK: ja ; CHECK: jmpq *.LJTI } + +define void @dense_optsize(i32 %x) optsize { +entry: + switch i32 %x, label %return [ + i32 12, label %bb0 + i32 4, label %bb1 + i32 16, label %bb1 + i32 20, label %bb2 + i32 8, label %bb3 + ] +bb0: tail call void @g(i32 0) br label %return +bb1: tail call void @g(i32 1) br label %return +bb2: tail call void @g(i32 1) br label %return +bb3: tail call void @g(i32 2) br label %return +return: ret void + +; Lowered as branches. +; CHECK-LABEL: dense_optsize +; CHECK: cmpl $11 +; CHECK: cmpl $20 +; CHECK: cmpl $16 +; CHECK: cmpl $12 +; CHECK: cmpl $4 +; CHECK: cmpl $8 +; CHECK: retq +} + +define void @dense_pgso(i32 %x) !prof !14 { +entry: + switch i32 %x, label %return [ + i32 12, label %bb0 + i32 4, label %bb1 + i32 16, label %bb1 + i32 20, label %bb2 + i32 8, label %bb3 + ] +bb0: tail call void @g(i32 0) br label %return +bb1: tail call void @g(i32 1) br label %return +bb2: tail call void @g(i32 1) br label %return +bb3: tail call void @g(i32 2) br label %return +return: ret void + +; Lowered as branches. +; CHECK-LABEL: dense_pgso +; CHECK: cmpl $11 +; CHECK: cmpl $20 +; CHECK: cmpl $16 +; CHECK: cmpl $12 +; CHECK: cmpl $4 +; CHECK: cmpl $8 +; CHECK: retq +} + +!llvm.module.flags = !{!0} +!0 = !{i32 1, !"ProfileSummary", !1} +!1 = !{!2, !3, !4, !5, !6, !7, !8, !9} +!2 = !{!"ProfileFormat", !"InstrProf"} +!3 = !{!"TotalCount", i64 10000} +!4 = !{!"MaxCount", i64 10} +!5 = !{!"MaxInternalCount", i64 1} +!6 = !{!"MaxFunctionCount", i64 1000} +!7 = !{!"NumCounts", i64 3} +!8 = !{!"NumFunctions", i64 3} +!9 = !{!"DetailedSummary", !10} +!10 = !{!11, !12, !13} +!11 = !{i32 10000, i64 100, i32 1} +!12 = !{i32 999000, i64 100, i32 1} +!13 = !{i32 999999, i64 1, i32 2} +!14 = !{!"function_entry_count", i64 0} |