
%dx.types.Handle = type { i8* }
%dx.types.Dimensions = type { i32, i32, i32, i32 }
%dx.types.i8x52 = type { [52 x i8] }
%dx.types.u32 = type { i32 }
%dx.types.unorm_f32 = type { float }
%dx.types.i32 = type { i32 }

define void @main() {
entry:
  %0 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 0, i32 0, i1 false)
  %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 1, i32 1, i1 false)
  %2 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 2, i32 2, i1 false)
  %3 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 0, i32 1, i1 false)
  %4 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 1, i32 2, i1 false)
  %5 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 2, i32 3, i1 false)
  %6 = call %dx.types.Dimensions @dx.op.getDimensions(i32 72, %dx.types.Handle %0, i32 undef)
  %7 = extractvalue %dx.types.Dimensions %6, 0
  %8 = add i32 %7, 52
  %9 = call %dx.types.Dimensions @dx.op.getDimensions(i32 72, %dx.types.Handle %3, i32 undef)
  %10 = extractvalue %dx.types.Dimensions %9, 0
  %11 = add i32 %8, %10
  %12 = add i32 %11, 52
  %13 = call %dx.types.Dimensions @dx.op.getDimensions(i32 72, %dx.types.Handle %1, i32 undef)
  %14 = extractvalue %dx.types.Dimensions %13, 0
  %15 = add i32 %14, %12
  %16 = call %dx.types.Dimensions @dx.op.getDimensions(i32 72, %dx.types.Handle %4, i32 undef)
  %17 = extractvalue %dx.types.Dimensions %16, 0
  %18 = add i32 %17, %15
  %19 = call %dx.types.Dimensions @dx.op.getDimensions(i32 72, %dx.types.Handle %2, i32 undef)
  %20 = extractvalue %dx.types.Dimensions %19, 0
  %21 = add i32 %20, %18
  %22 = call %dx.types.Dimensions @dx.op.getDimensions(i32 72, %dx.types.Handle %5, i32 undef)
  %23 = extractvalue %dx.types.Dimensions %22, 0
  %24 = add i32 %23, %21
  call void @dx.op.storeOutput.i32(i32 5, i32 0, i32 0, i8 0, i32 %24)
  ret void
}

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

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

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

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

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

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

!dx.version = !{!0}
!dx.valver = !{!0}
!dx.shaderModel = !{!1}
!dx.resources = !{!2}
!dx.typeAnnotations = !{!14}
!dx.entryPoints = !{!17}
!llvm.ident = !{!23}

!0 = !{i32 1, i32 0}
!1 = !{!"ps", i32 6, i32 0}
!2 = !{!3, !9, null, null}
!3 = !{!4, !6, !7}
!4 = !{i32 0, %dx.types.i8x52 addrspace(1)* undef, !"T0", i32 0, i32 0, i32 1, i32 12, i32 0, !5}
!5 = !{i32 1, i32 52}
!6 = !{i32 1, %dx.types.u32 addrspace(1)* undef, !"T1", i32 0, i32 1, i32 1, i32 11, i32 0, null}
!7 = !{i32 2, %dx.types.unorm_f32 addrspace(1)* undef, !"T2", i32 0, i32 2, i32 1, i32 10, i32 0, !8}
!8 = !{i32 0, i32 14}
!9 = !{!10, !11, !12}
!10 = !{i32 0, %dx.types.i8x52 addrspace(1)* undef, !"U0", i32 0, i32 1, i32 1, i32 12, i1 false, i1 false, i1 false, !5}
!11 = !{i32 1, %dx.types.u32 addrspace(1)* undef, !"U1", i32 0, i32 2, i32 1, i32 11, i1 false, i1 false, i1 false, null}
!12 = !{i32 2, %dx.types.i32 addrspace(1)* undef, !"U2", i32 0, i32 3, i32 1, i32 10, i1 false, i1 false, i1 false, !13}
!13 = !{i32 0, i32 4}
!14 = !{i32 0, %dx.types.unorm_f32 undef, !15}
!15 = !{i32 0, !16}
!16 = !{i32 7, i32 14}
!17 = !{void ()* @main, !"main", !18, !2, !22}
!18 = !{null, !19, null}
!19 = !{!20}
!20 = !{i32 0, !"SV_Target", i8 5, i8 16, !21, i8 0, i32 1, i8 1, i32 0, i8 0, null}
!21 = !{i32 0}
!22 = !{i32 0, i64 256}
!23 = !{!"dxbc2dxil 1.2"}
