1e5c31af7Sopenharmony_ci#!amber
2e5c31af7Sopenharmony_ci
3e5c31af7Sopenharmony_ci# Copyright 2019 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 bug found by GraphicsFuzz.
19e5c31af7Sopenharmony_ci
20e5c31af7Sopenharmony_ci# Short description: A fragment shader with a lot of control flow
21e5c31af7Sopenharmony_ci
22e5c31af7Sopenharmony_ci# The test passes because the fragment shader does not enter the first if statement, then writes
23e5c31af7Sopenharmony_ci# the color red.
24e5c31af7Sopenharmony_ci
25e5c31af7Sopenharmony_ciSHADER vertex variant_vertex_shader PASSTHROUGH
26e5c31af7Sopenharmony_ci
27e5c31af7Sopenharmony_ci# variant_fragment_shader is derived from the following GLSL:
28e5c31af7Sopenharmony_ci# #version 310 es
29e5c31af7Sopenharmony_ci# precision highp float;
30e5c31af7Sopenharmony_ci#
31e5c31af7Sopenharmony_ci# layout(set = 0, binding = 0) uniform buf0
32e5c31af7Sopenharmony_ci# {
33e5c31af7Sopenharmony_ci#     vec2 injectionSwitch;
34e5c31af7Sopenharmony_ci# };
35e5c31af7Sopenharmony_ci# layout(location = 0) out vec4 _GLF_color;
36e5c31af7Sopenharmony_ci#
37e5c31af7Sopenharmony_ci# vec3 drawShape(vec2 pos)
38e5c31af7Sopenharmony_ci# {
39e5c31af7Sopenharmony_ci#     bool c2;
40e5c31af7Sopenharmony_ci#     c2 = pos.x > 1.0;
41e5c31af7Sopenharmony_ci#     if (c2)
42e5c31af7Sopenharmony_ci#     {
43e5c31af7Sopenharmony_ci#         return vec3(1.0);
44e5c31af7Sopenharmony_ci#     }
45e5c31af7Sopenharmony_ci#     bool c3;
46e5c31af7Sopenharmony_ci#     c3 = pos.y < 1.0;
47e5c31af7Sopenharmony_ci#     if (c3)
48e5c31af7Sopenharmony_ci#     {
49e5c31af7Sopenharmony_ci#         return vec3(1.0);
50e5c31af7Sopenharmony_ci#     }
51e5c31af7Sopenharmony_ci#     bool c4;
52e5c31af7Sopenharmony_ci#     c4 = pos.y > 1.0;
53e5c31af7Sopenharmony_ci#     if (c4)
54e5c31af7Sopenharmony_ci#     {
55e5c31af7Sopenharmony_ci#         return vec3(1.0);
56e5c31af7Sopenharmony_ci#     }
57e5c31af7Sopenharmony_ci#     bool c5;
58e5c31af7Sopenharmony_ci#     c5 = pos.x < 1.0;
59e5c31af7Sopenharmony_ci#     if (c5)
60e5c31af7Sopenharmony_ci#     {
61e5c31af7Sopenharmony_ci#         return vec3(1.0);
62e5c31af7Sopenharmony_ci#     }
63e5c31af7Sopenharmony_ci#     bool c6;
64e5c31af7Sopenharmony_ci#     c6 = pos.x + 1.0 > 1.0;
65e5c31af7Sopenharmony_ci#     if (c6)
66e5c31af7Sopenharmony_ci#     {
67e5c31af7Sopenharmony_ci#         return vec3(1.0);
68e5c31af7Sopenharmony_ci#     }
69e5c31af7Sopenharmony_ci#     int GLF_live4_looplimiter5;
70e5c31af7Sopenharmony_ci#     for (
71e5c31af7Sopenharmony_ci#         int GLF_live4i = 0;
72e5c31af7Sopenharmony_ci#         GLF_live4i < 4;
73e5c31af7Sopenharmony_ci#         ++GLF_live4i)
74e5c31af7Sopenharmony_ci#     {
75e5c31af7Sopenharmony_ci#         if (GLF_live4_looplimiter5 >= 7)
76e5c31af7Sopenharmony_ci#         {
77e5c31af7Sopenharmony_ci#             break;
78e5c31af7Sopenharmony_ci#         }
79e5c31af7Sopenharmony_ci#         GLF_live4_looplimiter5++;
80e5c31af7Sopenharmony_ci#         mat4x2 GLF_live7m42;
81e5c31af7Sopenharmony_ci#         GLF_live7m42 = mat4x2(1.0);
82e5c31af7Sopenharmony_ci#         mat3 GLF_live7m33;
83e5c31af7Sopenharmony_ci#         GLF_live7m33 = mat3(1.0);
84e5c31af7Sopenharmony_ci#         int GLF_live7_looplimiter3;
85e5c31af7Sopenharmony_ci#         for (
86e5c31af7Sopenharmony_ci#             int GLF_live7cols = 2;
87e5c31af7Sopenharmony_ci#             GLF_live7cols < 4;
88e5c31af7Sopenharmony_ci#             ++GLF_live7cols)
89e5c31af7Sopenharmony_ci#         {
90e5c31af7Sopenharmony_ci#             if (GLF_live7_looplimiter3 >= 7)
91e5c31af7Sopenharmony_ci#             {
92e5c31af7Sopenharmony_ci#                 break;
93e5c31af7Sopenharmony_ci#             }
94e5c31af7Sopenharmony_ci#             GLF_live7_looplimiter3++;
95e5c31af7Sopenharmony_ci#             int GLF_live7_looplimiter2;
96e5c31af7Sopenharmony_ci#             for (
97e5c31af7Sopenharmony_ci#                 int GLF_live7rows = 2;
98e5c31af7Sopenharmony_ci#                 GLF_live7rows < 4;
99e5c31af7Sopenharmony_ci#                 ++GLF_live7rows)
100e5c31af7Sopenharmony_ci#             {
101e5c31af7Sopenharmony_ci#                 if (GLF_live7_looplimiter2 >= 7)
102e5c31af7Sopenharmony_ci#                 {
103e5c31af7Sopenharmony_ci#                     break;
104e5c31af7Sopenharmony_ci#                 }
105e5c31af7Sopenharmony_ci#                 GLF_live7_looplimiter2++;
106e5c31af7Sopenharmony_ci#                 int GLF_live7_looplimiter1;
107e5c31af7Sopenharmony_ci#                 GLF_live7_looplimiter1 = 0;
108e5c31af7Sopenharmony_ci#                 for (
109e5c31af7Sopenharmony_ci#                     int GLF_live7c = 0;
110e5c31af7Sopenharmony_ci#                     GLF_live7c < 3;
111e5c31af7Sopenharmony_ci#                     GLF_live7c++)
112e5c31af7Sopenharmony_ci#                 {
113e5c31af7Sopenharmony_ci#                     if (GLF_live7_looplimiter1 >= 7)
114e5c31af7Sopenharmony_ci#                     {
115e5c31af7Sopenharmony_ci#                         break;
116e5c31af7Sopenharmony_ci#                     }
117e5c31af7Sopenharmony_ci#                     GLF_live7_looplimiter1++;
118e5c31af7Sopenharmony_ci#                     int GLF_live7_looplimiter0;
119e5c31af7Sopenharmony_ci#                     for (
120e5c31af7Sopenharmony_ci#                         int GLF_live7r = 0;
121e5c31af7Sopenharmony_ci#                         GLF_live7r < 2;
122e5c31af7Sopenharmony_ci#                         ++GLF_live7r)
123e5c31af7Sopenharmony_ci#                     {
124e5c31af7Sopenharmony_ci#                         if (GLF_live7_looplimiter0 >= 7)
125e5c31af7Sopenharmony_ci#                         {
126e5c31af7Sopenharmony_ci#                             break;
127e5c31af7Sopenharmony_ci#                         }
128e5c31af7Sopenharmony_ci#                         GLF_live7_looplimiter0++;
129e5c31af7Sopenharmony_ci#                         GLF_live7m33[GLF_live7c >= 0 && GLF_live7c < 3 ? GLF_live7c : 0][GLF_live7r >= 0 && GLF_live7r < 3 ? GLF_live7r : 0] = 1.0;
130e5c31af7Sopenharmony_ci#                         if (0.0 > injectionSwitch.y)
131e5c31af7Sopenharmony_ci#                         {
132e5c31af7Sopenharmony_ci#                         }
133e5c31af7Sopenharmony_ci#                         else
134e5c31af7Sopenharmony_ci#                         {
135e5c31af7Sopenharmony_ci#                             GLF_live7m42[GLF_live7c >= 0 && GLF_live7c < 4 ? GLF_live7c : 0][GLF_live7r >= 0 && GLF_live7r < 2 ? GLF_live7r : 0] = 1.0;
136e5c31af7Sopenharmony_ci#                         }
137e5c31af7Sopenharmony_ci#                     }
138e5c31af7Sopenharmony_ci#                 }
139e5c31af7Sopenharmony_ci#             }
140e5c31af7Sopenharmony_ci#         }
141e5c31af7Sopenharmony_ci#         float GLF_live7sums[9];
142e5c31af7Sopenharmony_ci#         int GLF_live7sum_index;
143e5c31af7Sopenharmony_ci#         GLF_live7sum_index = 0;
144e5c31af7Sopenharmony_ci#         int GLF_live7_looplimiter7;
145e5c31af7Sopenharmony_ci#         GLF_live7_looplimiter7 = 0;
146e5c31af7Sopenharmony_ci#         for (
147e5c31af7Sopenharmony_ci#             int GLF_live7cols = 2;
148e5c31af7Sopenharmony_ci#             GLF_live7cols < 4;
149e5c31af7Sopenharmony_ci#             ++GLF_live7cols)
150e5c31af7Sopenharmony_ci#         {
151e5c31af7Sopenharmony_ci#             if (GLF_live7_looplimiter7 >= 7)
152e5c31af7Sopenharmony_ci#             {
153e5c31af7Sopenharmony_ci#                 break;
154e5c31af7Sopenharmony_ci#             }
155e5c31af7Sopenharmony_ci#             GLF_live7_looplimiter7++;
156e5c31af7Sopenharmony_ci#             int GLF_live7rows;
157e5c31af7Sopenharmony_ci#             GLF_live7rows = 2;
158e5c31af7Sopenharmony_ci#             GLF_live7sums[GLF_live7sum_index >= 0 && GLF_live7sum_index < 9 ? GLF_live7sum_index : 0] = 0.0;
159e5c31af7Sopenharmony_ci#             for (
160e5c31af7Sopenharmony_ci#                 int GLF_live7c = 0;
161e5c31af7Sopenharmony_ci#                 GLF_live7c < 1;
162e5c31af7Sopenharmony_ci#                 GLF_live7c++)
163e5c31af7Sopenharmony_ci#             {
164e5c31af7Sopenharmony_ci#                 for (
165e5c31af7Sopenharmony_ci#                     int GLF_live7r = 0;
166e5c31af7Sopenharmony_ci#                     GLF_live7r < GLF_live7rows;
167e5c31af7Sopenharmony_ci#                     GLF_live7r++)
168e5c31af7Sopenharmony_ci#                 {
169e5c31af7Sopenharmony_ci#                     GLF_live7sums[GLF_live7sum_index >= 0 && GLF_live7sum_index < 9 ? GLF_live7sum_index : 0] += transpose(GLF_live7m33)[GLF_live7c < 3 ? 1 : int(injectionSwitch.x)][GLF_live7r < 3 ? 1 : 0];
170e5c31af7Sopenharmony_ci#                     GLF_live7sums[GLF_live7sum_index >= 0 && GLF_live7sum_index < 9 ? GLF_live7sum_index : 0] += GLF_live7m42[1][GLF_live7r];
171e5c31af7Sopenharmony_ci#                 }
172e5c31af7Sopenharmony_ci#             }
173e5c31af7Sopenharmony_ci#             GLF_live7sum_index++;
174e5c31af7Sopenharmony_ci#         }
175e5c31af7Sopenharmony_ci#     }
176e5c31af7Sopenharmony_ci#     return vec3(1.0);
177e5c31af7Sopenharmony_ci# }
178e5c31af7Sopenharmony_ci# void main()
179e5c31af7Sopenharmony_ci# {
180e5c31af7Sopenharmony_ci#     if (injectionSwitch.x >= 2.0) // always false
181e5c31af7Sopenharmony_ci#     {
182e5c31af7Sopenharmony_ci#         vec2 position = gl_FragCoord.xy;
183e5c31af7Sopenharmony_ci#         drawShape(position);
184e5c31af7Sopenharmony_ci#         drawShape(position);
185e5c31af7Sopenharmony_ci#
186e5c31af7Sopenharmony_ci#         for (
187e5c31af7Sopenharmony_ci#             int i = 25;
188e5c31af7Sopenharmony_ci#             i > 0;
189e5c31af7Sopenharmony_ci#             --i)
190e5c31af7Sopenharmony_ci#         {
191e5c31af7Sopenharmony_ci#             drawShape(position);
192e5c31af7Sopenharmony_ci#         }
193e5c31af7Sopenharmony_ci#     }
194e5c31af7Sopenharmony_ci#     _GLF_color = vec4(1.0, 0.0, 0.0, 1.0);
195e5c31af7Sopenharmony_ci# }
196e5c31af7Sopenharmony_ciSHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
197e5c31af7Sopenharmony_ci; SPIR-V
198e5c31af7Sopenharmony_ci; Version: 1.0
199e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 7
200e5c31af7Sopenharmony_ci; Bound: 352
201e5c31af7Sopenharmony_ci; Schema: 0
202e5c31af7Sopenharmony_ci               OpCapability Shader
203e5c31af7Sopenharmony_ci          %1 = OpExtInstImport "GLSL.std.450"
204e5c31af7Sopenharmony_ci               OpMemoryModel Logical GLSL450
205e5c31af7Sopenharmony_ci               OpEntryPoint Fragment %4 "main" %326 %350
206e5c31af7Sopenharmony_ci               OpExecutionMode %4 OriginUpperLeft
207e5c31af7Sopenharmony_ci               OpSource ESSL 310
208e5c31af7Sopenharmony_ci               OpName %4 "main"
209e5c31af7Sopenharmony_ci               OpName %12 "drawShape(vf2;"
210e5c31af7Sopenharmony_ci               OpName %11 "pos"
211e5c31af7Sopenharmony_ci               OpName %16 "c2"
212e5c31af7Sopenharmony_ci               OpName %29 "c3"
213e5c31af7Sopenharmony_ci               OpName %38 "c4"
214e5c31af7Sopenharmony_ci               OpName %46 "c5"
215e5c31af7Sopenharmony_ci               OpName %54 "c6"
216e5c31af7Sopenharmony_ci               OpName %65 "GLF_live4i"
217e5c31af7Sopenharmony_ci               OpName %75 "GLF_live4_looplimiter5"
218e5c31af7Sopenharmony_ci               OpName %87 "GLF_live7m42"
219e5c31af7Sopenharmony_ci               OpName %95 "GLF_live7m33"
220e5c31af7Sopenharmony_ci               OpName %100 "GLF_live7cols"
221e5c31af7Sopenharmony_ci               OpName %109 "GLF_live7_looplimiter3"
222e5c31af7Sopenharmony_ci               OpName %117 "GLF_live7rows"
223e5c31af7Sopenharmony_ci               OpName %125 "GLF_live7_looplimiter2"
224e5c31af7Sopenharmony_ci               OpName %133 "GLF_live7_looplimiter1"
225e5c31af7Sopenharmony_ci               OpName %134 "GLF_live7c"
226e5c31af7Sopenharmony_ci               OpName %150 "GLF_live7r"
227e5c31af7Sopenharmony_ci               OpName %158 "GLF_live7_looplimiter0"
228e5c31af7Sopenharmony_ci               OpName %181 "buf0"
229e5c31af7Sopenharmony_ci               OpMemberName %181 0 "injectionSwitch"
230e5c31af7Sopenharmony_ci               OpName %183 ""
231e5c31af7Sopenharmony_ci               OpName %214 "GLF_live7sum_index"
232e5c31af7Sopenharmony_ci               OpName %215 "GLF_live7_looplimiter7"
233e5c31af7Sopenharmony_ci               OpName %216 "GLF_live7cols"
234e5c31af7Sopenharmony_ci               OpName %231 "GLF_live7rows"
235e5c31af7Sopenharmony_ci               OpName %235 "GLF_live7sums"
236e5c31af7Sopenharmony_ci               OpName %245 "GLF_live7c"
237e5c31af7Sopenharmony_ci               OpName %253 "GLF_live7r"
238e5c31af7Sopenharmony_ci               OpName %284 "indexable"
239e5c31af7Sopenharmony_ci               OpName %323 "position"
240e5c31af7Sopenharmony_ci               OpName %326 "gl_FragCoord"
241e5c31af7Sopenharmony_ci               OpName %329 "param"
242e5c31af7Sopenharmony_ci               OpName %332 "param"
243e5c31af7Sopenharmony_ci               OpName %335 "i"
244e5c31af7Sopenharmony_ci               OpName %344 "param"
245e5c31af7Sopenharmony_ci               OpName %350 "_GLF_color"
246e5c31af7Sopenharmony_ci               OpDecorate %65 RelaxedPrecision
247e5c31af7Sopenharmony_ci               OpDecorate %72 RelaxedPrecision
248e5c31af7Sopenharmony_ci               OpDecorate %75 RelaxedPrecision
249e5c31af7Sopenharmony_ci               OpDecorate %76 RelaxedPrecision
250e5c31af7Sopenharmony_ci               OpDecorate %82 RelaxedPrecision
251e5c31af7Sopenharmony_ci               OpDecorate %84 RelaxedPrecision
252e5c31af7Sopenharmony_ci               OpDecorate %100 RelaxedPrecision
253e5c31af7Sopenharmony_ci               OpDecorate %107 RelaxedPrecision
254e5c31af7Sopenharmony_ci               OpDecorate %109 RelaxedPrecision
255e5c31af7Sopenharmony_ci               OpDecorate %110 RelaxedPrecision
256e5c31af7Sopenharmony_ci               OpDecorate %115 RelaxedPrecision
257e5c31af7Sopenharmony_ci               OpDecorate %116 RelaxedPrecision
258e5c31af7Sopenharmony_ci               OpDecorate %117 RelaxedPrecision
259e5c31af7Sopenharmony_ci               OpDecorate %123 RelaxedPrecision
260e5c31af7Sopenharmony_ci               OpDecorate %125 RelaxedPrecision
261e5c31af7Sopenharmony_ci               OpDecorate %126 RelaxedPrecision
262e5c31af7Sopenharmony_ci               OpDecorate %131 RelaxedPrecision
263e5c31af7Sopenharmony_ci               OpDecorate %132 RelaxedPrecision
264e5c31af7Sopenharmony_ci               OpDecorate %133 RelaxedPrecision
265e5c31af7Sopenharmony_ci               OpDecorate %134 RelaxedPrecision
266e5c31af7Sopenharmony_ci               OpDecorate %140 RelaxedPrecision
267e5c31af7Sopenharmony_ci               OpDecorate %143 RelaxedPrecision
268e5c31af7Sopenharmony_ci               OpDecorate %148 RelaxedPrecision
269e5c31af7Sopenharmony_ci               OpDecorate %149 RelaxedPrecision
270e5c31af7Sopenharmony_ci               OpDecorate %150 RelaxedPrecision
271e5c31af7Sopenharmony_ci               OpDecorate %156 RelaxedPrecision
272e5c31af7Sopenharmony_ci               OpDecorate %158 RelaxedPrecision
273e5c31af7Sopenharmony_ci               OpDecorate %159 RelaxedPrecision
274e5c31af7Sopenharmony_ci               OpDecorate %164 RelaxedPrecision
275e5c31af7Sopenharmony_ci               OpDecorate %165 RelaxedPrecision
276e5c31af7Sopenharmony_ci               OpDecorate %166 RelaxedPrecision
277e5c31af7Sopenharmony_ci               OpDecorate %168 RelaxedPrecision
278e5c31af7Sopenharmony_ci               OpDecorate %171 RelaxedPrecision
279e5c31af7Sopenharmony_ci               OpDecorate %173 RelaxedPrecision
280e5c31af7Sopenharmony_ci               OpDecorate %175 RelaxedPrecision
281e5c31af7Sopenharmony_ci               OpDecorate %178 RelaxedPrecision
282e5c31af7Sopenharmony_ci               OpMemberDecorate %181 0 Offset 0
283e5c31af7Sopenharmony_ci               OpDecorate %181 Block
284e5c31af7Sopenharmony_ci               OpDecorate %183 DescriptorSet 0
285e5c31af7Sopenharmony_ci               OpDecorate %183 Binding 0
286e5c31af7Sopenharmony_ci               OpDecorate %191 RelaxedPrecision
287e5c31af7Sopenharmony_ci               OpDecorate %193 RelaxedPrecision
288e5c31af7Sopenharmony_ci               OpDecorate %196 RelaxedPrecision
289e5c31af7Sopenharmony_ci               OpDecorate %198 RelaxedPrecision
290e5c31af7Sopenharmony_ci               OpDecorate %200 RelaxedPrecision
291e5c31af7Sopenharmony_ci               OpDecorate %203 RelaxedPrecision
292e5c31af7Sopenharmony_ci               OpDecorate %206 RelaxedPrecision
293e5c31af7Sopenharmony_ci               OpDecorate %207 RelaxedPrecision
294e5c31af7Sopenharmony_ci               OpDecorate %208 RelaxedPrecision
295e5c31af7Sopenharmony_ci               OpDecorate %209 RelaxedPrecision
296e5c31af7Sopenharmony_ci               OpDecorate %210 RelaxedPrecision
297e5c31af7Sopenharmony_ci               OpDecorate %211 RelaxedPrecision
298e5c31af7Sopenharmony_ci               OpDecorate %212 RelaxedPrecision
299e5c31af7Sopenharmony_ci               OpDecorate %213 RelaxedPrecision
300e5c31af7Sopenharmony_ci               OpDecorate %214 RelaxedPrecision
301e5c31af7Sopenharmony_ci               OpDecorate %215 RelaxedPrecision
302e5c31af7Sopenharmony_ci               OpDecorate %216 RelaxedPrecision
303e5c31af7Sopenharmony_ci               OpDecorate %222 RelaxedPrecision
304e5c31af7Sopenharmony_ci               OpDecorate %224 RelaxedPrecision
305e5c31af7Sopenharmony_ci               OpDecorate %229 RelaxedPrecision
306e5c31af7Sopenharmony_ci               OpDecorate %230 RelaxedPrecision
307e5c31af7Sopenharmony_ci               OpDecorate %231 RelaxedPrecision
308e5c31af7Sopenharmony_ci               OpDecorate %236 RelaxedPrecision
309e5c31af7Sopenharmony_ci               OpDecorate %238 RelaxedPrecision
310e5c31af7Sopenharmony_ci               OpDecorate %242 RelaxedPrecision
311e5c31af7Sopenharmony_ci               OpDecorate %245 RelaxedPrecision
312e5c31af7Sopenharmony_ci               OpDecorate %251 RelaxedPrecision
313e5c31af7Sopenharmony_ci               OpDecorate %253 RelaxedPrecision
314e5c31af7Sopenharmony_ci               OpDecorate %259 RelaxedPrecision
315e5c31af7Sopenharmony_ci               OpDecorate %260 RelaxedPrecision
316e5c31af7Sopenharmony_ci               OpDecorate %262 RelaxedPrecision
317e5c31af7Sopenharmony_ci               OpDecorate %264 RelaxedPrecision
318e5c31af7Sopenharmony_ci               OpDecorate %267 RelaxedPrecision
319e5c31af7Sopenharmony_ci               OpDecorate %271 RelaxedPrecision
320e5c31af7Sopenharmony_ci               OpDecorate %281 RelaxedPrecision
321e5c31af7Sopenharmony_ci               OpDecorate %291 RelaxedPrecision
322e5c31af7Sopenharmony_ci               OpDecorate %293 RelaxedPrecision
323e5c31af7Sopenharmony_ci               OpDecorate %296 RelaxedPrecision
324e5c31af7Sopenharmony_ci               OpDecorate %298 RelaxedPrecision
325e5c31af7Sopenharmony_ci               OpDecorate %305 RelaxedPrecision
326e5c31af7Sopenharmony_ci               OpDecorate %306 RelaxedPrecision
327e5c31af7Sopenharmony_ci               OpDecorate %307 RelaxedPrecision
328e5c31af7Sopenharmony_ci               OpDecorate %308 RelaxedPrecision
329e5c31af7Sopenharmony_ci               OpDecorate %309 RelaxedPrecision
330e5c31af7Sopenharmony_ci               OpDecorate %310 RelaxedPrecision
331e5c31af7Sopenharmony_ci               OpDecorate %311 RelaxedPrecision
332e5c31af7Sopenharmony_ci               OpDecorate %312 RelaxedPrecision
333e5c31af7Sopenharmony_ci               OpDecorate %313 RelaxedPrecision
334e5c31af7Sopenharmony_ci               OpDecorate %314 RelaxedPrecision
335e5c31af7Sopenharmony_ci               OpDecorate %326 BuiltIn FragCoord
336e5c31af7Sopenharmony_ci               OpDecorate %335 RelaxedPrecision
337e5c31af7Sopenharmony_ci               OpDecorate %342 RelaxedPrecision
338e5c31af7Sopenharmony_ci               OpDecorate %347 RelaxedPrecision
339e5c31af7Sopenharmony_ci               OpDecorate %348 RelaxedPrecision
340e5c31af7Sopenharmony_ci               OpDecorate %350 Location 0
341e5c31af7Sopenharmony_ci          %2 = OpTypeVoid
342e5c31af7Sopenharmony_ci          %3 = OpTypeFunction %2
343e5c31af7Sopenharmony_ci          %6 = OpTypeFloat 32
344e5c31af7Sopenharmony_ci          %7 = OpTypeVector %6 2
345e5c31af7Sopenharmony_ci          %8 = OpTypePointer Function %7
346e5c31af7Sopenharmony_ci          %9 = OpTypeVector %6 3
347e5c31af7Sopenharmony_ci         %10 = OpTypeFunction %9 %8
348e5c31af7Sopenharmony_ci         %14 = OpTypeBool
349e5c31af7Sopenharmony_ci         %15 = OpTypePointer Function %14
350e5c31af7Sopenharmony_ci         %17 = OpTypeInt 32 0
351e5c31af7Sopenharmony_ci         %18 = OpConstant %17 0
352e5c31af7Sopenharmony_ci         %19 = OpTypePointer Function %6
353e5c31af7Sopenharmony_ci         %22 = OpConstant %6 1
354e5c31af7Sopenharmony_ci         %27 = OpConstantComposite %9 %22 %22 %22
355e5c31af7Sopenharmony_ci         %30 = OpConstant %17 1
356e5c31af7Sopenharmony_ci         %63 = OpTypeInt 32 1
357e5c31af7Sopenharmony_ci         %64 = OpTypePointer Function %63
358e5c31af7Sopenharmony_ci         %66 = OpConstant %63 0
359e5c31af7Sopenharmony_ci         %73 = OpConstant %63 4
360e5c31af7Sopenharmony_ci         %77 = OpConstant %63 7
361e5c31af7Sopenharmony_ci         %83 = OpConstant %63 1
362e5c31af7Sopenharmony_ci         %85 = OpTypeMatrix %7 4
363e5c31af7Sopenharmony_ci         %86 = OpTypePointer Function %85
364e5c31af7Sopenharmony_ci         %88 = OpConstant %6 0
365e5c31af7Sopenharmony_ci         %89 = OpConstantComposite %7 %22 %88
366e5c31af7Sopenharmony_ci         %90 = OpConstantComposite %7 %88 %22
367e5c31af7Sopenharmony_ci         %91 = OpConstantComposite %7 %88 %88
368e5c31af7Sopenharmony_ci         %92 = OpConstantComposite %85 %89 %90 %91 %89
369e5c31af7Sopenharmony_ci         %93 = OpTypeMatrix %9 3
370e5c31af7Sopenharmony_ci         %94 = OpTypePointer Function %93
371e5c31af7Sopenharmony_ci         %96 = OpConstantComposite %9 %22 %88 %88
372e5c31af7Sopenharmony_ci         %97 = OpConstantComposite %9 %88 %22 %88
373e5c31af7Sopenharmony_ci         %98 = OpConstantComposite %9 %88 %88 %22
374e5c31af7Sopenharmony_ci         %99 = OpConstantComposite %93 %96 %97 %98
375e5c31af7Sopenharmony_ci        %101 = OpConstant %63 2
376e5c31af7Sopenharmony_ci        %141 = OpConstant %63 3
377e5c31af7Sopenharmony_ci        %181 = OpTypeStruct %7
378e5c31af7Sopenharmony_ci        %182 = OpTypePointer Uniform %181
379e5c31af7Sopenharmony_ci        %183 = OpVariable %182 Uniform
380e5c31af7Sopenharmony_ci        %184 = OpTypePointer Uniform %6
381e5c31af7Sopenharmony_ci        %232 = OpConstant %17 9
382e5c31af7Sopenharmony_ci        %233 = OpTypeArray %6 %232
383e5c31af7Sopenharmony_ci        %234 = OpTypePointer Function %233
384e5c31af7Sopenharmony_ci        %239 = OpConstant %63 9
385e5c31af7Sopenharmony_ci        %319 = OpConstant %6 2
386e5c31af7Sopenharmony_ci        %324 = OpTypeVector %6 4
387e5c31af7Sopenharmony_ci        %325 = OpTypePointer Input %324
388e5c31af7Sopenharmony_ci        %326 = OpVariable %325 Input
389e5c31af7Sopenharmony_ci        %336 = OpConstant %63 25
390e5c31af7Sopenharmony_ci        %349 = OpTypePointer Output %324
391e5c31af7Sopenharmony_ci        %350 = OpVariable %349 Output
392e5c31af7Sopenharmony_ci        %351 = OpConstantComposite %324 %22 %88 %88 %22
393e5c31af7Sopenharmony_ci          %4 = OpFunction %2 None %3
394e5c31af7Sopenharmony_ci          %5 = OpLabel
395e5c31af7Sopenharmony_ci        %323 = OpVariable %8 Function
396e5c31af7Sopenharmony_ci        %329 = OpVariable %8 Function
397e5c31af7Sopenharmony_ci        %332 = OpVariable %8 Function
398e5c31af7Sopenharmony_ci        %335 = OpVariable %64 Function
399e5c31af7Sopenharmony_ci        %344 = OpVariable %8 Function
400e5c31af7Sopenharmony_ci        %317 = OpAccessChain %184 %183 %66 %18
401e5c31af7Sopenharmony_ci        %318 = OpLoad %6 %317
402e5c31af7Sopenharmony_ci        %320 = OpFOrdGreaterThanEqual %14 %318 %319
403e5c31af7Sopenharmony_ci               OpSelectionMerge %322 None
404e5c31af7Sopenharmony_ci               OpBranchConditional %320 %321 %322
405e5c31af7Sopenharmony_ci        %321 = OpLabel
406e5c31af7Sopenharmony_ci        %327 = OpLoad %324 %326
407e5c31af7Sopenharmony_ci        %328 = OpVectorShuffle %7 %327 %327 0 1
408e5c31af7Sopenharmony_ci               OpStore %323 %328
409e5c31af7Sopenharmony_ci        %330 = OpLoad %7 %323
410e5c31af7Sopenharmony_ci               OpStore %329 %330
411e5c31af7Sopenharmony_ci        %331 = OpFunctionCall %9 %12 %329
412e5c31af7Sopenharmony_ci        %333 = OpLoad %7 %323
413e5c31af7Sopenharmony_ci               OpStore %332 %333
414e5c31af7Sopenharmony_ci        %334 = OpFunctionCall %9 %12 %332
415e5c31af7Sopenharmony_ci               OpStore %335 %336
416e5c31af7Sopenharmony_ci               OpBranch %337
417e5c31af7Sopenharmony_ci        %337 = OpLabel
418e5c31af7Sopenharmony_ci               OpLoopMerge %339 %340 None
419e5c31af7Sopenharmony_ci               OpBranch %341
420e5c31af7Sopenharmony_ci        %341 = OpLabel
421e5c31af7Sopenharmony_ci        %342 = OpLoad %63 %335
422e5c31af7Sopenharmony_ci        %343 = OpSGreaterThan %14 %342 %66
423e5c31af7Sopenharmony_ci               OpBranchConditional %343 %338 %339
424e5c31af7Sopenharmony_ci        %338 = OpLabel
425e5c31af7Sopenharmony_ci        %345 = OpLoad %7 %323
426e5c31af7Sopenharmony_ci               OpStore %344 %345
427e5c31af7Sopenharmony_ci        %346 = OpFunctionCall %9 %12 %344
428e5c31af7Sopenharmony_ci               OpBranch %340
429e5c31af7Sopenharmony_ci        %340 = OpLabel
430e5c31af7Sopenharmony_ci        %347 = OpLoad %63 %335
431e5c31af7Sopenharmony_ci        %348 = OpISub %63 %347 %83
432e5c31af7Sopenharmony_ci               OpStore %335 %348
433e5c31af7Sopenharmony_ci               OpBranch %337
434e5c31af7Sopenharmony_ci        %339 = OpLabel
435e5c31af7Sopenharmony_ci               OpBranch %322
436e5c31af7Sopenharmony_ci        %322 = OpLabel
437e5c31af7Sopenharmony_ci               OpStore %350 %351
438e5c31af7Sopenharmony_ci               OpReturn
439e5c31af7Sopenharmony_ci               OpFunctionEnd
440e5c31af7Sopenharmony_ci         %12 = OpFunction %9 None %10
441e5c31af7Sopenharmony_ci         %11 = OpFunctionParameter %8
442e5c31af7Sopenharmony_ci         %13 = OpLabel
443e5c31af7Sopenharmony_ci         %16 = OpVariable %15 Function
444e5c31af7Sopenharmony_ci         %29 = OpVariable %15 Function
445e5c31af7Sopenharmony_ci         %38 = OpVariable %15 Function
446e5c31af7Sopenharmony_ci         %46 = OpVariable %15 Function
447e5c31af7Sopenharmony_ci         %54 = OpVariable %15 Function
448e5c31af7Sopenharmony_ci         %65 = OpVariable %64 Function
449e5c31af7Sopenharmony_ci         %75 = OpVariable %64 Function
450e5c31af7Sopenharmony_ci         %87 = OpVariable %86 Function
451e5c31af7Sopenharmony_ci         %95 = OpVariable %94 Function
452e5c31af7Sopenharmony_ci        %100 = OpVariable %64 Function
453e5c31af7Sopenharmony_ci        %109 = OpVariable %64 Function
454e5c31af7Sopenharmony_ci        %117 = OpVariable %64 Function
455e5c31af7Sopenharmony_ci        %125 = OpVariable %64 Function
456e5c31af7Sopenharmony_ci        %133 = OpVariable %64 Function
457e5c31af7Sopenharmony_ci        %134 = OpVariable %64 Function
458e5c31af7Sopenharmony_ci        %150 = OpVariable %64 Function
459e5c31af7Sopenharmony_ci        %158 = OpVariable %64 Function
460e5c31af7Sopenharmony_ci        %214 = OpVariable %64 Function
461e5c31af7Sopenharmony_ci        %215 = OpVariable %64 Function
462e5c31af7Sopenharmony_ci        %216 = OpVariable %64 Function
463e5c31af7Sopenharmony_ci        %231 = OpVariable %64 Function
464e5c31af7Sopenharmony_ci        %235 = OpVariable %234 Function
465e5c31af7Sopenharmony_ci        %245 = OpVariable %64 Function
466e5c31af7Sopenharmony_ci        %253 = OpVariable %64 Function
467e5c31af7Sopenharmony_ci        %273 = OpVariable %64 Function
468e5c31af7Sopenharmony_ci        %284 = OpVariable %94 Function
469e5c31af7Sopenharmony_ci         %20 = OpAccessChain %19 %11 %18
470e5c31af7Sopenharmony_ci         %21 = OpLoad %6 %20
471e5c31af7Sopenharmony_ci         %23 = OpFOrdGreaterThan %14 %21 %22
472e5c31af7Sopenharmony_ci               OpStore %16 %23
473e5c31af7Sopenharmony_ci         %24 = OpLoad %14 %16
474e5c31af7Sopenharmony_ci               OpSelectionMerge %26 None
475e5c31af7Sopenharmony_ci               OpBranchConditional %24 %25 %26
476e5c31af7Sopenharmony_ci         %25 = OpLabel
477e5c31af7Sopenharmony_ci               OpReturnValue %27
478e5c31af7Sopenharmony_ci         %26 = OpLabel
479e5c31af7Sopenharmony_ci         %31 = OpAccessChain %19 %11 %30
480e5c31af7Sopenharmony_ci         %32 = OpLoad %6 %31
481e5c31af7Sopenharmony_ci         %33 = OpFOrdLessThan %14 %32 %22
482e5c31af7Sopenharmony_ci               OpStore %29 %33
483e5c31af7Sopenharmony_ci         %34 = OpLoad %14 %29
484e5c31af7Sopenharmony_ci               OpSelectionMerge %36 None
485e5c31af7Sopenharmony_ci               OpBranchConditional %34 %35 %36
486e5c31af7Sopenharmony_ci         %35 = OpLabel
487e5c31af7Sopenharmony_ci               OpReturnValue %27
488e5c31af7Sopenharmony_ci         %36 = OpLabel
489e5c31af7Sopenharmony_ci         %39 = OpAccessChain %19 %11 %30
490e5c31af7Sopenharmony_ci         %40 = OpLoad %6 %39
491e5c31af7Sopenharmony_ci         %41 = OpFOrdGreaterThan %14 %40 %22
492e5c31af7Sopenharmony_ci               OpStore %38 %41
493e5c31af7Sopenharmony_ci         %42 = OpLoad %14 %38
494e5c31af7Sopenharmony_ci               OpSelectionMerge %44 None
495e5c31af7Sopenharmony_ci               OpBranchConditional %42 %43 %44
496e5c31af7Sopenharmony_ci         %43 = OpLabel
497e5c31af7Sopenharmony_ci               OpReturnValue %27
498e5c31af7Sopenharmony_ci         %44 = OpLabel
499e5c31af7Sopenharmony_ci         %47 = OpAccessChain %19 %11 %18
500e5c31af7Sopenharmony_ci         %48 = OpLoad %6 %47
501e5c31af7Sopenharmony_ci         %49 = OpFOrdLessThan %14 %48 %22
502e5c31af7Sopenharmony_ci               OpStore %46 %49
503e5c31af7Sopenharmony_ci         %50 = OpLoad %14 %46
504e5c31af7Sopenharmony_ci               OpSelectionMerge %52 None
505e5c31af7Sopenharmony_ci               OpBranchConditional %50 %51 %52
506e5c31af7Sopenharmony_ci         %51 = OpLabel
507e5c31af7Sopenharmony_ci               OpReturnValue %27
508e5c31af7Sopenharmony_ci         %52 = OpLabel
509e5c31af7Sopenharmony_ci         %55 = OpAccessChain %19 %11 %18
510e5c31af7Sopenharmony_ci         %56 = OpLoad %6 %55
511e5c31af7Sopenharmony_ci         %57 = OpFAdd %6 %56 %22
512e5c31af7Sopenharmony_ci         %58 = OpFOrdGreaterThan %14 %57 %22
513e5c31af7Sopenharmony_ci               OpStore %54 %58
514e5c31af7Sopenharmony_ci         %59 = OpLoad %14 %54
515e5c31af7Sopenharmony_ci               OpSelectionMerge %61 None
516e5c31af7Sopenharmony_ci               OpBranchConditional %59 %60 %61
517e5c31af7Sopenharmony_ci         %60 = OpLabel
518e5c31af7Sopenharmony_ci               OpReturnValue %27
519e5c31af7Sopenharmony_ci         %61 = OpLabel
520e5c31af7Sopenharmony_ci               OpStore %65 %66
521e5c31af7Sopenharmony_ci               OpBranch %67
522e5c31af7Sopenharmony_ci         %67 = OpLabel
523e5c31af7Sopenharmony_ci               OpLoopMerge %69 %70 None
524e5c31af7Sopenharmony_ci               OpBranch %71
525e5c31af7Sopenharmony_ci         %71 = OpLabel
526e5c31af7Sopenharmony_ci         %72 = OpLoad %63 %65
527e5c31af7Sopenharmony_ci         %74 = OpSLessThan %14 %72 %73
528e5c31af7Sopenharmony_ci               OpBranchConditional %74 %68 %69
529e5c31af7Sopenharmony_ci         %68 = OpLabel
530e5c31af7Sopenharmony_ci         %76 = OpLoad %63 %75
531e5c31af7Sopenharmony_ci         %78 = OpSGreaterThanEqual %14 %76 %77
532e5c31af7Sopenharmony_ci               OpSelectionMerge %80 None
533e5c31af7Sopenharmony_ci               OpBranchConditional %78 %79 %80
534e5c31af7Sopenharmony_ci         %79 = OpLabel
535e5c31af7Sopenharmony_ci               OpBranch %69
536e5c31af7Sopenharmony_ci         %80 = OpLabel
537e5c31af7Sopenharmony_ci         %82 = OpLoad %63 %75
538e5c31af7Sopenharmony_ci         %84 = OpIAdd %63 %82 %83
539e5c31af7Sopenharmony_ci               OpStore %75 %84
540e5c31af7Sopenharmony_ci               OpStore %87 %92
541e5c31af7Sopenharmony_ci               OpStore %95 %99
542e5c31af7Sopenharmony_ci               OpStore %100 %101
543e5c31af7Sopenharmony_ci               OpBranch %102
544e5c31af7Sopenharmony_ci        %102 = OpLabel
545e5c31af7Sopenharmony_ci               OpLoopMerge %104 %105 None
546e5c31af7Sopenharmony_ci               OpBranch %106
547e5c31af7Sopenharmony_ci        %106 = OpLabel
548e5c31af7Sopenharmony_ci        %107 = OpLoad %63 %100
549e5c31af7Sopenharmony_ci        %108 = OpSLessThan %14 %107 %73
550e5c31af7Sopenharmony_ci               OpBranchConditional %108 %103 %104
551e5c31af7Sopenharmony_ci        %103 = OpLabel
552e5c31af7Sopenharmony_ci        %110 = OpLoad %63 %109
553e5c31af7Sopenharmony_ci        %111 = OpSGreaterThanEqual %14 %110 %77
554e5c31af7Sopenharmony_ci               OpSelectionMerge %113 None
555e5c31af7Sopenharmony_ci               OpBranchConditional %111 %112 %113
556e5c31af7Sopenharmony_ci        %112 = OpLabel
557e5c31af7Sopenharmony_ci               OpBranch %104
558e5c31af7Sopenharmony_ci        %113 = OpLabel
559e5c31af7Sopenharmony_ci        %115 = OpLoad %63 %109
560e5c31af7Sopenharmony_ci        %116 = OpIAdd %63 %115 %83
561e5c31af7Sopenharmony_ci               OpStore %109 %116
562e5c31af7Sopenharmony_ci               OpStore %117 %101
563e5c31af7Sopenharmony_ci               OpBranch %118
564e5c31af7Sopenharmony_ci        %118 = OpLabel
565e5c31af7Sopenharmony_ci               OpLoopMerge %120 %121 None
566e5c31af7Sopenharmony_ci               OpBranch %122
567e5c31af7Sopenharmony_ci        %122 = OpLabel
568e5c31af7Sopenharmony_ci        %123 = OpLoad %63 %117
569e5c31af7Sopenharmony_ci        %124 = OpSLessThan %14 %123 %73
570e5c31af7Sopenharmony_ci               OpBranchConditional %124 %119 %120
571e5c31af7Sopenharmony_ci        %119 = OpLabel
572e5c31af7Sopenharmony_ci        %126 = OpLoad %63 %125
573e5c31af7Sopenharmony_ci        %127 = OpSGreaterThanEqual %14 %126 %77
574e5c31af7Sopenharmony_ci               OpSelectionMerge %129 None
575e5c31af7Sopenharmony_ci               OpBranchConditional %127 %128 %129
576e5c31af7Sopenharmony_ci        %128 = OpLabel
577e5c31af7Sopenharmony_ci               OpBranch %120
578e5c31af7Sopenharmony_ci        %129 = OpLabel
579e5c31af7Sopenharmony_ci        %131 = OpLoad %63 %125
580e5c31af7Sopenharmony_ci        %132 = OpIAdd %63 %131 %83
581e5c31af7Sopenharmony_ci               OpStore %125 %132
582e5c31af7Sopenharmony_ci               OpStore %133 %66
583e5c31af7Sopenharmony_ci               OpStore %134 %66
584e5c31af7Sopenharmony_ci               OpBranch %135
585e5c31af7Sopenharmony_ci        %135 = OpLabel
586e5c31af7Sopenharmony_ci               OpLoopMerge %137 %138 None
587e5c31af7Sopenharmony_ci               OpBranch %139
588e5c31af7Sopenharmony_ci        %139 = OpLabel
589e5c31af7Sopenharmony_ci        %140 = OpLoad %63 %134
590e5c31af7Sopenharmony_ci        %142 = OpSLessThan %14 %140 %141
591e5c31af7Sopenharmony_ci               OpBranchConditional %142 %136 %137
592e5c31af7Sopenharmony_ci        %136 = OpLabel
593e5c31af7Sopenharmony_ci        %143 = OpLoad %63 %133
594e5c31af7Sopenharmony_ci        %144 = OpSGreaterThanEqual %14 %143 %77
595e5c31af7Sopenharmony_ci               OpSelectionMerge %146 None
596e5c31af7Sopenharmony_ci               OpBranchConditional %144 %145 %146
597e5c31af7Sopenharmony_ci        %145 = OpLabel
598e5c31af7Sopenharmony_ci               OpBranch %137
599e5c31af7Sopenharmony_ci        %146 = OpLabel
600e5c31af7Sopenharmony_ci        %148 = OpLoad %63 %133
601e5c31af7Sopenharmony_ci        %149 = OpIAdd %63 %148 %83
602e5c31af7Sopenharmony_ci               OpStore %133 %149
603e5c31af7Sopenharmony_ci               OpStore %150 %66
604e5c31af7Sopenharmony_ci               OpBranch %151
605e5c31af7Sopenharmony_ci        %151 = OpLabel
606e5c31af7Sopenharmony_ci               OpLoopMerge %153 %154 None
607e5c31af7Sopenharmony_ci               OpBranch %155
608e5c31af7Sopenharmony_ci        %155 = OpLabel
609e5c31af7Sopenharmony_ci        %156 = OpLoad %63 %150
610e5c31af7Sopenharmony_ci        %157 = OpSLessThan %14 %156 %101
611e5c31af7Sopenharmony_ci               OpBranchConditional %157 %152 %153
612e5c31af7Sopenharmony_ci        %152 = OpLabel
613e5c31af7Sopenharmony_ci        %159 = OpLoad %63 %158
614e5c31af7Sopenharmony_ci        %160 = OpSGreaterThanEqual %14 %159 %77
615e5c31af7Sopenharmony_ci               OpSelectionMerge %162 None
616e5c31af7Sopenharmony_ci               OpBranchConditional %160 %161 %162
617e5c31af7Sopenharmony_ci        %161 = OpLabel
618e5c31af7Sopenharmony_ci               OpBranch %153
619e5c31af7Sopenharmony_ci        %162 = OpLabel
620e5c31af7Sopenharmony_ci        %164 = OpLoad %63 %158
621e5c31af7Sopenharmony_ci        %165 = OpIAdd %63 %164 %83
622e5c31af7Sopenharmony_ci               OpStore %158 %165
623e5c31af7Sopenharmony_ci        %166 = OpLoad %63 %134
624e5c31af7Sopenharmony_ci        %167 = OpSGreaterThanEqual %14 %166 %66
625e5c31af7Sopenharmony_ci        %168 = OpLoad %63 %134
626e5c31af7Sopenharmony_ci        %169 = OpSLessThan %14 %168 %141
627e5c31af7Sopenharmony_ci        %170 = OpLogicalAnd %14 %167 %169
628e5c31af7Sopenharmony_ci        %171 = OpLoad %63 %134
629e5c31af7Sopenharmony_ci        %172 = OpSelect %63 %170 %171 %66
630e5c31af7Sopenharmony_ci        %173 = OpLoad %63 %150
631e5c31af7Sopenharmony_ci        %174 = OpSGreaterThanEqual %14 %173 %66
632e5c31af7Sopenharmony_ci        %175 = OpLoad %63 %150
633e5c31af7Sopenharmony_ci        %176 = OpSLessThan %14 %175 %141
634e5c31af7Sopenharmony_ci        %177 = OpLogicalAnd %14 %174 %176
635e5c31af7Sopenharmony_ci        %178 = OpLoad %63 %150
636e5c31af7Sopenharmony_ci        %179 = OpSelect %63 %177 %178 %66
637e5c31af7Sopenharmony_ci        %180 = OpAccessChain %19 %95 %172 %179
638e5c31af7Sopenharmony_ci               OpStore %180 %22
639e5c31af7Sopenharmony_ci        %185 = OpAccessChain %184 %183 %66 %30
640e5c31af7Sopenharmony_ci        %186 = OpLoad %6 %185
641e5c31af7Sopenharmony_ci        %187 = OpFOrdGreaterThan %14 %88 %186
642e5c31af7Sopenharmony_ci               OpSelectionMerge %189 None
643e5c31af7Sopenharmony_ci               OpBranchConditional %187 %188 %190
644e5c31af7Sopenharmony_ci        %188 = OpLabel
645e5c31af7Sopenharmony_ci               OpBranch %189
646e5c31af7Sopenharmony_ci        %190 = OpLabel
647e5c31af7Sopenharmony_ci        %191 = OpLoad %63 %134
648e5c31af7Sopenharmony_ci        %192 = OpSGreaterThanEqual %14 %191 %66
649e5c31af7Sopenharmony_ci        %193 = OpLoad %63 %134
650e5c31af7Sopenharmony_ci        %194 = OpSLessThan %14 %193 %73
651e5c31af7Sopenharmony_ci        %195 = OpLogicalAnd %14 %192 %194
652e5c31af7Sopenharmony_ci        %196 = OpLoad %63 %134
653e5c31af7Sopenharmony_ci        %197 = OpSelect %63 %195 %196 %66
654e5c31af7Sopenharmony_ci        %198 = OpLoad %63 %150
655e5c31af7Sopenharmony_ci        %199 = OpSGreaterThanEqual %14 %198 %66
656e5c31af7Sopenharmony_ci        %200 = OpLoad %63 %150
657e5c31af7Sopenharmony_ci        %201 = OpSLessThan %14 %200 %101
658e5c31af7Sopenharmony_ci        %202 = OpLogicalAnd %14 %199 %201
659e5c31af7Sopenharmony_ci        %203 = OpLoad %63 %150
660e5c31af7Sopenharmony_ci        %204 = OpSelect %63 %202 %203 %66
661e5c31af7Sopenharmony_ci        %205 = OpAccessChain %19 %87 %197 %204
662e5c31af7Sopenharmony_ci               OpStore %205 %22
663e5c31af7Sopenharmony_ci               OpBranch %189
664e5c31af7Sopenharmony_ci        %189 = OpLabel
665e5c31af7Sopenharmony_ci               OpBranch %154
666e5c31af7Sopenharmony_ci        %154 = OpLabel
667e5c31af7Sopenharmony_ci        %206 = OpLoad %63 %150
668e5c31af7Sopenharmony_ci        %207 = OpIAdd %63 %206 %83
669e5c31af7Sopenharmony_ci               OpStore %150 %207
670e5c31af7Sopenharmony_ci               OpBranch %151
671e5c31af7Sopenharmony_ci        %153 = OpLabel
672e5c31af7Sopenharmony_ci               OpBranch %138
673e5c31af7Sopenharmony_ci        %138 = OpLabel
674e5c31af7Sopenharmony_ci        %208 = OpLoad %63 %134
675e5c31af7Sopenharmony_ci        %209 = OpIAdd %63 %208 %83
676e5c31af7Sopenharmony_ci               OpStore %134 %209
677e5c31af7Sopenharmony_ci               OpBranch %135
678e5c31af7Sopenharmony_ci        %137 = OpLabel
679e5c31af7Sopenharmony_ci               OpBranch %121
680e5c31af7Sopenharmony_ci        %121 = OpLabel
681e5c31af7Sopenharmony_ci        %210 = OpLoad %63 %117
682e5c31af7Sopenharmony_ci        %211 = OpIAdd %63 %210 %83
683e5c31af7Sopenharmony_ci               OpStore %117 %211
684e5c31af7Sopenharmony_ci               OpBranch %118
685e5c31af7Sopenharmony_ci        %120 = OpLabel
686e5c31af7Sopenharmony_ci               OpBranch %105
687e5c31af7Sopenharmony_ci        %105 = OpLabel
688e5c31af7Sopenharmony_ci        %212 = OpLoad %63 %100
689e5c31af7Sopenharmony_ci        %213 = OpIAdd %63 %212 %83
690e5c31af7Sopenharmony_ci               OpStore %100 %213
691e5c31af7Sopenharmony_ci               OpBranch %102
692e5c31af7Sopenharmony_ci        %104 = OpLabel
693e5c31af7Sopenharmony_ci               OpStore %214 %66
694e5c31af7Sopenharmony_ci               OpStore %215 %66
695e5c31af7Sopenharmony_ci               OpStore %216 %101
696e5c31af7Sopenharmony_ci               OpBranch %217
697e5c31af7Sopenharmony_ci        %217 = OpLabel
698e5c31af7Sopenharmony_ci               OpLoopMerge %219 %220 None
699e5c31af7Sopenharmony_ci               OpBranch %221
700e5c31af7Sopenharmony_ci        %221 = OpLabel
701e5c31af7Sopenharmony_ci        %222 = OpLoad %63 %216
702e5c31af7Sopenharmony_ci        %223 = OpSLessThan %14 %222 %73
703e5c31af7Sopenharmony_ci               OpBranchConditional %223 %218 %219
704e5c31af7Sopenharmony_ci        %218 = OpLabel
705e5c31af7Sopenharmony_ci        %224 = OpLoad %63 %215
706e5c31af7Sopenharmony_ci        %225 = OpSGreaterThanEqual %14 %224 %77
707e5c31af7Sopenharmony_ci               OpSelectionMerge %227 None
708e5c31af7Sopenharmony_ci               OpBranchConditional %225 %226 %227
709e5c31af7Sopenharmony_ci        %226 = OpLabel
710e5c31af7Sopenharmony_ci               OpBranch %219
711e5c31af7Sopenharmony_ci        %227 = OpLabel
712e5c31af7Sopenharmony_ci        %229 = OpLoad %63 %215
713e5c31af7Sopenharmony_ci        %230 = OpIAdd %63 %229 %83
714e5c31af7Sopenharmony_ci               OpStore %215 %230
715e5c31af7Sopenharmony_ci               OpStore %231 %101
716e5c31af7Sopenharmony_ci        %236 = OpLoad %63 %214
717e5c31af7Sopenharmony_ci        %237 = OpSGreaterThanEqual %14 %236 %66
718e5c31af7Sopenharmony_ci        %238 = OpLoad %63 %214
719e5c31af7Sopenharmony_ci        %240 = OpSLessThan %14 %238 %239
720e5c31af7Sopenharmony_ci        %241 = OpLogicalAnd %14 %237 %240
721e5c31af7Sopenharmony_ci        %242 = OpLoad %63 %214
722e5c31af7Sopenharmony_ci        %243 = OpSelect %63 %241 %242 %66
723e5c31af7Sopenharmony_ci        %244 = OpAccessChain %19 %235 %243
724e5c31af7Sopenharmony_ci               OpStore %244 %88
725e5c31af7Sopenharmony_ci               OpStore %245 %66
726e5c31af7Sopenharmony_ci               OpBranch %246
727e5c31af7Sopenharmony_ci        %246 = OpLabel
728e5c31af7Sopenharmony_ci               OpLoopMerge %248 %249 None
729e5c31af7Sopenharmony_ci               OpBranch %250
730e5c31af7Sopenharmony_ci        %250 = OpLabel
731e5c31af7Sopenharmony_ci        %251 = OpLoad %63 %245
732e5c31af7Sopenharmony_ci        %252 = OpSLessThan %14 %251 %83
733e5c31af7Sopenharmony_ci               OpBranchConditional %252 %247 %248
734e5c31af7Sopenharmony_ci        %247 = OpLabel
735e5c31af7Sopenharmony_ci               OpStore %253 %66
736e5c31af7Sopenharmony_ci               OpBranch %254
737e5c31af7Sopenharmony_ci        %254 = OpLabel
738e5c31af7Sopenharmony_ci               OpLoopMerge %256 %257 None
739e5c31af7Sopenharmony_ci               OpBranch %258
740e5c31af7Sopenharmony_ci        %258 = OpLabel
741e5c31af7Sopenharmony_ci        %259 = OpLoad %63 %253
742e5c31af7Sopenharmony_ci        %260 = OpLoad %63 %231
743e5c31af7Sopenharmony_ci        %261 = OpSLessThan %14 %259 %260
744e5c31af7Sopenharmony_ci               OpBranchConditional %261 %255 %256
745e5c31af7Sopenharmony_ci        %255 = OpLabel
746e5c31af7Sopenharmony_ci        %262 = OpLoad %63 %214
747e5c31af7Sopenharmony_ci        %263 = OpSGreaterThanEqual %14 %262 %66
748e5c31af7Sopenharmony_ci        %264 = OpLoad %63 %214
749e5c31af7Sopenharmony_ci        %265 = OpSLessThan %14 %264 %239
750e5c31af7Sopenharmony_ci        %266 = OpLogicalAnd %14 %263 %265
751e5c31af7Sopenharmony_ci        %267 = OpLoad %63 %214
752e5c31af7Sopenharmony_ci        %268 = OpSelect %63 %266 %267 %66
753e5c31af7Sopenharmony_ci        %269 = OpLoad %93 %95
754e5c31af7Sopenharmony_ci        %270 = OpTranspose %93 %269
755e5c31af7Sopenharmony_ci        %271 = OpLoad %63 %245
756e5c31af7Sopenharmony_ci        %272 = OpSLessThan %14 %271 %141
757e5c31af7Sopenharmony_ci               OpSelectionMerge %275 None
758e5c31af7Sopenharmony_ci               OpBranchConditional %272 %274 %276
759e5c31af7Sopenharmony_ci        %274 = OpLabel
760e5c31af7Sopenharmony_ci               OpStore %273 %83
761e5c31af7Sopenharmony_ci               OpBranch %275
762e5c31af7Sopenharmony_ci        %276 = OpLabel
763e5c31af7Sopenharmony_ci        %277 = OpAccessChain %184 %183 %66 %18
764e5c31af7Sopenharmony_ci        %278 = OpLoad %6 %277
765e5c31af7Sopenharmony_ci        %279 = OpConvertFToS %63 %278
766e5c31af7Sopenharmony_ci               OpStore %273 %279
767e5c31af7Sopenharmony_ci               OpBranch %275
768e5c31af7Sopenharmony_ci        %275 = OpLabel
769e5c31af7Sopenharmony_ci        %280 = OpLoad %63 %273
770e5c31af7Sopenharmony_ci        %281 = OpLoad %63 %253
771e5c31af7Sopenharmony_ci        %282 = OpSLessThan %14 %281 %141
772e5c31af7Sopenharmony_ci        %283 = OpSelect %63 %282 %83 %66
773e5c31af7Sopenharmony_ci               OpStore %284 %270
774e5c31af7Sopenharmony_ci        %285 = OpAccessChain %19 %284 %280 %283
775e5c31af7Sopenharmony_ci        %286 = OpLoad %6 %285
776e5c31af7Sopenharmony_ci        %287 = OpAccessChain %19 %235 %268
777e5c31af7Sopenharmony_ci        %288 = OpLoad %6 %287
778e5c31af7Sopenharmony_ci        %289 = OpFAdd %6 %288 %286
779e5c31af7Sopenharmony_ci        %290 = OpAccessChain %19 %235 %268
780e5c31af7Sopenharmony_ci               OpStore %290 %289
781e5c31af7Sopenharmony_ci        %291 = OpLoad %63 %214
782e5c31af7Sopenharmony_ci        %292 = OpSGreaterThanEqual %14 %291 %66
783e5c31af7Sopenharmony_ci        %293 = OpLoad %63 %214
784e5c31af7Sopenharmony_ci        %294 = OpSLessThan %14 %293 %239
785e5c31af7Sopenharmony_ci        %295 = OpLogicalAnd %14 %292 %294
786e5c31af7Sopenharmony_ci        %296 = OpLoad %63 %214
787e5c31af7Sopenharmony_ci        %297 = OpSelect %63 %295 %296 %66
788e5c31af7Sopenharmony_ci        %298 = OpLoad %63 %253
789e5c31af7Sopenharmony_ci        %299 = OpAccessChain %19 %87 %83 %298
790e5c31af7Sopenharmony_ci        %300 = OpLoad %6 %299
791e5c31af7Sopenharmony_ci        %301 = OpAccessChain %19 %235 %297
792e5c31af7Sopenharmony_ci        %302 = OpLoad %6 %301
793e5c31af7Sopenharmony_ci        %303 = OpFAdd %6 %302 %300
794e5c31af7Sopenharmony_ci        %304 = OpAccessChain %19 %235 %297
795e5c31af7Sopenharmony_ci               OpStore %304 %303
796e5c31af7Sopenharmony_ci               OpBranch %257
797e5c31af7Sopenharmony_ci        %257 = OpLabel
798e5c31af7Sopenharmony_ci        %305 = OpLoad %63 %253
799e5c31af7Sopenharmony_ci        %306 = OpIAdd %63 %305 %83
800e5c31af7Sopenharmony_ci               OpStore %253 %306
801e5c31af7Sopenharmony_ci               OpBranch %254
802e5c31af7Sopenharmony_ci        %256 = OpLabel
803e5c31af7Sopenharmony_ci               OpBranch %249
804e5c31af7Sopenharmony_ci        %249 = OpLabel
805e5c31af7Sopenharmony_ci        %307 = OpLoad %63 %245
806e5c31af7Sopenharmony_ci        %308 = OpIAdd %63 %307 %83
807e5c31af7Sopenharmony_ci               OpStore %245 %308
808e5c31af7Sopenharmony_ci               OpBranch %246
809e5c31af7Sopenharmony_ci        %248 = OpLabel
810e5c31af7Sopenharmony_ci        %309 = OpLoad %63 %214
811e5c31af7Sopenharmony_ci        %310 = OpIAdd %63 %309 %83
812e5c31af7Sopenharmony_ci               OpStore %214 %310
813e5c31af7Sopenharmony_ci               OpBranch %220
814e5c31af7Sopenharmony_ci        %220 = OpLabel
815e5c31af7Sopenharmony_ci        %311 = OpLoad %63 %216
816e5c31af7Sopenharmony_ci        %312 = OpIAdd %63 %311 %83
817e5c31af7Sopenharmony_ci               OpStore %216 %312
818e5c31af7Sopenharmony_ci               OpBranch %217
819e5c31af7Sopenharmony_ci        %219 = OpLabel
820e5c31af7Sopenharmony_ci               OpBranch %70
821e5c31af7Sopenharmony_ci         %70 = OpLabel
822e5c31af7Sopenharmony_ci        %313 = OpLoad %63 %65
823e5c31af7Sopenharmony_ci        %314 = OpIAdd %63 %313 %83
824e5c31af7Sopenharmony_ci               OpStore %65 %314
825e5c31af7Sopenharmony_ci               OpBranch %67
826e5c31af7Sopenharmony_ci         %69 = OpLabel
827e5c31af7Sopenharmony_ci               OpReturnValue %27
828e5c31af7Sopenharmony_ci               OpFunctionEnd
829e5c31af7Sopenharmony_ciEND
830e5c31af7Sopenharmony_ci
831e5c31af7Sopenharmony_ci# uniforms for variant
832e5c31af7Sopenharmony_ci
833e5c31af7Sopenharmony_ci# injectionSwitch
834e5c31af7Sopenharmony_ciBUFFER variant_injectionSwitch DATA_TYPE vec2<float> DATA
835e5c31af7Sopenharmony_ci 0.0 1.0
836e5c31af7Sopenharmony_ciEND
837e5c31af7Sopenharmony_ci
838e5c31af7Sopenharmony_ciBUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM
839e5c31af7Sopenharmony_ci
840e5c31af7Sopenharmony_ciPIPELINE graphics variant_pipeline
841e5c31af7Sopenharmony_ci  ATTACH variant_vertex_shader
842e5c31af7Sopenharmony_ci  ATTACH variant_fragment_shader
843e5c31af7Sopenharmony_ci  FRAMEBUFFER_SIZE 256 256
844e5c31af7Sopenharmony_ci  BIND BUFFER variant_framebuffer AS color LOCATION 0
845e5c31af7Sopenharmony_ci  BIND BUFFER variant_injectionSwitch AS uniform DESCRIPTOR_SET 0 BINDING 0
846e5c31af7Sopenharmony_ciEND
847e5c31af7Sopenharmony_ciCLEAR_COLOR variant_pipeline 0 0 0 255
848e5c31af7Sopenharmony_ci
849e5c31af7Sopenharmony_ciCLEAR variant_pipeline
850e5c31af7Sopenharmony_ciRUN variant_pipeline DRAW_RECT POS 0 0 SIZE 256 256
851e5c31af7Sopenharmony_ci
852e5c31af7Sopenharmony_ciEXPECT variant_framebuffer IDX 0 0 SIZE 256 256 EQ_RGBA 255 0 0 255
853