1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -indvars -S | FileCheck %s
3 ; RUN: opt < %s -passes=indvars -S | FileCheck %s
5 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
6 target triple = "x86_64-unknown-linux-gnu"
8 ; Function Attrs: nofree norecurse nounwind uwtable
9 define void @test(i8* nocapture readnone %arg, i8* noalias nocapture readnone %arg1, i8** noalias nocapture readnone %arg2, i8** noalias nocapture readonly %arg3, i64* noalias nocapture readnone %arg4) local_unnamed_addr #0 {
12 %tmp = bitcast i8** %arg3 to [1 x [4 x [10 x [5 x float]]]]**
13 %tmp5 = load [1 x [4 x [10 x [5 x float]]]]*, [1 x [4 x [10 x [5 x float]]]]** %tmp, align 8, !invariant.load !0, !dereferenceable !1, !align !2
14 %tmp6 = getelementptr inbounds i8*, i8** %arg3, i64 3
15 %tmp7 = load i8*, i8** %tmp6, align 8, !invariant.load !0, !dereferenceable !3, !align !2
16 %tmp8 = bitcast i8* %tmp7 to [10 x [5 x [2 x [1 x [2 x float]]]]]*
19 bb9: ; preds = %bb33, %bb
20 %tmp10 = phi i64 [ 0, %bb ], [ %tmp34, %bb33 ]
21 %tmp11 = sub nsw i64 9, %tmp10
24 bb12: ; preds = %bb30, %bb9
25 %tmp13 = phi i64 [ 0, %bb9 ], [ %tmp31, %bb30 ]
26 %tmp14 = sub nsw i64 4, %tmp13
29 bb15: ; preds = %bb27, %bb12
30 %tmp16 = phi i64 [ 0, %bb12 ], [ %tmp28, %bb27 ]
31 %tmp17 = mul i64 %tmp16, -2
32 %tmp18 = add i64 %tmp17, 2
35 bb19: ; preds = %bb19, %bb15
36 %tmp20 = phi i64 [ 0, %bb15 ], [ %tmp25, %bb19 ]
37 %tmp21 = add nuw nsw i64 %tmp18, %tmp20
38 %tmp22 = getelementptr inbounds [1 x [4 x [10 x [5 x float]]]], [1 x [4 x [10 x [5 x float]]]]* %tmp5, i64 0, i64 0, i64 %tmp21, i64 %tmp11, i64 %tmp14
39 %tmp23 = load float, float* %tmp22, align 4, !invariant.load !0, !noalias !4
40 %tmp24 = getelementptr inbounds [10 x [5 x [2 x [1 x [2 x float]]]]], [10 x [5 x [2 x [1 x [2 x float]]]]]* %tmp8, i64 0, i64 %tmp10, i64 %tmp13, i64 %tmp16, i64 0, i64 %tmp20
41 store float %tmp23, float* %tmp24, align 4, !alias.scope !4, !noalias !7
42 %tmp25 = add nuw nsw i64 %tmp20, 1
43 %tmp26 = icmp eq i64 %tmp20, 0
44 br i1 %tmp26, label %bb19, label %bb27
47 %tmp28 = add nuw nsw i64 %tmp16, 1
48 %tmp29 = icmp eq i64 %tmp16, 0
49 br i1 %tmp29, label %bb15, label %bb30
52 %tmp31 = add nuw nsw i64 %tmp13, 1
53 %tmp32 = icmp ugt i64 %tmp13, 3
54 br i1 %tmp32, label %bb33, label %bb12
57 %tmp34 = add nuw nsw i64 %tmp10, 1
58 %tmp35 = icmp ugt i64 %tmp10, 8
59 br i1 %tmp35, label %bb36, label %bb9
62 %tmp37 = getelementptr inbounds i8*, i8** %arg3, i64 1
63 %tmp38 = bitcast i8** %tmp37 to [1 x [4 x [6 x [7 x float]]]]**
64 %tmp39 = load [1 x [4 x [6 x [7 x float]]]]*, [1 x [4 x [6 x [7 x float]]]]** %tmp38, align 8, !invariant.load !0, !dereferenceable !10, !align !2
65 %tmp40 = getelementptr inbounds i8, i8* %tmp7, i64 800
66 %tmp41 = bitcast i8* %tmp40 to [2 x [6 x [7 x [2 x [1 x float]]]]]*
69 bb42: ; preds = %bb63, %bb36
70 %tmp43 = phi i64 [ 0, %bb36 ], [ %tmp64, %bb63 ]
73 bb44: ; preds = %bb60, %bb42
74 %tmp45 = phi i64 [ 0, %bb42 ], [ %tmp61, %bb60 ]
77 bb46: ; preds = %bb57, %bb44
78 %tmp47 = phi i64 [ 0, %bb44 ], [ %tmp58, %bb57 ]
81 bb48: ; preds = %bb48, %bb46
82 %tmp49 = phi i64 [ 0, %bb46 ], [ %tmp55, %bb48 ]
83 %tmp50 = shl nuw nsw i64 %tmp49, 1
84 %tmp51 = add nuw nsw i64 %tmp50, %tmp43
85 %tmp52 = getelementptr inbounds [1 x [4 x [6 x [7 x float]]]], [1 x [4 x [6 x [7 x float]]]]* %tmp39, i64 0, i64 0, i64 %tmp51, i64 %tmp45, i64 %tmp47
86 %tmp53 = load float, float* %tmp52, align 4, !invariant.load !0, !noalias !11
87 %tmp54 = getelementptr inbounds [2 x [6 x [7 x [2 x [1 x float]]]]], [2 x [6 x [7 x [2 x [1 x float]]]]]* %tmp41, i64 0, i64 %tmp43, i64 %tmp45, i64 %tmp47, i64 %tmp49, i64 0
88 store float %tmp53, float* %tmp54, align 4, !alias.scope !11, !noalias !12
89 %tmp55 = add nuw nsw i64 %tmp49, 1
90 %tmp56 = icmp eq i64 %tmp49, 0
91 br i1 %tmp56, label %bb48, label %bb57
94 %tmp58 = add nuw nsw i64 %tmp47, 1
95 %tmp59 = icmp ugt i64 %tmp47, 5
96 br i1 %tmp59, label %bb60, label %bb46
99 %tmp61 = add nuw nsw i64 %tmp45, 1
100 %tmp62 = icmp ugt i64 %tmp45, 4
101 br i1 %tmp62, label %bb63, label %bb44
103 bb63: ; preds = %bb60
104 %tmp64 = add nuw nsw i64 %tmp43, 1
105 %tmp65 = icmp eq i64 %tmp43, 0
106 br i1 %tmp65, label %bb42, label %bb66
108 bb66: ; preds = %bb63
109 %tmp67 = getelementptr inbounds i8, i8* %tmp7, i64 1472
110 %tmp68 = bitcast i8* %tmp67 to [2 x [1 x [2 x [2 x [2 x float]]]]]*
113 bb69: ; preds = %bb140, %bb66
114 %tmp70 = phi i64 [ 0, %bb66 ], [ %tmp141, %bb140 ]
117 bb71: ; preds = %bb137, %bb69
118 %tmp72 = phi i64 [ 0, %bb69 ], [ %tmp138, %bb137 ]
119 %tmp73 = shl nuw nsw i64 %tmp72, 1
120 %tmp74 = add nsw i64 %tmp73, -2
123 bb75: ; preds = %bb134, %bb71
124 %tmp76 = phi i64 [ 0, %bb71 ], [ %tmp135, %bb134 ]
125 %tmp77 = add nsw i64 %tmp76, -1
128 bb78: ; preds = %bb129, %bb75
129 %tmp79 = phi i64 [ 0, %bb75 ], [ %tmp132, %bb129 ]
132 bb80: ; preds = %bb125, %bb78
133 %tmp81 = phi float [ 0.000000e+00, %bb78 ], [ %tmp126, %bb125 ]
134 %tmp82 = phi i64 [ 0, %bb78 ], [ %tmp127, %bb125 ]
135 %tmp83 = shl nuw nsw i64 %tmp82, 1
136 %tmp84 = add nsw i64 %tmp83, -1
137 %tmp85 = icmp ult i64 %tmp84, 10
138 %tmp86 = sub nsw i64 5, %tmp82
139 br i1 %tmp85, label %bb88, label %bb87
141 bb87: ; preds = %bb80
144 bb88: ; preds = %bb80
147 bb89: ; preds = %bb100, %bb88
148 %tmp90 = phi float [ %tmp101, %bb100 ], [ %tmp81, %bb88 ]
149 %tmp91 = phi i64 [ %tmp102, %bb100 ], [ 0, %bb88 ]
150 %tmp92 = add i64 %tmp74, %tmp91
151 %tmp93 = icmp ult i64 %tmp92, 5
152 %tmp94 = sub nsw i64 6, %tmp91
153 br i1 %tmp93, label %bb96, label %bb95
155 bb95: ; preds = %bb89
158 bb96: ; preds = %bb89
161 bb97: ; preds = %bb110
162 %tmp98 = phi float [ %tmp111, %bb110 ]
165 bb99: ; preds = %bb95
168 bb100: ; preds = %bb99, %bb97
169 %tmp101 = phi float [ %tmp98, %bb97 ], [ %tmp90, %bb99 ]
170 %tmp102 = add nuw nsw i64 %tmp91, 1
171 %tmp103 = icmp ugt i64 %tmp91, 5
172 br i1 %tmp103, label %bb122, label %bb89
174 bb104: ; preds = %bb110, %bb96
175 %tmp105 = phi float [ %tmp111, %bb110 ], [ %tmp90, %bb96 ]
176 %tmp106 = phi i64 [ %tmp112, %bb110 ], [ 0, %bb96 ]
177 %tmp107 = shl nuw nsw i64 %tmp106, 1
178 ; CHECK-NOT: %bugged = add nuw nsw
179 ; CHECK: %bugged = add nsw
180 %bugged = add i64 %tmp77, %tmp107
181 %tmp109 = icmp ult i64 %bugged, 2
182 br i1 %tmp109, label %bb114, label %bb110
184 bb110: ; preds = %bb114, %bb104
185 %tmp111 = phi float [ %tmp121, %bb114 ], [ %tmp105, %bb104 ]
186 %tmp112 = add nuw nsw i64 %tmp106, 1
187 %tmp113 = icmp eq i64 %tmp106, 0
188 br i1 %tmp113, label %bb104, label %bb97
190 bb114: ; preds = %bb104
191 %tmp115 = sub nsw i64 1, %tmp106
192 %tmp116 = getelementptr inbounds [2 x [6 x [7 x [2 x [1 x float]]]]], [2 x [6 x [7 x [2 x [1 x float]]]]]* %tmp41, i64 0, i64 %tmp70, i64 %tmp86, i64 %tmp94, i64 %tmp115, i64 0
193 %tmp117 = getelementptr inbounds [10 x [5 x [2 x [1 x [2 x float]]]]], [10 x [5 x [2 x [1 x [2 x float]]]]]* %tmp8, i64 0, i64 %tmp84, i64 %tmp92, i64 %bugged, i64 0, i64 %tmp79
194 %tmp118 = load float, float* %tmp117, align 4, !alias.scope !4, !noalias !7
195 %tmp119 = load float, float* %tmp116, align 4, !alias.scope !11, !noalias !12
196 %tmp120 = fmul reassoc nsz contract float %tmp118, %tmp119
197 %tmp121 = fadd reassoc nsz contract float %tmp105, %tmp120
200 bb122: ; preds = %bb100
201 %tmp123 = phi float [ %tmp101, %bb100 ]
204 bb124: ; preds = %bb87
207 bb125: ; preds = %bb124, %bb122
208 %tmp126 = phi float [ %tmp123, %bb122 ], [ %tmp81, %bb124 ]
209 %tmp127 = add nuw nsw i64 %tmp82, 1
210 %tmp128 = icmp ugt i64 %tmp82, 4
211 br i1 %tmp128, label %bb129, label %bb80
213 bb129: ; preds = %bb125
214 %tmp130 = phi float [ %tmp126, %bb125 ]
215 %tmp131 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 %tmp70, i64 0, i64 %tmp72, i64 %tmp76, i64 %tmp79
216 store float %tmp130, float* %tmp131, align 4, !alias.scope !13, !noalias !14
217 %tmp132 = add nuw nsw i64 %tmp79, 1
218 %tmp133 = icmp eq i64 %tmp79, 0
219 br i1 %tmp133, label %bb78, label %bb134
221 bb134: ; preds = %bb129
222 %tmp135 = add nuw nsw i64 %tmp76, 1
223 %tmp136 = icmp eq i64 %tmp76, 0
224 br i1 %tmp136, label %bb75, label %bb137
226 bb137: ; preds = %bb134
227 %tmp138 = add nuw nsw i64 %tmp72, 1
228 %tmp139 = icmp eq i64 %tmp72, 0
229 br i1 %tmp139, label %bb71, label %bb140
231 bb140: ; preds = %bb137
232 %tmp141 = add nuw nsw i64 %tmp70, 1
233 %tmp142 = icmp eq i64 %tmp70, 0
234 br i1 %tmp142, label %bb69, label %bb143
236 bb143: ; preds = %bb140
237 %tmp144 = getelementptr inbounds i8*, i8** %arg3, i64 2
238 %tmp145 = bitcast i8** %tmp144 to [4 x [2 x [1 x [2 x float]]]]**
239 %tmp146 = load [4 x [2 x [1 x [2 x float]]]]*, [4 x [2 x [1 x [2 x float]]]]** %tmp145, align 8, !invariant.load !0, !dereferenceable !16, !align !2
242 bb147: ; preds = %bb143
245 bb148: ; preds = %bb147
248 bb149: ; preds = %bb148
249 %tmp150 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0
250 %tmp151 = load float, float* %tmp150, align 4, !alias.scope !13, !noalias !14
251 %tmp152 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 0, i64 0, i64 0, i64 0
252 store float %tmp151, float* %tmp152, align 4, !alias.scope !17, !noalias !13
253 %tmp153 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 0, i64 0, i64 1, i64 0, i64 0
254 %tmp154 = load float, float* %tmp153, align 4, !alias.scope !13, !noalias !14
255 %tmp155 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 0, i64 0, i64 0, i64 1
256 store float %tmp154, float* %tmp155, align 4, !alias.scope !17, !noalias !13
259 bb156: ; preds = %bb149
260 %tmp157 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 1, i64 0, i64 0, i64 0, i64 0
261 %tmp158 = load float, float* %tmp157, align 4, !alias.scope !13, !noalias !14
262 %tmp159 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 0, i64 1, i64 0, i64 0
263 store float %tmp158, float* %tmp159, align 4, !alias.scope !17, !noalias !13
264 %tmp160 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 1, i64 0, i64 1, i64 0, i64 0
265 %tmp161 = load float, float* %tmp160, align 4, !alias.scope !13, !noalias !14
266 %tmp162 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 0, i64 1, i64 0, i64 1
267 store float %tmp161, float* %tmp162, align 4, !alias.scope !17, !noalias !13
270 bb163: ; preds = %bb156
273 bb164: ; preds = %bb163
274 %tmp165 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 0, i64 0, i64 0, i64 0, i64 1
275 %tmp166 = load float, float* %tmp165, align 4, !alias.scope !13, !noalias !14
276 %tmp167 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 1, i64 0, i64 0, i64 0
277 store float %tmp166, float* %tmp167, align 4, !alias.scope !17, !noalias !13
278 %tmp168 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 0, i64 0, i64 1, i64 0, i64 1
279 %tmp169 = load float, float* %tmp168, align 4, !alias.scope !13, !noalias !14
280 %tmp170 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 1, i64 0, i64 0, i64 1
281 store float %tmp169, float* %tmp170, align 4, !alias.scope !17, !noalias !13
284 bb171: ; preds = %bb164
285 %tmp172 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 1, i64 0, i64 0, i64 0, i64 1
286 %tmp173 = load float, float* %tmp172, align 4, !alias.scope !13, !noalias !14
287 %tmp174 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 1, i64 1, i64 0, i64 0
288 store float %tmp173, float* %tmp174, align 4, !alias.scope !17, !noalias !13
289 %tmp175 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 1, i64 0, i64 1, i64 0, i64 1
290 %tmp176 = load float, float* %tmp175, align 4, !alias.scope !13, !noalias !14
291 %tmp177 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 1, i64 1, i64 0, i64 1
292 store float %tmp176, float* %tmp177, align 4, !alias.scope !17, !noalias !13
295 bb178: ; preds = %bb171
298 bb179: ; preds = %bb178
299 %tmp180 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 0, i64 0, i64 0, i64 1, i64 0
300 %tmp181 = load float, float* %tmp180, align 4, !alias.scope !13, !noalias !14
301 %tmp182 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 2, i64 0, i64 0, i64 0
302 store float %tmp181, float* %tmp182, align 4, !alias.scope !17, !noalias !13
303 %tmp183 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 0, i64 0, i64 1, i64 1, i64 0
304 %tmp184 = load float, float* %tmp183, align 4, !alias.scope !13, !noalias !14
305 %tmp185 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 2, i64 0, i64 0, i64 1
306 store float %tmp184, float* %tmp185, align 4, !alias.scope !17, !noalias !13
309 bb186: ; preds = %bb179
310 %tmp187 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 1, i64 0, i64 0, i64 1, i64 0
311 %tmp188 = load float, float* %tmp187, align 4, !alias.scope !13, !noalias !14
312 %tmp189 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 2, i64 1, i64 0, i64 0
313 store float %tmp188, float* %tmp189, align 4, !alias.scope !17, !noalias !13
314 %tmp190 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 1, i64 0, i64 1, i64 1, i64 0
315 %tmp191 = load float, float* %tmp190, align 4, !alias.scope !13, !noalias !14
316 %tmp192 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 2, i64 1, i64 0, i64 1
317 store float %tmp191, float* %tmp192, align 4, !alias.scope !17, !noalias !13
320 bb193: ; preds = %bb186
323 bb194: ; preds = %bb193
324 %tmp195 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 0, i64 0, i64 0, i64 1, i64 1
325 %tmp196 = load float, float* %tmp195, align 4, !alias.scope !13, !noalias !14
326 %tmp197 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 3, i64 0, i64 0, i64 0
327 store float %tmp196, float* %tmp197, align 4, !alias.scope !17, !noalias !13
328 %tmp198 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 0, i64 0, i64 1, i64 1, i64 1
329 %tmp199 = load float, float* %tmp198, align 4, !alias.scope !13, !noalias !14
330 %tmp200 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 3, i64 0, i64 0, i64 1
331 store float %tmp199, float* %tmp200, align 4, !alias.scope !17, !noalias !13
334 bb201: ; preds = %bb194
335 %tmp202 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 1, i64 0, i64 0, i64 1, i64 1
336 %tmp203 = load float, float* %tmp202, align 4, !alias.scope !13, !noalias !14
337 %tmp204 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 3, i64 1, i64 0, i64 0
338 store float %tmp203, float* %tmp204, align 4, !alias.scope !17, !noalias !13
339 %tmp205 = getelementptr inbounds [2 x [1 x [2 x [2 x [2 x float]]]]], [2 x [1 x [2 x [2 x [2 x float]]]]]* %tmp68, i64 0, i64 1, i64 0, i64 1, i64 1, i64 1
340 %tmp206 = load float, float* %tmp205, align 4, !alias.scope !13, !noalias !14
341 %tmp207 = getelementptr inbounds [4 x [2 x [1 x [2 x float]]]], [4 x [2 x [1 x [2 x float]]]]* %tmp146, i64 0, i64 3, i64 1, i64 0, i64 1
342 store float %tmp206, float* %tmp207, align 4, !alias.scope !17, !noalias !13
346 attributes #0 = { nofree norecurse nounwind uwtable "denormal-fp-math"="preserve-sign" "no-frame-pointer-elim"="false" }
353 !5 = !{!"buffer: {index:3, offset:0, size:800}", !6}
354 !6 = !{!"XLA global AA domain"}
356 !8 = !{!"buffer: {index:3, offset:800, size:672}", !6}
357 !9 = !{!"buffer: {index:3, offset:1472, size:64}", !6}
363 !15 = !{!"buffer: {index:2, offset:0, size:64}", !6}