annotate llvm/test/Transforms/LoopUnroll/ignore-annotation-intrinsic-cost.ll @ 150:1d019706d866

LLVM10
author anatofuz
date Thu, 13 Feb 2020 15:10:13 +0900
parents
children 1f2b6ac9f198
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 ; REQUIRES: asserts
anatofuz
parents:
diff changeset
2 ; RUN: opt < %s -disable-output -stats -loop-unroll -info-output-file - | FileCheck %s --check-prefix=STATS
anatofuz
parents:
diff changeset
3 ; STATS: 1 loop-unroll - Number of loops unrolled (completely or otherwise)
anatofuz
parents:
diff changeset
4 ; Test that llvm.annotation intrinsic do not count against the loop body size
anatofuz
parents:
diff changeset
5 ; and prevent unrolling.
anatofuz
parents:
diff changeset
6 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
anatofuz
parents:
diff changeset
7
anatofuz
parents:
diff changeset
8 @B = common global i32 0, align 4
anatofuz
parents:
diff changeset
9
anatofuz
parents:
diff changeset
10 define void @foo(i32* noalias %A, i32 %B, i32 %C) {
anatofuz
parents:
diff changeset
11 entry:
anatofuz
parents:
diff changeset
12 br label %for.body
anatofuz
parents:
diff changeset
13
anatofuz
parents:
diff changeset
14 ; A loop that has a small loop body (except for the annotations) that should be
anatofuz
parents:
diff changeset
15 ; unrolled with the default heuristic. Make sure the extra annotations do not
anatofuz
parents:
diff changeset
16 ; prevent unrolling
anatofuz
parents:
diff changeset
17 for.body: ; preds = %entry, %for.body
anatofuz
parents:
diff changeset
18 %i.01 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
anatofuz
parents:
diff changeset
19 ; The real loop.
anatofuz
parents:
diff changeset
20 %mul = mul nsw i32 %B, %C
anatofuz
parents:
diff changeset
21 %arrayidx = getelementptr inbounds i32, i32* %A, i32 %i.01
anatofuz
parents:
diff changeset
22 store i32 %mul, i32* %arrayidx, align 4
anatofuz
parents:
diff changeset
23 %inc = add nsw i32 %i.01, 1
anatofuz
parents:
diff changeset
24 %exitcond = icmp ne i32 %inc, 4
anatofuz
parents:
diff changeset
25
anatofuz
parents:
diff changeset
26 ; A bunch of annotations
anatofuz
parents:
diff changeset
27 %annot.0 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
28 %annot.1 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
29 %annot.2 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
30 %annot.3 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
31 %annot.4 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
32 %annot.5 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
33 %annot.6 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
34 %annot.7 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
35 %annot.8 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
36 %annot.9 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
37 %annot.10 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
38 %annot.11 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
39 %annot.12 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
40 %annot.13 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
41 %annot.14 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
42 %annot.15 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
43 %annot.16 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
44 %annot.17 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
45 %annot.18 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
46 %annot.19 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
47 %annot.20 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
48 %annot.21 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
49 %annot.22 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
50 %annot.23 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
51 %annot.24 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
52 %annot.25 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
53 %annot.26 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
54 %annot.27 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
55 %annot.28 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
56 %annot.29 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
57 %annot.30 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
58 %annot.31 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
59 %annot.32 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
60 %annot.33 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
61 %annot.34 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
62 %annot.35 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
63 %annot.36 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
64 %annot.37 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
65 %annot.38 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
66 %annot.39 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
67 %annot.40 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
68 %annot.41 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
69 %annot.42 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
70 %annot.43 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
71 %annot.44 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
72 %annot.45 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
73 %annot.46 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
74 %annot.47 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
75 %annot.48 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
76 %annot.49 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
77 %annot.50 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
78 %annot.51 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
79 %annot.52 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
80 %annot.53 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
81 %annot.54 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
82 %annot.55 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
83 %annot.56 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
84 %annot.57 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
85 %annot.58 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
86 %annot.59 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
87 %annot.60 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
88 %annot.61 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
89 %annot.62 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
90 %annot.63 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
91 %annot.64 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
92 %annot.65 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
93 %annot.66 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
94 %annot.67 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
95 %annot.68 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
96 %annot.69 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
97 %annot.70 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
98 %annot.71 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
99 %annot.72 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
100 %annot.73 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
101 %annot.74 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
102 %annot.75 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
103 %annot.76 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
104 %annot.77 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
105 %annot.78 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
106 %annot.79 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
107 %annot.80 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
108 %annot.81 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
109 %annot.82 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
110 %annot.83 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
111 %annot.84 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
112 %annot.85 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
113 %annot.86 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
114 %annot.87 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
115 %annot.88 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
116 %annot.89 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
117 %annot.90 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
118 %annot.91 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
119 %annot.92 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
120 %annot.93 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
121 %annot.94 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
122 %annot.95 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
123 %annot.96 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
124 %annot.97 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
125 %annot.98 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
126 %annot.99 = tail call i32 @llvm.annotation.i32(i32 %i.01, i8* null, i8* null, i32 0)
anatofuz
parents:
diff changeset
127 br i1 %exitcond, label %for.body, label %for.end
anatofuz
parents:
diff changeset
128
anatofuz
parents:
diff changeset
129 for.end: ; preds = %for.body
anatofuz
parents:
diff changeset
130 ret void
anatofuz
parents:
diff changeset
131 }
anatofuz
parents:
diff changeset
132
anatofuz
parents:
diff changeset
133 declare i32 @llvm.annotation.i32(i32, i8*, i8*, i32)