514 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			514 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			LLVM
		
	
	
	
; RUN: llc -march=amdgcn -mcpu=SI < %s -verify-machineinstrs | FileCheck -check-prefix=SI %s
 | 
						|
; RUN: llc -march=amdgcn -mcpu=tonga < %s -verify-machineinstrs | FileCheck -check-prefix=SI %s
 | 
						|
 | 
						|
; If this occurs it is likely due to reordering and the restore was
 | 
						|
; originally supposed to happen before SI_END_CF.
 | 
						|
 | 
						|
; SI: s_or_b64 exec, exec, [[SAVED:s\[[0-9]+:[0-9]+\]|[a-z]+]]
 | 
						|
; SI-NOT: v_readlane_b32 [[SAVED]]
 | 
						|
define amdgpu_ps void @main() #0 {
 | 
						|
main_body:
 | 
						|
  %0 = call float @llvm.SI.load.const(<16 x i8> undef, i32 16)
 | 
						|
  %1 = call float @llvm.SI.load.const(<16 x i8> undef, i32 32)
 | 
						|
  %2 = call float @llvm.SI.load.const(<16 x i8> undef, i32 80)
 | 
						|
  %3 = call float @llvm.SI.load.const(<16 x i8> undef, i32 84)
 | 
						|
  %4 = call float @llvm.SI.load.const(<16 x i8> undef, i32 88)
 | 
						|
  %5 = call float @llvm.SI.load.const(<16 x i8> undef, i32 96)
 | 
						|
  %6 = call float @llvm.SI.load.const(<16 x i8> undef, i32 100)
 | 
						|
  %7 = call float @llvm.SI.load.const(<16 x i8> undef, i32 104)
 | 
						|
  %8 = call float @llvm.SI.load.const(<16 x i8> undef, i32 112)
 | 
						|
  %9 = call float @llvm.SI.load.const(<16 x i8> undef, i32 116)
 | 
						|
  %10 = call float @llvm.SI.load.const(<16 x i8> undef, i32 120)
 | 
						|
  %11 = call float @llvm.SI.load.const(<16 x i8> undef, i32 128)
 | 
						|
  %12 = call float @llvm.SI.load.const(<16 x i8> undef, i32 132)
 | 
						|
  %13 = call float @llvm.SI.load.const(<16 x i8> undef, i32 136)
 | 
						|
  %14 = call float @llvm.SI.load.const(<16 x i8> undef, i32 144)
 | 
						|
  %15 = call float @llvm.SI.load.const(<16 x i8> undef, i32 148)
 | 
						|
  %16 = call float @llvm.SI.load.const(<16 x i8> undef, i32 152)
 | 
						|
  %17 = call float @llvm.SI.load.const(<16 x i8> undef, i32 160)
 | 
						|
  %18 = call float @llvm.SI.load.const(<16 x i8> undef, i32 164)
 | 
						|
  %19 = call float @llvm.SI.load.const(<16 x i8> undef, i32 168)
 | 
						|
  %20 = call float @llvm.SI.load.const(<16 x i8> undef, i32 176)
 | 
						|
  %21 = call float @llvm.SI.load.const(<16 x i8> undef, i32 180)
 | 
						|
  %22 = call float @llvm.SI.load.const(<16 x i8> undef, i32 184)
 | 
						|
  %23 = call float @llvm.SI.load.const(<16 x i8> undef, i32 192)
 | 
						|
  %24 = call float @llvm.SI.load.const(<16 x i8> undef, i32 196)
 | 
						|
  %25 = call float @llvm.SI.load.const(<16 x i8> undef, i32 200)
 | 
						|
  %26 = call float @llvm.SI.load.const(<16 x i8> undef, i32 208)
 | 
						|
  %27 = call float @llvm.SI.load.const(<16 x i8> undef, i32 212)
 | 
						|
  %28 = call float @llvm.SI.load.const(<16 x i8> undef, i32 216)
 | 
						|
  %29 = call float @llvm.SI.load.const(<16 x i8> undef, i32 224)
 | 
						|
  %30 = call float @llvm.SI.load.const(<16 x i8> undef, i32 228)
 | 
						|
  %31 = call float @llvm.SI.load.const(<16 x i8> undef, i32 232)
 | 
						|
  %32 = call float @llvm.SI.load.const(<16 x i8> undef, i32 240)
 | 
						|
  %33 = call float @llvm.SI.load.const(<16 x i8> undef, i32 244)
 | 
						|
  %34 = call float @llvm.SI.load.const(<16 x i8> undef, i32 248)
 | 
						|
  %35 = call float @llvm.SI.load.const(<16 x i8> undef, i32 256)
 | 
						|
  %36 = call float @llvm.SI.load.const(<16 x i8> undef, i32 260)
 | 
						|
  %37 = call float @llvm.SI.load.const(<16 x i8> undef, i32 264)
 | 
						|
  %38 = call float @llvm.SI.load.const(<16 x i8> undef, i32 272)
 | 
						|
  %39 = call float @llvm.SI.load.const(<16 x i8> undef, i32 276)
 | 
						|
  %40 = call float @llvm.SI.load.const(<16 x i8> undef, i32 280)
 | 
						|
  %41 = call float @llvm.SI.load.const(<16 x i8> undef, i32 288)
 | 
						|
  %42 = call float @llvm.SI.load.const(<16 x i8> undef, i32 292)
 | 
						|
  %43 = call float @llvm.SI.load.const(<16 x i8> undef, i32 296)
 | 
						|
  %44 = call float @llvm.SI.load.const(<16 x i8> undef, i32 304)
 | 
						|
  %45 = call float @llvm.SI.load.const(<16 x i8> undef, i32 308)
 | 
						|
  %46 = call float @llvm.SI.load.const(<16 x i8> undef, i32 312)
 | 
						|
  %47 = call float @llvm.SI.load.const(<16 x i8> undef, i32 320)
 | 
						|
  %48 = call float @llvm.SI.load.const(<16 x i8> undef, i32 324)
 | 
						|
  %49 = call float @llvm.SI.load.const(<16 x i8> undef, i32 328)
 | 
						|
  %50 = call float @llvm.SI.load.const(<16 x i8> undef, i32 336)
 | 
						|
  %51 = call float @llvm.SI.load.const(<16 x i8> undef, i32 340)
 | 
						|
  %52 = call float @llvm.SI.load.const(<16 x i8> undef, i32 344)
 | 
						|
  %53 = call float @llvm.SI.load.const(<16 x i8> undef, i32 352)
 | 
						|
  %54 = call float @llvm.SI.load.const(<16 x i8> undef, i32 356)
 | 
						|
  %55 = call float @llvm.SI.load.const(<16 x i8> undef, i32 360)
 | 
						|
  %56 = call float @llvm.SI.load.const(<16 x i8> undef, i32 368)
 | 
						|
  %57 = call float @llvm.SI.load.const(<16 x i8> undef, i32 372)
 | 
						|
  %58 = call float @llvm.SI.load.const(<16 x i8> undef, i32 376)
 | 
						|
  %59 = call float @llvm.SI.load.const(<16 x i8> undef, i32 384)
 | 
						|
  %60 = call float @llvm.SI.load.const(<16 x i8> undef, i32 388)
 | 
						|
  %61 = call float @llvm.SI.load.const(<16 x i8> undef, i32 392)
 | 
						|
  %62 = call float @llvm.SI.load.const(<16 x i8> undef, i32 400)
 | 
						|
  %63 = call float @llvm.SI.load.const(<16 x i8> undef, i32 404)
 | 
						|
  %64 = call float @llvm.SI.load.const(<16 x i8> undef, i32 408)
 | 
						|
  %65 = call float @llvm.SI.load.const(<16 x i8> undef, i32 416)
 | 
						|
  %66 = call float @llvm.SI.load.const(<16 x i8> undef, i32 420)
 | 
						|
  br label %LOOP
 | 
						|
 | 
						|
