1; SPIR-V
2; Version: 1.0
3; Generator: Google Clspv; 0
4; Bound: 83
5; Schema: 0
6               OpCapability Shader
7               OpExtension "SPV_KHR_storage_buffer_storage_class"
8               OpMemoryModel Logical GLSL450
9               OpEntryPoint GLCompute %19 "main" %gl_GlobalInvocationID
10               OpSource OpenCL_C 120
11               OpDecorate %_runtimearr_float ArrayStride 4
12               OpMemberDecorate %_struct_3 0 Offset 0
13               OpDecorate %_struct_3 Block
14               OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
15               OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
16               OpDecorate %15 DescriptorSet 0
17               OpDecorate %15 Binding 0
18               OpDecorate %16 DescriptorSet 0
19               OpDecorate %16 Binding 1
20               OpDecorate %10 SpecId 0
21               OpDecorate %11 SpecId 1
22               OpDecorate %12 SpecId 2
23      %float = OpTypeFloat 32
24%_runtimearr_float = OpTypeRuntimeArray %float
25  %_struct_3 = OpTypeStruct %_runtimearr_float
26%_ptr_StorageBuffer__struct_3 = OpTypePointer StorageBuffer %_struct_3
27       %uint = OpTypeInt 32 0
28     %v3uint = OpTypeVector %uint 3
29%_ptr_Input_v3uint = OpTypePointer Input %v3uint
30%_ptr_Private_v3uint = OpTypePointer Private %v3uint
31         %10 = OpSpecConstant %uint 1
32         %11 = OpSpecConstant %uint 1
33         %12 = OpSpecConstant %uint 1
34%gl_WorkGroupSize = OpSpecConstantComposite %v3uint %10 %11 %12
35       %void = OpTypeVoid
36         %18 = OpTypeFunction %void
37%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
38     %uint_0 = OpConstant %uint 0
39%_ptr_Input_uint = OpTypePointer Input %uint
40    %uint_35 = OpConstant %uint 35
41     %uint_1 = OpConstant %uint 1
42    %float_3 = OpConstant %float 3
43       %bool = OpTypeBool
44    %uint_34 = OpConstant %uint 34
45     %uint_5 = OpConstant %uint 5
46%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
47         %14 = OpVariable %_ptr_Private_v3uint Private %gl_WorkGroupSize
48         %15 = OpVariable %_ptr_StorageBuffer__struct_3 StorageBuffer
49         %16 = OpVariable %_ptr_StorageBuffer__struct_3 StorageBuffer
50         %19 = OpFunction %void None %18
51         %20 = OpLabel
52         %23 = OpAccessChain %_ptr_StorageBuffer_float %15 %uint_0 %uint_0
53         %25 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
54         %26 = OpLoad %uint %25
55         %27 = OpLoad %float %23
56         %29 = OpAccessChain %_ptr_StorageBuffer_float %15 %uint_0 %uint_35
57               OpBranch %31
58         %31 = OpLabel
59         %32 = OpPhi %float %27 %20 %67 %58
60         %33 = OpPhi %uint %uint_0 %20 %63 %58
61         %34 = OpLoad %float %29
62               OpLoopMerge %69 %58 None
63               OpBranch %37
64         %37 = OpLabel
65         %38 = OpPhi %float %46 %37 %32 %31
66         %39 = OpPhi %float %38 %37 %34 %31
67         %40 = OpPhi %uint %44 %37 %uint_0 %31
68         %41 = OpAccessChain %_ptr_StorageBuffer_float %15 %uint_0 %40
69         %42 = OpFAdd %float %39 %38
70         %44 = OpIAdd %uint %40 %uint_1
71         %45 = OpAccessChain %_ptr_StorageBuffer_float %15 %uint_0 %44
72         %46 = OpLoad %float %45
73         %47 = OpFAdd %float %42 %46
74         %49 = OpFDiv %float %47 %float_3
75               OpStore %41 %49
76         %52 = OpULessThan %bool %40 %uint_34
77         %53 = OpLogicalNot %bool %52
78               OpLoopMerge %56 %37 None
79               OpBranchConditional %53 %56 %37
80         %56 = OpLabel
81               OpBranch %58
82         %58 = OpLabel
83         %59 = OpLoad %float %29
84         %60 = OpFAdd %float %38 %59
85         %61 = OpFAdd %float %32 %60
86         %62 = OpFDiv %float %61 %float_3
87               OpStore %29 %62
88         %63 = OpIAdd %uint %33 %uint_1
89         %65 = OpULessThan %bool %33 %uint_5
90         %66 = OpLogicalNot %bool %65
91         %67 = OpLoad %float %23
92               OpBranchConditional %66 %69 %31
93         %69 = OpLabel
94         %70 = OpPhi %float %75 %69 %67 %58
95         %71 = OpPhi %uint %76 %69 %uint_1 %58
96         %72 = OpAccessChain %_ptr_StorageBuffer_float %15 %uint_0 %71
97         %73 = OpLoad %float %72
98         %74 = OpFOrdLessThan %bool %70 %73
99         %75 = OpSelect %float %74 %73 %70
100         %76 = OpIAdd %uint %71 %uint_1
101         %77 = OpULessThan %bool %71 %uint_35
102         %78 = OpLogicalNot %bool %77
103               OpLoopMerge %81 %69 None
104               OpBranchConditional %78 %81 %69
105         %81 = OpLabel
106         %82 = OpAccessChain %_ptr_StorageBuffer_float %16 %uint_0 %26
107               OpStore %82 %75
108               OpReturn
109               OpFunctionEnd
110