[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / Inline / inlinedefault-threshold.ll
blob195316a9121f9e247db5757328dadda6924e581b
1 ; RUN: opt < %s -O2 -inlinedefault-threshold=100 -S | FileCheck %s
3 ; Check that the inlinedefault-threshold does not alter the inline threshold
4 ; for optsize or minsize functions
6 @a = global i32 4
8 define i32 @inner() {
9   call void @extern()
10   %a1 = load volatile i32, i32* @a
11   %x1 = add i32 %a1,  %a1
12   ret i32 %x1
15 define i32 @inner2() {
16   call void @extern()
17   %a1 = load volatile i32, i32* @a
18   %x1 = add i32 %a1,  %a1
19   %a2 = load volatile i32, i32* @a
20   %x2 = add i32 %x1, %a2
21   %a3 = load volatile i32, i32* @a
22   %x3 = add i32 %x2, %a3
23   %a4 = load volatile i32, i32* @a
24   %x4 = add i32 %x3, %a4
25   %a5 = load volatile i32, i32* @a
26   %x5 = add i32 %x3, %a5
27   %a6 = load volatile i32, i32* @a
28   %x6 = add i32 %x5, %a6
29   %a7 = load volatile i32, i32* @a
30   %x7 = add i32 %x6, %a7
31   %a8 = load volatile i32, i32* @a
32   %x8 = add i32 %x7, %a8
33   ret i32 %x8
36 define i32 @inner3() {
37   call void @extern()
38   %a1 = load volatile i32, i32* @a
39   %x1 = add i32 %a1,  %a1
40   %a2 = load volatile i32, i32* @a
41   %x2 = add i32 %x1, %a2
42   %a3 = load volatile i32, i32* @a
43   %x3 = add i32 %x2, %a3
44   %a4 = load volatile i32, i32* @a
45   %x4 = add i32 %x3, %a4
46   %a5 = load volatile i32, i32* @a
47   %x5 = add i32 %x4, %a5
48   %a6 = load volatile i32, i32* @a
49   %x6 = add i32 %x5, %a6
50   %a7 = load volatile i32, i32* @a
51   %x7 = add i32 %x6, %a7
52   %a8 = load volatile i32, i32* @a
53   %x8 = add i32 %x7, %a8
54   %a9 = load volatile i32, i32* @a
55   %x9 = add i32 %x8, %a9
56   %a10 = load volatile i32, i32* @a
57   %x10 = add i32 %x9, %a10
58   %a11 = load volatile i32, i32* @a
59   %x11 = add i32 %x10, %a11
60   %a12 = load volatile i32, i32* @a
61   %x12 = add i32 %x11, %a12
62   %a13 = load volatile i32, i32* @a
63   %x13 = add i32 %x12, %a13
64   %a14 = load volatile i32, i32* @a
65   %x14 = add i32 %x13, %a14
66   %a15 = load volatile i32, i32* @a
67   %x15 = add i32 %x14, %a15
68   ret i32 %x15
71 define i32 @outer() optsize {
72 ; CHECK-LABEL: @outer
73 ; CHECK-NOT: call i32 @inner()
74    %r = call i32 @inner()
75    ret i32 %r
78 define i32 @outer2() optsize {
79 ; CHECK-LABEL: @outer2
80 ; CHECK: call i32 @inner2()
81    %r = call i32 @inner2()
82    ret i32 %r
85 define i32 @outer3() minsize {
86 ; CHECK-LABEL: @outer3
87 ; CHECK: call i32 @inner()
88    %r = call i32 @inner()
89    ret i32 %r
92 define i32 @outer4() {
93 ; CHECK-LABEL: @outer4
94 ; CHECK-NOT: call i32 @inner()
95    %r = call i32 @inner()
96    ret i32 %r
99 define i32 @outer5() {
100 ; CHECK-LABEL: @outer5
101 ; CHECK-NOT: call i32 @inner2()
102    %r = call i32 @inner2()
103    ret i32 %r
106 define i32 @outer6() {
107 ; CHECK-LABEL: @outer6
108 ; CHECK: call i32 @inner3()
109    %r = call i32 @inner3()
110    ret i32 %r
113 declare void @extern()