brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · e3768ac Raw
131 lines · plain
1; RUN: opt -S -passes=inline %s -debug-only=inline-cost -min-jump-table-entries=4 --disable-output 2>&1 | FileCheck %s -check-prefix=LOOKUPTABLE -match-full-lines2; RUN: opt -S -passes=inline %s -debug-only=inline-cost -min-jump-table-entries=5 --disable-output 2>&1 | FileCheck %s -check-prefix=SWITCH -match-full-lines3; REQUIRES: x86_64-linux, asserts4 5target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"6target triple = "x86_64-unknown-linux-gnu"7 8define i64 @main(i64 %a) {9  %b = call i64 @small_switch_default(i64 %a)10  %c = call i64 @small_switch_no_default(i64 %a)11  %d = call i64 @lookup_table_default(i64 %a)12  %e = call i64 @lookup_table_no_default(i64 %a)13  ret i64 %b14}15 16; SWITCH-LABEL: Analyzing call of small_switch_default{{.*}}17; SWITCH: Cost: 018define i64 @small_switch_default(i64 %a) {19  switch i64 %a, label %default_branch [20  i64 -1, label %branch_021  i64 8, label %branch_122  i64 52, label %branch_223  ]24 25branch_0:26  br label %exit27 28branch_1:29  br label %exit30 31branch_2:32  br label %exit33 34default_branch:35  br label %exit36 37exit:38  %b = phi i64 [ 5, %branch_0 ], [ 9, %branch_1 ], [ 2, %branch_2 ], [ 3, %default_branch ]39  ret i64 %b40}41 42; SWITCH-LABEL: Analyzing call of small_switch_no_default{{.*}}43; SWITCH: Cost: -1044define i64 @small_switch_no_default(i64 %a) {45  switch i64 %a, label %unreachabledefault [46  i64 -1, label %branch_047  i64 8, label %branch_148  i64 52, label %branch_249  ]50 51branch_0:52  br label %exit53 54branch_1:55  br label %exit56 57branch_2:58  br label %exit59 60unreachabledefault:61  unreachable62 63exit:64  %b = phi i64 [ 5, %branch_0 ], [ 9, %branch_1 ], [ 2, %branch_2 ]65  ret i64 %b66}67 68; LOOKUPTABLE-LABEL: Analyzing call of lookup_table_default{{.*}}69; LOOKUPTABLE: Cost: 1070; SWITCH-LABEL: Analyzing call of lookup_table_default{{.*}}71; SWITCH: Cost: 2072define i64 @lookup_table_default(i64 %a) {73  switch i64 %a, label %default_branch [74  i64 0, label %branch_075  i64 1, label %branch_176  i64 2, label %branch_277  i64 3, label %branch_378  ]79 80branch_0:81  br label %exit82 83branch_1:84  br label %exit85 86branch_2:87  br label %exit88 89branch_3:90  br label %exit91 92default_branch:93  br label %exit94 95exit:96  %b = phi i64 [ 5, %branch_0 ], [ 9, %branch_1 ], [ 2, %branch_2 ], [ 7, %branch_3 ], [ 3, %default_branch ]97  ret i64 %b98}99 100; LOOKUPTABLE-LABEL: Analyzing call of lookup_table_no_default{{.*}}101; LOOKUPTABLE: Cost: 0102; SWITCH-LABEL: Analyzing call of lookup_table_no_default{{.*}}103; SWITCH: Cost: 20104define i64 @lookup_table_no_default(i64 %a) {105  switch i64 %a, label %unreachabledefault [106  i64 0, label %branch_0107  i64 1, label %branch_1108  i64 2, label %branch_2109  i64 3, label %branch_3110  ]111 112branch_0:113  br label %exit114 115branch_1:116  br label %exit117 118branch_2:119  br label %exit120 121branch_3:122  br label %exit123 124unreachabledefault:125  unreachable126 127exit:128  %b = phi i64 [ 5, %branch_0 ], [ 9, %branch_1 ], [ 2, %branch_2 ], [ 7, %branch_3 ]129  ret i64 %b130}131