1; SPIR-V
2; Version: 1.3
3; Generator: Khronos SPIR-V Tools Assembler; 0
4; Bound: 139
5; Schema: 0
6               OpCapability Shader
7          %1 = OpExtInstImport "GLSL.std.450"
8               OpMemoryModel Logical GLSL450
9               OpEntryPoint GLCompute %main "main"
10               OpExecutionMode %main LocalSize 1 1 1
11               OpSource GLSL 450
12               OpName %main "main"
13               OpName %SSBO "SSBO"
14               OpMemberName %SSBO 0 "a1"
15               OpMemberName %SSBO 1 "a2"
16               OpMemberName %SSBO 2 "a3"
17               OpMemberName %SSBO 3 "a4"
18               OpMemberName %SSBO 4 "b1"
19               OpMemberName %SSBO 5 "b2"
20               OpMemberName %SSBO 6 "b3"
21               OpMemberName %SSBO 7 "b4"
22               OpMemberName %SSBO 8 "c1"
23               OpMemberName %SSBO 9 "c2"
24               OpMemberName %SSBO 10 "c3"
25               OpMemberName %SSBO 11 "c4"
26               OpName %_ ""
27               OpName %i "i"
28               OpMemberDecorate %SSBO 0 Offset 0
29               OpMemberDecorate %SSBO 1 Offset 8
30               OpMemberDecorate %SSBO 2 Offset 16
31               OpMemberDecorate %SSBO 3 Offset 32
32               OpMemberDecorate %SSBO 4 Offset 48
33               OpMemberDecorate %SSBO 5 Offset 56
34               OpMemberDecorate %SSBO 6 Offset 64
35               OpMemberDecorate %SSBO 7 Offset 80
36               OpMemberDecorate %SSBO 8 Offset 96
37               OpMemberDecorate %SSBO 9 Offset 104
38               OpMemberDecorate %SSBO 10 Offset 112
39               OpMemberDecorate %SSBO 11 Offset 128
40               OpDecorate %SSBO BufferBlock
41               OpDecorate %_ DescriptorSet 0
42               OpDecorate %_ Binding 0
43       %void = OpTypeVoid
44          %7 = OpTypeFunction %void
45      %float = OpTypeFloat 32
46    %v2float = OpTypeVector %float 2
47    %v3float = OpTypeVector %float 3
48    %v4float = OpTypeVector %float 4
49       %SSBO = OpTypeStruct %float %v2float %v3float %v4float %float %v2float %v3float %v4float %float %v2float %v3float %v4float
50%_ptr_Uniform_SSBO = OpTypePointer Uniform %SSBO
51          %_ = OpVariable %_ptr_Uniform_SSBO Uniform
52        %int = OpTypeInt 32 1
53      %int_0 = OpConstant %int 0
54      %int_4 = OpConstant %int 4
55%_ptr_Uniform_float = OpTypePointer Uniform %float
56      %int_8 = OpConstant %int 8
57      %int_1 = OpConstant %int 1
58      %int_5 = OpConstant %int 5
59%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
60      %int_9 = OpConstant %int 9
61      %int_2 = OpConstant %int 2
62      %int_6 = OpConstant %int 6
63%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
64     %int_10 = OpConstant %int 10
65      %int_3 = OpConstant %int 3
66      %int_7 = OpConstant %int 7
67%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
68     %int_11 = OpConstant %int 11
69%_ptr_Function_int = OpTypePointer Function %int
70       %bool = OpTypeBool
71       %uint = OpTypeInt 32 0
72     %uint_0 = OpConstant %uint 0
73     %uint_1 = OpConstant %uint 1
74       %main = OpFunction %void None %7
75         %35 = OpLabel
76          %i = OpVariable %_ptr_Function_int Function
77         %36 = OpAccessChain %_ptr_Uniform_float %_ %int_4
78         %37 = OpLoad %float %36
79         %38 = OpAccessChain %_ptr_Uniform_float %_ %int_8
80         %39 = OpLoad %float %38
81         %40 = OpExtInst %float %1 NMin %37 %39
82         %41 = OpAccessChain %_ptr_Uniform_float %_ %int_0
83               OpStore %41 %40
84         %42 = OpAccessChain %_ptr_Uniform_v2float %_ %int_5
85         %43 = OpLoad %v2float %42
86         %44 = OpAccessChain %_ptr_Uniform_v2float %_ %int_9
87         %45 = OpLoad %v2float %44
88         %46 = OpExtInst %v2float %1 NMin %43 %45
89         %47 = OpAccessChain %_ptr_Uniform_v2float %_ %int_1
90               OpStore %47 %46
91         %48 = OpAccessChain %_ptr_Uniform_v3float %_ %int_6
92         %49 = OpLoad %v3float %48
93         %50 = OpAccessChain %_ptr_Uniform_v3float %_ %int_10
94         %51 = OpLoad %v3float %50
95         %52 = OpExtInst %v3float %1 NMin %49 %51
96         %53 = OpAccessChain %_ptr_Uniform_v3float %_ %int_2
97               OpStore %53 %52
98         %54 = OpAccessChain %_ptr_Uniform_v4float %_ %int_7
99         %55 = OpLoad %v4float %54
100         %56 = OpAccessChain %_ptr_Uniform_v4float %_ %int_11
101         %57 = OpLoad %v4float %56
102         %58 = OpExtInst %v4float %1 NMin %55 %57
103         %59 = OpAccessChain %_ptr_Uniform_v4float %_ %int_3
104               OpStore %59 %58
105         %60 = OpAccessChain %_ptr_Uniform_float %_ %int_4
106         %61 = OpLoad %float %60
107         %62 = OpAccessChain %_ptr_Uniform_float %_ %int_8
108         %63 = OpLoad %float %62
109         %64 = OpExtInst %float %1 NMax %61 %63
110         %65 = OpAccessChain %_ptr_Uniform_float %_ %int_0
111               OpStore %65 %64
112         %66 = OpAccessChain %_ptr_Uniform_v2float %_ %int_5
113         %67 = OpLoad %v2float %66
114         %68 = OpAccessChain %_ptr_Uniform_v2float %_ %int_9
115         %69 = OpLoad %v2float %68
116         %70 = OpExtInst %v2float %1 NMax %67 %69
117         %71 = OpAccessChain %_ptr_Uniform_v2float %_ %int_1
118               OpStore %71 %70
119         %72 = OpAccessChain %_ptr_Uniform_v3float %_ %int_6
120         %73 = OpLoad %v3float %72
121         %74 = OpAccessChain %_ptr_Uniform_v3float %_ %int_10
122         %75 = OpLoad %v3float %74
123         %76 = OpExtInst %v3float %1 NMax %73 %75
124         %77 = OpAccessChain %_ptr_Uniform_v3float %_ %int_2
125               OpStore %77 %76
126         %78 = OpAccessChain %_ptr_Uniform_v4float %_ %int_7
127         %79 = OpLoad %v4float %78
128         %80 = OpAccessChain %_ptr_Uniform_v4float %_ %int_11
129         %81 = OpLoad %v4float %80
130         %82 = OpExtInst %v4float %1 NMax %79 %81
131         %83 = OpAccessChain %_ptr_Uniform_v4float %_ %int_3
132               OpStore %83 %82
133         %84 = OpAccessChain %_ptr_Uniform_float %_ %int_0
134         %85 = OpLoad %float %84
135         %86 = OpAccessChain %_ptr_Uniform_float %_ %int_4
136         %87 = OpLoad %float %86
137         %88 = OpAccessChain %_ptr_Uniform_float %_ %int_8
138         %89 = OpLoad %float %88
139         %90 = OpExtInst %float %1 NClamp %85 %87 %89
140         %91 = OpAccessChain %_ptr_Uniform_float %_ %int_0
141               OpStore %91 %90
142         %92 = OpAccessChain %_ptr_Uniform_v2float %_ %int_1
143         %93 = OpLoad %v2float %92
144         %94 = OpAccessChain %_ptr_Uniform_v2float %_ %int_5
145         %95 = OpLoad %v2float %94
146         %96 = OpAccessChain %_ptr_Uniform_v2float %_ %int_9
147         %97 = OpLoad %v2float %96
148         %98 = OpExtInst %v2float %1 NClamp %93 %95 %97
149         %99 = OpAccessChain %_ptr_Uniform_v2float %_ %int_1
150               OpStore %99 %98
151        %100 = OpAccessChain %_ptr_Uniform_v3float %_ %int_2
152        %101 = OpLoad %v3float %100
153        %102 = OpAccessChain %_ptr_Uniform_v3float %_ %int_6
154        %103 = OpLoad %v3float %102
155        %104 = OpAccessChain %_ptr_Uniform_v3float %_ %int_10
156        %105 = OpLoad %v3float %104
157        %106 = OpExtInst %v3float %1 NClamp %101 %103 %105
158        %107 = OpAccessChain %_ptr_Uniform_v3float %_ %int_2
159               OpStore %107 %106
160        %108 = OpAccessChain %_ptr_Uniform_v4float %_ %int_3
161        %109 = OpLoad %v4float %108
162        %110 = OpAccessChain %_ptr_Uniform_v4float %_ %int_7
163        %111 = OpLoad %v4float %110
164        %112 = OpAccessChain %_ptr_Uniform_v4float %_ %int_11
165        %113 = OpLoad %v4float %112
166        %114 = OpExtInst %v4float %1 NClamp %109 %111 %113
167        %115 = OpAccessChain %_ptr_Uniform_v4float %_ %int_3
168               OpStore %115 %114
169               OpStore %i %int_0
170               OpBranch %116
171        %116 = OpLabel
172               OpLoopMerge %117 %118 None
173               OpBranch %119
174        %119 = OpLabel
175        %120 = OpLoad %int %i
176        %121 = OpSLessThan %bool %120 %int_2
177               OpBranchConditional %121 %122 %117
178        %122 = OpLabel
179        %123 = OpAccessChain %_ptr_Uniform_v2float %_ %int_5
180        %124 = OpLoad %v2float %123
181        %125 = OpAccessChain %_ptr_Uniform_v2float %_ %int_9
182        %126 = OpLoad %v2float %125
183        %127 = OpExtInst %v2float %1 NMin %124 %126
184        %128 = OpAccessChain %_ptr_Uniform_v2float %_ %int_1
185               OpStore %128 %127
186               OpBranch %118
187        %118 = OpLabel
188        %129 = OpLoad %int %i
189        %130 = OpIAdd %int %129 %int_1
190               OpStore %i %130
191        %131 = OpAccessChain %_ptr_Uniform_float %_ %int_0
192        %132 = OpLoad %float %131
193        %133 = OpAccessChain %_ptr_Uniform_float %_ %int_5 %uint_0
194        %134 = OpLoad %float %133
195        %135 = OpAccessChain %_ptr_Uniform_float %_ %int_5 %uint_1
196        %136 = OpLoad %float %135
197        %137 = OpExtInst %float %1 NClamp %132 %134 %136
198        %138 = OpAccessChain %_ptr_Uniform_float %_ %int_0
199               OpStore %138 %137
200               OpBranch %116
201        %117 = OpLabel
202               OpReturn
203               OpFunctionEnd
204