LOOP:                                             ; preds = %ENDIF2795, %main_body
 | 
						|
  %temp894.0 = phi float [ 0.000000e+00, %main_body ], [ %temp894.1, %ENDIF2795 ]
 | 
						|
  %temp18.0 = phi float [ undef, %main_body ], [ %temp18.1, %ENDIF2795 ]
 | 
						|
  %tid = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0)
 | 
						|
  %67 = icmp sgt i32 %tid, 4
 | 
						|
  br i1 %67, label %ENDLOOP, label %ENDIF
 | 
						|
 | 
						|
ENDLOOP:                                          ; preds = %ELSE2566, %LOOP
 | 
						|
  %one.sub.a.i = fsub float 1.000000e+00, %0
 | 
						|
  %one.sub.ac.i = fmul float %one.sub.a.i, undef
 | 
						|
  %result.i = fadd float fmul (float undef, float undef), %one.sub.ac.i
 | 
						|
  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)
 | 
						|
  ret void
 | 
						|
 | 
						|
ENDIF:                                            ; preds = %LOOP
 | 
						|
  %68 = fsub float %2, undef
 | 
						|
  %69 = fsub float %3, undef
 | 
						|
  %70 = fsub float %4, undef
 | 
						|
  %71 = fmul float %68, 0.000000e+00
 | 
						|
  %72 = fmul float %69, undef
 | 
						|
  %73 = fmul float %70, undef
 | 
						|
  %74 = fsub float %6, undef
 | 
						|
  %75 = fsub float %7, undef
 | 
						|
  %76 = fmul float %74, undef
 | 
						|
  %77 = fmul float %75, 0.000000e+00
 | 
						|
  %78 = call float @llvm.minnum.f32(float %73, float %77)
 | 
						|
  %79 = call float @llvm.maxnum.f32(float %71, float 0.000000e+00)
 | 
						|
  %80 = call float @llvm.maxnum.f32(float %72, float %76)
 | 
						|
  %81 = call float @llvm.maxnum.f32(float undef, float %78)
 | 
						|
  %82 = call float @llvm.minnum.f32(float %79, float %80)
 | 
						|
  %83 = call float @llvm.minnum.f32(float %82, float undef)
 | 
						|
  %84 = fsub float %14, undef
 | 
						|
  %85 = fsub float %15, undef
 | 
						|
  %86 = fsub float %16, undef
 | 
						|
  %87 = fmul float %84, undef
 | 
						|
  %88 = fmul float %85, undef
 | 
						|
  %89 = fmul float %86, undef
 | 
						|
  %90 = fsub float %17, undef
 | 
						|
  %91 = fsub float %18, undef
 | 
						|
  %92 = fsub float %19, undef
 | 
						|
  %93 = fmul float %90, 0.000000e+00
 | 
						|
  %94 = fmul float %91, undef
 | 
						|
  %95 = fmul float %92, undef
 | 
						|
  %96 = call float @llvm.minnum.f32(float %88, float %94)
 | 
						|
  %97 = call float @llvm.maxnum.f32(float %87, float %93)
 | 
						|
  %98 = call float @llvm.maxnum.f32(float %89, float %95)
 | 
						|
  %99 = call float @llvm.maxnum.f32(float undef, float %96)
 | 
						|
  %100 = call float @llvm.maxnum.f32(float %99, float undef)
 | 
						|
  %101 = call float @llvm.minnum.f32(float %97, float undef)
 | 
						|
  %102 = call float @llvm.minnum.f32(float %101, float %98)
 | 
						|
  %103 = fsub float %30, undef
 | 
						|
  %104 = fsub float %31, undef
 | 
						|
  %105 = fmul float %103, 0.000000e+00
 | 
						|
  %106 = fmul float %104, 0.000000e+00
 | 
						|
  %107 = call float @llvm.minnum.f32(float undef, float %105)
 | 
						|
  %108 = call float @llvm.maxnum.f32(float undef, float %106)
 | 
						|
  %109 = call float @llvm.maxnum.f32(float undef, float %107)
 | 
						|
  %110 = call float @llvm.maxnum.f32(float %109, float undef)
 | 
						|
  %111 = call float @llvm.minnum.f32(float undef, float %108)
 | 
						|
  %112 = fsub float %32, undef
 | 
						|
  %113 = fsub float %33, undef
 | 
						|
  %114 = fsub float %34, undef
 | 
						|
  %115 = fmul float %112, 0.000000e+00
 | 
						|
  %116 = fmul float %113, undef
 | 
						|
  %117 = fmul float %114, undef
 | 
						|
  %118 = fsub float %35, undef
 | 
						|
  %119 = fsub float %36, undef
 | 
						|
  %120 = fsub float %37, undef
 | 
						|
  %121 = fmul float %118, undef
 | 
						|
  %122 = fmul float %119, undef
 | 
						|
  %123 = fmul float %120, undef
 | 
						|
  %124 = call float @llvm.minnum.f32(float %115, float %121)
 | 
						|
  %125 = call float @llvm.minnum.f32(float %116, float %122)
 | 
						|
  %126 = call float @llvm.minnum.f32(float %117, float %123)
 | 
						|
  %127 = call float @llvm.maxnum.f32(float %124, float %125)
 | 
						|
  %128 = call float @llvm.maxnum.f32(float %127, float %126)
 | 
						|
  %129 = fsub float %38, undef
 | 
						|
  %130 = fsub float %39, undef
 | 
						|
  %131 = fsub float %40, undef
 | 
						|
  %132 = fmul float %129, 0.000000e+00
 | 
						|
  %133 = fmul float %130, undef
 | 
						|
  %134 = fmul float %131, undef
 | 
						|
  %135 = fsub float %41, undef
 | 
						|
  %136 = fsub float %42, undef
 | 
						|
  %137 = fsub float %43, undef
 | 
						|
  %138 = fmul float %135, undef
 | 
						|
  %139 = fmul float %136, undef
 | 
						|
  %140 = fmul float %137, undef
 | 
						|
  %141 = call float @llvm.minnum.f32(float %132, float %138)
 | 
						|
  %142 = call float @llvm.minnum.f32(float %133, float %139)
 | 
						|
  %143 = call float @llvm.minnum.f32(float %134, float %140)
 | 
						|
  %144 = call float @llvm.maxnum.f32(float %141, float %142)
 | 
						|
  %145 = call float @llvm.maxnum.f32(float %144, float %143)
 | 
						|
  %146 = fsub float %44, undef
 | 
						|
  %147 = fsub float %45, undef
 | 
						|
  %148 = fsub float %46, undef
 | 
						|
  %149 = fmul float %146, 0.000000e+00
 | 
						|
  %150 = fmul float %147, 0.000000e+00
 | 
						|
  %151 = fmul float %148, undef
 | 
						|
  %152 = fsub float %47, undef
 | 
						|
  %153 = fsub float %48, undef
 | 
						|
  %154 = fsub float %49, undef
 | 
						|
  %155 = fmul float %152, undef
 | 
						|
  %156 = fmul float %153, 0.000000e+00
 | 
						|
  %157 = fmul float %154, undef
 | 
						|
  %158 = call float @llvm.minnum.f32(float %149, float %155)
 | 
						|
  %159 = call float @llvm.minnum.f32(float %150, float %156)
 | 
						|
  %160 = call float @llvm.minnum.f32(float %151, float %157)
 | 
						|
  %161 = call float @llvm.maxnum.f32(float %158, float %159)
 | 
						|
  %162 = call float @llvm.maxnum.f32(float %161, float %160)
 | 
						|
  %163 = fsub float %50, undef
 | 
						|
  %164 = fsub float %51, undef
 | 
						|
  %165 = fsub float %52, undef
 | 
						|
  %166 = fmul float %163, undef
 | 
						|
  %167 = fmul float %164, 0.000000e+00
 | 
						|
  %168 = fmul float %165, 0.000000e+00
 | 
						|
  %169 = fsub float %53, undef
 | 
						|
  %170 = fsub float %54, undef
 | 
						|
  %171 = fsub float %55, undef
 | 
						|
  %172 = fdiv float 1.000000e+00, %temp18.0
 | 
						|
  %173 = fmul float %169, undef
 | 
						|
  %174 = fmul float %170, undef
 | 
						|
  %175 = fmul float %171, %172
 | 
						|
  %176 = call float @llvm.minnum.f32(float %166, float %173)
 | 
						|
  %177 = call float @llvm.minnum.f32(float %167, float %174)
 | 
						|
  %178 = call float @llvm.minnum.f32(float %168, float %175)
 | 
						|
  %179 = call float @llvm.maxnum.f32(float %176, float %177)
 | 
						|
  %180 = call float @llvm.maxnum.f32(float %179, float %178)
 | 
						|
  %181 = fsub float %62, undef
 | 
						|
  %182 = fsub float %63, undef
 | 
						|
  %183 = fsub float %64, undef
 | 
						|
  %184 = fmul float %181, 0.000000e+00
 | 
						|
  %185 = fmul float %182, undef
 | 
						|
  %186 = fmul float %183, undef
 | 
						|
  %187 = fsub float %65, undef
 | 
						|
  %188 = fsub float %66, undef
 | 
						|
  %189 = fmul float %187, undef
 | 
						|
  %190 = fmul float %188, undef
 | 
						|
  %191 = call float @llvm.maxnum.f32(float %184, float %189)
 | 
						|
  %192 = call float @llvm.maxnum.f32(float %185, float %190)
 | 
						|
  %193 = call float @llvm.maxnum.f32(float %186, float undef)
 | 
						|
  %194 = call float @llvm.minnum.f32(float %191, float %192)
 | 
						|
  %195 = call float @llvm.minnum.f32(float %194, float %193)
 | 
						|
  %.temp292.7 = select i1 undef, float %162, float undef
 | 
						|
  %temp292.9 = select i1 false, float %180, float %.temp292.7
 | 
						|
  %.temp292.9 = select i1 undef, float undef, float %temp292.9
 | 
						|
  %196 = fcmp ogt float undef, 0.000000e+00
 | 
						|
  %197 = fcmp olt float undef, %195
 | 
						|
  %198 = and i1 %196, %197
 | 
						|
  %199 = fcmp olt float undef, %.temp292.9
 | 
						|
  %200 = and i1 %198, %199
 | 
						|
  %temp292.11 = select i1 %200, float undef, float %.temp292.9
 | 
						|
  %tid0 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) #2
 | 
						|
  %cmp0 = icmp eq i32 %tid0, 0
 | 
						|
  br i1 %cmp0, label %IF2565, label %ELSE2566
 | 
						|
 | 
						|
