1e5c31af7Sopenharmony_ci#!amber
2e5c31af7Sopenharmony_ci
3e5c31af7Sopenharmony_ci# Copyright 2022 Google LLC
4e5c31af7Sopenharmony_ci#
5e5c31af7Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
6e5c31af7Sopenharmony_ci# you may not use this file except in compliance with the License.
7e5c31af7Sopenharmony_ci# You may obtain a copy of the License at
8e5c31af7Sopenharmony_ci#
9e5c31af7Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
10e5c31af7Sopenharmony_ci#
11e5c31af7Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
12e5c31af7Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
13e5c31af7Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14e5c31af7Sopenharmony_ci# See the License for the specific language governing permissions and
15e5c31af7Sopenharmony_ci# limitations under the License.
16e5c31af7Sopenharmony_ci
17e5c31af7Sopenharmony_ci
18e5c31af7Sopenharmony_ci# A test for a coverage-gap found by the GraphicsFuzz project.
19e5c31af7Sopenharmony_ci
20e5c31af7Sopenharmony_ci# Short description: A fragment shader that covers specific LLVM code paths
21e5c31af7Sopenharmony_ci
22e5c31af7Sopenharmony_ci# The test passes because the shader always writes red.
23e5c31af7Sopenharmony_ci
24e5c31af7Sopenharmony_ciSHADER vertex texgen_vert PASSTHROUGH
25e5c31af7Sopenharmony_ci
26e5c31af7Sopenharmony_ciSHADER fragment texgen_frag GLSL
27e5c31af7Sopenharmony_ci#version 430
28e5c31af7Sopenharmony_ciprecision highp float;
29e5c31af7Sopenharmony_ci
30e5c31af7Sopenharmony_cilayout(location = 0) out vec4 _GLF_color;
31e5c31af7Sopenharmony_ci
32e5c31af7Sopenharmony_civoid main()
33e5c31af7Sopenharmony_ci{
34e5c31af7Sopenharmony_ci _GLF_color = vec4(
35e5c31af7Sopenharmony_ci floor(gl_FragCoord.x) * (1.0 / 255.0),
36e5c31af7Sopenharmony_ci (int(gl_FragCoord.x) ^ int(gl_FragCoord.y)) * (1.0 / 255.0),
37e5c31af7Sopenharmony_ci floor(gl_FragCoord.y) * (1.0 / 255.0),
38e5c31af7Sopenharmony_ci 1.0);
39e5c31af7Sopenharmony_ci}
40e5c31af7Sopenharmony_ciEND
41e5c31af7Sopenharmony_ciBUFFER default_texture FORMAT B8G8R8A8_UNORM
42e5c31af7Sopenharmony_ci
43e5c31af7Sopenharmony_ciPIPELINE graphics texgen_pipeline
44e5c31af7Sopenharmony_ci  ATTACH texgen_vert
45e5c31af7Sopenharmony_ci  ATTACH texgen_frag
46e5c31af7Sopenharmony_ci  FRAMEBUFFER_SIZE 256 256
47e5c31af7Sopenharmony_ci  BIND BUFFER default_texture AS color LOCATION 0
48e5c31af7Sopenharmony_ciEND
49e5c31af7Sopenharmony_ci
50e5c31af7Sopenharmony_ciCLEAR_COLOR texgen_pipeline 0 0 0 255
51e5c31af7Sopenharmony_ciCLEAR texgen_pipeline
52e5c31af7Sopenharmony_ciRUN texgen_pipeline DRAW_RECT POS 0 0  SIZE 256 256
53e5c31af7Sopenharmony_ci
54e5c31af7Sopenharmony_ciSHADER vertex variant_vertex_shader PASSTHROUGH
55e5c31af7Sopenharmony_ci
56e5c31af7Sopenharmony_ci# variant_fragment_shader is derived from the following GLSL:
57e5c31af7Sopenharmony_ci# #version 320 es
58e5c31af7Sopenharmony_ci#
59e5c31af7Sopenharmony_ci# #define _int_1 _GLF_uniform_int_values[0]
60e5c31af7Sopenharmony_ci# #define _int_0 _GLF_uniform_int_values[1]
61e5c31af7Sopenharmony_ci# #define _int_256 _GLF_uniform_int_values[2]
62e5c31af7Sopenharmony_ci# #define _float_0_0 _GLF_uniform_float_values[0]
63e5c31af7Sopenharmony_ci#
64e5c31af7Sopenharmony_ci# precision highp float;
65e5c31af7Sopenharmony_ci# precision highp int;
66e5c31af7Sopenharmony_ci#
67e5c31af7Sopenharmony_ci# // Contents of _GLF_uniform_float_values: 0.0
68e5c31af7Sopenharmony_ci# layout(set = 0, binding = 0) uniform buf0
69e5c31af7Sopenharmony_ci# {
70e5c31af7Sopenharmony_ci#     float _GLF_uniform_float_values[1];
71e5c31af7Sopenharmony_ci# };
72e5c31af7Sopenharmony_ci#
73e5c31af7Sopenharmony_ci# // Contents of _GLF_uniform_int_values: [1, 0, 256]
74e5c31af7Sopenharmony_ci# layout(set = 0, binding = 1) uniform buf1
75e5c31af7Sopenharmony_ci# {
76e5c31af7Sopenharmony_ci#     int _GLF_uniform_int_values[3];
77e5c31af7Sopenharmony_ci# };
78e5c31af7Sopenharmony_ci#
79e5c31af7Sopenharmony_ci# layout(set = 0, binding = 2) uniform sampler2D tex;
80e5c31af7Sopenharmony_ci#
81e5c31af7Sopenharmony_ci# layout(location = 0) out vec4 _GLF_color;
82e5c31af7Sopenharmony_ci#
83e5c31af7Sopenharmony_ci# void main()
84e5c31af7Sopenharmony_ci# {
85e5c31af7Sopenharmony_ci#     vec2 v = gl_FragCoord.xy;
86e5c31af7Sopenharmony_ci#     int a = _int_256;
87e5c31af7Sopenharmony_ci#     vec4 res = vec4(_int_0);
88e5c31af7Sopenharmony_ci#
89e5c31af7Sopenharmony_ci#     // Iterates three times.
90e5c31af7Sopenharmony_ci#     for(int i = 0; i < 3; i++)
91e5c31af7Sopenharmony_ci#     {
92e5c31af7Sopenharmony_ci#         // Iterates three times.
93e5c31af7Sopenharmony_ci#         for(int j = 0; j < 3; j++)
94e5c31af7Sopenharmony_ci#         {
95e5c31af7Sopenharmony_ci#             vec4 v0 = texture(tex, clamp(vec2(_int_1) + max(vec2(_int_1), vec2(i, j - _int_1)), vec2(_int_1), vec2(_int_1, v.y + float(j)) - vec2(_int_1)));
96e5c31af7Sopenharmony_ci#             vec4 v1 = texture(tex, clamp(vec2(_int_1) + min(min(gl_FragCoord.x > _float_0_0 ? max(vec2(i, _int_1), vec2(a, j)) : vec2(_int_1), vec2(_int_1)), max(vec2(i, j), vec2(a, j))), vec2(_int_1) + max(vec2(i, j), vec2(i, _int_1)), vec2(_int_1) + clamp(vec2(_int_1), max(vec2(_int_1), vec2(i, j)), max(vec2(_int_1), vec2(i - _int_1, j)))));
97e5c31af7Sopenharmony_ci#             vec4 v2 = texture(tex, clamp(vec2(_int_1) + vec2(i * a, j), vec2(_int_1), vec2(_int_1)));
98e5c31af7Sopenharmony_ci#             vec4 v3 = texture(tex, clamp(vec2(_int_1) + max(vec2(i, _int_1), vec2(_int_1, j)), vec2(_int_1) + max(vec2(i, gl_FragCoord.y > _float_0_0 ? _int_1 : j), vec2(_int_1)), v + vec2(_int_1, j)));
99e5c31af7Sopenharmony_ci#             vec4 v4 = clamp(v1, v2, v3);
100e5c31af7Sopenharmony_ci#
101e5c31af7Sopenharmony_ci#             // Only iteration i = 0, j = 0 increments res.
102e5c31af7Sopenharmony_ci#             res += min(v0, v4) * float[9](1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)[i * 3 + j];
103e5c31af7Sopenharmony_ci#         }
104e5c31af7Sopenharmony_ci#     }
105e5c31af7Sopenharmony_ci#
106e5c31af7Sopenharmony_ci#     // The loops above simplify to a line below by substituting i = 0 and j = 0, and manually simplifying the expressions.
107e5c31af7Sopenharmony_ci#     vec4 ref = texture(tex, vec2(_int_1, _int_1));
108e5c31af7Sopenharmony_ci#
109e5c31af7Sopenharmony_ci#     // Always true.
110e5c31af7Sopenharmony_ci#     if(ref == res)
111e5c31af7Sopenharmony_ci#     {
112e5c31af7Sopenharmony_ci#         _GLF_color = vec4(_int_1, _int_0, _int_0, _int_1);
113e5c31af7Sopenharmony_ci#     }
114e5c31af7Sopenharmony_ci#     else
115e5c31af7Sopenharmony_ci#     {
116e5c31af7Sopenharmony_ci#         _GLF_color = vec4(_int_0);
117e5c31af7Sopenharmony_ci#     }
118e5c31af7Sopenharmony_ci# }
119e5c31af7Sopenharmony_ciSHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
120e5c31af7Sopenharmony_ci; SPIR-V
121e5c31af7Sopenharmony_ci; Version: 1.0
122e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 10
123e5c31af7Sopenharmony_ci; Bound: 355
124e5c31af7Sopenharmony_ci; Schema: 0
125e5c31af7Sopenharmony_ci               OpCapability Shader
126e5c31af7Sopenharmony_ci          %1 = OpExtInstImport "GLSL.std.450"
127e5c31af7Sopenharmony_ci               OpMemoryModel Logical GLSL450
128e5c31af7Sopenharmony_ci               OpEntryPoint Fragment %4 "main" %12 %336
129e5c31af7Sopenharmony_ci               OpExecutionMode %4 OriginUpperLeft
130e5c31af7Sopenharmony_ci               OpSource ESSL 320
131e5c31af7Sopenharmony_ci               OpName %4 "main"
132e5c31af7Sopenharmony_ci               OpName %9 "v"
133e5c31af7Sopenharmony_ci               OpName %12 "gl_FragCoord"
134e5c31af7Sopenharmony_ci               OpName %17 "a"
135e5c31af7Sopenharmony_ci               OpName %21 "buf1"
136e5c31af7Sopenharmony_ci               OpMemberName %21 0 "_GLF_uniform_int_values"
137e5c31af7Sopenharmony_ci               OpName %23 ""
138e5c31af7Sopenharmony_ci               OpName %30 "res"
139e5c31af7Sopenharmony_ci               OpName %36 "i"
140e5c31af7Sopenharmony_ci               OpName %46 "j"
141e5c31af7Sopenharmony_ci               OpName %54 "v0"
142e5c31af7Sopenharmony_ci               OpName %58 "tex"
143e5c31af7Sopenharmony_ci               OpName %100 "v1"
144e5c31af7Sopenharmony_ci               OpName %111 "buf0"
145e5c31af7Sopenharmony_ci               OpMemberName %111 0 "_GLF_uniform_float_values"
146e5c31af7Sopenharmony_ci               OpName %113 ""
147e5c31af7Sopenharmony_ci               OpName %209 "v2"
148e5c31af7Sopenharmony_ci               OpName %233 "v3"
149e5c31af7Sopenharmony_ci               OpName %290 "v4"
150e5c31af7Sopenharmony_ci               OpName %308 "indexable"
151e5c31af7Sopenharmony_ci               OpName %318 "ref"
152e5c31af7Sopenharmony_ci               OpName %336 "_GLF_color"
153e5c31af7Sopenharmony_ci               OpDecorate %12 BuiltIn FragCoord
154e5c31af7Sopenharmony_ci               OpDecorate %20 ArrayStride 16
155e5c31af7Sopenharmony_ci               OpMemberDecorate %21 0 Offset 0
156e5c31af7Sopenharmony_ci               OpDecorate %21 Block
157e5c31af7Sopenharmony_ci               OpDecorate %23 DescriptorSet 0
158e5c31af7Sopenharmony_ci               OpDecorate %23 Binding 1
159e5c31af7Sopenharmony_ci               OpDecorate %58 RelaxedPrecision
160e5c31af7Sopenharmony_ci               OpDecorate %58 DescriptorSet 0
161e5c31af7Sopenharmony_ci               OpDecorate %58 Binding 2
162e5c31af7Sopenharmony_ci               OpDecorate %59 RelaxedPrecision
163e5c31af7Sopenharmony_ci               OpDecorate %62 RelaxedPrecision
164e5c31af7Sopenharmony_ci               OpDecorate %63 RelaxedPrecision
165e5c31af7Sopenharmony_ci               OpDecorate %66 RelaxedPrecision
166e5c31af7Sopenharmony_ci               OpDecorate %67 RelaxedPrecision
167e5c31af7Sopenharmony_ci               OpDecorate %69 RelaxedPrecision
168e5c31af7Sopenharmony_ci               OpDecorate %74 RelaxedPrecision
169e5c31af7Sopenharmony_ci               OpDecorate %75 RelaxedPrecision
170e5c31af7Sopenharmony_ci               OpDecorate %76 RelaxedPrecision
171e5c31af7Sopenharmony_ci               OpDecorate %77 RelaxedPrecision
172e5c31af7Sopenharmony_ci               OpDecorate %80 RelaxedPrecision
173e5c31af7Sopenharmony_ci               OpDecorate %81 RelaxedPrecision
174e5c31af7Sopenharmony_ci               OpDecorate %84 RelaxedPrecision
175e5c31af7Sopenharmony_ci               OpDecorate %92 RelaxedPrecision
176e5c31af7Sopenharmony_ci               OpDecorate %95 RelaxedPrecision
177e5c31af7Sopenharmony_ci               OpDecorate %96 RelaxedPrecision
178e5c31af7Sopenharmony_ci               OpDecorate %97 RelaxedPrecision
179e5c31af7Sopenharmony_ci               OpDecorate %98 RelaxedPrecision
180e5c31af7Sopenharmony_ci               OpDecorate %99 RelaxedPrecision
181e5c31af7Sopenharmony_ci               OpDecorate %101 RelaxedPrecision
182e5c31af7Sopenharmony_ci               OpDecorate %104 RelaxedPrecision
183e5c31af7Sopenharmony_ci               OpDecorate %105 RelaxedPrecision
184e5c31af7Sopenharmony_ci               OpDecorate %110 ArrayStride 16
185e5c31af7Sopenharmony_ci               OpMemberDecorate %111 0 Offset 0
186e5c31af7Sopenharmony_ci               OpDecorate %111 Block
187e5c31af7Sopenharmony_ci               OpDecorate %113 DescriptorSet 0
188e5c31af7Sopenharmony_ci               OpDecorate %113 Binding 0
189e5c31af7Sopenharmony_ci               OpDecorate %118 RelaxedPrecision
190e5c31af7Sopenharmony_ci               OpDecorate %122 RelaxedPrecision
191e5c31af7Sopenharmony_ci               OpDecorate %125 RelaxedPrecision
192e5c31af7Sopenharmony_ci               OpDecorate %126 RelaxedPrecision
193e5c31af7Sopenharmony_ci               OpDecorate %128 RelaxedPrecision
194e5c31af7Sopenharmony_ci               OpDecorate %130 RelaxedPrecision
195e5c31af7Sopenharmony_ci               OpDecorate %131 RelaxedPrecision
196e5c31af7Sopenharmony_ci               OpDecorate %132 RelaxedPrecision
197e5c31af7Sopenharmony_ci               OpDecorate %136 RelaxedPrecision
198e5c31af7Sopenharmony_ci               OpDecorate %137 RelaxedPrecision
199e5c31af7Sopenharmony_ci               OpDecorate %138 RelaxedPrecision
200e5c31af7Sopenharmony_ci               OpDecorate %141 RelaxedPrecision
201e5c31af7Sopenharmony_ci               OpDecorate %142 RelaxedPrecision
202e5c31af7Sopenharmony_ci               OpDecorate %143 RelaxedPrecision
203e5c31af7Sopenharmony_ci               OpDecorate %145 RelaxedPrecision
204e5c31af7Sopenharmony_ci               OpDecorate %147 RelaxedPrecision
205e5c31af7Sopenharmony_ci               OpDecorate %148 RelaxedPrecision
206e5c31af7Sopenharmony_ci               OpDecorate %150 RelaxedPrecision
207e5c31af7Sopenharmony_ci               OpDecorate %152 RelaxedPrecision
208e5c31af7Sopenharmony_ci               OpDecorate %153 RelaxedPrecision
209e5c31af7Sopenharmony_ci               OpDecorate %154 RelaxedPrecision
210e5c31af7Sopenharmony_ci               OpDecorate %155 RelaxedPrecision
211e5c31af7Sopenharmony_ci               OpDecorate %156 RelaxedPrecision
212e5c31af7Sopenharmony_ci               OpDecorate %159 RelaxedPrecision
213e5c31af7Sopenharmony_ci               OpDecorate %160 RelaxedPrecision
214e5c31af7Sopenharmony_ci               OpDecorate %162 RelaxedPrecision
215e5c31af7Sopenharmony_ci               OpDecorate %164 RelaxedPrecision
216e5c31af7Sopenharmony_ci               OpDecorate %165 RelaxedPrecision
217e5c31af7Sopenharmony_ci               OpDecorate %167 RelaxedPrecision
218e5c31af7Sopenharmony_ci               OpDecorate %170 RelaxedPrecision
219e5c31af7Sopenharmony_ci               OpDecorate %171 RelaxedPrecision
220e5c31af7Sopenharmony_ci               OpDecorate %172 RelaxedPrecision
221e5c31af7Sopenharmony_ci               OpDecorate %173 RelaxedPrecision
222e5c31af7Sopenharmony_ci               OpDecorate %176 RelaxedPrecision
223e5c31af7Sopenharmony_ci               OpDecorate %177 RelaxedPrecision
224e5c31af7Sopenharmony_ci               OpDecorate %180 RelaxedPrecision
225e5c31af7Sopenharmony_ci               OpDecorate %181 RelaxedPrecision
226e5c31af7Sopenharmony_ci               OpDecorate %184 RelaxedPrecision
227e5c31af7Sopenharmony_ci               OpDecorate %185 RelaxedPrecision
228e5c31af7Sopenharmony_ci               OpDecorate %187 RelaxedPrecision
229e5c31af7Sopenharmony_ci               OpDecorate %189 RelaxedPrecision
230e5c31af7Sopenharmony_ci               OpDecorate %190 RelaxedPrecision
231e5c31af7Sopenharmony_ci               OpDecorate %191 RelaxedPrecision
232e5c31af7Sopenharmony_ci               OpDecorate %194 RelaxedPrecision
233e5c31af7Sopenharmony_ci               OpDecorate %195 RelaxedPrecision
234e5c31af7Sopenharmony_ci               OpDecorate %200 RelaxedPrecision
235e5c31af7Sopenharmony_ci               OpDecorate %202 RelaxedPrecision
236e5c31af7Sopenharmony_ci               OpDecorate %203 RelaxedPrecision
237e5c31af7Sopenharmony_ci               OpDecorate %204 RelaxedPrecision
238e5c31af7Sopenharmony_ci               OpDecorate %205 RelaxedPrecision
239e5c31af7Sopenharmony_ci               OpDecorate %206 RelaxedPrecision
240e5c31af7Sopenharmony_ci               OpDecorate %207 RelaxedPrecision
241e5c31af7Sopenharmony_ci               OpDecorate %208 RelaxedPrecision
242e5c31af7Sopenharmony_ci               OpDecorate %210 RelaxedPrecision
243e5c31af7Sopenharmony_ci               OpDecorate %213 RelaxedPrecision
244e5c31af7Sopenharmony_ci               OpDecorate %214 RelaxedPrecision
245e5c31af7Sopenharmony_ci               OpDecorate %218 RelaxedPrecision
246e5c31af7Sopenharmony_ci               OpDecorate %220 RelaxedPrecision
247e5c31af7Sopenharmony_ci               OpDecorate %221 RelaxedPrecision
248e5c31af7Sopenharmony_ci               OpDecorate %222 RelaxedPrecision
249e5c31af7Sopenharmony_ci               OpDecorate %225 RelaxedPrecision
250e5c31af7Sopenharmony_ci               OpDecorate %226 RelaxedPrecision
251e5c31af7Sopenharmony_ci               OpDecorate %229 RelaxedPrecision
252e5c31af7Sopenharmony_ci               OpDecorate %230 RelaxedPrecision
253e5c31af7Sopenharmony_ci               OpDecorate %231 RelaxedPrecision
254e5c31af7Sopenharmony_ci               OpDecorate %232 RelaxedPrecision
255e5c31af7Sopenharmony_ci               OpDecorate %234 RelaxedPrecision
256e5c31af7Sopenharmony_ci               OpDecorate %289 RelaxedPrecision
257e5c31af7Sopenharmony_ci               OpDecorate %319 RelaxedPrecision
258e5c31af7Sopenharmony_ci               OpDecorate %322 RelaxedPrecision
259e5c31af7Sopenharmony_ci               OpDecorate %325 RelaxedPrecision
260e5c31af7Sopenharmony_ci               OpDecorate %326 RelaxedPrecision
261e5c31af7Sopenharmony_ci               OpDecorate %327 RelaxedPrecision
262e5c31af7Sopenharmony_ci               OpDecorate %336 Location 0
263e5c31af7Sopenharmony_ci          %2 = OpTypeVoid
264e5c31af7Sopenharmony_ci          %3 = OpTypeFunction %2
265e5c31af7Sopenharmony_ci          %6 = OpTypeFloat 32
266e5c31af7Sopenharmony_ci          %7 = OpTypeVector %6 2
267e5c31af7Sopenharmony_ci          %8 = OpTypePointer Function %7
268e5c31af7Sopenharmony_ci         %10 = OpTypeVector %6 4
269e5c31af7Sopenharmony_ci         %11 = OpTypePointer Input %10
270e5c31af7Sopenharmony_ci         %12 = OpVariable %11 Input
271e5c31af7Sopenharmony_ci         %15 = OpTypeInt 32 1
272e5c31af7Sopenharmony_ci         %16 = OpTypePointer Function %15
273e5c31af7Sopenharmony_ci         %18 = OpTypeInt 32 0
274e5c31af7Sopenharmony_ci         %19 = OpConstant %18 3
275e5c31af7Sopenharmony_ci         %20 = OpTypeArray %15 %19
276e5c31af7Sopenharmony_ci         %21 = OpTypeStruct %20
277e5c31af7Sopenharmony_ci         %22 = OpTypePointer Uniform %21
278e5c31af7Sopenharmony_ci         %23 = OpVariable %22 Uniform
279e5c31af7Sopenharmony_ci         %24 = OpConstant %15 0
280e5c31af7Sopenharmony_ci         %25 = OpConstant %15 2
281e5c31af7Sopenharmony_ci         %26 = OpTypePointer Uniform %15
282e5c31af7Sopenharmony_ci         %29 = OpTypePointer Function %10
283e5c31af7Sopenharmony_ci         %31 = OpConstant %15 1
284e5c31af7Sopenharmony_ci         %43 = OpConstant %15 3
285e5c31af7Sopenharmony_ci         %44 = OpTypeBool
286e5c31af7Sopenharmony_ci         %55 = OpTypeImage %6 2D 0 0 0 1 Unknown
287e5c31af7Sopenharmony_ci         %56 = OpTypeSampledImage %55
288e5c31af7Sopenharmony_ci         %57 = OpTypePointer UniformConstant %56
289e5c31af7Sopenharmony_ci         %58 = OpVariable %57 UniformConstant
290e5c31af7Sopenharmony_ci         %85 = OpConstant %18 1
291e5c31af7Sopenharmony_ci         %86 = OpTypePointer Function %6
292e5c31af7Sopenharmony_ci        %106 = OpConstant %18 0
293e5c31af7Sopenharmony_ci        %107 = OpTypePointer Input %6
294e5c31af7Sopenharmony_ci        %110 = OpTypeArray %6 %85
295e5c31af7Sopenharmony_ci        %111 = OpTypeStruct %110
296e5c31af7Sopenharmony_ci        %112 = OpTypePointer Uniform %111
297e5c31af7Sopenharmony_ci        %113 = OpVariable %112 Uniform
298e5c31af7Sopenharmony_ci        %114 = OpTypePointer Uniform %6
299e5c31af7Sopenharmony_ci        %298 = OpConstant %18 9
300e5c31af7Sopenharmony_ci        %299 = OpTypeArray %6 %298
301e5c31af7Sopenharmony_ci        %300 = OpConstant %6 1
302e5c31af7Sopenharmony_ci        %301 = OpConstant %6 0
303e5c31af7Sopenharmony_ci        %302 = OpConstantComposite %299 %300 %301 %301 %301 %301 %301 %301 %301 %301
304e5c31af7Sopenharmony_ci        %307 = OpTypePointer Function %299
305e5c31af7Sopenharmony_ci        %330 = OpTypeVector %44 4
306e5c31af7Sopenharmony_ci        %335 = OpTypePointer Output %10
307e5c31af7Sopenharmony_ci        %336 = OpVariable %335 Output
308e5c31af7Sopenharmony_ci          %4 = OpFunction %2 None %3
309e5c31af7Sopenharmony_ci          %5 = OpLabel
310e5c31af7Sopenharmony_ci          %9 = OpVariable %8 Function
311e5c31af7Sopenharmony_ci         %17 = OpVariable %16 Function
312e5c31af7Sopenharmony_ci         %30 = OpVariable %29 Function
313e5c31af7Sopenharmony_ci         %36 = OpVariable %16 Function
314e5c31af7Sopenharmony_ci         %46 = OpVariable %16 Function
315e5c31af7Sopenharmony_ci         %54 = OpVariable %29 Function
316e5c31af7Sopenharmony_ci        %100 = OpVariable %29 Function
317e5c31af7Sopenharmony_ci        %118 = OpVariable %8 Function
318e5c31af7Sopenharmony_ci        %209 = OpVariable %29 Function
319e5c31af7Sopenharmony_ci        %233 = OpVariable %29 Function
320e5c31af7Sopenharmony_ci        %264 = OpVariable %16 Function
321e5c31af7Sopenharmony_ci        %290 = OpVariable %29 Function
322e5c31af7Sopenharmony_ci        %308 = OpVariable %307 Function
323e5c31af7Sopenharmony_ci        %318 = OpVariable %29 Function
324e5c31af7Sopenharmony_ci         %13 = OpLoad %10 %12
325e5c31af7Sopenharmony_ci         %14 = OpVectorShuffle %7 %13 %13 0 1
326e5c31af7Sopenharmony_ci               OpStore %9 %14
327e5c31af7Sopenharmony_ci         %27 = OpAccessChain %26 %23 %24 %25
328e5c31af7Sopenharmony_ci         %28 = OpLoad %15 %27
329e5c31af7Sopenharmony_ci               OpStore %17 %28
330e5c31af7Sopenharmony_ci         %32 = OpAccessChain %26 %23 %24 %31
331e5c31af7Sopenharmony_ci         %33 = OpLoad %15 %32
332e5c31af7Sopenharmony_ci         %34 = OpConvertSToF %6 %33
333e5c31af7Sopenharmony_ci         %35 = OpCompositeConstruct %10 %34 %34 %34 %34
334e5c31af7Sopenharmony_ci               OpStore %30 %35
335e5c31af7Sopenharmony_ci               OpStore %36 %24
336e5c31af7Sopenharmony_ci               OpBranch %37
337e5c31af7Sopenharmony_ci         %37 = OpLabel
338e5c31af7Sopenharmony_ci               OpLoopMerge %39 %40 None
339e5c31af7Sopenharmony_ci               OpBranch %41
340e5c31af7Sopenharmony_ci         %41 = OpLabel
341e5c31af7Sopenharmony_ci         %42 = OpLoad %15 %36
342e5c31af7Sopenharmony_ci         %45 = OpSLessThan %44 %42 %43
343e5c31af7Sopenharmony_ci               OpBranchConditional %45 %38 %39
344e5c31af7Sopenharmony_ci         %38 = OpLabel
345e5c31af7Sopenharmony_ci               OpStore %46 %24
346e5c31af7Sopenharmony_ci               OpBranch %47
347e5c31af7Sopenharmony_ci         %47 = OpLabel
348e5c31af7Sopenharmony_ci               OpLoopMerge %49 %50 None
349e5c31af7Sopenharmony_ci               OpBranch %51
350e5c31af7Sopenharmony_ci         %51 = OpLabel
351e5c31af7Sopenharmony_ci         %52 = OpLoad %15 %46
352e5c31af7Sopenharmony_ci         %53 = OpSLessThan %44 %52 %43
353e5c31af7Sopenharmony_ci               OpBranchConditional %53 %48 %49
354e5c31af7Sopenharmony_ci         %48 = OpLabel
355e5c31af7Sopenharmony_ci         %59 = OpLoad %56 %58
356e5c31af7Sopenharmony_ci         %60 = OpAccessChain %26 %23 %24 %24
357e5c31af7Sopenharmony_ci         %61 = OpLoad %15 %60
358e5c31af7Sopenharmony_ci         %62 = OpConvertSToF %6 %61
359e5c31af7Sopenharmony_ci         %63 = OpCompositeConstruct %7 %62 %62
360e5c31af7Sopenharmony_ci         %64 = OpAccessChain %26 %23 %24 %24
361e5c31af7Sopenharmony_ci         %65 = OpLoad %15 %64
362e5c31af7Sopenharmony_ci         %66 = OpConvertSToF %6 %65
363e5c31af7Sopenharmony_ci         %67 = OpCompositeConstruct %7 %66 %66
364e5c31af7Sopenharmony_ci         %68 = OpLoad %15 %36
365e5c31af7Sopenharmony_ci         %69 = OpConvertSToF %6 %68
366e5c31af7Sopenharmony_ci         %70 = OpLoad %15 %46
367e5c31af7Sopenharmony_ci         %71 = OpAccessChain %26 %23 %24 %24
368e5c31af7Sopenharmony_ci         %72 = OpLoad %15 %71
369e5c31af7Sopenharmony_ci         %73 = OpISub %15 %70 %72
370e5c31af7Sopenharmony_ci         %74 = OpConvertSToF %6 %73
371e5c31af7Sopenharmony_ci         %75 = OpCompositeConstruct %7 %69 %74
372e5c31af7Sopenharmony_ci         %76 = OpExtInst %7 %1 FMax %67 %75
373e5c31af7Sopenharmony_ci         %77 = OpFAdd %7 %63 %76
374e5c31af7Sopenharmony_ci         %78 = OpAccessChain %26 %23 %24 %24
375e5c31af7Sopenharmony_ci         %79 = OpLoad %15 %78
376e5c31af7Sopenharmony_ci         %80 = OpConvertSToF %6 %79
377e5c31af7Sopenharmony_ci         %81 = OpCompositeConstruct %7 %80 %80
378e5c31af7Sopenharmony_ci         %82 = OpAccessChain %26 %23 %24 %24
379e5c31af7Sopenharmony_ci         %83 = OpLoad %15 %82
380e5c31af7Sopenharmony_ci         %84 = OpConvertSToF %6 %83
381e5c31af7Sopenharmony_ci         %87 = OpAccessChain %86 %9 %85
382e5c31af7Sopenharmony_ci         %88 = OpLoad %6 %87
383e5c31af7Sopenharmony_ci         %89 = OpLoad %15 %46
384e5c31af7Sopenharmony_ci         %90 = OpConvertSToF %6 %89
385e5c31af7Sopenharmony_ci         %91 = OpFAdd %6 %88 %90
386e5c31af7Sopenharmony_ci         %92 = OpCompositeConstruct %7 %84 %91
387e5c31af7Sopenharmony_ci         %93 = OpAccessChain %26 %23 %24 %24
388e5c31af7Sopenharmony_ci         %94 = OpLoad %15 %93
389e5c31af7Sopenharmony_ci         %95 = OpConvertSToF %6 %94
390e5c31af7Sopenharmony_ci         %96 = OpCompositeConstruct %7 %95 %95
391e5c31af7Sopenharmony_ci         %97 = OpFSub %7 %92 %96
392e5c31af7Sopenharmony_ci         %98 = OpExtInst %7 %1 FClamp %77 %81 %97
393e5c31af7Sopenharmony_ci         %99 = OpImageSampleImplicitLod %10 %59 %98
394e5c31af7Sopenharmony_ci               OpStore %54 %99
395e5c31af7Sopenharmony_ci        %101 = OpLoad %56 %58
396e5c31af7Sopenharmony_ci        %102 = OpAccessChain %26 %23 %24 %24
397e5c31af7Sopenharmony_ci        %103 = OpLoad %15 %102
398e5c31af7Sopenharmony_ci        %104 = OpConvertSToF %6 %103
399e5c31af7Sopenharmony_ci        %105 = OpCompositeConstruct %7 %104 %104
400e5c31af7Sopenharmony_ci        %108 = OpAccessChain %107 %12 %106
401e5c31af7Sopenharmony_ci        %109 = OpLoad %6 %108
402e5c31af7Sopenharmony_ci        %115 = OpAccessChain %114 %113 %24 %24
403e5c31af7Sopenharmony_ci        %116 = OpLoad %6 %115
404e5c31af7Sopenharmony_ci        %117 = OpFOrdGreaterThan %44 %109 %116
405e5c31af7Sopenharmony_ci               OpSelectionMerge %120 None
406e5c31af7Sopenharmony_ci               OpBranchConditional %117 %119 %133
407e5c31af7Sopenharmony_ci        %119 = OpLabel
408e5c31af7Sopenharmony_ci        %121 = OpLoad %15 %36
409e5c31af7Sopenharmony_ci        %122 = OpConvertSToF %6 %121
410e5c31af7Sopenharmony_ci        %123 = OpAccessChain %26 %23 %24 %24
411e5c31af7Sopenharmony_ci        %124 = OpLoad %15 %123
412e5c31af7Sopenharmony_ci        %125 = OpConvertSToF %6 %124
413e5c31af7Sopenharmony_ci        %126 = OpCompositeConstruct %7 %122 %125
414e5c31af7Sopenharmony_ci        %127 = OpLoad %15 %17
415e5c31af7Sopenharmony_ci        %128 = OpConvertSToF %6 %127
416e5c31af7Sopenharmony_ci        %129 = OpLoad %15 %46
417e5c31af7Sopenharmony_ci        %130 = OpConvertSToF %6 %129
418e5c31af7Sopenharmony_ci        %131 = OpCompositeConstruct %7 %128 %130
419e5c31af7Sopenharmony_ci        %132 = OpExtInst %7 %1 FMax %126 %131
420e5c31af7Sopenharmony_ci               OpStore %118 %132
421e5c31af7Sopenharmony_ci               OpBranch %120
422e5c31af7Sopenharmony_ci        %133 = OpLabel
423e5c31af7Sopenharmony_ci        %134 = OpAccessChain %26 %23 %24 %24
424e5c31af7Sopenharmony_ci        %135 = OpLoad %15 %134
425e5c31af7Sopenharmony_ci        %136 = OpConvertSToF %6 %135
426e5c31af7Sopenharmony_ci        %137 = OpCompositeConstruct %7 %136 %136
427e5c31af7Sopenharmony_ci               OpStore %118 %137
428e5c31af7Sopenharmony_ci               OpBranch %120
429e5c31af7Sopenharmony_ci        %120 = OpLabel
430e5c31af7Sopenharmony_ci        %138 = OpLoad %7 %118
431e5c31af7Sopenharmony_ci        %139 = OpAccessChain %26 %23 %24 %24
432e5c31af7Sopenharmony_ci        %140 = OpLoad %15 %139
433e5c31af7Sopenharmony_ci        %141 = OpConvertSToF %6 %140
434e5c31af7Sopenharmony_ci        %142 = OpCompositeConstruct %7 %141 %141
435e5c31af7Sopenharmony_ci        %143 = OpExtInst %7 %1 FMin %138 %142
436e5c31af7Sopenharmony_ci        %144 = OpLoad %15 %36
437e5c31af7Sopenharmony_ci        %145 = OpConvertSToF %6 %144
438e5c31af7Sopenharmony_ci        %146 = OpLoad %15 %46
439e5c31af7Sopenharmony_ci        %147 = OpConvertSToF %6 %146
440e5c31af7Sopenharmony_ci        %148 = OpCompositeConstruct %7 %145 %147
441e5c31af7Sopenharmony_ci        %149 = OpLoad %15 %17
442e5c31af7Sopenharmony_ci        %150 = OpConvertSToF %6 %149
443e5c31af7Sopenharmony_ci        %151 = OpLoad %15 %46
444e5c31af7Sopenharmony_ci        %152 = OpConvertSToF %6 %151
445e5c31af7Sopenharmony_ci        %153 = OpCompositeConstruct %7 %150 %152
446e5c31af7Sopenharmony_ci        %154 = OpExtInst %7 %1 FMax %148 %153
447e5c31af7Sopenharmony_ci        %155 = OpExtInst %7 %1 FMin %143 %154
448e5c31af7Sopenharmony_ci        %156 = OpFAdd %7 %105 %155
449e5c31af7Sopenharmony_ci        %157 = OpAccessChain %26 %23 %24 %24
450e5c31af7Sopenharmony_ci        %158 = OpLoad %15 %157
451e5c31af7Sopenharmony_ci        %159 = OpConvertSToF %6 %158
452e5c31af7Sopenharmony_ci        %160 = OpCompositeConstruct %7 %159 %159
453e5c31af7Sopenharmony_ci        %161 = OpLoad %15 %36
454e5c31af7Sopenharmony_ci        %162 = OpConvertSToF %6 %161
455e5c31af7Sopenharmony_ci        %163 = OpLoad %15 %46
456e5c31af7Sopenharmony_ci        %164 = OpConvertSToF %6 %163
457e5c31af7Sopenharmony_ci        %165 = OpCompositeConstruct %7 %162 %164
458e5c31af7Sopenharmony_ci        %166 = OpLoad %15 %36
459e5c31af7Sopenharmony_ci        %167 = OpConvertSToF %6 %166
460e5c31af7Sopenharmony_ci        %168 = OpAccessChain %26 %23 %24 %24
461e5c31af7Sopenharmony_ci        %169 = OpLoad %15 %168
462e5c31af7Sopenharmony_ci        %170 = OpConvertSToF %6 %169
463e5c31af7Sopenharmony_ci        %171 = OpCompositeConstruct %7 %167 %170
464e5c31af7Sopenharmony_ci        %172 = OpExtInst %7 %1 FMax %165 %171
465e5c31af7Sopenharmony_ci        %173 = OpFAdd %7 %160 %172
466e5c31af7Sopenharmony_ci        %174 = OpAccessChain %26 %23 %24 %24
467e5c31af7Sopenharmony_ci        %175 = OpLoad %15 %174
468e5c31af7Sopenharmony_ci        %176 = OpConvertSToF %6 %175
469e5c31af7Sopenharmony_ci        %177 = OpCompositeConstruct %7 %176 %176
470e5c31af7Sopenharmony_ci        %178 = OpAccessChain %26 %23 %24 %24
471e5c31af7Sopenharmony_ci        %179 = OpLoad %15 %178
472e5c31af7Sopenharmony_ci        %180 = OpConvertSToF %6 %179
473e5c31af7Sopenharmony_ci        %181 = OpCompositeConstruct %7 %180 %180
474e5c31af7Sopenharmony_ci        %182 = OpAccessChain %26 %23 %24 %24
475e5c31af7Sopenharmony_ci        %183 = OpLoad %15 %182
476e5c31af7Sopenharmony_ci        %184 = OpConvertSToF %6 %183
477e5c31af7Sopenharmony_ci        %185 = OpCompositeConstruct %7 %184 %184
478e5c31af7Sopenharmony_ci        %186 = OpLoad %15 %36
479e5c31af7Sopenharmony_ci        %187 = OpConvertSToF %6 %186
480e5c31af7Sopenharmony_ci        %188 = OpLoad %15 %46
481e5c31af7Sopenharmony_ci        %189 = OpConvertSToF %6 %188
482e5c31af7Sopenharmony_ci        %190 = OpCompositeConstruct %7 %187 %189
483e5c31af7Sopenharmony_ci        %191 = OpExtInst %7 %1 FMax %185 %190
484e5c31af7Sopenharmony_ci        %192 = OpAccessChain %26 %23 %24 %24
485e5c31af7Sopenharmony_ci        %193 = OpLoad %15 %192
486e5c31af7Sopenharmony_ci        %194 = OpConvertSToF %6 %193
487e5c31af7Sopenharmony_ci        %195 = OpCompositeConstruct %7 %194 %194
488e5c31af7Sopenharmony_ci        %196 = OpLoad %15 %36
489e5c31af7Sopenharmony_ci        %197 = OpAccessChain %26 %23 %24 %24
490e5c31af7Sopenharmony_ci        %198 = OpLoad %15 %197
491e5c31af7Sopenharmony_ci        %199 = OpISub %15 %196 %198
492e5c31af7Sopenharmony_ci        %200 = OpConvertSToF %6 %199
493e5c31af7Sopenharmony_ci        %201 = OpLoad %15 %46
494e5c31af7Sopenharmony_ci        %202 = OpConvertSToF %6 %201
495e5c31af7Sopenharmony_ci        %203 = OpCompositeConstruct %7 %200 %202
496e5c31af7Sopenharmony_ci        %204 = OpExtInst %7 %1 FMax %195 %203
497e5c31af7Sopenharmony_ci        %205 = OpExtInst %7 %1 FClamp %181 %191 %204
498e5c31af7Sopenharmony_ci        %206 = OpFAdd %7 %177 %205
499e5c31af7Sopenharmony_ci        %207 = OpExtInst %7 %1 FClamp %156 %173 %206
500e5c31af7Sopenharmony_ci        %208 = OpImageSampleImplicitLod %10 %101 %207
501e5c31af7Sopenharmony_ci               OpStore %100 %208
502e5c31af7Sopenharmony_ci        %210 = OpLoad %56 %58
503e5c31af7Sopenharmony_ci        %211 = OpAccessChain %26 %23 %24 %24
504e5c31af7Sopenharmony_ci        %212 = OpLoad %15 %211
505e5c31af7Sopenharmony_ci        %213 = OpConvertSToF %6 %212
506e5c31af7Sopenharmony_ci        %214 = OpCompositeConstruct %7 %213 %213
507e5c31af7Sopenharmony_ci        %215 = OpLoad %15 %36
508e5c31af7Sopenharmony_ci        %216 = OpLoad %15 %17
509e5c31af7Sopenharmony_ci        %217 = OpIMul %15 %215 %216
510e5c31af7Sopenharmony_ci        %218 = OpConvertSToF %6 %217
511e5c31af7Sopenharmony_ci        %219 = OpLoad %15 %46
512e5c31af7Sopenharmony_ci        %220 = OpConvertSToF %6 %219
513e5c31af7Sopenharmony_ci        %221 = OpCompositeConstruct %7 %218 %220
514e5c31af7Sopenharmony_ci        %222 = OpFAdd %7 %214 %221
515e5c31af7Sopenharmony_ci        %223 = OpAccessChain %26 %23 %24 %24
516e5c31af7Sopenharmony_ci        %224 = OpLoad %15 %223
517e5c31af7Sopenharmony_ci        %225 = OpConvertSToF %6 %224
518e5c31af7Sopenharmony_ci        %226 = OpCompositeConstruct %7 %225 %225
519e5c31af7Sopenharmony_ci        %227 = OpAccessChain %26 %23 %24 %24
520e5c31af7Sopenharmony_ci        %228 = OpLoad %15 %227
521e5c31af7Sopenharmony_ci        %229 = OpConvertSToF %6 %228
522e5c31af7Sopenharmony_ci        %230 = OpCompositeConstruct %7 %229 %229
523e5c31af7Sopenharmony_ci        %231 = OpExtInst %7 %1 FClamp %222 %226 %230
524e5c31af7Sopenharmony_ci        %232 = OpImageSampleImplicitLod %10 %210 %231
525e5c31af7Sopenharmony_ci               OpStore %209 %232
526e5c31af7Sopenharmony_ci        %234 = OpLoad %56 %58
527e5c31af7Sopenharmony_ci        %235 = OpAccessChain %26 %23 %24 %24
528e5c31af7Sopenharmony_ci        %236 = OpLoad %15 %235
529e5c31af7Sopenharmony_ci        %237 = OpConvertSToF %6 %236
530e5c31af7Sopenharmony_ci        %238 = OpCompositeConstruct %7 %237 %237
531e5c31af7Sopenharmony_ci        %239 = OpLoad %15 %36
532e5c31af7Sopenharmony_ci        %240 = OpConvertSToF %6 %239
533e5c31af7Sopenharmony_ci        %241 = OpAccessChain %26 %23 %24 %24
534e5c31af7Sopenharmony_ci        %242 = OpLoad %15 %241
535e5c31af7Sopenharmony_ci        %243 = OpConvertSToF %6 %242
536e5c31af7Sopenharmony_ci        %244 = OpCompositeConstruct %7 %240 %243
537e5c31af7Sopenharmony_ci        %245 = OpAccessChain %26 %23 %24 %24
538e5c31af7Sopenharmony_ci        %246 = OpLoad %15 %245
539e5c31af7Sopenharmony_ci        %247 = OpConvertSToF %6 %246
540e5c31af7Sopenharmony_ci        %248 = OpLoad %15 %46
541e5c31af7Sopenharmony_ci        %249 = OpConvertSToF %6 %248
542e5c31af7Sopenharmony_ci        %250 = OpCompositeConstruct %7 %247 %249
543e5c31af7Sopenharmony_ci        %251 = OpExtInst %7 %1 FMax %244 %250
544e5c31af7Sopenharmony_ci        %252 = OpFAdd %7 %238 %251
545e5c31af7Sopenharmony_ci        %253 = OpAccessChain %26 %23 %24 %24
546e5c31af7Sopenharmony_ci        %254 = OpLoad %15 %253
547e5c31af7Sopenharmony_ci        %255 = OpConvertSToF %6 %254
548e5c31af7Sopenharmony_ci        %256 = OpCompositeConstruct %7 %255 %255
549e5c31af7Sopenharmony_ci        %257 = OpLoad %15 %36
550e5c31af7Sopenharmony_ci        %258 = OpConvertSToF %6 %257
551e5c31af7Sopenharmony_ci        %259 = OpAccessChain %107 %12 %85
552e5c31af7Sopenharmony_ci        %260 = OpLoad %6 %259
553e5c31af7Sopenharmony_ci        %261 = OpAccessChain %114 %113 %24 %24
554e5c31af7Sopenharmony_ci        %262 = OpLoad %6 %261
555e5c31af7Sopenharmony_ci        %263 = OpFOrdGreaterThan %44 %260 %262
556e5c31af7Sopenharmony_ci               OpSelectionMerge %266 None
557e5c31af7Sopenharmony_ci               OpBranchConditional %263 %265 %269
558e5c31af7Sopenharmony_ci        %265 = OpLabel
559e5c31af7Sopenharmony_ci        %267 = OpAccessChain %26 %23 %24 %24
560e5c31af7Sopenharmony_ci        %268 = OpLoad %15 %267
561e5c31af7Sopenharmony_ci               OpStore %264 %268
562e5c31af7Sopenharmony_ci               OpBranch %266
563e5c31af7Sopenharmony_ci        %269 = OpLabel
564e5c31af7Sopenharmony_ci        %270 = OpLoad %15 %46
565e5c31af7Sopenharmony_ci               OpStore %264 %270
566e5c31af7Sopenharmony_ci               OpBranch %266
567e5c31af7Sopenharmony_ci        %266 = OpLabel
568e5c31af7Sopenharmony_ci        %271 = OpLoad %15 %264
569e5c31af7Sopenharmony_ci        %272 = OpConvertSToF %6 %271
570e5c31af7Sopenharmony_ci        %273 = OpCompositeConstruct %7 %258 %272
571e5c31af7Sopenharmony_ci        %274 = OpAccessChain %26 %23 %24 %24
572e5c31af7Sopenharmony_ci        %275 = OpLoad %15 %274
573e5c31af7Sopenharmony_ci        %276 = OpConvertSToF %6 %275
574e5c31af7Sopenharmony_ci        %277 = OpCompositeConstruct %7 %276 %276
575e5c31af7Sopenharmony_ci        %278 = OpExtInst %7 %1 FMax %273 %277
576e5c31af7Sopenharmony_ci        %279 = OpFAdd %7 %256 %278
577e5c31af7Sopenharmony_ci        %280 = OpLoad %7 %9
578e5c31af7Sopenharmony_ci        %281 = OpAccessChain %26 %23 %24 %24
579e5c31af7Sopenharmony_ci        %282 = OpLoad %15 %281
580e5c31af7Sopenharmony_ci        %283 = OpConvertSToF %6 %282
581e5c31af7Sopenharmony_ci        %284 = OpLoad %15 %46
582e5c31af7Sopenharmony_ci        %285 = OpConvertSToF %6 %284
583e5c31af7Sopenharmony_ci        %286 = OpCompositeConstruct %7 %283 %285
584e5c31af7Sopenharmony_ci        %287 = OpFAdd %7 %280 %286
585e5c31af7Sopenharmony_ci        %288 = OpExtInst %7 %1 FClamp %252 %279 %287
586e5c31af7Sopenharmony_ci        %289 = OpImageSampleImplicitLod %10 %234 %288
587e5c31af7Sopenharmony_ci               OpStore %233 %289
588e5c31af7Sopenharmony_ci        %291 = OpLoad %10 %100
589e5c31af7Sopenharmony_ci        %292 = OpLoad %10 %209
590e5c31af7Sopenharmony_ci        %293 = OpLoad %10 %233
591e5c31af7Sopenharmony_ci        %294 = OpExtInst %10 %1 FClamp %291 %292 %293
592e5c31af7Sopenharmony_ci               OpStore %290 %294
593e5c31af7Sopenharmony_ci        %295 = OpLoad %10 %54
594e5c31af7Sopenharmony_ci        %296 = OpLoad %10 %290
595e5c31af7Sopenharmony_ci        %297 = OpExtInst %10 %1 FMin %295 %296
596e5c31af7Sopenharmony_ci        %303 = OpLoad %15 %36
597e5c31af7Sopenharmony_ci        %304 = OpIMul %15 %303 %43
598e5c31af7Sopenharmony_ci        %305 = OpLoad %15 %46
599e5c31af7Sopenharmony_ci        %306 = OpIAdd %15 %304 %305
600e5c31af7Sopenharmony_ci               OpStore %308 %302
601e5c31af7Sopenharmony_ci        %309 = OpAccessChain %86 %308 %306
602e5c31af7Sopenharmony_ci        %310 = OpLoad %6 %309
603e5c31af7Sopenharmony_ci        %311 = OpVectorTimesScalar %10 %297 %310
604e5c31af7Sopenharmony_ci        %312 = OpLoad %10 %30
605e5c31af7Sopenharmony_ci        %313 = OpFAdd %10 %312 %311
606e5c31af7Sopenharmony_ci               OpStore %30 %313
607e5c31af7Sopenharmony_ci               OpBranch %50
608e5c31af7Sopenharmony_ci         %50 = OpLabel
609e5c31af7Sopenharmony_ci        %314 = OpLoad %15 %46
610e5c31af7Sopenharmony_ci        %315 = OpIAdd %15 %314 %31
611e5c31af7Sopenharmony_ci               OpStore %46 %315
612e5c31af7Sopenharmony_ci               OpBranch %47
613e5c31af7Sopenharmony_ci         %49 = OpLabel
614e5c31af7Sopenharmony_ci               OpBranch %40
615e5c31af7Sopenharmony_ci         %40 = OpLabel
616e5c31af7Sopenharmony_ci        %316 = OpLoad %15 %36
617e5c31af7Sopenharmony_ci        %317 = OpIAdd %15 %316 %31
618e5c31af7Sopenharmony_ci               OpStore %36 %317
619e5c31af7Sopenharmony_ci               OpBranch %37
620e5c31af7Sopenharmony_ci         %39 = OpLabel
621e5c31af7Sopenharmony_ci        %319 = OpLoad %56 %58
622e5c31af7Sopenharmony_ci        %320 = OpAccessChain %26 %23 %24 %24
623e5c31af7Sopenharmony_ci        %321 = OpLoad %15 %320
624e5c31af7Sopenharmony_ci        %322 = OpConvertSToF %6 %321
625e5c31af7Sopenharmony_ci        %323 = OpAccessChain %26 %23 %24 %24
626e5c31af7Sopenharmony_ci        %324 = OpLoad %15 %323
627e5c31af7Sopenharmony_ci        %325 = OpConvertSToF %6 %324
628e5c31af7Sopenharmony_ci        %326 = OpCompositeConstruct %7 %322 %325
629e5c31af7Sopenharmony_ci        %327 = OpImageSampleImplicitLod %10 %319 %326
630e5c31af7Sopenharmony_ci               OpStore %318 %327
631e5c31af7Sopenharmony_ci        %328 = OpLoad %10 %318
632e5c31af7Sopenharmony_ci        %329 = OpLoad %10 %30
633e5c31af7Sopenharmony_ci        %331 = OpFOrdEqual %330 %328 %329
634e5c31af7Sopenharmony_ci        %332 = OpAll %44 %331
635e5c31af7Sopenharmony_ci               OpSelectionMerge %334 None
636e5c31af7Sopenharmony_ci               OpBranchConditional %332 %333 %350
637e5c31af7Sopenharmony_ci        %333 = OpLabel
638e5c31af7Sopenharmony_ci        %337 = OpAccessChain %26 %23 %24 %24
639e5c31af7Sopenharmony_ci        %338 = OpLoad %15 %337
640e5c31af7Sopenharmony_ci        %339 = OpConvertSToF %6 %338
641e5c31af7Sopenharmony_ci        %340 = OpAccessChain %26 %23 %24 %31
642e5c31af7Sopenharmony_ci        %341 = OpLoad %15 %340
643e5c31af7Sopenharmony_ci        %342 = OpConvertSToF %6 %341
644e5c31af7Sopenharmony_ci        %343 = OpAccessChain %26 %23 %24 %31
645e5c31af7Sopenharmony_ci        %344 = OpLoad %15 %343
646e5c31af7Sopenharmony_ci        %345 = OpConvertSToF %6 %344
647e5c31af7Sopenharmony_ci        %346 = OpAccessChain %26 %23 %24 %24
648e5c31af7Sopenharmony_ci        %347 = OpLoad %15 %346
649e5c31af7Sopenharmony_ci        %348 = OpConvertSToF %6 %347
650e5c31af7Sopenharmony_ci        %349 = OpCompositeConstruct %10 %339 %342 %345 %348
651e5c31af7Sopenharmony_ci               OpStore %336 %349
652e5c31af7Sopenharmony_ci               OpBranch %334
653e5c31af7Sopenharmony_ci        %350 = OpLabel
654e5c31af7Sopenharmony_ci        %351 = OpAccessChain %26 %23 %24 %31
655e5c31af7Sopenharmony_ci        %352 = OpLoad %15 %351
656e5c31af7Sopenharmony_ci        %353 = OpConvertSToF %6 %352
657e5c31af7Sopenharmony_ci        %354 = OpCompositeConstruct %10 %353 %353 %353 %353
658e5c31af7Sopenharmony_ci               OpStore %336 %354
659e5c31af7Sopenharmony_ci               OpBranch %334
660e5c31af7Sopenharmony_ci        %334 = OpLabel
661e5c31af7Sopenharmony_ci               OpReturn
662e5c31af7Sopenharmony_ci               OpFunctionEnd
663e5c31af7Sopenharmony_ciEND
664e5c31af7Sopenharmony_ci
665e5c31af7Sopenharmony_ci# uniforms for variant
666e5c31af7Sopenharmony_ci
667e5c31af7Sopenharmony_ci# tex
668e5c31af7Sopenharmony_ciSAMPLER variant_tex
669e5c31af7Sopenharmony_ci
670e5c31af7Sopenharmony_ci# _GLF_uniform_int_values
671e5c31af7Sopenharmony_ciBUFFER variant__GLF_uniform_int_values DATA_TYPE int32[] STD140 DATA
672e5c31af7Sopenharmony_ci 1 0 256
673e5c31af7Sopenharmony_ciEND
674e5c31af7Sopenharmony_ci# _GLF_uniform_float_values
675e5c31af7Sopenharmony_ciBUFFER variant__GLF_uniform_float_values DATA_TYPE float[] STD140 DATA
676e5c31af7Sopenharmony_ci 0.0
677e5c31af7Sopenharmony_ciEND
678e5c31af7Sopenharmony_ci
679e5c31af7Sopenharmony_ciBUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM
680e5c31af7Sopenharmony_ci
681e5c31af7Sopenharmony_ciPIPELINE graphics variant_pipeline
682e5c31af7Sopenharmony_ci  ATTACH variant_vertex_shader
683e5c31af7Sopenharmony_ci  ATTACH variant_fragment_shader
684e5c31af7Sopenharmony_ci  FRAMEBUFFER_SIZE 32 32
685e5c31af7Sopenharmony_ci  BIND BUFFER variant_framebuffer AS color LOCATION 0
686e5c31af7Sopenharmony_ci  BIND BUFFER default_texture AS combined_image_sampler SAMPLER variant_tex DESCRIPTOR_SET 0 BINDING 2
687e5c31af7Sopenharmony_ci  BIND BUFFER variant__GLF_uniform_int_values AS uniform DESCRIPTOR_SET 0 BINDING 1
688e5c31af7Sopenharmony_ci  BIND BUFFER variant__GLF_uniform_float_values AS uniform DESCRIPTOR_SET 0 BINDING 0
689e5c31af7Sopenharmony_ciEND
690e5c31af7Sopenharmony_ciCLEAR_COLOR variant_pipeline 0 0 0 255
691e5c31af7Sopenharmony_ci
692e5c31af7Sopenharmony_ciCLEAR variant_pipeline
693e5c31af7Sopenharmony_ciRUN variant_pipeline DRAW_RECT POS 0 0 SIZE 32 32
694e5c31af7Sopenharmony_ci
695e5c31af7Sopenharmony_ciEXPECT variant_framebuffer IDX 0 0 SIZE 32 32 EQ_RGBA 255 0 0 255
696