1 ; RUN: llc -march=hexagon -O3 -verify-machineinstrs < %s
3 ; Expect clean compilation.
5 target triple = "hexagon"
7 %s.0 = type { i16, i16, [4 x i16], i16, i16, [3 x i16], [3 x [4 x i16]], [3 x i16], [2 x [2 x i16]], i16, i16, i16, i16, [2 x i16], i16, i16, [3 x i16], [17 x i16] }
9 @g0 = external global i16
10 @g1 = external global [2 x i16]
11 @g2 = external global [10 x i16]
12 @g3 = external global %s.0
13 @g4 = external global [160 x i16]
14 @g5 = external global i16
15 @g6 = external global i16
16 @g7 = external global i16
17 @g8 = external global i16
18 @g9 = external global i16
19 @g10 = external global i16
20 @g11 = external global i16
21 @g12 = external global [192 x i16]
22 @g13 = external global [10 x i32]
23 @g14 = external global i16
25 ; Function Attrs: nounwind
26 define signext i16 @f0(i16 signext %a0, ptr nocapture readonly %a1) #0 {
28 %v0 = alloca i32, align 4
29 %v1 = alloca i32, align 4
30 store i32 327685, ptr %v0, align 4
31 store i32 1048592, ptr %v1, align 4
32 %v2 = sext i16 %a0 to i32
33 switch i32 %v2, label %b35 [
43 %v3 = load i16, ptr %a1, align 2, !tbaa !0
44 %v4 = icmp eq i16 %v3, -1
45 br i1 %v4, label %b2, label %b4
48 %v5 = load i16, ptr @g0, align 2, !tbaa !0
50 store i16 %v6, ptr @g0, align 2, !tbaa !0
51 %v7 = icmp sgt i16 %v6, 2
52 br i1 %v7, label %b3, label %b5
55 store i16 3, ptr @g0, align 2, !tbaa !0
59 store i16 0, ptr @g0, align 2, !tbaa !0
62 b5: ; preds = %b4, %b2
63 %v8 = load i16, ptr %a1, align 2, !tbaa !0
64 %v9 = icmp ne i16 %v8, 0
65 %v10 = load i16, ptr @g1, align 2
66 %v11 = icmp eq i16 %v10, 0
67 %v12 = and i1 %v9, %v11
68 br i1 %v12, label %b6, label %b35
71 call void @f1(ptr %v0, ptr %v1, ptr @g2, ptr getelementptr inbounds (%s.0, ptr @g3, i32 0, i32 2, i32 0), ptr @g4)
72 %v15 = load i16, ptr @g2, align 2, !tbaa !0
73 %v16 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 1), align 2, !tbaa !0
74 %v17 = icmp sgt i16 %v15, %v16
75 %v18 = select i1 %v17, i16 %v15, i16 %v16
76 %v19 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 2), align 2, !tbaa !0
77 %v20 = icmp sgt i16 %v18, %v19
78 %v21 = select i1 %v20, i16 %v18, i16 %v19
79 %v22 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 3), align 2, !tbaa !0
80 %v23 = icmp sgt i16 %v21, %v22
81 %v24 = select i1 %v23, i16 %v21, i16 %v22
82 %v25 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 4), align 2, !tbaa !0
83 %v26 = icmp sle i16 %v24, %v25
84 %v27 = xor i1 %v23, true
85 %v28 = or i1 %v26, %v27
86 %v29 = select i1 %v26, i16 %v25, i16 %v22
87 %v30 = select i1 %v28, i16 %v29, i16 %v21
88 %v31 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 5), align 2, !tbaa !0
89 %v32 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 6), align 2, !tbaa !0
90 %v33 = icmp slt i16 %v31, %v32
91 %v34 = select i1 %v33, i16 %v31, i16 %v32
92 %v35 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 7), align 2, !tbaa !0
93 %v36 = icmp slt i16 %v34, %v35
94 %v37 = select i1 %v36, i16 %v34, i16 %v35
95 %v38 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 8), align 2, !tbaa !0
96 %v39 = icmp slt i16 %v37, %v38
97 %v40 = select i1 %v39, i16 %v37, i16 %v38
98 %v41 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 9), align 2, !tbaa !0
99 %v42 = icmp sge i16 %v40, %v41
100 %v43 = xor i1 %v39, true
101 %v44 = or i1 %v42, %v43
102 %v45 = select i1 %v42, i16 %v41, i16 %v38
103 %v46 = select i1 %v44, i16 %v45, i16 %v37
104 %v47 = icmp slt i16 %v30, %v46
105 br i1 %v47, label %b7, label %b35
108 %v48 = load i16, ptr @g5, align 2, !tbaa !0
109 %v49 = icmp eq i16 %v48, 4
110 %v50 = load i16, ptr @g6, align 2
111 %v51 = icmp eq i16 %v50, 0
112 %v52 = and i1 %v49, %v51
113 br i1 %v52, label %b35, label %b8
119 store i16 0, ptr @g0, align 2, !tbaa !0
120 %v53 = load i16, ptr %a1, align 2, !tbaa !0
121 %v54 = icmp eq i16 %v53, 0
122 %v55 = zext i1 %v54 to i16
123 %v56 = getelementptr i16, ptr %a1, i32 1
124 %v57 = load i16, ptr %v56, align 2, !tbaa !0
125 %v58 = icmp eq i16 %v57, 0
126 %v59 = zext i1 %v58 to i16
127 %v60 = add nuw nsw i16 %v59, %v55
128 %v61 = getelementptr inbounds i16, ptr %a1, i32 2
129 %v62 = load i16, ptr %v61, align 2, !tbaa !0
130 %v63 = icmp ult i16 %v62, 256
131 %v64 = zext i1 %v63 to i16
132 %v65 = add nuw nsw i16 %v64, %v60
133 %v66 = load i16, ptr @g1, align 2
134 %v67 = icmp eq i16 %v65, 3
135 %v68 = icmp ne i16 %v66, 0
136 %v69 = or i1 %v68, %v67
137 %v70 = load i16, ptr getelementptr inbounds (%s.0, ptr @g3, i32 0, i32 9), align 2
138 %v71 = icmp eq i16 %v70, 3
139 %v72 = or i1 %v71, %v69
140 br i1 %v72, label %b35, label %b10
146 store i16 0, ptr @g0, align 2, !tbaa !0
147 %v73 = load i16, ptr %a1, align 2, !tbaa !0
148 %v74 = icmp eq i16 %v73, 0
149 %v75 = zext i1 %v74 to i16
150 %v76 = getelementptr i16, ptr %a1, i32 1
151 %v77 = load i16, ptr %v76, align 2, !tbaa !0
152 %v78 = icmp eq i16 %v77, 0
153 %v79 = zext i1 %v78 to i16
154 %v80 = add nuw nsw i16 %v79, %v75
155 %v81 = getelementptr inbounds i16, ptr %a1, i32 2
156 %v82 = load i16, ptr %v81, align 2, !tbaa !0
157 %v83 = icmp ult i16 %v82, 256
158 %v84 = zext i1 %v83 to i16
159 %v85 = add nuw nsw i16 %v84, %v80
160 %v86 = icmp ne i16 %v85, 3
161 %v87 = load i16, ptr @g1, align 2
162 %v88 = icmp eq i16 %v87, 0
163 %v89 = and i1 %v88, %v86
164 br i1 %v89, label %b12, label %b35
167 %v90 = load i16, ptr @g5, align 2, !tbaa !0
168 switch i16 %v90, label %b14 [
174 %v91 = load i16, ptr @g7, align 2, !tbaa !0
175 %v92 = load i16, ptr @g6, align 2
176 %v93 = or i16 %v92, %v91
177 %v94 = icmp eq i16 %v93, 0
178 br i1 %v94, label %b35, label %b14
180 b14: ; preds = %b13, %b12
184 store i16 0, ptr @g0, align 2, !tbaa !0
185 %v95 = load i16, ptr %a1, align 2, !tbaa !0
186 %v96 = icmp eq i16 %v95, 0
187 %v97 = zext i1 %v96 to i16
188 %v98 = getelementptr i16, ptr %a1, i32 1
189 %v99 = load i16, ptr %v98, align 2, !tbaa !0
190 %v100 = icmp eq i16 %v99, 0
191 %v101 = zext i1 %v100 to i16
192 %v102 = add nuw nsw i16 %v101, %v97
193 %v103 = getelementptr i16, ptr %a1, i32 2
194 %v104 = load i16, ptr %v103, align 2, !tbaa !0
195 %v105 = icmp eq i16 %v104, 0
196 %v106 = zext i1 %v105 to i16
197 %v107 = add nuw nsw i16 %v106, %v102
198 %v108 = getelementptr i16, ptr %a1, i32 3
199 %v109 = load i16, ptr %v108, align 2, !tbaa !0
200 %v110 = icmp eq i16 %v109, 0
201 %v111 = zext i1 %v110 to i16
202 %v112 = add nuw nsw i16 %v111, %v107
203 %v113 = getelementptr i16, ptr %a1, i32 4
204 %v114 = load i16, ptr %v113, align 2, !tbaa !0
205 %v115 = icmp eq i16 %v114, 0
206 %v116 = zext i1 %v115 to i16
207 %v117 = add nuw nsw i16 %v116, %v112
208 %v118 = icmp eq i16 %v117, 5
209 br i1 %v118, label %b35, label %b16
212 %v119 = load i16, ptr getelementptr inbounds (%s.0, ptr @g3, i32 0, i32 3), align 2, !tbaa !4
213 switch i16 %v119, label %b17 [
219 %v120 = icmp sgt i16 %v119, 100
220 br i1 %v120, label %b35, label %b18
223 tail call void @f2(ptr getelementptr inbounds (%s.0, ptr @g3, i32 0, i32 2, i32 0), ptr @g2)
224 %v121 = load i16, ptr @g2, align 2, !tbaa !0
225 %v122 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 1), align 2, !tbaa !0
226 %v123 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 2), align 2, !tbaa !0
227 %v124 = icmp sgt i16 %v122, %v123
228 %v125 = select i1 %v124, i16 %v122, i16 %v123
229 %v126 = icmp sgt i16 %v121, %v125
230 %v127 = select i1 %v126, i16 %v121, i16 %v125
231 %v128 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 6), align 2, !tbaa !0
232 %v129 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 7), align 2, !tbaa !0
233 %v130 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 8), align 2, !tbaa !0
234 %v131 = icmp slt i16 %v129, %v130
235 %v132 = select i1 %v131, i16 %v129, i16 %v130
236 %v133 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 9), align 2, !tbaa !0
237 %v134 = icmp slt i16 %v132, %v133
238 %v135 = select i1 %v134, i16 %v132, i16 %v133
239 %v136 = icmp slt i16 %v128, %v135
240 %v137 = select i1 %v136, i16 %v128, i16 %v135
241 %v138 = icmp slt i16 %v127, %v137
242 br i1 %v138, label %b19, label %b35
244 b19: ; preds = %b18, %b16, %b16
248 store i16 0, ptr @g0, align 2, !tbaa !0
249 %v139 = load i16, ptr %a1, align 2, !tbaa !0
250 %v140 = icmp eq i16 %v139, 0
251 %v141 = zext i1 %v140 to i16
252 %v142 = getelementptr i16, ptr %a1, i32 1
253 %v143 = load i16, ptr %v142, align 2, !tbaa !0
254 %v144 = icmp eq i16 %v143, 0
255 %v145 = zext i1 %v144 to i16
256 %v146 = add nuw nsw i16 %v145, %v141
257 %v147 = getelementptr i16, ptr %a1, i32 2
258 %v148 = load i16, ptr %v147, align 2, !tbaa !0
259 %v149 = icmp eq i16 %v148, 0
260 %v150 = zext i1 %v149 to i16
261 %v151 = add nuw nsw i16 %v150, %v146
262 %v152 = getelementptr i16, ptr %a1, i32 3
263 %v153 = load i16, ptr %v152, align 2, !tbaa !0
264 %v154 = icmp eq i16 %v153, 0
265 %v155 = zext i1 %v154 to i16
266 %v156 = add nuw nsw i16 %v155, %v151
267 %v157 = getelementptr i16, ptr %a1, i32 4
268 %v158 = load i16, ptr %v157, align 2, !tbaa !0
269 %v159 = icmp eq i16 %v158, 0
270 %v160 = zext i1 %v159 to i16
271 %v161 = add nuw nsw i16 %v160, %v156
272 %v162 = getelementptr i16, ptr %a1, i32 5
273 %v163 = load i16, ptr %v162, align 2, !tbaa !0
274 %v164 = icmp eq i16 %v163, 0
275 %v165 = zext i1 %v164 to i16
276 %v166 = add nuw nsw i16 %v165, %v161
277 %v167 = getelementptr i16, ptr %a1, i32 6
278 %v168 = load i16, ptr %v167, align 2, !tbaa !0
279 %v169 = icmp eq i16 %v168, 0
280 %v170 = zext i1 %v169 to i16
281 %v171 = add nuw nsw i16 %v170, %v166
282 %v172 = getelementptr i16, ptr %a1, i32 7
283 %v173 = load i16, ptr %v172, align 2, !tbaa !0
284 %v174 = icmp eq i16 %v173, 0
285 %v175 = zext i1 %v174 to i16
286 %v176 = add i16 %v175, %v171
287 %v177 = getelementptr i16, ptr %a1, i32 8
288 %v178 = load i16, ptr %v177, align 2, !tbaa !0
289 %v179 = icmp eq i16 %v178, 0
290 %v180 = zext i1 %v179 to i16
291 %v181 = add i16 %v180, %v176
292 %v182 = getelementptr i16, ptr %a1, i32 9
293 %v183 = load i16, ptr %v182, align 2, !tbaa !0
294 %v184 = icmp eq i16 %v183, 0
295 %v185 = zext i1 %v184 to i16
296 %v186 = add i16 %v185, %v181
297 %v187 = getelementptr inbounds i16, ptr %a1, i32 10
298 %v188 = load i16, ptr %v187, align 2, !tbaa !0
299 %v189 = icmp ult i16 %v188, 32
300 %v190 = zext i1 %v189 to i16
301 %v191 = add i16 %v190, %v186
302 %v192 = icmp eq i16 %v191, 11
303 br i1 %v192, label %b35, label %b21
306 tail call void @f3(ptr getelementptr inbounds (%s.0, ptr @g3, i32 0, i32 2, i32 0), ptr @g2)
307 %v193 = load i16, ptr @g8, align 2, !tbaa !0
308 %v194 = icmp eq i16 %v193, 0
309 br i1 %v194, label %b22, label %b35
312 %v195 = load i16, ptr getelementptr inbounds (%s.0, ptr @g3, i32 0, i32 3), align 2, !tbaa !4
313 %v196 = icmp sgt i16 %v195, 100
314 br i1 %v196, label %b35, label %b23
317 %v197 = load i16, ptr @g2, align 2, !tbaa !0
318 %v198 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 1), align 2, !tbaa !0
319 %v199 = icmp sgt i16 %v197, %v198
320 %v200 = select i1 %v199, i16 %v197, i16 %v198
321 %v201 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 4), align 2, !tbaa !0
322 %v202 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 5), align 2, !tbaa !0
323 %v203 = icmp slt i16 %v201, %v202
324 %v204 = select i1 %v203, i16 %v201, i16 %v202
325 %v205 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 6), align 2, !tbaa !0
326 %v206 = icmp slt i16 %v204, %v205
327 %v207 = select i1 %v206, i16 %v204, i16 %v205
328 %v208 = icmp slt i16 %v200, %v207
329 br i1 %v208, label %b24, label %b35
332 %v209 = load i16, ptr @g5, align 2, !tbaa !0
333 switch i16 %v209, label %b26 [
339 %v210 = load i16, ptr @g7, align 2, !tbaa !0
340 %v211 = load i16, ptr @g6, align 2
341 %v212 = or i16 %v211, %v210
342 %v213 = icmp eq i16 %v212, 0
343 br i1 %v213, label %b35, label %b27
346 %v214 = load i16, ptr @g6, align 2
347 %v215 = icmp eq i16 %v214, 0
348 br i1 %v215, label %b28, label %b35
351 %v216 = load i16, ptr @g9, align 2
352 %v217 = icmp eq i16 %v216, 0
353 br i1 %v217, label %b28, label %b35
355 b28: ; preds = %b27, %b26
356 %v218 = tail call signext i16 @f4(i16 signext %v195, i16 signext 20)
357 store i16 %v218, ptr @g10, align 2, !tbaa !0
358 %v219 = load i16, ptr @g11, align 2, !tbaa !0
359 %v220 = tail call signext i16 @f6(i16 signext %v218, i16 signext %v219)
360 %v221 = tail call signext i16 @f5(i16 signext %v220)
361 %v222 = icmp sgt i16 %v221, 15
362 br i1 %v222, label %b29, label %b35
365 call void @llvm.memset.p0.i32(ptr align 2 @g12, i8 0, i32 256, i1 false)
366 call void @llvm.memset.p0.i32(ptr align 4 @g13, i8 0, i32 40, i1 false)
371 store i16 0, ptr @g0, align 2, !tbaa !0
372 %v223 = load i16, ptr %a1, align 2, !tbaa !0
373 %v224 = icmp eq i16 %v223, 0
374 %v225 = zext i1 %v224 to i16
375 %v226 = getelementptr i16, ptr %a1, i32 1
376 %v227 = load i16, ptr %v226, align 2, !tbaa !0
377 %v228 = icmp eq i16 %v227, 0
378 %v229 = zext i1 %v228 to i16
379 %v230 = add nuw nsw i16 %v229, %v225
380 %v231 = getelementptr i16, ptr %a1, i32 2
381 %v232 = load i16, ptr %v231, align 2, !tbaa !0
382 %v233 = icmp eq i16 %v232, 0
383 %v234 = zext i1 %v233 to i16
384 %v235 = add nuw nsw i16 %v234, %v230
385 %v236 = getelementptr i16, ptr %a1, i32 3
386 %v237 = load i16, ptr %v236, align 2, !tbaa !0
387 %v238 = icmp eq i16 %v237, 0
388 %v239 = zext i1 %v238 to i16
389 %v240 = add nuw nsw i16 %v239, %v235
390 %v241 = getelementptr i16, ptr %a1, i32 4
391 %v242 = load i16, ptr %v241, align 2, !tbaa !0
392 %v243 = icmp eq i16 %v242, 0
393 %v244 = zext i1 %v243 to i16
394 %v245 = add nuw nsw i16 %v244, %v240
395 %v246 = getelementptr i16, ptr %a1, i32 5
396 %v247 = load i16, ptr %v246, align 2, !tbaa !0
397 %v248 = icmp eq i16 %v247, 0
398 %v249 = zext i1 %v248 to i16
399 %v250 = add nuw nsw i16 %v249, %v245
400 %v251 = getelementptr i16, ptr %a1, i32 6
401 %v252 = load i16, ptr %v251, align 2, !tbaa !0
402 %v253 = icmp eq i16 %v252, 0
403 %v254 = zext i1 %v253 to i16
404 %v255 = add nuw nsw i16 %v254, %v250
405 %v256 = getelementptr i16, ptr %a1, i32 7
406 %v257 = load i16, ptr %v256, align 2, !tbaa !0
407 %v258 = icmp eq i16 %v257, 0
408 %v259 = zext i1 %v258 to i16
409 %v260 = add i16 %v259, %v255
410 %v261 = getelementptr i16, ptr %a1, i32 8
411 %v262 = load i16, ptr %v261, align 2, !tbaa !0
412 %v263 = icmp eq i16 %v262, 0
413 %v264 = zext i1 %v263 to i16
414 %v265 = add i16 %v264, %v260
415 %v266 = getelementptr i16, ptr %a1, i32 9
416 %v267 = load i16, ptr %v266, align 2, !tbaa !0
417 %v268 = icmp eq i16 %v267, 0
418 %v269 = zext i1 %v268 to i16
419 %v270 = add i16 %v269, %v265
420 %v271 = getelementptr inbounds i16, ptr %a1, i32 10
421 %v272 = load i16, ptr %v271, align 2, !tbaa !0
422 %v273 = icmp ult i16 %v272, 32
423 %v274 = zext i1 %v273 to i16
424 %v275 = add i16 %v274, %v270
425 %v276 = icmp eq i16 %v275, 11
426 br i1 %v276, label %b35, label %b31
429 tail call void @f3(ptr getelementptr inbounds (%s.0, ptr @g3, i32 0, i32 2, i32 0), ptr @g2)
430 %v277 = load i16, ptr @g14, align 2, !tbaa !0
431 %v278 = icmp eq i16 %v277, 0
432 br i1 %v278, label %b32, label %b34
435 %v279 = load i16, ptr getelementptr inbounds (%s.0, ptr @g3, i32 0, i32 3), align 2, !tbaa !4
436 %v280 = icmp sgt i16 %v279, 100
437 br i1 %v280, label %b35, label %b33
440 %v281 = load i16, ptr @g2, align 2, !tbaa !0
441 %v282 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 1), align 2, !tbaa !0
442 %v283 = icmp sgt i16 %v281, %v282
443 %v284 = select i1 %v283, i16 %v281, i16 %v282
444 %v285 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 4), align 2, !tbaa !0
445 %v286 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 5), align 2, !tbaa !0
446 %v287 = icmp slt i16 %v285, %v286
447 %v288 = select i1 %v287, i16 %v285, i16 %v286
448 %v289 = load i16, ptr getelementptr inbounds ([10 x i16], ptr @g2, i32 0, i32 6), align 2, !tbaa !0
449 %v290 = icmp slt i16 %v288, %v289
450 %v291 = select i1 %v290, i16 %v288, i16 %v289
451 %v292 = icmp slt i16 %v284, %v291
452 br i1 %v292, label %b34, label %b35
454 b34: ; preds = %b33, %b31
457 b35: ; preds = %b34, %b33, %b32, %b30, %b29, %b28, %b27, %b26, %b25, %b24, %b23, %b22, %b21, %b20, %b19, %b18, %b17, %b15, %b14, %b13, %b12, %b11, %b10, %b9, %b8, %b7, %b6, %b5, %b3, %b0
458 %v293 = phi i16 [ 0, %b34 ], [ 1, %b29 ], [ 0, %b19 ], [ 0, %b14 ], [ 0, %b10 ], [ 0, %b3 ], [ 0, %b8 ], [ 1, %b5 ], [ 1, %b6 ], [ 1, %b9 ], [ 1, %b11 ], [ 1, %b12 ], [ 1, %b15 ], [ 1, %b17 ], [ 1, %b18 ], [ 1, %b20 ], [ 1, %b22 ], [ 1, %b23 ], [ 1, %b24 ], [ 0, %b27 ], [ 0, %b28 ], [ 0, %b21 ], [ 1, %b30 ], [ 1, %b32 ], [ 1, %b33 ], [ 0, %b0 ], [ 1, %b7 ], [ 1, %b13 ], [ 1, %b25 ], [ 0, %b26 ]
462 ; Function Attrs: nounwind
463 declare void @f1(ptr, ptr, ptr, ptr, ptr) #0
465 ; Function Attrs: nounwind
466 declare void @f2(ptr, ptr) #0
468 ; Function Attrs: nounwind
469 declare void @f3(ptr, ptr) #0
471 ; Function Attrs: nounwind
472 declare signext i16 @f4(i16 signext, i16 signext) #0
474 ; Function Attrs: nounwind
475 declare signext i16 @f5(i16 signext) #0
477 ; Function Attrs: nounwind
478 declare signext i16 @f6(i16 signext, i16 signext) #0
480 ; Function Attrs: nounwind
481 declare void @f7() #0
483 ; Function Attrs: argmemonly nounwind
484 declare void @llvm.memset.p0.i32(ptr nocapture writeonly, i8, i32, i1) #1
486 attributes #0 = { nounwind }
487 attributes #1 = { argmemonly nounwind }
489 !0 = !{!1, !1, i64 0}
490 !1 = !{!"short", !2, i64 0}
491 !2 = !{!"omnipotent char", !3, i64 0}
492 !3 = !{!"Simple C/C++ TBAA"}
493 !4 = !{!5, !1, i64 12}
494 !5 = !{!"_ZTS6PACKET", !1, i64 0, !1, i64 2, !2, i64 4, !1, i64 12, !1, i64 14, !2, i64 16, !2, i64 22, !2, i64 46, !2, i64 52, !1, i64 60, !1, i64 62, !1, i64 64, !1, i64 66, !2, i64 68, !1, i64 72, !1, i64 74, !2, i64 76, !2, i64 82}