; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 7
; Bound: 45
; Schema: 0
               OpCapability Shader
               OpCapability FragmentShaderPixelInterlockEXT
               OpExtension "SPV_EXT_fragment_shader_interlock"
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Fragment %main "main" %gl_FragCoord
               OpExecutionMode %main OriginUpperLeft
               OpExecutionMode %main PixelInterlockOrderedEXT
               OpSource GLSL 450
               OpSourceExtension "GL_ARB_fragment_shader_interlock"
               OpName %main "main"
               OpName %callee2_ "callee2("
               OpName %callee_ "callee("
               OpName %SSBO1 "SSBO1"
               OpMemberName %SSBO1 0 "values1"
               OpName %_ ""
               OpName %gl_FragCoord "gl_FragCoord"
               OpName %SSBO0 "SSBO0"
               OpMemberName %SSBO0 0 "values0"
               OpName %__0 ""
               OpDecorate %_runtimearr_uint ArrayStride 4
               OpMemberDecorate %SSBO1 0 Offset 0
               OpDecorate %SSBO1 BufferBlock
               OpDecorate %_ DescriptorSet 0
               OpDecorate %_ Binding 1
               OpDecorate %gl_FragCoord BuiltIn FragCoord
               OpDecorate %_runtimearr_uint_0 ArrayStride 4
               OpMemberDecorate %SSBO0 0 Offset 0
               OpDecorate %SSBO0 BufferBlock
               OpDecorate %__0 DescriptorSet 0
               OpDecorate %__0 Binding 0

               OpMemberDecorate %SSBO2 0 Offset 0
               OpDecorate %SSBO2 BufferBlock
               OpDecorate %ssbo2 DescriptorSet 0
               OpDecorate %ssbo2 Binding 2

       %void = OpTypeVoid
          %3 = OpTypeFunction %void
       %uint = OpTypeInt 32 0
%_runtimearr_uint = OpTypeRuntimeArray %uint
      %SSBO1 = OpTypeStruct %_runtimearr_uint
      %SSBO2 = OpTypeStruct %_runtimearr_uint
%_ptr_Uniform_SSBO1 = OpTypePointer Uniform %SSBO1
%_ptr_Uniform_SSBO2 = OpTypePointer Uniform %SSBO2
          %_ = OpVariable %_ptr_Uniform_SSBO1 Uniform
          %ssbo2 = OpVariable %_ptr_Uniform_SSBO2 Uniform
        %int = OpTypeInt 32 1
      %int_0 = OpConstant %int 0
	  %uint_4 = OpConstant %uint 4
      %float = OpTypeFloat 32
    %v4float = OpTypeVector %float 4
	%bool = OpTypeBool
	%true = OpConstantTrue %bool
%_ptr_Input_v4float = OpTypePointer Input %v4float
%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
     %uint_0 = OpConstant %uint 0
%_ptr_Input_float = OpTypePointer Input %float
     %uint_1 = OpConstant %uint 1
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
%_runtimearr_uint_0 = OpTypeRuntimeArray %uint
      %SSBO0 = OpTypeStruct %_runtimearr_uint_0
%_ptr_Uniform_SSBO0 = OpTypePointer Uniform %SSBO0
        %__0 = OpVariable %_ptr_Uniform_SSBO0 Uniform
       %main = OpFunction %void None %3
          %5 = OpLabel
         %44 = OpFunctionCall %void %callee_
		 %callee3_res = OpFunctionCall %void %callee3_
               OpReturn
               OpFunctionEnd

   %callee3_ = OpFunction %void None %3
   	%calle3_block = OpLabel
         %frag_coord_x_ptr = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
         %frag_coord_x = OpLoad %float %frag_coord_x_ptr
         %frag_coord_int = OpConvertFToS %int %frag_coord_x
         %ssbo_ptr = OpAccessChain %_ptr_Uniform_uint %ssbo2 %int_0 %frag_coord_int
		 OpStore %ssbo_ptr %uint_4
	OpReturn
	OpFunctionEnd

   %callee2_ = OpFunction %void None %3
          %7 = OpLabel
         %23 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
         %24 = OpLoad %float %23
         %25 = OpConvertFToS %int %24
         %28 = OpAccessChain %_ptr_Uniform_uint %_ %int_0 %25
         %29 = OpLoad %uint %28
         %30 = OpIAdd %uint %29 %uint_1
         %31 = OpAccessChain %_ptr_Uniform_uint %_ %int_0 %25
               OpStore %31 %30
               OpReturn
               OpFunctionEnd
    %callee_ = OpFunction %void None %3
          %9 = OpLabel
         %36 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
         %37 = OpLoad %float %36
         %38 = OpConvertFToS %int %37
         %39 = OpAccessChain %_ptr_Uniform_uint %__0 %int_0 %38
         %40 = OpLoad %uint %39
         %41 = OpIAdd %uint %40 %uint_1
         %42 = OpAccessChain %_ptr_Uniform_uint %__0 %int_0 %38
               OpStore %42 %41
         %43 = OpFunctionCall %void %callee2_

		 OpSelectionMerge %merged_block None
		 OpBranchConditional %true %dummy_block %merged_block
		 %dummy_block = OpLabel
		 	OpBeginInvocationInterlockEXT
		 	OpEndInvocationInterlockEXT
			OpBranch %merged_block

			%merged_block = OpLabel
               OpReturn

               OpFunctionEnd
