1; RUN: llc -march=amdgcn -mcpu=SI < %s -verify-machineinstrs | FileCheck -check-prefix=SI %s
2; RUN: llc -march=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]]
9define amdgpu_ps void @main() #0 {
10main_body:
11  %0 = call float @llvm.SI.load.const(<16 x i8> undef, i32 16)
12  %1 = call float @llvm.SI.load.const(<16 x i8> undef, i32 32)
13  %2 = call float @llvm.SI.load.const(<16 x i8> undef, i32 80)
14  %3 = call float @llvm.SI.load.const(<16 x i8> undef, i32 84)
15  %4 = call float @llvm.SI.load.const(<16 x i8> undef, i32 88)
16  %5 = call float @llvm.SI.load.const(<16 x i8> undef, i32 96)
17  %6 = call float @llvm.SI.load.const(<16 x i8> undef, i32 100)
18  %7 = call float @llvm.SI.load.const(<16 x i8> undef, i32 104)
19  %8 = call float @llvm.SI.load.const(<16 x i8> undef, i32 112)
20  %9 = call float @llvm.SI.load.const(<16 x i8> undef, i32 116)
21  %10 = call float @llvm.SI.load.const(<16 x i8> undef, i32 120)
22  %11 = call float @llvm.SI.load.const(<16 x i8> undef, i32 128)
23  %12 = call float @llvm.SI.load.const(<16 x i8> undef, i32 132)
24  %13 = call float @llvm.SI.load.const(<16 x i8> undef, i32 136)
25  %14 = call float @llvm.SI.load.const(<16 x i8> undef, i32 144)
26  %15 = call float @llvm.SI.load.const(<16 x i8> undef, i32 148)
27  %16 = call float @llvm.SI.load.const(<16 x i8> undef, i32 152)
28  %17 = call float @llvm.SI.load.const(<16 x i8> undef, i32 160)
29  %18 = call float @llvm.SI.load.const(<16 x i8> undef, i32 164)
30  %19 = call float @llvm.SI.load.const(<16 x i8> undef, i32 168)
31  %20 = call float @llvm.SI.load.const(<16 x i8> undef, i32 176)
32  %21 = call float @llvm.SI.load.const(<16 x i8> undef, i32 180)
33  %22 = call float @llvm.SI.load.const(<16 x i8> undef, i32 184)
34  %23 = call float @llvm.SI.load.const(<16 x i8> undef, i32 192)
35  %24 = call float @llvm.SI.load.const(<16 x i8> undef, i32 196)
36  %25 = call float @llvm.SI.load.const(<16 x i8> undef, i32 200)
37  %26 = call float @llvm.SI.load.const(<16 x i8> undef, i32 208)
38  %27 = call float @llvm.SI.load.const(<16 x i8> undef, i32 212)
39  %28 = call float @llvm.SI.load.const(<16 x i8> undef, i32 216)
40  %29 = call float @llvm.SI.load.const(<16 x i8> undef, i32 224)
41  %30 = call float @llvm.SI.load.const(<16 x i8> undef, i32 228)
42  %31 = call float @llvm.SI.load.const(<16 x i8> undef, i32 232)
43  %32 = call float @llvm.SI.load.const(<16 x i8> undef, i32 240)
44  %33 = call float @llvm.SI.load.const(<16 x i8> undef, i32 244)
45  %34 = call float @llvm.SI.load.const(<16 x i8> undef, i32 248)
46  %35 = call float @llvm.SI.load.const(<16 x i8> undef, i32 256)
47  %36 = call float @llvm.SI.load.const(<16 x i8> undef, i32 260)
48  %37 = call float @llvm.SI.load.const(<16 x i8> undef, i32 264)
49  %38 = call float @llvm.SI.load.const(<16 x i8> undef, i32 272)
50  %39 = call float @llvm.SI.load.const(<16 x i8> undef, i32 276)
51  %40 = call float @llvm.SI.load.const(<16 x i8> undef, i32 280)
52  %41 = call float @llvm.SI.load.const(<16 x i8> undef, i32 288)
53  %42 = call float @llvm.SI.load.const(<16 x i8> undef, i32 292)
54  %43 = call float @llvm.SI.load.const(<16 x i8> undef, i32 296)
55  %44 = call float @llvm.SI.load.const(<16 x i8> undef, i32 304)
56  %45 = call float @llvm.SI.load.const(<16 x i8> undef, i32 308)
57  %46 = call float @llvm.SI.load.const(<16 x i8> undef, i32 312)
58  %47 = call float @llvm.SI.load.const(<16 x i8> undef, i32 320)
59  %48 = call float @llvm.SI.load.const(<16 x i8> undef, i32 324)
60  %49 = call float @llvm.SI.load.const(<16 x i8> undef, i32 328)
61  %50 = call float @llvm.SI.load.const(<16 x i8> undef, i32 336)
62  %51 = call float @llvm.SI.load.const(<16 x i8> undef, i32 340)
63  %52 = call float @llvm.SI.load.const(<16 x i8> undef, i32 344)
64  %53 = call float @llvm.SI.load.const(<16 x i8> undef, i32 352)
65  %54 = call float @llvm.SI.load.const(<16 x i8> undef, i32 356)
66  %55 = call float @llvm.SI.load.const(<16 x i8> undef, i32 360)
67  %56 = call float @llvm.SI.load.const(<16 x i8> undef, i32 368)
68  %57 = call float @llvm.SI.load.const(<16 x i8> undef, i32 372)
69  %58 = call float @llvm.SI.load.const(<16 x i8> undef, i32 376)
70  %59 = call float @llvm.SI.load.const(<16 x i8> undef, i32 384)
71  %60 = call float @llvm.SI.load.const(<16 x i8> undef, i32 388)
72  %61 = call float @llvm.SI.load.const(<16 x i8> undef, i32 392)
73  %62 = call float @llvm.SI.load.const(<16 x i8> undef, i32 400)
74  %63 = call float @llvm.SI.load.const(<16 x i8> undef, i32 404)
75  %64 = call float @llvm.SI.load.const(<16 x i8> undef, i32 408)
76  %65 = call float @llvm.SI.load.const(<16 x i8> undef, i32 416)
77  %66 = call float @llvm.SI.load.const(<16 x i8> undef, i32 420)
78  br label %LOOP
79
80LOOP:                                             ; preds = %ENDIF2795, %main_body
81  %temp894.0 = phi float [ 0.000000e+00, %main_body ], [ %temp894.1, %ENDIF2795 ]
82  %temp18.0 = phi float [ undef, %main_body ], [ %temp18.1, %ENDIF2795 ]
83  %tid = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0)
84  %67 = icmp sgt i32 %tid, 4
85  br i1 %67, label %ENDLOOP, label %ENDIF
86
87ENDLOOP:                                          ; preds = %ELSE2566, %LOOP
88  %one.sub.a.i = fsub float 1.000000e+00, %0
89  %one.sub.ac.i = fmul float %one.sub.a.i, undef
90  %result.i = fadd float fmul (float undef, float undef), %one.sub.ac.i
91  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 0, float undef, float %result.i, float undef, float 1.000000e+00)
92  ret void
93
94ENDIF:                                            ; preds = %LOOP
95  %68 = fsub float %2, undef
96  %69 = fsub float %3, undef
97  %70 = fsub float %4, undef
98  %71 = fmul float %68, 0.000000e+00
99  %72 = fmul float %69, undef
100  %73 = fmul float %70, undef
101  %74 = fsub float %6, undef
102  %75 = fsub float %7, undef
103  %76 = fmul float %74, undef
104  %77 = fmul float %75, 0.000000e+00
105  %78 = call float @llvm.minnum.f32(float %73, float %77)
106  %79 = call float @llvm.maxnum.f32(float %71, float 0.000000e+00)
107  %80 = call float @llvm.maxnum.f32(float %72, float %76)
108  %81 = call float @llvm.maxnum.f32(float undef, float %78)
109  %82 = call float @llvm.minnum.f32(float %79, float %80)
110  %83 = call float @llvm.minnum.f32(float %82, float undef)
111  %84 = fsub float %14, undef
112  %85 = fsub float %15, undef
113  %86 = fsub float %16, undef
114  %87 = fmul float %84, undef
115  %88 = fmul float %85, undef
116  %89 = fmul float %86, undef
117  %90 = fsub float %17, undef
118  %91 = fsub float %18, undef
119  %92 = fsub float %19, undef
120  %93 = fmul float %90, 0.000000e+00
121  %94 = fmul float %91, undef
122  %95 = fmul float %92, undef
123  %96 = call float @llvm.minnum.f32(float %88, float %94)
124  %97 = call float @llvm.maxnum.f32(float %87, float %93)
125  %98 = call float @llvm.maxnum.f32(float %89, float %95)
126  %99 = call float @llvm.maxnum.f32(float undef, float %96)
127  %100 = call float @llvm.maxnum.f32(float %99, float undef)
128  %101 = call float @llvm.minnum.f32(float %97, float undef)
129  %102 = call float @llvm.minnum.f32(float %101, float %98)
130  %103 = fsub float %30, undef
131  %104 = fsub float %31, undef
132  %105 = fmul float %103, 0.000000e+00
133  %106 = fmul float %104, 0.000000e+00
134  %107 = call float @llvm.minnum.f32(float undef, float %105)
135  %108 = call float @llvm.maxnum.f32(float undef, float %106)
136  %109 = call float @llvm.maxnum.f32(float undef, float %107)
137  %110 = call float @llvm.maxnum.f32(float %109, float undef)
138  %111 = call float @llvm.minnum.f32(float undef, float %108)
139  %112 = fsub float %32, undef
140  %113 = fsub float %33, undef
141  %114 = fsub float %34, undef
142  %115 = fmul float %112, 0.000000e+00
143  %116 = fmul float %113, undef
144  %117 = fmul float %114, undef
145  %118 = fsub float %35, undef
146  %119 = fsub float %36, undef
147  %120 = fsub float %37, undef
148  %121 = fmul float %118, undef
149  %122 = fmul float %119, undef
150  %123 = fmul float %120, undef
151  %124 = call float @llvm.minnum.f32(float %115, float %121)
152  %125 = call float @llvm.minnum.f32(float %116, float %122)
153  %126 = call float @llvm.minnum.f32(float %117, float %123)
154  %127 = call float @llvm.maxnum.f32(float %124, float %125)
155  %128 = call float @llvm.maxnum.f32(float %127, float %126)
156  %129 = fsub float %38, undef
157  %130 = fsub float %39, undef
158  %131 = fsub float %40, undef
159  %132 = fmul float %129, 0.000000e+00
160  %133 = fmul float %130, undef
161  %134 = fmul float %131, undef
162  %135 = fsub float %41, undef
163  %136 = fsub float %42, undef
164  %137 = fsub float %43, undef
165  %138 = fmul float %135, undef
166  %139 = fmul float %136, undef
167  %140 = fmul float %137, undef
168  %141 = call float @llvm.minnum.f32(float %132, float %138)
169  %142 = call float @llvm.minnum.f32(float %133, float %139)
170  %143 = call float @llvm.minnum.f32(float %134, float %140)
171  %144 = call float @llvm.maxnum.f32(float %141, float %142)
172  %145 = call float @llvm.maxnum.f32(float %144, float %143)
173  %146 = fsub float %44, undef
174  %147 = fsub float %45, undef
175  %148 = fsub float %46, undef
176  %149 = fmul float %146, 0.000000e+00
177  %150 = fmul float %147, 0.000000e+00
178  %151 = fmul float %148, undef
179  %152 = fsub float %47, undef
180  %153 = fsub float %48, undef
181  %154 = fsub float %49, undef
182  %155 = fmul float %152, undef
183  %156 = fmul float %153, 0.000000e+00
184  %157 = fmul float %154, undef
185  %158 = call float @llvm.minnum.f32(float %149, float %155)
186  %159 = call float @llvm.minnum.f32(float %150, float %156)
187  %160 = call float @llvm.minnum.f32(float %151, float %157)
188  %161 = call float @llvm.maxnum.f32(float %158, float %159)
189  %162 = call float @llvm.maxnum.f32(float %161, float %160)
190  %163 = fsub float %50, undef
191  %164 = fsub float %51, undef
192  %165 = fsub float %52, undef
193  %166 = fmul float %163, undef
194  %167 = fmul float %164, 0.000000e+00
195  %168 = fmul float %165, 0.000000e+00
196  %169 = fsub float %53, undef
197  %170 = fsub float %54, undef
198  %171 = fsub float %55, undef
199  %172 = fdiv float 1.000000e+00, %temp18.0
200  %173 = fmul float %169, undef
201  %174 = fmul float %170, undef
202  %175 = fmul float %171, %172
203  %176 = call float @llvm.minnum.f32(float %166, float %173)
204  %177 = call float @llvm.minnum.f32(float %167, float %174)
205  %178 = call float @llvm.minnum.f32(float %168, float %175)
206  %179 = call float @llvm.maxnum.f32(float %176, float %177)
207  %180 = call float @llvm.maxnum.f32(float %179, float %178)
208  %181 = fsub float %62, undef
209  %182 = fsub float %63, undef
210  %183 = fsub float %64, undef
211  %184 = fmul float %181, 0.000000e+00
212  %185 = fmul float %182, undef
213  %186 = fmul float %183, undef
214  %187 = fsub float %65, undef
215  %188 = fsub float %66, undef
216  %189 = fmul float %187, undef
217  %190 = fmul float %188, undef
218  %191 = call float @llvm.maxnum.f32(float %184, float %189)
219  %192 = call float @llvm.maxnum.f32(float %185, float %190)
220  %193 = call float @llvm.maxnum.f32(float %186, float undef)
221  %194 = call float @llvm.minnum.f32(float %191, float %192)
222  %195 = call float @llvm.minnum.f32(float %194, float %193)
223  %.temp292.7 = select i1 undef, float %162, float undef
224  %temp292.9 = select i1 false, float %180, float %.temp292.7
225  %.temp292.9 = select i1 undef, float undef, float %temp292.9
226  %196 = fcmp ogt float undef, 0.000000e+00
227  %197 = fcmp olt float undef, %195
228  %198 = and i1 %196, %197
229  %199 = fcmp olt float undef, %.temp292.9
230  %200 = and i1 %198, %199
231  %temp292.11 = select i1 %200, float undef, float %.temp292.9
232  %tid0 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) #2
233  %cmp0 = icmp eq i32 %tid0, 0
234  br i1 %cmp0, label %IF2565, label %ELSE2566
235
236IF2565:                                           ; preds = %ENDIF
237  %tid1 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) #2
238  %cmp1 = icmp eq i32 %tid1, 0
239  br i1 %cmp1, label %ENDIF2582, label %ELSE2584
240
241ELSE2566:                                         ; preds = %ENDIF
242  %tid2 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) #2
243  %tidf = bitcast i32 %tid2 to float
244  %201 = fcmp oeq float %temp292.11, %tidf
245  br i1 %201, label %ENDLOOP, label %ELSE2593
246
247ENDIF2564:                                        ; preds = %ENDIF2594, %ENDIF2588
248  %temp894.1 = phi float [ undef, %ENDIF2588 ], [ %temp894.2, %ENDIF2594 ]
249  %temp18.1 = phi float [ %218, %ENDIF2588 ], [ undef, %ENDIF2594 ]
250  %202 = fsub float %5, undef
251  %203 = fmul float %202, undef
252  %204 = call float @llvm.maxnum.f32(float undef, float %203)
253  %205 = call float @llvm.minnum.f32(float %204, float undef)
254  %206 = call float @llvm.minnum.f32(float %205, float undef)
255  %207 = fcmp ogt float undef, 0.000000e+00
256  %208 = fcmp olt float undef, 1.000000e+00
257  %209 = and i1 %207, %208
258  %tid3 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) #2
259  %tidf3 = bitcast i32 %tid3 to float
260  %210 = fcmp olt float %tidf3, %206
261  %211 = and i1 %209, %210
262  br i1 %211, label %ENDIF2795, label %ELSE2797
263
264ELSE2584:                                         ; preds = %IF2565
265  br label %ENDIF2582
266
267ENDIF2582:                                        ; preds = %ELSE2584, %IF2565
268  %212 = fadd float %1, undef
269  %213 = fadd float 0.000000e+00, %212
270  %floor = call float @llvm.floor.f32(float %213)
271  %214 = fsub float %213, %floor
272  %tid4 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) #2
273  %cmp4 = icmp eq i32 %tid4, 0
274  br i1 %cmp4, label %IF2589, label %ELSE2590
275
276IF2589:                                           ; preds = %ENDIF2582
277  br label %ENDIF2588
278
279ELSE2590:                                         ; preds = %ENDIF2582
280  br label %ENDIF2588
281
282ENDIF2588:                                        ; preds = %ELSE2590, %IF2589
283  %215 = fsub float 1.000000e+00, %214
284  %216 = call float @llvm.sqrt.f32(float %215)
285  %217 = fmul float %216, undef
286  %218 = fadd float %217, undef
287  br label %ENDIF2564
288
289ELSE2593:                                         ; preds = %ELSE2566
290  %219 = fcmp oeq float %temp292.11, %81
291  %220 = fcmp olt float %81, %83
292  %221 = and i1 %219, %220
293  br i1 %221, label %ENDIF2594, label %ELSE2596
294
295ELSE2596:                                         ; preds = %ELSE2593
296  %222 = fcmp oeq float %temp292.11, %100
297  %223 = fcmp olt float %100, %102
298  %224 = and i1 %222, %223
299  br i1 %224, label %ENDIF2594, label %ELSE2632
300
301ENDIF2594:                                        ; preds = %ELSE2788, %ELSE2785, %ELSE2782, %ELSE2779, %IF2775, %ELSE2761, %ELSE2758, %IF2757, %ELSE2704, %ELSE2686, %ELSE2671, %ELSE2668, %IF2667, %ELSE2632, %ELSE2596, %ELSE2593
302  %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 ]
303  %225 = fmul float %temp894.2, undef
304  br label %ENDIF2564
305
306ELSE2632:                                         ; preds = %ELSE2596
307  br i1 undef, label %ENDIF2594, label %ELSE2650
308
309ELSE2650:                                         ; preds = %ELSE2632
310  %226 = fcmp oeq float %temp292.11, %110
311  %227 = fcmp olt float %110, %111
312  %228 = and i1 %226, %227
313  br i1 %228, label %IF2667, label %ELSE2668
314
315IF2667:                                           ; preds = %ELSE2650
316  br i1 undef, label %ENDIF2594, label %ELSE2671
317
318ELSE2668:                                         ; preds = %ELSE2650
319  %229 = fcmp oeq float %temp292.11, %128
320  %230 = fcmp olt float %128, undef
321  %231 = and i1 %229, %230
322  br i1 %231, label %ENDIF2594, label %ELSE2686
323
324ELSE2671:                                         ; preds = %IF2667
325  br label %ENDIF2594
326
327ELSE2686:                                         ; preds = %ELSE2668
328  %232 = fcmp oeq float %temp292.11, %145
329  %233 = fcmp olt float %145, undef
330  %234 = and i1 %232, %233
331  br i1 %234, label %ENDIF2594, label %ELSE2704
332
333ELSE2704:                                         ; preds = %ELSE2686
334  %235 = fcmp oeq float %temp292.11, %180
335  %236 = fcmp olt float %180, undef
336  %237 = and i1 %235, %236
337  br i1 %237, label %ENDIF2594, label %ELSE2740
338
339ELSE2740:                                         ; preds = %ELSE2704
340  br i1 undef, label %IF2757, label %ELSE2758
341
342IF2757:                                           ; preds = %ELSE2740
343  br i1 undef, label %ENDIF2594, label %ELSE2761
344
345ELSE2758:                                         ; preds = %ELSE2740
346  br i1 undef, label %IF2775, label %ENDIF2594
347
348ELSE2761:                                         ; preds = %IF2757
349  br label %ENDIF2594
350
351IF2775:                                           ; preds = %ELSE2758
352  %238 = fcmp olt float undef, undef
353  br i1 %238, label %ENDIF2594, label %ELSE2779
354
355ELSE2779:                                         ; preds = %IF2775
356  br i1 undef, label %ENDIF2594, label %ELSE2782
357
358ELSE2782:                                         ; preds = %ELSE2779
359  br i1 undef, label %ENDIF2594, label %ELSE2785
360
361ELSE2785:                                         ; preds = %ELSE2782
362  %239 = fcmp olt float undef, 0.000000e+00
363  br i1 %239, label %ENDIF2594, label %ELSE2788
364
365ELSE2788:                                         ; preds = %ELSE2785
366  %240 = fcmp olt float 0.000000e+00, undef
367  %.2848 = select i1 %240, float -1.000000e+00, float 1.000000e+00
368  br label %ENDIF2594
369
370ELSE2797:                                         ; preds = %ENDIF2564
371  %241 = fsub float %8, undef
372  %242 = fsub float %9, undef
373  %243 = fsub float %10, undef
374  %244 = fmul float %241, undef
375  %245 = fmul float %242, undef
376  %246 = fmul float %243, undef
377  %247 = fsub float %11, undef
378  %248 = fsub float %12, undef
379  %249 = fsub float %13, undef
380  %250 = fmul float %247, undef
381  %251 = fmul float %248, undef
382  %252 = fmul float %249, undef
383  %253 = call float @llvm.minnum.f32(float %244, float %250)
384  %254 = call float @llvm.minnum.f32(float %245, float %251)
385  %255 = call float @llvm.maxnum.f32(float %246, float %252)
386  %256 = call float @llvm.maxnum.f32(float %253, float %254)
387  %257 = call float @llvm.maxnum.f32(float %256, float undef)
388  %258 = call float @llvm.minnum.f32(float undef, float %255)
389  %259 = fcmp ogt float %257, 0.000000e+00
390  %260 = fcmp olt float %257, 1.000000e+00
391  %261 = and i1 %259, %260
392  %262 = fcmp olt float %257, %258
393  %263 = and i1 %261, %262
394  br i1 %263, label %ENDIF2795, label %ELSE2800
395
396ENDIF2795:                                        ; preds = %ELSE2824, %ELSE2821, %ELSE2818, %ELSE2815, %ELSE2812, %ELSE2809, %ELSE2806, %ELSE2803, %ELSE2800, %ELSE2797, %ENDIF2564
397  br label %LOOP
398
399ELSE2800:                                         ; preds = %ELSE2797
400  br i1 undef, label %ENDIF2795, label %ELSE2803
401
402ELSE2803:                                         ; preds = %ELSE2800
403  %264 = fsub float %20, undef
404  %265 = fsub float %21, undef
405  %266 = fsub float %22, undef
406  %267 = fmul float %264, undef
407  %268 = fmul float %265, undef
408  %269 = fmul float %266, 0.000000e+00
409  %270 = fsub float %23, undef
410  %271 = fsub float %24, undef
411  %272 = fsub float %25, undef
412  %273 = fmul float %270, undef
413  %274 = fmul float %271, undef
414  %275 = fmul float %272, undef
415  %276 = call float @llvm.minnum.f32(float %267, float %273)
416  %277 = call float @llvm.maxnum.f32(float %268, float %274)
417  %278 = call float @llvm.maxnum.f32(float %269, float %275)
418  %279 = call float @llvm.maxnum.f32(float %276, float undef)
419  %280 = call float @llvm.maxnum.f32(float %279, float undef)
420  %281 = call float @llvm.minnum.f32(float undef, float %277)
421  %282 = call float @llvm.minnum.f32(float %281, float %278)
422  %283 = fcmp ogt float %280, 0.000000e+00
423  %284 = fcmp olt float %280, 1.000000e+00
424  %285 = and i1 %283, %284
425  %286 = fcmp olt float %280, %282
426  %287 = and i1 %285, %286
427  br i1 %287, label %ENDIF2795, label %ELSE2806
428
429ELSE2806:                                         ; preds = %ELSE2803
430  %288 = fsub float %26, undef
431  %289 = fsub float %27, undef
432  %290 = fsub float %28, undef
433  %291 = fmul float %288, undef
434  %292 = fmul float %289, 0.000000e+00
435  %293 = fmul float %290, undef
436  %294 = fsub float %29, undef
437  %295 = fmul float %294, undef
438  %296 = call float @llvm.minnum.f32(float %291, float %295)
439  %297 = call float @llvm.minnum.f32(float %292, float undef)
440  %298 = call float @llvm.maxnum.f32(float %293, float undef)
441  %299 = call float @llvm.maxnum.f32(float %296, float %297)
442  %300 = call float @llvm.maxnum.f32(float %299, float undef)
443  %301 = call float @llvm.minnum.f32(float undef, float %298)
444  %302 = fcmp ogt float %300, 0.000000e+00
445  %303 = fcmp olt float %300, 1.000000e+00
446  %304 = and i1 %302, %303
447  %305 = fcmp olt float %300, %301
448  %306 = and i1 %304, %305
449  br i1 %306, label %ENDIF2795, label %ELSE2809
450
451ELSE2809:                                         ; preds = %ELSE2806
452  br i1 undef, label %ENDIF2795, label %ELSE2812
453
454ELSE2812:                                         ; preds = %ELSE2809
455  br i1 undef, label %ENDIF2795, label %ELSE2815
456
457ELSE2815:                                         ; preds = %ELSE2812
458  br i1 undef, label %ENDIF2795, label %ELSE2818
459
460ELSE2818:                                         ; preds = %ELSE2815
461  br i1 undef, label %ENDIF2795, label %ELSE2821
462
463ELSE2821:                                         ; preds = %ELSE2818
464  %307 = fsub float %56, undef
465  %308 = fsub float %57, undef
466  %309 = fsub float %58, undef
467  %310 = fmul float %307, undef
468  %311 = fmul float %308, 0.000000e+00
469  %312 = fmul float %309, undef
470  %313 = fsub float %59, undef
471  %314 = fsub float %60, undef
472  %315 = fsub float %61, undef
473  %316 = fmul float %313, undef
474  %317 = fmul float %314, undef
475  %318 = fmul float %315, undef
476  %319 = call float @llvm.maxnum.f32(float %310, float %316)
477  %320 = call float @llvm.maxnum.f32(float %311, float %317)
478  %321 = call float @llvm.maxnum.f32(float %312, float %318)
479  %322 = call float @llvm.minnum.f32(float %319, float %320)
480  %323 = call float @llvm.minnum.f32(float %322, float %321)
481  %324 = fcmp ogt float undef, 0.000000e+00
482  %325 = fcmp olt float undef, 1.000000e+00
483  %326 = and i1 %324, %325
484  %327 = fcmp olt float undef, %323
485  %328 = and i1 %326, %327
486  br i1 %328, label %ENDIF2795, label %ELSE2824
487
488ELSE2824:                                         ; preds = %ELSE2821
489  %.2849 = select i1 undef, float 0.000000e+00, float 1.000000e+00
490  br label %ENDIF2795
491}
492
493declare i32 @llvm.amdgcn.mbcnt.lo(i32, i32) #1
494
495; Function Attrs: nounwind readnone
496declare float @llvm.SI.load.const(<16 x i8>, i32) #1
497
498; Function Attrs: nounwind readnone
499declare float @llvm.floor.f32(float) #1
500
501; Function Attrs: nounwind readnone
502declare float @llvm.sqrt.f32(float) #1
503
504; Function Attrs: nounwind readnone
505declare float @llvm.minnum.f32(float, float) #1
506
507; Function Attrs: nounwind readnone
508declare float @llvm.maxnum.f32(float, float) #1
509
510declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
511
512attributes #0 = { nounwind }
513attributes #1 = { nounwind readnone }
514