IF2565:                                           ; preds = %ENDIF
 | 
						|
  %tid1 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) #2
 | 
						|
  %cmp1 = icmp eq i32 %tid1, 0
 | 
						|
  br i1 %cmp1, label %ENDIF2582, label %ELSE2584
 | 
						|
 | 
						|
ELSE2566:                                         ; preds = %ENDIF
 | 
						|
  %tid2 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) #2
 | 
						|
  %tidf = bitcast i32 %tid2 to float
 | 
						|
  %201 = fcmp oeq float %temp292.11, %tidf
 | 
						|
  br i1 %201, label %ENDLOOP, label %ELSE2593
 | 
						|
 | 
						|
ENDIF2564:                                        ; preds = %ENDIF2594, %ENDIF2588
 | 
						|
  %temp894.1 = phi float [ undef, %ENDIF2588 ], [ %temp894.2, %ENDIF2594 ]
 | 
						|
  %temp18.1 = phi float [ %218, %ENDIF2588 ], [ undef, %ENDIF2594 ]
 | 
						|
  %202 = fsub float %5, undef
 | 
						|
  %203 = fmul float %202, undef
 | 
						|
  %204 = call float @llvm.maxnum.f32(float undef, float %203)
 | 
						|
  %205 = call float @llvm.minnum.f32(float %204, float undef)
 | 
						|
  %206 = call float @llvm.minnum.f32(float %205, float undef)
 | 
						|
  %207 = fcmp ogt float undef, 0.000000e+00
 | 
						|
  %208 = fcmp olt float undef, 1.000000e+00
 | 
						|
  %209 = and i1 %207, %208
 | 
						|
  %tid3 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) #2
 | 
						|
  %tidf3 = bitcast i32 %tid3 to float
 | 
						|
  %210 = fcmp olt float %tidf3, %206
 | 
						|
  %211 = and i1 %209, %210
 | 
						|
  br i1 %211, label %ENDIF2795, label %ELSE2797
 | 
						|
 | 
						|
