
%dx.types.Handle = type { i8* }
%dx.types.ResRet.f32 = type { float, float, float, float, i32 }
%dx.types.f32 = type { float }
%dx.types.Sampler = type opaque

define void @main() {
entry:
  %0 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 0, i32 3, i1 false)
  %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 3, i32 0, i32 5, i1 false)
  %2 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 undef)
  %3 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef)
  %4 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef)
  %5 = call %dx.types.ResRet.f32 @dx.op.sampleBias.f32(i32 61, %dx.types.Handle %0, %dx.types.Handle %1, float %2, float %3, float undef, float undef, i32 0, i32 0, i32 undef, float %4, float 0.000000e+00)
  %6 = extractvalue %dx.types.ResRet.f32 %5, 0
  %7 = extractvalue %dx.types.ResRet.f32 %5, 1
  %8 = extractvalue %dx.types.ResRet.f32 %5, 2
  %9 = extractvalue %dx.types.ResRet.f32 %5, 3
  %10 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 undef)
  %11 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef)
  %12 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef)
  %13 = call %dx.types.ResRet.f32 @dx.op.sampleBias.f32(i32 61, %dx.types.Handle %0, %dx.types.Handle %1, float %10, float %11, float undef, float undef, i32 -5, i32 7, i32 undef, float %12, float 0.000000e+00)
  %14 = extractvalue %dx.types.ResRet.f32 %13, 0
  %15 = extractvalue %dx.types.ResRet.f32 %13, 1
  %16 = extractvalue %dx.types.ResRet.f32 %13, 2
  %17 = extractvalue %dx.types.ResRet.f32 %13, 3
  %18 = fadd fast float %6, %14
  %19 = fadd fast float %7, %15
  %20 = fadd fast float %8, %16
  %21 = fadd fast float %9, %17
  %22 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 undef)
  %23 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef)
  %24 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef)
  %25 = call %dx.types.ResRet.f32 @dx.op.sampleBias.f32(i32 61, %dx.types.Handle %0, %dx.types.Handle %1, float %22, float %23, float undef, float undef, i32 -4, i32 1, i32 undef, float %24, float 5.000000e-01)
  %26 = extractvalue %dx.types.ResRet.f32 %25, 0
  %27 = extractvalue %dx.types.ResRet.f32 %25, 1
  %28 = extractvalue %dx.types.ResRet.f32 %25, 2
  %29 = extractvalue %dx.types.ResRet.f32 %25, 3
  %30 = fadd fast float %18, %26
  %31 = fadd fast float %19, %27
  %32 = fadd fast float %20, %28
  %33 = fadd fast float %21, %29
  %34 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 undef)
  %35 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef)
  %36 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef)
  %37 = call %dx.types.ResRet.f32 @dx.op.sampleBias.f32(i32 61, %dx.types.Handle %0, %dx.types.Handle %1, float %34, float %35, float undef, float undef, i32 -3, i32 2, i32 undef, float %36, float 0.000000e+00)
  %38 = extractvalue %dx.types.ResRet.f32 %37, 0
  %39 = extractvalue %dx.types.ResRet.f32 %37, 1
  %40 = extractvalue %dx.types.ResRet.f32 %37, 2
  %41 = extractvalue %dx.types.ResRet.f32 %37, 3
  %42 = extractvalue %dx.types.ResRet.f32 %37, 4
  %43 = fadd fast float %30, %38
  %44 = fadd fast float %31, %39
  %45 = fadd fast float %32, %40
  %46 = fadd fast float %33, %41
  %47 = call i1 @dx.op.checkAccessFullyMapped.i32(i32 71, i32 %42)
  %48 = sext i1 %47 to i32
  %49 = uitofp i32 %48 to float
  %50 = fadd fast float %43, %49
  %51 = fadd fast float %44, %49
  %52 = fadd fast float %45, %49
  %53 = fadd fast float %46, %49
  %54 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 undef)
  %55 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef)
  %56 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef)
  %57 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 undef)
  %58 = call %dx.types.ResRet.f32 @dx.op.sampleBias.f32(i32 61, %dx.types.Handle %0, %dx.types.Handle %1, float %54, float %55, float undef, float undef, i32 -3, i32 2, i32 undef, float %56, float %57)
  %59 = extractvalue %dx.types.ResRet.f32 %58, 0
  %60 = extractvalue %dx.types.ResRet.f32 %58, 1
  %61 = extractvalue %dx.types.ResRet.f32 %58, 2
  %62 = extractvalue %dx.types.ResRet.f32 %58, 3
  %63 = extractvalue %dx.types.ResRet.f32 %58, 4
  %64 = fadd fast float %50, %59
  %65 = fadd fast float %51, %60
  %66 = fadd fast float %52, %61
  %67 = fadd fast float %53, %62
  %68 = call i1 @dx.op.checkAccessFullyMapped.i32(i32 71, i32 %63)
  %69 = sext i1 %68 to i32
  %70 = uitofp i32 %69 to float
  %71 = fadd fast float %64, %70
  %72 = fadd fast float %65, %70
  %73 = fadd fast float %66, %70
  %74 = fadd fast float %67, %70
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %71)
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %72)
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %73)
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %74)
  ret void
}

