Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / Hexagon / opt-glob-addrs-003.ll
blobd322fe9cd47f720336ac748a85e88dcdd09f61ba
1 ; RUN: llc -march=hexagon -O3 -verify-machineinstrs < %s
2 ; REQUIRES: asserts
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 {
27 b0:
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 [
34     i32 0, label %b1
35     i32 1, label %b9
36     i32 2, label %b11
37     i32 3, label %b15
38     i32 4, label %b20
39     i32 5, label %b30
40   ]
42 b1:                                               ; preds = %b0
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
47 b2:                                               ; preds = %b1
48   %v5 = load i16, ptr @g0, align 2, !tbaa !0
49   %v6 = add i16 %v5, 1
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
54 b3:                                               ; preds = %b2
55   store i16 3, ptr @g0, align 2, !tbaa !0
56   br label %b35
58 b4:                                               ; preds = %b1
59   store i16 0, ptr @g0, align 2, !tbaa !0
60   br label %b5
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
70 b6:                                               ; preds = %b5
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
107 b7:                                               ; preds = %b6
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
115 b8:                                               ; preds = %b7
116   br label %b35
118 b9:                                               ; preds = %b0
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
142 b10:                                              ; preds = %b9
143   br label %b35
145 b11:                                              ; preds = %b0
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
166 b12:                                              ; preds = %b11
167   %v90 = load i16, ptr @g5, align 2, !tbaa !0
168   switch i16 %v90, label %b14 [
169     i16 1, label %b35
170     i16 2, label %b13
171   ]
173 b13:                                              ; preds = %b12
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
181   br label %b35
183 b15:                                              ; preds = %b0
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
211 b16:                                              ; preds = %b15
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 [
214     i16 120, label %b19
215     i16 115, label %b19
216   ]
218 b17:                                              ; preds = %b16
219   %v120 = icmp sgt i16 %v119, 100
220   br i1 %v120, label %b35, label %b18
222 b18:                                              ; preds = %b17
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
245   br label %b35
247 b20:                                              ; preds = %b0
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
305 b21:                                              ; preds = %b20
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
311 b22:                                              ; preds = %b21
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
316 b23:                                              ; preds = %b22
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
331 b24:                                              ; preds = %b23
332   %v209 = load i16, ptr @g5, align 2, !tbaa !0
333   switch i16 %v209, label %b26 [
334     i16 1, label %b35
335     i16 2, label %b25
336   ]
338 b25:                                              ; preds = %b24
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
345 b26:                                              ; preds = %b24
346   %v214 = load i16, ptr @g6, align 2
347   %v215 = icmp eq i16 %v214, 0
348   br i1 %v215, label %b28, label %b35
350 b27:                                              ; preds = %b25
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
364 b29:                                              ; preds = %b28
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)
367   tail call void @f7()
368   br label %b35
370 b30:                                              ; preds = %b0
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
428 b31:                                              ; preds = %b30
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
434 b32:                                              ; preds = %b31
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
439 b33:                                              ; preds = %b32
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
455   br label %b35
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 ]
459   ret i16 %v293
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}