xref: /llvm-project/llvm/test/CodeGen/AMDGPU/si-spill-cf.ll (revision 9e9907f1cfa424366fba58d9520f9305b537cec9)
1; RUN: llc -mtriple=amdgcn < %s -verify-machineinstrs | FileCheck -check-prefix=SI %s
2; RUN: llc -mtriple=amdgcn -mcpu=tonga < %s -verify-machineinstrs | FileCheck -check-prefix=SI %s
3
4; If this occurs it is likely due to reordering and the restore was
5; originally supposed to happen before SI_END_CF.
6
7; SI: s_or_b64 exec, exec, [[SAVED:s\[[0-9]+:[0-9]+\]|[a-z]+]]
8; SI-NOT: v_readlane_b32 [[SAVED]]
9
10define amdgpu_ps void @main() #0 {
11main_body:
12  %tmp = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 16, i32 0)
13  %tmp1 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 32, i32 0)
14  %tmp2 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 80, i32 0)
15  %tmp3 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 84, i32 0)
16  %tmp4 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 88, i32 0)
17  %tmp5 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 96, i32 0)
18  %tmp6 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 100, i32 0)
19  %tmp7 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 104, i32 0)
20  %tmp8 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 112, i32 0)
21  %tmp9 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 116, i32 0)
22  %tmp10 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 120, i32 0)
23  %tmp11 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 128, i32 0)
24  %tmp12 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 132, i32 0)
25  %tmp13 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 136, i32 0)
26  %tmp14 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 144, i32 0)
27  %tmp15 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 148, i32 0)
28  %tmp16 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 152, i32 0)
29  %tmp17 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 160, i32 0)
30  %tmp18 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 164, i32 0)
31  %tmp19 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 168, i32 0)
32  %tmp20 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 176, i32 0)
33  %tmp21 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 180, i32 0)
34  %tmp22 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 184, i32 0)
35  %tmp23 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 192, i32 0)
36  %tmp24 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 196, i32 0)
37  %tmp25 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 200, i32 0)
38  %tmp26 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 208, i32 0)
39  %tmp27 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 212, i32 0)
40  %tmp28 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 216, i32 0)
41  %tmp29 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 224, i32 0)
42  %tmp30 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 228, i32 0)
43  %tmp31 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 232, i32 0)
44  %tmp32 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 240, i32 0)
45  %tmp33 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 244, i32 0)
46  %tmp34 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 248, i32 0)
47  %tmp35 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 256, i32 0)
48  %tmp36 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 260, i32 0)
49  %tmp37 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 264, i32 0)
50  %tmp38 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 272, i32 0)
51  %tmp39 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 276, i32 0)
52  %tmp40 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 280, i32 0)
53  %tmp41 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 288, i32 0)
54  %tmp42 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 292, i32 0)
55  %tmp43 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 296, i32 0)
56  %tmp44 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 304, i32 0)
57  %tmp45 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 308, i32 0)
58  %tmp46 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 312, i32 0)
59  %tmp47 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 320, i32 0)
60  %tmp48 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 324, i32 0)
61  %tmp49 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 328, i32 0)
62  %tmp50 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 336, i32 0)
63  %tmp51 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 340, i32 0)
64  %tmp52 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 344, i32 0)
65  %tmp53 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 352, i32 0)
66  %tmp54 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 356, i32 0)
67  %tmp55 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 360, i32 0)
68  %tmp56 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 368, i32 0)
69  %tmp57 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 372, i32 0)
70  %tmp58 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 376, i32 0)
71  %tmp59 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 384, i32 0)
72  %tmp60 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 388, i32 0)
73  %tmp61 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 392, i32 0)
74  %tmp62 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 400, i32 0)
75  %tmp63 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 404, i32 0)
76  %tmp64 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 408, i32 0)
77  %tmp65 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 416, i32 0)
78  %tmp66 = call float @llvm.amdgcn.s.buffer.load.f32(<4 x i32> undef, i32 420, i32 0)
79  br label %LOOP
80
81LOOP:                                             ; preds = %ENDIF2795, %main_body
82  %temp894.0 = phi float [ 0.000000e+00, %main_body ], [ %temp894.1, %ENDIF2795 ]
83  %temp18.0 = phi float [ undef, %main_body ], [ %temp18.1, %ENDIF2795 ]
84  %tid = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0)
85  %tmp67 = icmp sgt i32 %tid, 4
86  br i1 %tmp67, label %ENDLOOP, label %ENDIF
87
88ENDLOOP:                                          ; preds = %ELSE2566, %LOOP
89  %one.sub.a.i = fsub float 1.000000e+00, %tmp
90  %one.sub.ac.i = fmul float %one.sub.a.i, undef
91  %fmul = fmul float undef, undef
92  %result.i = fadd float %fmul, %one.sub.ac.i
93  call void @llvm.amdgcn.exp.f32(i32 0, i32 15, float undef, float %result.i, float undef, float 1.000000e+00, i1 true, i1 true) #0
94  ret void
95
96ENDIF:                                            ; preds = %LOOP
97  %tmp68 = fsub float %tmp2, undef
98  %tmp69 = fsub float %tmp3, undef
99  %tmp70 = fsub float %tmp4, undef
100  %tmp71 = fmul float %tmp68, 0.000000e+00
101  %tmp72 = fmul float %tmp69, undef
102  %tmp73 = fmul float %tmp70, undef
103  %tmp74 = fsub float %tmp6, undef
104  %tmp75 = fsub float %tmp7, undef
105  %tmp76 = fmul float %tmp74, undef
106  %tmp77 = fmul float %tmp75, 0.000000e+00
107  %tmp78 = call float @llvm.minnum.f32(float %tmp73, float %tmp77)
108  %tmp79 = call float @llvm.maxnum.f32(float %tmp71, float 0.000000e+00)
109  %tmp80 = call float @llvm.maxnum.f32(float %tmp72, float %tmp76)
110  %tmp81 = call float @llvm.maxnum.f32(float undef, float %tmp78)
111  %tmp82 = call float @llvm.minnum.f32(float %tmp79, float %tmp80)
112  %tmp83 = call float @llvm.minnum.f32(float %tmp82, float undef)
113  %tmp84 = fsub float %tmp14, undef
114  %tmp85 = fsub float %tmp15, undef
115  %tmp86 = fsub float %tmp16, undef
116  %tmp87 = fmul float %tmp84, undef
117  %tmp88 = fmul float %tmp85, undef
118  %tmp89 = fmul float %tmp86, undef
119  %tmp90 = fsub float %tmp17, undef
120  %tmp91 = fsub float %tmp18, undef
121  %tmp92 = fsub float %tmp19, undef
122  %tmp93 = fmul float %tmp90, 0.000000e+00
123  %tmp94 = fmul float %tmp91, undef
124  %tmp95 = fmul float %tmp92, undef
125  %tmp96 = call float @llvm.minnum.f32(float %tmp88, float %tmp94)
126  %tmp97 = call float @llvm.maxnum.f32(float %tmp87, float %tmp93)
127  %tmp98 = call float @llvm.maxnum.f32(float %tmp89, float %tmp95)
128  %tmp99 = call float @llvm.maxnum.f32(float undef, float %tmp96)
129  %tmp100 = call float @llvm.maxnum.f32(float %tmp99, float undef)
130  %tmp101 = call float @llvm.minnum.f32(float %tmp97, float undef)
131  %tmp102 = call float @llvm.minnum.f32(float %tmp101, float %tmp98)
132  %tmp103 = fsub float %tmp30, undef
133  %tmp104 = fsub float %tmp31, undef
134  %tmp105 = fmul float %tmp103, 0.000000e+00
135  %tmp106 = fmul float %tmp104, 0.000000e+00
136  %tmp107 = call float @llvm.minnum.f32(float undef, float %tmp105)
137  %tmp108 = call float @llvm.maxnum.f32(float undef, float %tmp106)
138  %tmp109 = call float @llvm.maxnum.f32(float undef, float %tmp107)
139  %tmp110 = call float @llvm.maxnum.f32(float %tmp109, float undef)
140  %tmp111 = call float @llvm.minnum.f32(float undef, float %tmp108)
141  %tmp112 = fsub float %tmp32, undef
142  %tmp113 = fsub float %tmp33, undef
143  %tmp114 = fsub float %tmp34, undef
144  %tmp115 = fmul float %tmp112, 0.000000e+00
145  %tmp116 = fmul float %tmp113, undef
146  %tmp117 = fmul float %tmp114, undef
147  %tmp118 = fsub float %tmp35, undef
148  %tmp119 = fsub float %tmp36, undef
149  %tmp120 = fsub float %tmp37, undef
150  %tmp121 = fmul float %tmp118, undef
151  %tmp122 = fmul float %tmp119, undef
152  %tmp123 = fmul float %tmp120, undef
153  %tmp124 = call float @llvm.minnum.f32(float %tmp115, float %tmp121)
154  %tmp125 = call float @llvm.minnum.f32(float %tmp116, float %tmp122)
155  %tmp126 = call float @llvm.minnum.f32(float %tmp117, float %tmp123)
156  %tmp127 = call float @llvm.maxnum.f32(float %tmp124, float %tmp125)
157  %tmp128 = call float @llvm.maxnum.f32(float %tmp127, float %tmp126)
158  %tmp129 = fsub float %tmp38, undef
159  %tmp130 = fsub float %tmp39, undef
160  %tmp131 = fsub float %tmp40, undef
161  %tmp132 = fmul float %tmp129, 0.000000e+00
162  %tmp133 = fmul float %tmp130, undef
163  %tmp134 = fmul float %tmp131, undef
164  %tmp135 = fsub float %tmp41, undef
165  %tmp136 = fsub float %tmp42, undef
166  %tmp137 = fsub float %tmp43, undef
167  %tmp138 = fmul float %tmp135, undef
168  %tmp139 = fmul float %tmp136, undef
169  %tmp140 = fmul float %tmp137, undef
170  %tmp141 = call float @llvm.minnum.f32(float %tmp132, float %tmp138)
171  %tmp142 = call float @llvm.minnum.f32(float %tmp133, float %tmp139)
172  %tmp143 = call float @llvm.minnum.f32(float %tmp134, float %tmp140)
173  %tmp144 = call float @llvm.maxnum.f32(float %tmp141, float %tmp142)
174  %tmp145 = call float @llvm.maxnum.f32(float %tmp144, float %tmp143)
175  %tmp146 = fsub float %tmp44, undef
176  %tmp147 = fsub float %tmp45, undef
177  %tmp148 = fsub float %tmp46, undef
178  %tmp149 = fmul float %tmp146, 0.000000e+00
179  %tmp150 = fmul float %tmp147, 0.000000e+00
180  %tmp151 = fmul float %tmp148, undef
181  %tmp152 = fsub float %tmp47, undef
182  %tmp153 = fsub float %tmp48, undef
183  %tmp154 = fsub float %tmp49, undef
184  %tmp155 = fmul float %tmp152, undef
185  %tmp156 = fmul float %tmp153, 0.000000e+00
186  %tmp157 = fmul float %tmp154, undef
187  %tmp158 = call float @llvm.minnum.f32(float %tmp149, float %tmp155)
188  %tmp159 = call float @llvm.minnum.f32(float %tmp150, float %tmp156)
189  %tmp160 = call float @llvm.minnum.f32(float %tmp151, float %tmp157)
190  %tmp161 = call float @llvm.maxnum.f32(float %tmp158, float %tmp159)
191  %tmp162 = call float @llvm.maxnum.f32(float %tmp161, float %tmp160)
192  %tmp163 = fsub float %tmp50, undef
193  %tmp164 = fsub float %tmp51, undef
194  %tmp165 = fsub float %tmp52, undef
195  %tmp166 = fmul float %tmp163, undef
196  %tmp167 = fmul float %tmp164, 0.000000e+00
197  %tmp168 = fmul float %tmp165, 0.000000e+00
198  %tmp169 = fsub float %tmp53, undef
199  %tmp170 = fsub float %tmp54, undef
200  %tmp171 = fsub float %tmp55, undef
201  %tmp172 = fdiv float 1.000000e+00, %temp18.0
202  %tmp173 = fmul float %tmp169, undef
203  %tmp174 = fmul float %tmp170, undef
204  %tmp175 = fmul float %tmp171, %tmp172
205  %tmp176 = call float @llvm.minnum.f32(float %tmp166, float %tmp173)
206  %tmp177 = call float @llvm.minnum.f32(float %tmp167, float %tmp174)
207  %tmp178 = call float @llvm.minnum.f32(float %tmp168, float %tmp175)
208  %tmp179 = call float @llvm.maxnum.f32(float %tmp176, float %tmp177)
209  %tmp180 = call float @llvm.maxnum.f32(float %tmp179, float %tmp178)
210  %tmp181 = fsub float %tmp62, undef
211  %tmp182 = fsub float %tmp63, undef
212  %tmp183 = fsub float %tmp64, undef
213  %tmp184 = fmul float %tmp181, 0.000000e+00
214  %tmp185 = fmul float %tmp182, undef
215  %tmp186 = fmul float %tmp183, undef
216  %tmp187 = fsub float %tmp65, undef
217  %tmp188 = fsub float %tmp66, undef
218  %tmp189 = fmul float %tmp187, undef
219  %tmp190 = fmul float %tmp188, undef
220  %tmp191 = call float @llvm.maxnum.f32(float %tmp184, float %tmp189)
221  %tmp192 = call float @llvm.maxnum.f32(float %tmp185, float %tmp190)
222  %tmp193 = call float @llvm.maxnum.f32(float %tmp186, float undef)
223  %tmp194 = call float @llvm.minnum.f32(float %tmp191, float %tmp192)
224  %tmp195 = call float @llvm.minnum.f32(float %tmp194, float %tmp193)
225  %.temp292.7 = select i1 undef, float %tmp162, float undef
226  %temp292.9 = select i1 false, float %tmp180, float %.temp292.7
227  %.temp292.9 = select i1 undef, float undef, float %temp292.9
228  %tmp196 = fcmp ogt float undef, 0.000000e+00
229  %tmp197 = fcmp olt float undef, %tmp195
230  %tmp198 = and i1 %tmp196, %tmp197
231  %tmp199 = fcmp olt float undef, %.temp292.9
232  %tmp200 = and i1 %tmp198, %tmp199
233  %temp292.11 = select i1 %tmp200, float undef, float %.temp292.9
234  %tid0 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0)
235  %cmp0 = icmp eq i32 %tid0, 0
236  br i1 %cmp0, label %IF2565, label %ELSE2566
237
238IF2565:                                           ; preds = %ENDIF
239  %tid1 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0)
240  %cmp1 = icmp eq i32 %tid1, 0
241  br i1 %cmp1, label %ENDIF2582, label %ELSE2584
242
243ELSE2566:                                         ; preds = %ENDIF
244  %tid2 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0)
245  %tidf = bitcast i32 %tid2 to float
246  %tmp201 = fcmp oeq float %temp292.11, %tidf
247  br i1 %tmp201, label %ENDLOOP, label %ELSE2593
248
249ENDIF2564:                                        ; preds = %ENDIF2594, %ENDIF2588
250  %temp894.1 = phi float [ undef, %ENDIF2588 ], [ %temp894.2, %ENDIF2594 ]
251  %temp18.1 = phi float [ %tmp218, %ENDIF2588 ], [ undef, %ENDIF2594 ]
252  %tmp202 = fsub float %tmp5, undef
253  %tmp203 = fmul float %tmp202, undef
254  %tmp204 = call float @llvm.maxnum.f32(float undef, float %tmp203)
255  %tmp205 = call float @llvm.minnum.f32(float %tmp204, float undef)
256  %tmp206 = call float @llvm.minnum.f32(float %tmp205, float undef)
257  %tmp207 = fcmp ogt float undef, 0.000000e+00
258  %tmp208 = fcmp olt float undef, 1.000000e+00
259  %tmp209 = and i1 %tmp207, %tmp208
260  %tid3 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0)
261  %tidf3 = bitcast i32 %tid3 to float
262  %tmp210 = fcmp olt float %tidf3, %tmp206
263  %tmp211 = and i1 %tmp209, %tmp210
264  br i1 %tmp211, label %ENDIF2795, label %ELSE2797
265
266ELSE2584:                                         ; preds = %IF2565
267  br label %ENDIF2582
268
269ENDIF2582:                                        ; preds = %ELSE2584, %IF2565
270  %tmp212 = fadd float %tmp1, undef
271  %tmp213 = fadd float 0.000000e+00, %tmp212
272  %floor = call float @llvm.floor.f32(float %tmp213)
273  %tmp214 = fsub float %tmp213, %floor
274  %tid4 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0)
275  %cmp4 = icmp eq i32 %tid4, 0
276  br i1 %cmp4, label %IF2589, label %ELSE2590
277
278IF2589:                                           ; preds = %ENDIF2582
279  br label %ENDIF2588
280
281ELSE2590:                                         ; preds = %ENDIF2582
282  br label %ENDIF2588
283
284ENDIF2588:                                        ; preds = %ELSE2590, %IF2589
285  %tmp215 = fsub float 1.000000e+00, %tmp214
286  %tmp216 = call float @llvm.sqrt.f32(float %tmp215)
287  %tmp217 = fmul float %tmp216, undef
288  %tmp218 = fadd float %tmp217, undef
289  br label %ENDIF2564
290
291ELSE2593:                                         ; preds = %ELSE2566
292  %tmp219 = fcmp oeq float %temp292.11, %tmp81
293  %tmp220 = fcmp olt float %tmp81, %tmp83
294  %tmp221 = and i1 %tmp219, %tmp220
295  br i1 %tmp221, label %ENDIF2594, label %ELSE2596
296
297ELSE2596:                                         ; preds = %ELSE2593
298  %tmp222 = fcmp oeq float %temp292.11, %tmp100
299  %tmp223 = fcmp olt float %tmp100, %tmp102
300  %tmp224 = and i1 %tmp222, %tmp223
301  br i1 %tmp224, label %ENDIF2594, label %ELSE2632
302
303ENDIF2594:                                        ; preds = %ELSE2788, %ELSE2785, %ELSE2782, %ELSE2779, %IF2775, %ELSE2761, %ELSE2758, %IF2757, %ELSE2704, %ELSE2686, %ELSE2671, %ELSE2668, %IF2667, %ELSE2632, %ELSE2596, %ELSE2593
304  %temp894.2 = phi float [ 0.000000e+00, %IF2667 ], [ 0.000000e+00, %ELSE2671 ], [ 0.000000e+00, %IF2757 ], [ 0.000000e+00, %ELSE2761 ], [ %temp894.0, %ELSE2758 ], [ 0.000000e+00, %IF2775 ], [ 0.000000e+00, %ELSE2779 ], [ 0.000000e+00, %ELSE2782 ], [ %.2848, %ELSE2788 ], [ 0.000000e+00, %ELSE2785 ], [ 0.000000e+00, %ELSE2593 ], [ 0.000000e+00, %ELSE2632 ], [ 0.000000e+00, %ELSE2704 ], [ 0.000000e+00, %ELSE2686 ], [ 0.000000e+00, %ELSE2668 ], [ 0.000000e+00, %ELSE2596 ]
305  %tmp225 = fmul float %temp894.2, undef
306  br label %ENDIF2564
307
308ELSE2632:                                         ; preds = %ELSE2596
309  br i1 undef, label %ENDIF2594, label %ELSE2650
310
311ELSE2650:                                         ; preds = %ELSE2632
312  %tmp226 = fcmp oeq float %temp292.11, %tmp110
313  %tmp227 = fcmp olt float %tmp110, %tmp111
314  %tmp228 = and i1 %tmp226, %tmp227
315  br i1 %tmp228, label %IF2667, label %ELSE2668
316
317IF2667:                                           ; preds = %ELSE2650
318  br i1 undef, label %ENDIF2594, label %ELSE2671
319
320ELSE2668:                                         ; preds = %ELSE2650
321  %tmp229 = fcmp oeq float %temp292.11, %tmp128
322  %tmp230 = fcmp olt float %tmp128, undef
323  %tmp231 = and i1 %tmp229, %tmp230
324  br i1 %tmp231, label %ENDIF2594, label %ELSE2686
325
326ELSE2671:                                         ; preds = %IF2667
327  br label %ENDIF2594
328
329ELSE2686:                                         ; preds = %ELSE2668
330  %tmp232 = fcmp oeq float %temp292.11, %tmp145
331  %tmp233 = fcmp olt float %tmp145, undef
332  %tmp234 = and i1 %tmp232, %tmp233
333  br i1 %tmp234, label %ENDIF2594, label %ELSE2704
334
335ELSE2704:                                         ; preds = %ELSE2686
336  %tmp235 = fcmp oeq float %temp292.11, %tmp180
337  %tmp236 = fcmp olt float %tmp180, undef
338  %tmp237 = and i1 %tmp235, %tmp236
339  br i1 %tmp237, label %ENDIF2594, label %ELSE2740
340
341ELSE2740:                                         ; preds = %ELSE2704
342  br i1 undef, label %IF2757, label %ELSE2758
343
344IF2757:                                           ; preds = %ELSE2740
345  br i1 undef, label %ENDIF2594, label %ELSE2761
346
347ELSE2758:                                         ; preds = %ELSE2740
348  br i1 undef, label %IF2775, label %ENDIF2594
349
350ELSE2761:                                         ; preds = %IF2757
351  br label %ENDIF2594
352
353IF2775:                                           ; preds = %ELSE2758
354  %tmp238 = fcmp olt float undef, undef
355  br i1 %tmp238, label %ENDIF2594, label %ELSE2779
356
357ELSE2779:                                         ; preds = %IF2775
358  br i1 undef, label %ENDIF2594, label %ELSE2782
359
360ELSE2782:                                         ; preds = %ELSE2779
361  br i1 undef, label %ENDIF2594, label %ELSE2785
362
363ELSE2785:                                         ; preds = %ELSE2782
364  %tmp239 = fcmp olt float undef, 0.000000e+00
365  br i1 %tmp239, label %ENDIF2594, label %ELSE2788
366
367ELSE2788:                                         ; preds = %ELSE2785
368  %tmp240 = fcmp olt float 0.000000e+00, undef
369  %.2848 = select i1 %tmp240, float -1.000000e+00, float 1.000000e+00
370  br label %ENDIF2594
371
372ELSE2797:                                         ; preds = %ENDIF2564
373  %tmp241 = fsub float %tmp8, undef
374  %tmp242 = fsub float %tmp9, undef
375  %tmp243 = fsub float %tmp10, undef
376  %tmp244 = fmul float %tmp241, undef
377  %tmp245 = fmul float %tmp242, undef
378  %tmp246 = fmul float %tmp243, undef
379  %tmp247 = fsub float %tmp11, undef
380  %tmp248 = fsub float %tmp12, undef
381  %tmp249 = fsub float %tmp13, undef
382  %tmp250 = fmul float %tmp247, undef
383  %tmp251 = fmul float %tmp248, undef
384  %tmp252 = fmul float %tmp249, undef
385  %tmp253 = call float @llvm.minnum.f32(float %tmp244, float %tmp250)
386  %tmp254 = call float @llvm.minnum.f32(float %tmp245, float %tmp251)
387  %tmp255 = call float @llvm.maxnum.f32(float %tmp246, float %tmp252)
388  %tmp256 = call float @llvm.maxnum.f32(float %tmp253, float %tmp254)
389  %tmp257 = call float @llvm.maxnum.f32(float %tmp256, float undef)
390  %tmp258 = call float @llvm.minnum.f32(float undef, float %tmp255)
391  %tmp259 = fcmp ogt float %tmp257, 0.000000e+00
392  %tmp260 = fcmp olt float %tmp257, 1.000000e+00
393  %tmp261 = and i1 %tmp259, %tmp260
394  %tmp262 = fcmp olt float %tmp257, %tmp258
395  %tmp263 = and i1 %tmp261, %tmp262
396  br i1 %tmp263, label %ENDIF2795, label %ELSE2800
397
398ENDIF2795:                                        ; preds = %ELSE2824, %ELSE2821, %ELSE2818, %ELSE2815, %ELSE2812, %ELSE2809, %ELSE2806, %ELSE2803, %ELSE2800, %ELSE2797, %ENDIF2564
399  br label %LOOP
400
401ELSE2800:                                         ; preds = %ELSE2797
402  br i1 undef, label %ENDIF2795, label %ELSE2803
403
404ELSE2803:                                         ; preds = %ELSE2800
405  %tmp264 = fsub float %tmp20, undef
406  %tmp265 = fsub float %tmp21, undef
407  %tmp266 = fsub float %tmp22, undef
408  %tmp267 = fmul float %tmp264, undef
409  %tmp268 = fmul float %tmp265, undef
410  %tmp269 = fmul float %tmp266, 0.000000e+00
411  %tmp270 = fsub float %tmp23, undef
412  %tmp271 = fsub float %tmp24, undef
413  %tmp272 = fsub float %tmp25, undef
414  %tmp273 = fmul float %tmp270, undef
415  %tmp274 = fmul float %tmp271, undef
416  %tmp275 = fmul float %tmp272, undef
417  %tmp276 = call float @llvm.minnum.f32(float %tmp267, float %tmp273)
418  %tmp277 = call float @llvm.maxnum.f32(float %tmp268, float %tmp274)
419  %tmp278 = call float @llvm.maxnum.f32(float %tmp269, float %tmp275)
420  %tmp279 = call float @llvm.maxnum.f32(float %tmp276, float undef)
421  %tmp280 = call float @llvm.maxnum.f32(float %tmp279, float undef)
422  %tmp281 = call float @llvm.minnum.f32(float undef, float %tmp277)
423  %tmp282 = call float @llvm.minnum.f32(float %tmp281, float %tmp278)
424  %tmp283 = fcmp ogt float %tmp280, 0.000000e+00
425  %tmp284 = fcmp olt float %tmp280, 1.000000e+00
426  %tmp285 = and i1 %tmp283, %tmp284
427  %tmp286 = fcmp olt float %tmp280, %tmp282
428  %tmp287 = and i1 %tmp285, %tmp286
429  br i1 %tmp287, label %ENDIF2795, label %ELSE2806
430
431ELSE2806:                                         ; preds = %ELSE2803
432  %tmp288 = fsub float %tmp26, undef
433  %tmp289 = fsub float %tmp27, undef
434  %tmp290 = fsub float %tmp28, undef
435  %tmp291 = fmul float %tmp288, undef
436  %tmp292 = fmul float %tmp289, 0.000000e+00
437  %tmp293 = fmul float %tmp290, undef
438  %tmp294 = fsub float %tmp29, undef
439  %tmp295 = fmul float %tmp294, undef
440  %tmp296 = call float @llvm.minnum.f32(float %tmp291, float %tmp295)
441  %tmp297 = call float @llvm.minnum.f32(float %tmp292, float undef)
442  %tmp298 = call float @llvm.maxnum.f32(float %tmp293, float undef)
443  %tmp299 = call float @llvm.maxnum.f32(float %tmp296, float %tmp297)
444  %tmp300 = call float @llvm.maxnum.f32(float %tmp299, float undef)
445  %tmp301 = call float @llvm.minnum.f32(float undef, float %tmp298)
446  %tmp302 = fcmp ogt float %tmp300, 0.000000e+00
447  %tmp303 = fcmp olt float %tmp300, 1.000000e+00
448  %tmp304 = and i1 %tmp302, %tmp303
449  %tmp305 = fcmp olt float %tmp300, %tmp301
450  %tmp306 = and i1 %tmp304, %tmp305
451  br i1 %tmp306, label %ENDIF2795, label %ELSE2809
452
453ELSE2809:                                         ; preds = %ELSE2806
454  br i1 undef, label %ENDIF2795, label %ELSE2812
455
456ELSE2812:                                         ; preds = %ELSE2809
457  br i1 undef, label %ENDIF2795, label %ELSE2815
458
459ELSE2815:                                         ; preds = %ELSE2812
460  br i1 undef, label %ENDIF2795, label %ELSE2818
461
462ELSE2818:                                         ; preds = %ELSE2815
463  br i1 undef, label %ENDIF2795, label %ELSE2821
464
465ELSE2821:                                         ; preds = %ELSE2818
466  %tmp307 = fsub float %tmp56, undef
467  %tmp308 = fsub float %tmp57, undef
468  %tmp309 = fsub float %tmp58, undef
469  %tmp310 = fmul float %tmp307, undef
470  %tmp311 = fmul float %tmp308, 0.000000e+00
471  %tmp312 = fmul float %tmp309, undef
472  %tmp313 = fsub float %tmp59, undef
473  %tmp314 = fsub float %tmp60, undef
474  %tmp315 = fsub float %tmp61, undef
475  %tmp316 = fmul float %tmp313, undef
476  %tmp317 = fmul float %tmp314, undef
477  %tmp318 = fmul float %tmp315, undef
478  %tmp319 = call float @llvm.maxnum.f32(float %tmp310, float %tmp316)
479  %tmp320 = call float @llvm.maxnum.f32(float %tmp311, float %tmp317)
480  %tmp321 = call float @llvm.maxnum.f32(float %tmp312, float %tmp318)
481  %tmp322 = call float @llvm.minnum.f32(float %tmp319, float %tmp320)
482  %tmp323 = call float @llvm.minnum.f32(float %tmp322, float %tmp321)
483  %tmp324 = fcmp ogt float undef, 0.000000e+00
484  %tmp325 = fcmp olt float undef, 1.000000e+00
485  %tmp326 = and i1 %tmp324, %tmp325
486  %tmp327 = fcmp olt float undef, %tmp323
487  %tmp328 = and i1 %tmp326, %tmp327
488  br i1 %tmp328, label %ENDIF2795, label %ELSE2824
489
490ELSE2824:                                         ; preds = %ELSE2821
491  %.2849 = select i1 undef, float 0.000000e+00, float 1.000000e+00
492  br label %ENDIF2795
493}
494
495declare float @llvm.floor.f32(float) #1
496declare float @llvm.sqrt.f32(float) #1
497declare float @llvm.minnum.f32(float, float) #1
498declare float @llvm.maxnum.f32(float, float) #1
499declare i32 @llvm.amdgcn.mbcnt.lo(i32, i32) #1
500declare void @llvm.amdgcn.exp.f32(i32, i32, float, float, float, float, i1, i1) #0
501declare float @llvm.amdgcn.s.buffer.load.f32(<4 x i32>, i32, i32) #1
502
503attributes #0 = { nounwind }
504attributes #1 = { nounwind readnone }
505