ELSE2584:                                         ; preds = %IF2565
 | 
						|
  br label %ENDIF2582
 | 
						|
 | 
						|
ENDIF2582:                                        ; preds = %ELSE2584, %IF2565
 | 
						|
  %212 = fadd float %1, undef
 | 
						|
  %213 = fadd float 0.000000e+00, %212
 | 
						|
  %floor = call float @llvm.floor.f32(float %213)
 | 
						|
  %214 = fsub float %213, %floor
 | 
						|
  %tid4 = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0) #2
 | 
						|
  %cmp4 = icmp eq i32 %tid4, 0
 | 
						|
  br i1 %cmp4, label %IF2589, label %ELSE2590
 | 
						|
 | 
						|
IF2589:                                           ; preds = %ENDIF2582
 | 
						|
  br label %ENDIF2588
 | 
						|
 | 
						|
ELSE2590:                                         ; preds = %ENDIF2582
 | 
						|
  br label %ENDIF2588
 | 
						|
 | 
						|
ENDIF2588:                                        ; preds = %ELSE2590, %IF2589
 | 
						|
  %215 = fsub float 1.000000e+00, %214
 | 
						|
  %216 = call float @llvm.sqrt.f32(float %215)
 | 
						|
  %217 = fmul float %216, undef
 | 
						|
  %218 = fadd float %217, undef
 | 
						|
  br label %ENDIF2564
 | 
						|
 | 
						|
