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