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