ELSE2593:                                         ; preds = %ELSE2566
 | 
						|
  %219 = fcmp oeq float %temp292.11, %81
 | 
						|
  %220 = fcmp olt float %81, %83
 | 
						|
  %221 = and i1 %219, %220
 | 
						|
  br i1 %221, label %ENDIF2594, label %ELSE2596
 | 
						|
 | 
						|
ELSE2596:                                         ; preds = %ELSE2593
 | 
						|
  %222 = fcmp oeq float %temp292.11, %100
 | 
						|
  %223 = fcmp olt float %100, %102
 | 
						|
  %224 = and i1 %222, %223
 | 
						|
  br i1 %224, label %ENDIF2594, label %ELSE2632
 | 
						|
 | 
						|
ENDIF2594:                                        ; preds = %ELSE2788, %ELSE2785, %ELSE2782, %ELSE2779, %IF2775, %ELSE2761, %ELSE2758, %IF2757, %ELSE2704, %ELSE2686, %ELSE2671, %ELSE2668, %IF2667, %ELSE2632, %ELSE2596, %ELSE2593
 | 
						|
  %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 ]
 | 
						|
  %225 = fmul float %temp894.2, undef
 | 
						|
  br label %ENDIF2564
 | 
						|
 | 
						|
ELSE2632:                                         ; preds = %ELSE2596
 | 
						|
  br i1 undef, label %ENDIF2594, label %ELSE2650
 | 
						|
 | 
						|