; Function Attrs: nounwind readonly
declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #0

; Function Attrs: nounwind readnone
declare float @dx.op.loadInput.f32(i32, i32, i32, i8, i32) #1

; Function Attrs: nounwind readonly
declare %dx.types.ResRet.f32 @dx.op.sampleBias.f32(i32, %dx.types.Handle, %dx.types.Handle, float, float, float, float, i32, i32, i32, float, float) #0

; Function Attrs: nounwind
declare void @dx.op.tempRegStore.f32(i32, i32, float) #2

; Function Attrs: nounwind readonly
declare float @dx.op.tempRegLoad.f32(i32, i32) #0

; Function Attrs: nounwind
declare void @dx.op.tempRegStore.i32(i32, i32, i32) #2

; Function Attrs: nounwind readonly
declare i32 @dx.op.tempRegLoad.i32(i32, i32) #0

; Function Attrs: nounwind readonly
declare i1 @dx.op.checkAccessFullyMapped.i32(i32, i32) #0

; Function Attrs: nounwind
declare void @dx.op.storeOutput.f32(i32, i32, i32, i8, float) #2

; Function Attrs: nounwind readnone
declare float @dx.op.bitcastI32toF32(i32, i32) #1

; Function Attrs: nounwind readnone
declare i32 @dx.op.bitcastF32toI32(i32, float) #1

attributes #0 = { nounwind readonly }
attributes #1 = { nounwind readnone }
attributes #2 = { nounwind }

!dx.version = !{!0}
!dx.valver = !{!0}
!dx.shaderModel = !{!1}
!dx.resources = !{!2}
!dx.entryPoints = !{!8}
!llvm.ident = !{!16}

!0 = !{i32 1, i32 0}
!1 = !{!"ps", i32 6, i32 0}
!2 = !{!3, null, null, !6}
!3 = !{!4}
!4 = !{i32 0, %dx.types.f32 addrspace(1)* undef, !"T0", i32 0, i32 3, i32 1, i32 2, i32 0, !5}
!5 = !{i32 0, i32 9}
!6 = !{!7}
!7 = !{i32 0, %dx.types.Sampler addrspace(1)* undef, !"S0", i32 0, i32 5, i32 1, i32 0, null}
!8 = !{void ()* @main, !"main", !9, !2, !15}
!9 = !{!10, !13, null}
!10 = !{!11}
!11 = !{i32 0, !"A", i8 9, i8 0, !12, i8 2, i32 1, i8 2, i32 0, i8 0, null}
!12 = !{i32 0}
!13 = !{!14}
!14 = !{i32 0, !"SV_Target", i8 9, i8 16, !12, i8 0, i32 1, i8 4, i32 0, i8 0, null}
!15 = !{i32 0, i64 256}
!16 = !{!"dxbc2dxil 1.2"}
