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