ELSE2650:                                         ; preds = %ELSE2632
 | 
						|
  %226 = fcmp oeq float %temp292.11, %110
 | 
						|
  %227 = fcmp olt float %110, %111
 | 
						|
  %228 = and i1 %226, %227
 | 
						|
  br i1 %228, label %IF2667, label %ELSE2668
 | 
						|
 | 
						|
IF2667:                                           ; preds = %ELSE2650
 | 
						|
  br i1 undef, label %ENDIF2594, label %ELSE2671
 | 
						|
 | 
						|
ELSE2668:                                         ; preds = %ELSE2650
 | 
						|
  %229 = fcmp oeq float %temp292.11, %128
 | 
						|
  %230 = fcmp olt float %128, undef
 | 
						|
  %231 = and i1 %229, %230
 | 
						|
  br i1 %231, label %ENDIF2594, label %ELSE2686
 | 
						|
 | 
						|
ELSE2671:                                         ; preds = %IF2667
 | 
						|
  br label %ENDIF2594
 | 
						|
 | 
						|
ELSE2686:                                         ; preds = %ELSE2668
 | 
						|
  %232 = fcmp oeq float %temp292.11, %145
 | 
						|
  %233 = fcmp olt float %145, undef
 | 
						|
  %234 = and i1 %232, %233
 | 
						|
  br i1 %234, label %ENDIF2594, label %ELSE2704
 | 
						|
 | 
						|
ELSE2704:                                         ; preds = %ELSE2686
 | 
						|
  %235 = fcmp oeq float %temp292.11, %180
 | 
						|
  %236 = fcmp olt float %180, undef
 | 
						|
  %237 = and i1 %235, %236
 | 
						|
  br i1 %237, label %ENDIF2594, label %ELSE2740
 | 
						|
 | 
						|
ELSE2740:                                         ; preds = %ELSE2704
 | 
						|
  br i1 undef, label %IF2757, label %ELSE2758
 | 
						|
 | 
						|
IF2757:                                           ; preds = %ELSE2740
 | 
						|
  br i1 undef, label %ENDIF2594, label %ELSE2761
 | 
						|
 | 
						|
ELSE2758:                                         ; preds = %ELSE2740
 | 
						|
  br i1 undef, label %IF2775, label %ENDIF2594
 | 
						|
 | 
						|
ELSE2761:                                         ; preds = %IF2757
 | 
						|
  br label %ENDIF2594
 | 
						|
 | 
						|
IF2775:                                           ; preds = %ELSE2758
 | 
						|
  %238 = fcmp olt float undef, undef
 | 
						|
  br i1 %238, label %ENDIF2594, label %ELSE2779
 | 
						|
 | 
						|
ELSE2779:                                         ; preds = %IF2775
 | 
						|
  br i1 undef, label %ENDIF2594, label %ELSE2782
 | 
						|
 | 
						|
ELSE2782:                                         ; preds = %ELSE2779
 | 
						|
  br i1 undef, label %ENDIF2594, label %ELSE2785
 | 
						|
 | 
						|
ELSE2785:                                         ; preds = %ELSE2782
 | 
						|
  %239 = fcmp olt float undef, 0.000000e+00
 | 
						|
  br i1 %239, label %ENDIF2594, label %ELSE2788
 | 
						|
 | 
						|
ELSE2788:                                         ; preds = %ELSE2785
 | 
						|
  %240 = fcmp olt float 0.000000e+00, undef
 | 
						|
  %.2848 = select i1 %240, float -1.000000e+00, float 1.000000e+00
 | 
						|
  br label %ENDIF2594
 | 
						|
 | 
						|
