[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / IndVarSimplify / addrec_no_exec_on_every_iteration.ll
blob640edb528789e89ad4bd04318a2d5ffdf42b063a
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 {
10 ; CHECK-LABEL: @test
11 bb:
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]]]]]*
17   br label %bb9
19 bb9:                                              ; preds = %bb33, %bb
20   %tmp10 = phi i64 [ 0, %bb ], [ %tmp34, %bb33 ]
21   %tmp11 = sub nsw i64 9, %tmp10
22   br label %bb12
24 bb12:                                             ; preds = %bb30, %bb9
25   %tmp13 = phi i64 [ 0, %bb9 ], [ %tmp31, %bb30 ]
26   %tmp14 = sub nsw i64 4, %tmp13
27   br label %bb15
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
33   br label %bb19
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
46 bb27:                                             ; preds = %bb19
47   %tmp28 = add nuw nsw i64 %tmp16, 1
48   %tmp29 = icmp eq i64 %tmp16, 0
49   br i1 %tmp29, label %bb15, label %bb30
51 bb30:                                             ; preds = %bb27
52   %tmp31 = add nuw nsw i64 %tmp13, 1
53   %tmp32 = icmp ugt i64 %tmp13, 3
54   br i1 %tmp32, label %bb33, label %bb12
56 bb33:                                             ; preds = %bb30
57   %tmp34 = add nuw nsw i64 %tmp10, 1
58   %tmp35 = icmp ugt i64 %tmp10, 8
59   br i1 %tmp35, label %bb36, label %bb9
61 bb36:                                             ; preds = %bb33
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]]]]]*
67   br label %bb42
69 bb42:                                             ; preds = %bb63, %bb36
70   %tmp43 = phi i64 [ 0, %bb36 ], [ %tmp64, %bb63 ]
71   br label %bb44
73 bb44:                                             ; preds = %bb60, %bb42
74   %tmp45 = phi i64 [ 0, %bb42 ], [ %tmp61, %bb60 ]
75   br label %bb46
77 bb46:                                             ; preds = %bb57, %bb44
78   %tmp47 = phi i64 [ 0, %bb44 ], [ %tmp58, %bb57 ]
79   br label %bb48
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
93 bb57:                                             ; preds = %bb48
94   %tmp58 = add nuw nsw i64 %tmp47, 1
95   %tmp59 = icmp ugt i64 %tmp47, 5
96   br i1 %tmp59, label %bb60, label %bb46
98 bb60:                                             ; preds = %bb57
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]]]]]*
111   br label %bb69
113 bb69:                                             ; preds = %bb140, %bb66
114   %tmp70 = phi i64 [ 0, %bb66 ], [ %tmp141, %bb140 ]
115   br label %bb71
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
121   br label %bb75
123 bb75:                                             ; preds = %bb134, %bb71
124   %tmp76 = phi i64 [ 0, %bb71 ], [ %tmp135, %bb134 ]
125   %tmp77 = add nsw i64 %tmp76, -1
126   br label %bb78
128 bb78:                                             ; preds = %bb129, %bb75
129   %tmp79 = phi i64 [ 0, %bb75 ], [ %tmp132, %bb129 ]
130   br label %bb80
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
142   br label %bb124
144 bb88:                                             ; preds = %bb80
145   br label %bb89
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
156   br label %bb99
158 bb96:                                             ; preds = %bb89
159   br label %bb104
161 bb97:                                             ; preds = %bb110
162   %tmp98 = phi float [ %tmp111, %bb110 ]
163   br label %bb100
165 bb99:                                             ; preds = %bb95
166   br label %bb100
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
198   br label %bb110
200 bb122:                                            ; preds = %bb100
201   %tmp123 = phi float [ %tmp101, %bb100 ]
202   br label %bb125
204 bb124:                                            ; preds = %bb87
205   br label %bb125
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
240   br label %bb147
242 bb147:                                            ; preds = %bb143
243   br label %bb148
245 bb148:                                            ; preds = %bb147
246   br label %bb149
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
257   br label %bb156
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
268   br label %bb163
270 bb163:                                            ; preds = %bb156
271   br label %bb164
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
282   br label %bb171
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
293   br label %bb178
295 bb178:                                            ; preds = %bb171
296   br label %bb179
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
307   br label %bb186
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
318   br label %bb193
320 bb193:                                            ; preds = %bb186
321   br label %bb194
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
332   br label %bb201
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
343   ret void
346 attributes #0 = { nofree norecurse nounwind uwtable "denormal-fp-math"="preserve-sign" "no-frame-pointer-elim"="false" }
348 !0 = !{}
349 !1 = !{i64 800}
350 !2 = !{i64 16}
351 !3 = !{i64 1536}
352 !4 = !{!5}
353 !5 = !{!"buffer: {index:3, offset:0, size:800}", !6}
354 !6 = !{!"XLA global AA domain"}
355 !7 = !{!8, !9}
356 !8 = !{!"buffer: {index:3, offset:800, size:672}", !6}
357 !9 = !{!"buffer: {index:3, offset:1472, size:64}", !6}
358 !10 = !{i64 672}
359 !11 = !{!8}
360 !12 = !{!5, !9}
361 !13 = !{!9}
362 !14 = !{!15, !5, !8}
363 !15 = !{!"buffer: {index:2, offset:0, size:64}", !6}
364 !16 = !{i64 64}
365 !17 = !{!15}