1; SPIR-V
2; Version: 1.0
3; Generator: Khronos Glslang Reference Front End; 7
4; Bound: 45
5; Schema: 0
6               OpCapability Shader
7               OpCapability FragmentShaderPixelInterlockEXT
8               OpExtension "SPV_EXT_fragment_shader_interlock"
9          %1 = OpExtInstImport "GLSL.std.450"
10               OpMemoryModel Logical GLSL450
11               OpEntryPoint Fragment %main "main" %gl_FragCoord
12               OpExecutionMode %main OriginUpperLeft
13               OpExecutionMode %main PixelInterlockOrderedEXT
14               OpSource GLSL 450
15               OpSourceExtension "GL_ARB_fragment_shader_interlock"
16               OpName %main "main"
17               OpName %callee2_ "callee2("
18               OpName %callee_ "callee("
19               OpName %SSBO1 "SSBO1"
20               OpMemberName %SSBO1 0 "values1"
21               OpName %_ ""
22               OpName %gl_FragCoord "gl_FragCoord"
23               OpName %SSBO0 "SSBO0"
24               OpMemberName %SSBO0 0 "values0"
25               OpName %__0 ""
26               OpDecorate %_runtimearr_uint ArrayStride 4
27               OpMemberDecorate %SSBO1 0 Offset 0
28               OpDecorate %SSBO1 BufferBlock
29               OpDecorate %_ DescriptorSet 0
30               OpDecorate %_ Binding 1
31               OpDecorate %gl_FragCoord BuiltIn FragCoord
32               OpDecorate %_runtimearr_uint_0 ArrayStride 4
33               OpMemberDecorate %SSBO0 0 Offset 0
34               OpDecorate %SSBO0 BufferBlock
35               OpDecorate %__0 DescriptorSet 0
36               OpDecorate %__0 Binding 0
37       %void = OpTypeVoid
38          %3 = OpTypeFunction %void
39       %uint = OpTypeInt 32 0
40%_runtimearr_uint = OpTypeRuntimeArray %uint
41      %SSBO1 = OpTypeStruct %_runtimearr_uint
42%_ptr_Uniform_SSBO1 = OpTypePointer Uniform %SSBO1
43          %_ = OpVariable %_ptr_Uniform_SSBO1 Uniform
44        %int = OpTypeInt 32 1
45      %int_0 = OpConstant %int 0
46      %float = OpTypeFloat 32
47    %v4float = OpTypeVector %float 4
48%_ptr_Input_v4float = OpTypePointer Input %v4float
49%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
50     %uint_0 = OpConstant %uint 0
51%_ptr_Input_float = OpTypePointer Input %float
52     %uint_1 = OpConstant %uint 1
53%_ptr_Uniform_uint = OpTypePointer Uniform %uint
54%_runtimearr_uint_0 = OpTypeRuntimeArray %uint
55      %SSBO0 = OpTypeStruct %_runtimearr_uint_0
56%_ptr_Uniform_SSBO0 = OpTypePointer Uniform %SSBO0
57        %__0 = OpVariable %_ptr_Uniform_SSBO0 Uniform
58       %main = OpFunction %void None %3
59          %5 = OpLabel
60         %44 = OpFunctionCall %void %callee_
61               OpReturn
62               OpFunctionEnd
63   %callee2_ = OpFunction %void None %3
64          %7 = OpLabel
65         %23 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
66         %24 = OpLoad %float %23
67         %25 = OpConvertFToS %int %24
68         %28 = OpAccessChain %_ptr_Uniform_uint %_ %int_0 %25
69         %29 = OpLoad %uint %28
70         %30 = OpIAdd %uint %29 %uint_1
71         %31 = OpAccessChain %_ptr_Uniform_uint %_ %int_0 %25
72               OpStore %31 %30
73               OpReturn
74               OpFunctionEnd
75    %callee_ = OpFunction %void None %3
76          %9 = OpLabel
77         %36 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
78         %37 = OpLoad %float %36
79         %38 = OpConvertFToS %int %37
80         %39 = OpAccessChain %_ptr_Uniform_uint %__0 %int_0 %38
81         %40 = OpLoad %uint %39
82         %41 = OpIAdd %uint %40 %uint_1
83         %42 = OpAccessChain %_ptr_Uniform_uint %__0 %int_0 %38
84               OpStore %42 %41
85               OpBeginInvocationInterlockEXT
86         %43 = OpFunctionCall %void %callee2_
87               OpEndInvocationInterlockEXT
88               OpReturn
89               OpFunctionEnd
90