ELSE2797:                                         ; preds = %ENDIF2564
 | 
						|
  %241 = fsub float %8, undef
 | 
						|
  %242 = fsub float %9, undef
 | 
						|
  %243 = fsub float %10, undef
 | 
						|
  %244 = fmul float %241, undef
 | 
						|
  %245 = fmul float %242, undef
 | 
						|
  %246 = fmul float %243, undef
 | 
						|
  %247 = fsub float %11, undef
 | 
						|
  %248 = fsub float %12, undef
 | 
						|
  %249 = fsub float %13, undef
 | 
						|
  %250 = fmul float %247, undef
 | 
						|
  %251 = fmul float %248, undef
 | 
						|
  %252 = fmul float %249, undef
 | 
						|
  %253 = call float @llvm.minnum.f32(float %244, float %250)
 | 
						|
  %254 = call float @llvm.minnum.f32(float %245, float %251)
 | 
						|
  %255 = call float @llvm.maxnum.f32(float %246, float %252)
 | 
						|
  %256 = call float @llvm.maxnum.f32(float %253, float %254)
 | 
						|
  %257 = call float @llvm.maxnum.f32(float %256, float undef)
 | 
						|
  %258 = call float @llvm.minnum.f32(float undef, float %255)
 | 
						|
  %259 = fcmp ogt float %257, 0.000000e+00
 | 
						|
  %260 = fcmp olt float %257, 1.000000e+00
 | 
						|
  %261 = and i1 %259, %260
 | 
						|
  %262 = fcmp olt float %257, %258
 | 
						|
  %263 = and i1 %261, %262
 | 
						|
  br i1 %263, label %ENDIF2795, label %ELSE2800
 | 
						|
 | 
						|
ENDIF2795:                                        ; preds = %ELSE2824, %ELSE2821, %ELSE2818, %ELSE2815, %ELSE2812, %ELSE2809, %ELSE2806, %ELSE2803, %ELSE2800, %ELSE2797, %ENDIF2564
 | 
						|
  br label %LOOP
 | 
						|
 | 
						|
ELSE2800:                                         ; preds = %ELSE2797
 | 
						|
  br i1 undef, label %ENDIF2795, label %ELSE2803
 | 
						|
 | 
						|
ELSE2803:                                         ; preds = %ELSE2800
 | 
						|
  %264 = fsub float %20, undef
 | 
						|
  %265 = fsub float %21, undef
 | 
						|
  %266 = fsub float %22, undef
 | 
						|
  %267 = fmul float %264, undef
 | 
						|
  %268 = fmul float %265, undef
 | 
						|
  %269 = fmul float %266, 0.000000e+00
 | 
						|
  %270 = fsub float %23, undef
 | 
						|
  %271 = fsub float %24, undef
 | 
						|
  %272 = fsub float %25, undef
 | 
						|
  %273 = fmul float %270, undef
 | 
						|
  %274 = fmul float %271, undef
 | 
						|
  %275 = fmul float %272, undef
 | 
						|
  %276 = call float @llvm.minnum.f32(float %267, float %273)
 | 
						|
  %277 = call float @llvm.maxnum.f32(float %268, float %274)
 | 
						|
  %278 = call float @llvm.maxnum.f32(float %269, float %275)
 | 
						|
  %279 = call float @llvm.maxnum.f32(float %276, float undef)
 | 
						|
  %280 = call float @llvm.maxnum.f32(float %279, float undef)
 | 
						|
  %281 = call float @llvm.minnum.f32(float undef, float %277)
 | 
						|
  %282 = call float @llvm.minnum.f32(float %281, float %278)
 | 
						|
  %283 = fcmp ogt float %280, 0.000000e+00
 | 
						|
  %284 = fcmp olt float %280, 1.000000e+00
 | 
						|
  %285 = and i1 %283, %284
 | 
						|
  %286 = fcmp olt float %280, %282
 | 
						|
  %287 = and i1 %285, %286
 | 
						|
  br i1 %287, label %ENDIF2795, label %ELSE2806
 | 
						|
 | 
						|
ELSE2806:                                         ; preds = %ELSE2803
 | 
						|
  %288 = fsub float %26, undef
 | 
						|
  %289 = fsub float %27, undef
 | 
						|
  %290 = fsub float %28, undef
 | 
						|
  %291 = fmul float %288, undef
 | 
						|
  %292 = fmul float %289, 0.000000e+00
 | 
						|
  %293 = fmul float %290, undef
 | 
						|
  %294 = fsub float %29, undef
 | 
						|
  %295 = fmul float %294, undef
 | 
						|
  %296 = call float @llvm.minnum.f32(float %291, float %295)
 | 
						|
  %297 = call float @llvm.minnum.f32(float %292, float undef)
 | 
						|
  %298 = call float @llvm.maxnum.f32(float %293, float undef)
 | 
						|
  %299 = call float @llvm.maxnum.f32(float %296, float %297)
 | 
						|
  %300 = call float @llvm.maxnum.f32(float %299, float undef)
 | 
						|
  %301 = call float @llvm.minnum.f32(float undef, float %298)
 | 
						|
  %302 = fcmp ogt float %300, 0.000000e+00
 | 
						|
  %303 = fcmp olt float %300, 1.000000e+00
 | 
						|
  %304 = and i1 %302, %303
 | 
						|
  %305 = fcmp olt float %300, %301
 | 
						|
  %306 = and i1 %304, %305
 | 
						|
  br i1 %306, label %ENDIF2795, label %ELSE2809
 | 
						|
 | 
						|
ELSE2809:                                         ; preds = %ELSE2806
 | 
						|
  br i1 undef, label %ENDIF2795, label %ELSE2812
 | 
						|
 | 
						|
ELSE2812:                                         ; preds = %ELSE2809
 | 
						|
  br i1 undef, label %ENDIF2795, label %ELSE2815
 | 
						|
 | 
						|
ELSE2815:                                         ; preds = %ELSE2812
 | 
						|
  br i1 undef, label %ENDIF2795, label %ELSE2818
 | 
						|
 | 
						|
ELSE2818:                                         ; preds = %ELSE2815
 | 
						|
  br i1 undef, label %ENDIF2795, label %ELSE2821
 | 
						|
 | 
						|
ELSE2821:                                         ; preds = %ELSE2818
 | 
						|
  %307 = fsub float %56, undef
 | 
						|
  %308 = fsub float %57, undef
 | 
						|
  %309 = fsub float %58, undef
 | 
						|
  %310 = fmul float %307, undef
 | 
						|
  %311 = fmul float %308, 0.000000e+00
 | 
						|
  %312 = fmul float %309, undef
 | 
						|
  %313 = fsub float %59, undef
 | 
						|
  %314 = fsub float %60, undef
 | 
						|
  %315 = fsub float %61, undef
 | 
						|
  %316 = fmul float %313, undef
 | 
						|
  %317 = fmul float %314, undef
 | 
						|
  %318 = fmul float %315, undef
 | 
						|
  %319 = call float @llvm.maxnum.f32(float %310, float %316)
 | 
						|
  %320 = call float @llvm.maxnum.f32(float %311, float %317)
 | 
						|
  %321 = call float @llvm.maxnum.f32(float %312, float %318)
 | 
						|
  %322 = call float @llvm.minnum.f32(float %319, float %320)
 | 
						|
  %323 = call float @llvm.minnum.f32(float %322, float %321)
 | 
						|
  %324 = fcmp ogt float undef, 0.000000e+00
 | 
						|
  %325 = fcmp olt float undef, 1.000000e+00
 | 
						|
  %326 = and i1 %324, %325
 | 
						|
  %327 = fcmp olt float undef, %323
 | 
						|
  %328 = and i1 %326, %327
 | 
						|
  br i1 %328, label %ENDIF2795, label %ELSE2824
 | 
						|
 | 
						|
ELSE2824:                                         ; preds = %ELSE2821
 | 
						|
  %.2849 = select i1 undef, float 0.000000e+00, float 1.000000e+00
 | 
						|
  br label %ENDIF2795
 | 
						|
}
 | 
						|
 | 
						|
declare i32 @llvm.amdgcn.mbcnt.lo(i32, i32) #1
 | 
						|
 | 
						|
; Function Attrs: nounwind readnone
 | 
						|
declare float @llvm.SI.load.const(<16 x i8>, i32) #1
 | 
						|
 | 
						|
; Function Attrs: nounwind readnone
 | 
						|
declare float @llvm.floor.f32(float) #1
 | 
						|
 | 
						|
; Function Attrs: nounwind readnone
 | 
						|
declare float @llvm.sqrt.f32(float) #1
 | 
						|
 | 
						|
; Function Attrs: nounwind readnone
 | 
						|
declare float @llvm.minnum.f32(float, float) #1
 | 
						|
 | 
						|
; Function Attrs: nounwind readnone
 | 
						|
declare float @llvm.maxnum.f32(float, float) #1
 | 
						|
 | 
						|
declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
 | 
						|
 | 
						|
attributes #0 = { nounwind }
 | 
						|
attributes #1 = { nounwind readnone }
 |