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 performing a search computation, then writing red regardless
21e5c31af7Sopenharmony_ci
22e5c31af7Sopenharmony_ci# The test passes because the uniform values used to run the shader guarantee
23e5c31af7Sopenharmony_ci# that red will be written at the end, regardless of what the prior computation
24e5c31af7Sopenharmony_ci# does.
25e5c31af7Sopenharmony_ci
26e5c31af7Sopenharmony_ciSHADER vertex variant_vertex_shader PASSTHROUGH
27e5c31af7Sopenharmony_ci
28e5c31af7Sopenharmony_ci# variant_fragment_shader is derived from the following GLSL:
29e5c31af7Sopenharmony_ci# #version 310 es
30e5c31af7Sopenharmony_ci# precision highp float;
31e5c31af7Sopenharmony_ci#
32e5c31af7Sopenharmony_ci# layout(location = 0) out vec4 _GLF_color;
33e5c31af7Sopenharmony_ci#
34e5c31af7Sopenharmony_ci# layout(set = 0, binding = 0) uniform buf0 {
35e5c31af7Sopenharmony_ci#  vec2 injectionSwitch;
36e5c31af7Sopenharmony_ci# };
37e5c31af7Sopenharmony_ci# struct BST {
38e5c31af7Sopenharmony_ci#  int data;
39e5c31af7Sopenharmony_ci#  int leftIndex;
40e5c31af7Sopenharmony_ci#  int rightIndex;
41e5c31af7Sopenharmony_ci# } ;
42e5c31af7Sopenharmony_ci#
43e5c31af7Sopenharmony_ci# BST tree[10];
44e5c31af7Sopenharmony_ci#
45e5c31af7Sopenharmony_ci# struct Obj {
46e5c31af7Sopenharmony_ci#  float odd_numbers[10];
47e5c31af7Sopenharmony_ci#  float even_numbers[10];
48e5c31af7Sopenharmony_ci# } ;
49e5c31af7Sopenharmony_ci#
50e5c31af7Sopenharmony_ci# void makeTreeNode(inout BST tree, int data)
51e5c31af7Sopenharmony_ci# {
52e5c31af7Sopenharmony_ci#  tree.data = data;
53e5c31af7Sopenharmony_ci#  tree.leftIndex = - 1;
54e5c31af7Sopenharmony_ci#  tree.rightIndex = - 1;
55e5c31af7Sopenharmony_ci# }
56e5c31af7Sopenharmony_ci# void insert(int treeIndex, int data)
57e5c31af7Sopenharmony_ci# {
58e5c31af7Sopenharmony_ci#  int baseIndex = 0;
59e5c31af7Sopenharmony_ci#  while(baseIndex <= treeIndex)
60e5c31af7Sopenharmony_ci#   {
61e5c31af7Sopenharmony_ci#    if(data <= tree[baseIndex].data)
62e5c31af7Sopenharmony_ci#     {
63e5c31af7Sopenharmony_ci#      if(tree[baseIndex].leftIndex == - 1)
64e5c31af7Sopenharmony_ci#       {
65e5c31af7Sopenharmony_ci#        tree[baseIndex].leftIndex = treeIndex;
66e5c31af7Sopenharmony_ci#        makeTreeNode(tree[treeIndex], data);
67e5c31af7Sopenharmony_ci#        return;
68e5c31af7Sopenharmony_ci#       }
69e5c31af7Sopenharmony_ci#      else
70e5c31af7Sopenharmony_ci#       {
71e5c31af7Sopenharmony_ci#        baseIndex = tree[baseIndex].leftIndex;
72e5c31af7Sopenharmony_ci#        continue;
73e5c31af7Sopenharmony_ci#       }
74e5c31af7Sopenharmony_ci#     }
75e5c31af7Sopenharmony_ci#    else
76e5c31af7Sopenharmony_ci#     {
77e5c31af7Sopenharmony_ci#      if(tree[baseIndex].rightIndex == - 1)
78e5c31af7Sopenharmony_ci#       {
79e5c31af7Sopenharmony_ci#        tree[baseIndex].rightIndex = treeIndex;
80e5c31af7Sopenharmony_ci#        makeTreeNode(tree[treeIndex], data);
81e5c31af7Sopenharmony_ci#        return;
82e5c31af7Sopenharmony_ci#       }
83e5c31af7Sopenharmony_ci#      else
84e5c31af7Sopenharmony_ci#       {
85e5c31af7Sopenharmony_ci#        int GLF_live8i = 1;
86e5c31af7Sopenharmony_ci#        float GLF_live8A[50];
87e5c31af7Sopenharmony_ci#        GLF_live8A[GLF_live8i >= 0 && GLF_live8i < 50 ? GLF_live8i : 0] += GLF_live8A[(1 - 1) >= 0 && (1 - 1) < 50 ? 1 - 1 : 0];
88e5c31af7Sopenharmony_ci#        do
89e5c31af7Sopenharmony_ci#         {
90e5c31af7Sopenharmony_ci#          baseIndex = tree[baseIndex].rightIndex;
91e5c31af7Sopenharmony_ci#         }
92e5c31af7Sopenharmony_ci#        while((injectionSwitch.x > injectionSwitch.y));
93e5c31af7Sopenharmony_ci#        continue;
94e5c31af7Sopenharmony_ci#       }
95e5c31af7Sopenharmony_ci#     }
96e5c31af7Sopenharmony_ci#   }
97e5c31af7Sopenharmony_ci# }
98e5c31af7Sopenharmony_ci# int search(int target)
99e5c31af7Sopenharmony_ci# {
100e5c31af7Sopenharmony_ci#  BST currentNode;
101e5c31af7Sopenharmony_ci#  int index = 0;
102e5c31af7Sopenharmony_ci#  while(index != - 1)
103e5c31af7Sopenharmony_ci#   {
104e5c31af7Sopenharmony_ci#    currentNode = tree[index];
105e5c31af7Sopenharmony_ci#    if(currentNode.data == target)
106e5c31af7Sopenharmony_ci#     {
107e5c31af7Sopenharmony_ci#      return target;
108e5c31af7Sopenharmony_ci#     }
109e5c31af7Sopenharmony_ci#    index = target > currentNode.data ? currentNode.rightIndex : currentNode.leftIndex;
110e5c31af7Sopenharmony_ci#   }
111e5c31af7Sopenharmony_ci#  return - 1;
112e5c31af7Sopenharmony_ci# }
113e5c31af7Sopenharmony_ci# vec3 hueColor(float angle)
114e5c31af7Sopenharmony_ci# {
115e5c31af7Sopenharmony_ci#  float nodeData = float(search(15));
116e5c31af7Sopenharmony_ci#  return (30.0 + angle * vec3(1.0, 5.0, nodeData)) / 50.0;
117e5c31af7Sopenharmony_ci# }
118e5c31af7Sopenharmony_ci# float makeFrame(float v)
119e5c31af7Sopenharmony_ci# {
120e5c31af7Sopenharmony_ci#  v *= 6.5;
121e5c31af7Sopenharmony_ci#  if(v < 1.5)
122e5c31af7Sopenharmony_ci#   {
123e5c31af7Sopenharmony_ci#    return float(search(100));
124e5c31af7Sopenharmony_ci#   }
125e5c31af7Sopenharmony_ci#  if(v < 4.0)
126e5c31af7Sopenharmony_ci#   {
127e5c31af7Sopenharmony_ci#    return 0.0;
128e5c31af7Sopenharmony_ci#   }
129e5c31af7Sopenharmony_ci#  if(v < float(search(6)))
130e5c31af7Sopenharmony_ci#   {
131e5c31af7Sopenharmony_ci#    return 1.0;
132e5c31af7Sopenharmony_ci#   }
133e5c31af7Sopenharmony_ci#  return 10.0 + float(search(30));
134e5c31af7Sopenharmony_ci# }
135e5c31af7Sopenharmony_ci# void main()
136e5c31af7Sopenharmony_ci# {
137e5c31af7Sopenharmony_ci#  int treeIndex = 0;
138e5c31af7Sopenharmony_ci#  makeTreeNode(tree[0], 9);
139e5c31af7Sopenharmony_ci#  treeIndex ++;
140e5c31af7Sopenharmony_ci#  insert(treeIndex, 5);
141e5c31af7Sopenharmony_ci#  treeIndex ++;
142e5c31af7Sopenharmony_ci#  int GLF_live1_looplimiter2 = 0;
143e5c31af7Sopenharmony_ci#  for(
144e5c31af7Sopenharmony_ci#      int GLF_live1i = 0;
145e5c31af7Sopenharmony_ci#      1 < 4;
146e5c31af7Sopenharmony_ci#      GLF_live1i ++
147e5c31af7Sopenharmony_ci#  )
148e5c31af7Sopenharmony_ci#   {
149e5c31af7Sopenharmony_ci#    if(GLF_live1_looplimiter2 >= 7)
150e5c31af7Sopenharmony_ci#     {
151e5c31af7Sopenharmony_ci#      break;
152e5c31af7Sopenharmony_ci#     }
153e5c31af7Sopenharmony_ci#    GLF_live1_looplimiter2 ++;
154e5c31af7Sopenharmony_ci#   }
155e5c31af7Sopenharmony_ci#  insert(treeIndex, 12);
156e5c31af7Sopenharmony_ci#  treeIndex ++;
157e5c31af7Sopenharmony_ci#  insert(treeIndex, 15);
158e5c31af7Sopenharmony_ci#  treeIndex ++;
159e5c31af7Sopenharmony_ci#  insert(treeIndex, 7);
160e5c31af7Sopenharmony_ci#  treeIndex ++;
161e5c31af7Sopenharmony_ci#  insert(treeIndex, 8);
162e5c31af7Sopenharmony_ci#  treeIndex ++;
163e5c31af7Sopenharmony_ci#  insert(treeIndex, 2);
164e5c31af7Sopenharmony_ci#  treeIndex ++;
165e5c31af7Sopenharmony_ci#  insert(treeIndex, 6);
166e5c31af7Sopenharmony_ci#  treeIndex ++;
167e5c31af7Sopenharmony_ci#  Obj GLF_live4obj;
168e5c31af7Sopenharmony_ci#  int GLF_live4_looplimiter3 = 0;
169e5c31af7Sopenharmony_ci#  for(
170e5c31af7Sopenharmony_ci#      int GLF_live4i = 0;
171e5c31af7Sopenharmony_ci#      1 < 9;
172e5c31af7Sopenharmony_ci#      GLF_live4i ++
173e5c31af7Sopenharmony_ci#  )
174e5c31af7Sopenharmony_ci#   {
175e5c31af7Sopenharmony_ci#    if(GLF_live4_looplimiter3 >= 3)
176e5c31af7Sopenharmony_ci#     {
177e5c31af7Sopenharmony_ci#      break;
178e5c31af7Sopenharmony_ci#     }
179e5c31af7Sopenharmony_ci#    GLF_live4_looplimiter3 ++;
180e5c31af7Sopenharmony_ci#    int GLF_live4index = 1;
181e5c31af7Sopenharmony_ci#    GLF_live4obj.even_numbers[GLF_live4index >= 0 && GLF_live4index < 10 ? GLF_live4index : 0] = GLF_live4obj.even_numbers[1 >= 0 && 1 < 10 ? 1 : 0];
182e5c31af7Sopenharmony_ci#    GLF_live4obj.even_numbers[GLF_live4i >= 0 && GLF_live4i < 10 ? GLF_live4i : 0] = 1.0;
183e5c31af7Sopenharmony_ci#   }
184e5c31af7Sopenharmony_ci#  insert(treeIndex, 17);
185e5c31af7Sopenharmony_ci#  if((injectionSwitch.x > injectionSwitch.y))
186e5c31af7Sopenharmony_ci#   {
187e5c31af7Sopenharmony_ci#    return;
188e5c31af7Sopenharmony_ci#   }
189e5c31af7Sopenharmony_ci#  treeIndex ++;
190e5c31af7Sopenharmony_ci#  insert(treeIndex, 13);
191e5c31af7Sopenharmony_ci#  vec2 z = (gl_FragCoord.yx / vec2(256.0, 256.0));
192e5c31af7Sopenharmony_ci#  float x = makeFrame(z.x);
193e5c31af7Sopenharmony_ci#  float y = makeFrame(z.y);
194e5c31af7Sopenharmony_ci#  int sum = - 100;
195e5c31af7Sopenharmony_ci#  for(
196e5c31af7Sopenharmony_ci#      int target = 0;
197e5c31af7Sopenharmony_ci#      target < 20;
198e5c31af7Sopenharmony_ci#      target ++
199e5c31af7Sopenharmony_ci#  )
200e5c31af7Sopenharmony_ci#   {
201e5c31af7Sopenharmony_ci#    int result = search(target);
202e5c31af7Sopenharmony_ci#    if(result > 0)
203e5c31af7Sopenharmony_ci#     {
204e5c31af7Sopenharmony_ci#     }
205e5c31af7Sopenharmony_ci#    else
206e5c31af7Sopenharmony_ci#     {
207e5c31af7Sopenharmony_ci#      switch(result)
208e5c31af7Sopenharmony_ci#       {
209e5c31af7Sopenharmony_ci#        case - 1:
210e5c31af7Sopenharmony_ci#        sum += 1;
211e5c31af7Sopenharmony_ci#        break;
212e5c31af7Sopenharmony_ci#        case 0:
213e5c31af7Sopenharmony_ci#        return;
214e5c31af7Sopenharmony_ci#       }
215e5c31af7Sopenharmony_ci#     }
216e5c31af7Sopenharmony_ci#   }
217e5c31af7Sopenharmony_ci#  float a = x + y * float(sum);
218e5c31af7Sopenharmony_ci#  _GLF_color = vec4(injectionSwitch.x < injectionSwitch.y ? vec3(1.0, 0.0, 0.0) : hueColor(a), 1.);
219e5c31af7Sopenharmony_ci# }
220e5c31af7Sopenharmony_ciSHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
221e5c31af7Sopenharmony_ci; SPIR-V
222e5c31af7Sopenharmony_ci; Version: 1.0
223e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 7
224e5c31af7Sopenharmony_ci; Bound: 456
225e5c31af7Sopenharmony_ci; Schema: 0
226e5c31af7Sopenharmony_ci               OpCapability Shader
227e5c31af7Sopenharmony_ci          %1 = OpExtInstImport "GLSL.std.450"
228e5c31af7Sopenharmony_ci               OpMemoryModel Logical GLSL450
229e5c31af7Sopenharmony_ci               OpEntryPoint Fragment %4 "main" %381 %436
230e5c31af7Sopenharmony_ci               OpExecutionMode %4 OriginUpperLeft
231e5c31af7Sopenharmony_ci               OpSource ESSL 310
232e5c31af7Sopenharmony_ci               OpName %4 "main"
233e5c31af7Sopenharmony_ci               OpName %7 "BST"
234e5c31af7Sopenharmony_ci               OpMemberName %7 0 "data"
235e5c31af7Sopenharmony_ci               OpMemberName %7 1 "leftIndex"
236e5c31af7Sopenharmony_ci               OpMemberName %7 2 "rightIndex"
237e5c31af7Sopenharmony_ci               OpName %13 "makeTreeNode(struct-BST-i1-i1-i11;i1;"
238e5c31af7Sopenharmony_ci               OpName %11 "tree"
239e5c31af7Sopenharmony_ci               OpName %12 "data"
240e5c31af7Sopenharmony_ci               OpName %18 "insert(i1;i1;"
241e5c31af7Sopenharmony_ci               OpName %16 "treeIndex"
242e5c31af7Sopenharmony_ci               OpName %17 "data"
243e5c31af7Sopenharmony_ci               OpName %22 "search(i1;"
244e5c31af7Sopenharmony_ci               OpName %21 "target"
245e5c31af7Sopenharmony_ci               OpName %29 "hueColor(f1;"
246e5c31af7Sopenharmony_ci               OpName %28 "angle"
247e5c31af7Sopenharmony_ci               OpName %33 "makeFrame(f1;"
248e5c31af7Sopenharmony_ci               OpName %32 "v"
249e5c31af7Sopenharmony_ci               OpName %43 "baseIndex"
250e5c31af7Sopenharmony_ci               OpName %58 "tree"
251e5c31af7Sopenharmony_ci               OpName %76 "param"
252e5c31af7Sopenharmony_ci               OpName %80 "param"
253e5c31af7Sopenharmony_ci               OpName %102 "param"
254e5c31af7Sopenharmony_ci               OpName %105 "param"
255e5c31af7Sopenharmony_ci               OpName %112 "GLF_live8i"
256e5c31af7Sopenharmony_ci               OpName %116 "GLF_live8A"
257e5c31af7Sopenharmony_ci               OpName %139 "buf0"
258e5c31af7Sopenharmony_ci               OpMemberName %139 0 "injectionSwitch"
259e5c31af7Sopenharmony_ci               OpName %141 ""
260e5c31af7Sopenharmony_ci               OpName %151 "index"
261e5c31af7Sopenharmony_ci               OpName %159 "currentNode"
262e5c31af7Sopenharmony_ci               OpName %186 "nodeData"
263e5c31af7Sopenharmony_ci               OpName %188 "param"
264e5c31af7Sopenharmony_ci               OpName %214 "param"
265e5c31af7Sopenharmony_ci               OpName %227 "param"
266e5c31af7Sopenharmony_ci               OpName %236 "param"
267e5c31af7Sopenharmony_ci               OpName %242 "treeIndex"
268e5c31af7Sopenharmony_ci               OpName %244 "param"
269e5c31af7Sopenharmony_ci               OpName %247 "param"
270e5c31af7Sopenharmony_ci               OpName %254 "param"
271e5c31af7Sopenharmony_ci               OpName %256 "param"
272e5c31af7Sopenharmony_ci               OpName %260 "GLF_live1_looplimiter2"
273e5c31af7Sopenharmony_ci               OpName %261 "GLF_live1i"
274e5c31af7Sopenharmony_ci               OpName %279 "param"
275e5c31af7Sopenharmony_ci               OpName %281 "param"
276e5c31af7Sopenharmony_ci               OpName %285 "param"
277e5c31af7Sopenharmony_ci               OpName %287 "param"
278e5c31af7Sopenharmony_ci               OpName %291 "param"
279e5c31af7Sopenharmony_ci               OpName %293 "param"
280e5c31af7Sopenharmony_ci               OpName %298 "param"
281e5c31af7Sopenharmony_ci               OpName %300 "param"
282e5c31af7Sopenharmony_ci               OpName %304 "param"
283e5c31af7Sopenharmony_ci               OpName %306 "param"
284e5c31af7Sopenharmony_ci               OpName %310 "param"
285e5c31af7Sopenharmony_ci               OpName %312 "param"
286e5c31af7Sopenharmony_ci               OpName %316 "GLF_live4_looplimiter3"
287e5c31af7Sopenharmony_ci               OpName %317 "GLF_live4i"
288e5c31af7Sopenharmony_ci               OpName %331 "GLF_live4index"
289e5c31af7Sopenharmony_ci               OpName %333 "Obj"
290e5c31af7Sopenharmony_ci               OpMemberName %333 0 "odd_numbers"
291e5c31af7Sopenharmony_ci               OpMemberName %333 1 "even_numbers"
292e5c31af7Sopenharmony_ci               OpName %335 "GLF_live4obj"
293e5c31af7Sopenharmony_ci               OpName %358 "param"
294e5c31af7Sopenharmony_ci               OpName %360 "param"
295e5c31af7Sopenharmony_ci               OpName %373 "param"
296e5c31af7Sopenharmony_ci               OpName %375 "param"
297e5c31af7Sopenharmony_ci               OpName %378 "z"
298e5c31af7Sopenharmony_ci               OpName %381 "gl_FragCoord"
299e5c31af7Sopenharmony_ci               OpName %387 "x"
300e5c31af7Sopenharmony_ci               OpName %388 "param"
301e5c31af7Sopenharmony_ci               OpName %392 "y"
302e5c31af7Sopenharmony_ci               OpName %393 "param"
303e5c31af7Sopenharmony_ci               OpName %397 "sum"
304e5c31af7Sopenharmony_ci               OpName %399 "target"
305e5c31af7Sopenharmony_ci               OpName %408 "result"
306e5c31af7Sopenharmony_ci               OpName %409 "param"
307e5c31af7Sopenharmony_ci               OpName %428 "a"
308e5c31af7Sopenharmony_ci               OpName %436 "_GLF_color"
309e5c31af7Sopenharmony_ci               OpName %448 "param"
310e5c31af7Sopenharmony_ci               OpMemberDecorate %7 0 RelaxedPrecision
311e5c31af7Sopenharmony_ci               OpMemberDecorate %7 1 RelaxedPrecision
312e5c31af7Sopenharmony_ci               OpMemberDecorate %7 2 RelaxedPrecision
313e5c31af7Sopenharmony_ci               OpDecorate %12 RelaxedPrecision
314e5c31af7Sopenharmony_ci               OpDecorate %16 RelaxedPrecision
315e5c31af7Sopenharmony_ci               OpDecorate %17 RelaxedPrecision
316e5c31af7Sopenharmony_ci               OpDecorate %22 RelaxedPrecision
317e5c31af7Sopenharmony_ci               OpDecorate %21 RelaxedPrecision
318e5c31af7Sopenharmony_ci               OpDecorate %36 RelaxedPrecision
319e5c31af7Sopenharmony_ci               OpDecorate %43 RelaxedPrecision
320e5c31af7Sopenharmony_ci               OpDecorate %49 RelaxedPrecision
321e5c31af7Sopenharmony_ci               OpDecorate %50 RelaxedPrecision
322e5c31af7Sopenharmony_ci               OpDecorate %53 RelaxedPrecision
323e5c31af7Sopenharmony_ci               OpDecorate %59 RelaxedPrecision
324e5c31af7Sopenharmony_ci               OpDecorate %62 RelaxedPrecision
325e5c31af7Sopenharmony_ci               OpDecorate %66 RelaxedPrecision
326e5c31af7Sopenharmony_ci               OpDecorate %68 RelaxedPrecision
327e5c31af7Sopenharmony_ci               OpDecorate %72 RelaxedPrecision
328e5c31af7Sopenharmony_ci               OpDecorate %73 RelaxedPrecision
329e5c31af7Sopenharmony_ci               OpDecorate %75 RelaxedPrecision
330e5c31af7Sopenharmony_ci               OpDecorate %81 RelaxedPrecision
331e5c31af7Sopenharmony_ci               OpDecorate %87 RelaxedPrecision
332e5c31af7Sopenharmony_ci               OpDecorate %89 RelaxedPrecision
333e5c31af7Sopenharmony_ci               OpDecorate %92 RelaxedPrecision
334e5c31af7Sopenharmony_ci               OpDecorate %94 RelaxedPrecision
335e5c31af7Sopenharmony_ci               OpDecorate %98 RelaxedPrecision
336e5c31af7Sopenharmony_ci               OpDecorate %99 RelaxedPrecision
337e5c31af7Sopenharmony_ci               OpDecorate %101 RelaxedPrecision
338e5c31af7Sopenharmony_ci               OpDecorate %106 RelaxedPrecision
339e5c31af7Sopenharmony_ci               OpDecorate %112 RelaxedPrecision
340e5c31af7Sopenharmony_ci               OpDecorate %117 RelaxedPrecision
341e5c31af7Sopenharmony_ci               OpDecorate %119 RelaxedPrecision
342e5c31af7Sopenharmony_ci               OpDecorate %123 RelaxedPrecision
343e5c31af7Sopenharmony_ci               OpDecorate %135 RelaxedPrecision
344e5c31af7Sopenharmony_ci               OpDecorate %137 RelaxedPrecision
345e5c31af7Sopenharmony_ci               OpMemberDecorate %139 0 Offset 0
346e5c31af7Sopenharmony_ci               OpDecorate %139 Block
347e5c31af7Sopenharmony_ci               OpDecorate %141 DescriptorSet 0
348e5c31af7Sopenharmony_ci               OpDecorate %141 Binding 0
349e5c31af7Sopenharmony_ci               OpDecorate %151 RelaxedPrecision
350e5c31af7Sopenharmony_ci               OpDecorate %157 RelaxedPrecision
351e5c31af7Sopenharmony_ci               OpDecorate %160 RelaxedPrecision
352e5c31af7Sopenharmony_ci               OpDecorate %164 RelaxedPrecision
353e5c31af7Sopenharmony_ci               OpDecorate %165 RelaxedPrecision
354e5c31af7Sopenharmony_ci               OpDecorate %169 RelaxedPrecision
355e5c31af7Sopenharmony_ci               OpDecorate %171 RelaxedPrecision
356e5c31af7Sopenharmony_ci               OpDecorate %173 RelaxedPrecision
357e5c31af7Sopenharmony_ci               OpDecorate %179 RelaxedPrecision
358e5c31af7Sopenharmony_ci               OpDecorate %182 RelaxedPrecision
359e5c31af7Sopenharmony_ci               OpDecorate %183 RelaxedPrecision
360e5c31af7Sopenharmony_ci               OpDecorate %189 RelaxedPrecision
361e5c31af7Sopenharmony_ci               OpDecorate %215 RelaxedPrecision
362e5c31af7Sopenharmony_ci               OpDecorate %228 RelaxedPrecision
363e5c31af7Sopenharmony_ci               OpDecorate %237 RelaxedPrecision
364e5c31af7Sopenharmony_ci               OpDecorate %242 RelaxedPrecision
365e5c31af7Sopenharmony_ci               OpDecorate %251 RelaxedPrecision
366e5c31af7Sopenharmony_ci               OpDecorate %252 RelaxedPrecision
367e5c31af7Sopenharmony_ci               OpDecorate %255 RelaxedPrecision
368e5c31af7Sopenharmony_ci               OpDecorate %258 RelaxedPrecision
369e5c31af7Sopenharmony_ci               OpDecorate %259 RelaxedPrecision
370e5c31af7Sopenharmony_ci               OpDecorate %260 RelaxedPrecision
371e5c31af7Sopenharmony_ci               OpDecorate %261 RelaxedPrecision
372e5c31af7Sopenharmony_ci               OpDecorate %268 RelaxedPrecision
373e5c31af7Sopenharmony_ci               OpDecorate %274 RelaxedPrecision
374e5c31af7Sopenharmony_ci               OpDecorate %275 RelaxedPrecision
375e5c31af7Sopenharmony_ci               OpDecorate %276 RelaxedPrecision
376e5c31af7Sopenharmony_ci               OpDecorate %277 RelaxedPrecision
377e5c31af7Sopenharmony_ci               OpDecorate %280 RelaxedPrecision
378e5c31af7Sopenharmony_ci               OpDecorate %283 RelaxedPrecision
379e5c31af7Sopenharmony_ci               OpDecorate %284 RelaxedPrecision
380e5c31af7Sopenharmony_ci               OpDecorate %286 RelaxedPrecision
381e5c31af7Sopenharmony_ci               OpDecorate %289 RelaxedPrecision
382e5c31af7Sopenharmony_ci               OpDecorate %290 RelaxedPrecision
383e5c31af7Sopenharmony_ci               OpDecorate %292 RelaxedPrecision
384e5c31af7Sopenharmony_ci               OpDecorate %295 RelaxedPrecision
385e5c31af7Sopenharmony_ci               OpDecorate %296 RelaxedPrecision
386e5c31af7Sopenharmony_ci               OpDecorate %299 RelaxedPrecision
387e5c31af7Sopenharmony_ci               OpDecorate %302 RelaxedPrecision
388e5c31af7Sopenharmony_ci               OpDecorate %303 RelaxedPrecision
389e5c31af7Sopenharmony_ci               OpDecorate %305 RelaxedPrecision
390e5c31af7Sopenharmony_ci               OpDecorate %308 RelaxedPrecision
391e5c31af7Sopenharmony_ci               OpDecorate %309 RelaxedPrecision
392e5c31af7Sopenharmony_ci               OpDecorate %311 RelaxedPrecision
393e5c31af7Sopenharmony_ci               OpDecorate %314 RelaxedPrecision
394e5c31af7Sopenharmony_ci               OpDecorate %315 RelaxedPrecision
395e5c31af7Sopenharmony_ci               OpDecorate %316 RelaxedPrecision
396e5c31af7Sopenharmony_ci               OpDecorate %317 RelaxedPrecision
397e5c31af7Sopenharmony_ci               OpDecorate %323 RelaxedPrecision
398e5c31af7Sopenharmony_ci               OpDecorate %329 RelaxedPrecision
399e5c31af7Sopenharmony_ci               OpDecorate %330 RelaxedPrecision
400e5c31af7Sopenharmony_ci               OpDecorate %331 RelaxedPrecision
401e5c31af7Sopenharmony_ci               OpDecorate %336 RelaxedPrecision
402e5c31af7Sopenharmony_ci               OpDecorate %338 RelaxedPrecision
403e5c31af7Sopenharmony_ci               OpDecorate %342 RelaxedPrecision
404e5c31af7Sopenharmony_ci               OpDecorate %347 RelaxedPrecision
405e5c31af7Sopenharmony_ci               OpDecorate %349 RelaxedPrecision
406e5c31af7Sopenharmony_ci               OpDecorate %352 RelaxedPrecision
407e5c31af7Sopenharmony_ci               OpDecorate %355 RelaxedPrecision
408e5c31af7Sopenharmony_ci               OpDecorate %356 RelaxedPrecision
409e5c31af7Sopenharmony_ci               OpDecorate %359 RelaxedPrecision
410e5c31af7Sopenharmony_ci               OpDecorate %370 RelaxedPrecision
411e5c31af7Sopenharmony_ci               OpDecorate %371 RelaxedPrecision
412e5c31af7Sopenharmony_ci               OpDecorate %374 RelaxedPrecision
413e5c31af7Sopenharmony_ci               OpDecorate %381 BuiltIn FragCoord
414e5c31af7Sopenharmony_ci               OpDecorate %397 RelaxedPrecision
415e5c31af7Sopenharmony_ci               OpDecorate %399 RelaxedPrecision
416e5c31af7Sopenharmony_ci               OpDecorate %405 RelaxedPrecision
417e5c31af7Sopenharmony_ci               OpDecorate %408 RelaxedPrecision
418e5c31af7Sopenharmony_ci               OpDecorate %410 RelaxedPrecision
419e5c31af7Sopenharmony_ci               OpDecorate %411 RelaxedPrecision
420e5c31af7Sopenharmony_ci               OpDecorate %412 RelaxedPrecision
421e5c31af7Sopenharmony_ci               OpDecorate %417 RelaxedPrecision
422e5c31af7Sopenharmony_ci               OpDecorate %421 RelaxedPrecision
423e5c31af7Sopenharmony_ci               OpDecorate %422 RelaxedPrecision
424e5c31af7Sopenharmony_ci               OpDecorate %426 RelaxedPrecision
425e5c31af7Sopenharmony_ci               OpDecorate %427 RelaxedPrecision
426e5c31af7Sopenharmony_ci               OpDecorate %431 RelaxedPrecision
427e5c31af7Sopenharmony_ci               OpDecorate %436 Location 0
428e5c31af7Sopenharmony_ci          %2 = OpTypeVoid
429e5c31af7Sopenharmony_ci          %3 = OpTypeFunction %2
430e5c31af7Sopenharmony_ci          %6 = OpTypeInt 32 1
431e5c31af7Sopenharmony_ci          %7 = OpTypeStruct %6 %6 %6
432e5c31af7Sopenharmony_ci          %8 = OpTypePointer Function %7
433e5c31af7Sopenharmony_ci          %9 = OpTypePointer Function %6
434e5c31af7Sopenharmony_ci         %10 = OpTypeFunction %2 %8 %9
435e5c31af7Sopenharmony_ci         %15 = OpTypeFunction %2 %9 %9
436e5c31af7Sopenharmony_ci         %20 = OpTypeFunction %6 %9
437e5c31af7Sopenharmony_ci         %24 = OpTypeFloat 32
438e5c31af7Sopenharmony_ci         %25 = OpTypePointer Function %24
439e5c31af7Sopenharmony_ci         %26 = OpTypeVector %24 3
440e5c31af7Sopenharmony_ci         %27 = OpTypeFunction %26 %25
441e5c31af7Sopenharmony_ci         %31 = OpTypeFunction %24 %25
442e5c31af7Sopenharmony_ci         %35 = OpConstant %6 0
443e5c31af7Sopenharmony_ci         %38 = OpConstant %6 1
444e5c31af7Sopenharmony_ci         %39 = OpConstant %6 -1
445e5c31af7Sopenharmony_ci         %41 = OpConstant %6 2
446e5c31af7Sopenharmony_ci         %51 = OpTypeBool
447e5c31af7Sopenharmony_ci         %54 = OpTypeInt 32 0
448e5c31af7Sopenharmony_ci         %55 = OpConstant %54 10
449e5c31af7Sopenharmony_ci         %56 = OpTypeArray %7 %55
450e5c31af7Sopenharmony_ci         %57 = OpTypePointer Private %56
451e5c31af7Sopenharmony_ci         %58 = OpVariable %57 Private
452e5c31af7Sopenharmony_ci         %60 = OpTypePointer Private %6
453e5c31af7Sopenharmony_ci         %77 = OpTypePointer Private %7
454e5c31af7Sopenharmony_ci        %113 = OpConstant %54 50
455e5c31af7Sopenharmony_ci        %114 = OpTypeArray %24 %113
456e5c31af7Sopenharmony_ci        %115 = OpTypePointer Function %114
457e5c31af7Sopenharmony_ci        %120 = OpConstant %6 50
458e5c31af7Sopenharmony_ci        %138 = OpTypeVector %24 2
459e5c31af7Sopenharmony_ci        %139 = OpTypeStruct %138
460e5c31af7Sopenharmony_ci        %140 = OpTypePointer Uniform %139
461e5c31af7Sopenharmony_ci        %141 = OpVariable %140 Uniform
462e5c31af7Sopenharmony_ci        %142 = OpConstant %54 0
463e5c31af7Sopenharmony_ci        %143 = OpTypePointer Uniform %24
464e5c31af7Sopenharmony_ci        %146 = OpConstant %54 1
465e5c31af7Sopenharmony_ci        %187 = OpConstant %6 15
466e5c31af7Sopenharmony_ci        %191 = OpConstant %24 30
467e5c31af7Sopenharmony_ci        %193 = OpConstant %24 1
468e5c31af7Sopenharmony_ci        %194 = OpConstant %24 5
469e5c31af7Sopenharmony_ci        %200 = OpConstant %24 50
470e5c31af7Sopenharmony_ci        %205 = OpConstant %24 6.5
471e5c31af7Sopenharmony_ci        %209 = OpConstant %24 1.5
472e5c31af7Sopenharmony_ci        %213 = OpConstant %6 100
473e5c31af7Sopenharmony_ci        %219 = OpConstant %24 4
474e5c31af7Sopenharmony_ci        %223 = OpConstant %24 0
475e5c31af7Sopenharmony_ci        %226 = OpConstant %6 6
476e5c31af7Sopenharmony_ci        %234 = OpConstant %24 10
477e5c31af7Sopenharmony_ci        %235 = OpConstant %6 30
478e5c31af7Sopenharmony_ci        %243 = OpConstant %6 9
479e5c31af7Sopenharmony_ci        %253 = OpConstant %6 5
480e5c31af7Sopenharmony_ci        %267 = OpConstantTrue %51
481e5c31af7Sopenharmony_ci        %269 = OpConstant %6 7
482e5c31af7Sopenharmony_ci        %278 = OpConstant %6 12
483e5c31af7Sopenharmony_ci        %297 = OpConstant %6 8
484e5c31af7Sopenharmony_ci        %324 = OpConstant %6 3
485e5c31af7Sopenharmony_ci        %332 = OpTypeArray %24 %55
486e5c31af7Sopenharmony_ci        %333 = OpTypeStruct %332 %332
487e5c31af7Sopenharmony_ci        %334 = OpTypePointer Function %333
488e5c31af7Sopenharmony_ci        %339 = OpConstant %6 10
489e5c31af7Sopenharmony_ci        %357 = OpConstant %6 17
490e5c31af7Sopenharmony_ci        %372 = OpConstant %6 13
491e5c31af7Sopenharmony_ci        %377 = OpTypePointer Function %138
492e5c31af7Sopenharmony_ci        %379 = OpTypeVector %24 4
493e5c31af7Sopenharmony_ci        %380 = OpTypePointer Input %379
494e5c31af7Sopenharmony_ci        %381 = OpVariable %380 Input
495e5c31af7Sopenharmony_ci        %384 = OpConstant %24 256
496e5c31af7Sopenharmony_ci        %385 = OpConstantComposite %138 %384 %384
497e5c31af7Sopenharmony_ci        %398 = OpConstant %6 -100
498e5c31af7Sopenharmony_ci        %406 = OpConstant %6 20
499e5c31af7Sopenharmony_ci        %435 = OpTypePointer Output %379
500e5c31af7Sopenharmony_ci        %436 = OpVariable %435 Output
501e5c31af7Sopenharmony_ci        %442 = OpTypePointer Function %26
502e5c31af7Sopenharmony_ci        %446 = OpConstantComposite %26 %193 %223 %223
503e5c31af7Sopenharmony_ci          %4 = OpFunction %2 None %3
504e5c31af7Sopenharmony_ci          %5 = OpLabel
505e5c31af7Sopenharmony_ci        %242 = OpVariable %9 Function
506e5c31af7Sopenharmony_ci        %244 = OpVariable %8 Function
507e5c31af7Sopenharmony_ci        %247 = OpVariable %9 Function
508e5c31af7Sopenharmony_ci        %254 = OpVariable %9 Function
509e5c31af7Sopenharmony_ci        %256 = OpVariable %9 Function
510e5c31af7Sopenharmony_ci        %260 = OpVariable %9 Function
511e5c31af7Sopenharmony_ci        %261 = OpVariable %9 Function
512e5c31af7Sopenharmony_ci        %279 = OpVariable %9 Function
513e5c31af7Sopenharmony_ci        %281 = OpVariable %9 Function
514e5c31af7Sopenharmony_ci        %285 = OpVariable %9 Function
515e5c31af7Sopenharmony_ci        %287 = OpVariable %9 Function
516e5c31af7Sopenharmony_ci        %291 = OpVariable %9 Function
517e5c31af7Sopenharmony_ci        %293 = OpVariable %9 Function
518e5c31af7Sopenharmony_ci        %298 = OpVariable %9 Function
519e5c31af7Sopenharmony_ci        %300 = OpVariable %9 Function
520e5c31af7Sopenharmony_ci        %304 = OpVariable %9 Function
521e5c31af7Sopenharmony_ci        %306 = OpVariable %9 Function
522e5c31af7Sopenharmony_ci        %310 = OpVariable %9 Function
523e5c31af7Sopenharmony_ci        %312 = OpVariable %9 Function
524e5c31af7Sopenharmony_ci        %316 = OpVariable %9 Function
525e5c31af7Sopenharmony_ci        %317 = OpVariable %9 Function
526e5c31af7Sopenharmony_ci        %331 = OpVariable %9 Function
527e5c31af7Sopenharmony_ci        %335 = OpVariable %334 Function
528e5c31af7Sopenharmony_ci        %358 = OpVariable %9 Function
529e5c31af7Sopenharmony_ci        %360 = OpVariable %9 Function
530e5c31af7Sopenharmony_ci        %373 = OpVariable %9 Function
531e5c31af7Sopenharmony_ci        %375 = OpVariable %9 Function
532e5c31af7Sopenharmony_ci        %378 = OpVariable %377 Function
533e5c31af7Sopenharmony_ci        %387 = OpVariable %25 Function
534e5c31af7Sopenharmony_ci        %388 = OpVariable %25 Function
535e5c31af7Sopenharmony_ci        %392 = OpVariable %25 Function
536e5c31af7Sopenharmony_ci        %393 = OpVariable %25 Function
537e5c31af7Sopenharmony_ci        %397 = OpVariable %9 Function
538e5c31af7Sopenharmony_ci        %399 = OpVariable %9 Function
539e5c31af7Sopenharmony_ci        %408 = OpVariable %9 Function
540e5c31af7Sopenharmony_ci        %409 = OpVariable %9 Function
541e5c31af7Sopenharmony_ci        %428 = OpVariable %25 Function
542e5c31af7Sopenharmony_ci        %443 = OpVariable %442 Function
543e5c31af7Sopenharmony_ci        %448 = OpVariable %25 Function
544e5c31af7Sopenharmony_ci               OpStore %242 %35
545e5c31af7Sopenharmony_ci        %245 = OpAccessChain %77 %58 %35
546e5c31af7Sopenharmony_ci        %246 = OpLoad %7 %245
547e5c31af7Sopenharmony_ci               OpStore %244 %246
548e5c31af7Sopenharmony_ci               OpStore %247 %243
549e5c31af7Sopenharmony_ci        %248 = OpFunctionCall %2 %13 %244 %247
550e5c31af7Sopenharmony_ci        %249 = OpLoad %7 %244
551e5c31af7Sopenharmony_ci        %250 = OpAccessChain %77 %58 %35
552e5c31af7Sopenharmony_ci               OpStore %250 %249
553e5c31af7Sopenharmony_ci        %251 = OpLoad %6 %242
554e5c31af7Sopenharmony_ci        %252 = OpIAdd %6 %251 %38
555e5c31af7Sopenharmony_ci               OpStore %242 %252
556e5c31af7Sopenharmony_ci        %255 = OpLoad %6 %242
557e5c31af7Sopenharmony_ci               OpStore %254 %255
558e5c31af7Sopenharmony_ci               OpStore %256 %253
559e5c31af7Sopenharmony_ci        %257 = OpFunctionCall %2 %18 %254 %256
560e5c31af7Sopenharmony_ci        %258 = OpLoad %6 %242
561e5c31af7Sopenharmony_ci        %259 = OpIAdd %6 %258 %38
562e5c31af7Sopenharmony_ci               OpStore %242 %259
563e5c31af7Sopenharmony_ci               OpStore %260 %35
564e5c31af7Sopenharmony_ci               OpStore %261 %35
565e5c31af7Sopenharmony_ci               OpBranch %262
566e5c31af7Sopenharmony_ci        %262 = OpLabel
567e5c31af7Sopenharmony_ci               OpLoopMerge %264 %265 None
568e5c31af7Sopenharmony_ci               OpBranch %266
569e5c31af7Sopenharmony_ci        %266 = OpLabel
570e5c31af7Sopenharmony_ci               OpBranchConditional %267 %263 %264
571e5c31af7Sopenharmony_ci        %263 = OpLabel
572e5c31af7Sopenharmony_ci        %268 = OpLoad %6 %260
573e5c31af7Sopenharmony_ci        %270 = OpSGreaterThanEqual %51 %268 %269
574e5c31af7Sopenharmony_ci               OpSelectionMerge %272 None
575e5c31af7Sopenharmony_ci               OpBranchConditional %270 %271 %272
576e5c31af7Sopenharmony_ci        %271 = OpLabel
577e5c31af7Sopenharmony_ci               OpBranch %264
578e5c31af7Sopenharmony_ci        %272 = OpLabel
579e5c31af7Sopenharmony_ci        %274 = OpLoad %6 %260
580e5c31af7Sopenharmony_ci        %275 = OpIAdd %6 %274 %38
581e5c31af7Sopenharmony_ci               OpStore %260 %275
582e5c31af7Sopenharmony_ci               OpBranch %265
583e5c31af7Sopenharmony_ci        %265 = OpLabel
584e5c31af7Sopenharmony_ci        %276 = OpLoad %6 %261
585e5c31af7Sopenharmony_ci        %277 = OpIAdd %6 %276 %38
586e5c31af7Sopenharmony_ci               OpStore %261 %277
587e5c31af7Sopenharmony_ci               OpBranch %262
588e5c31af7Sopenharmony_ci        %264 = OpLabel
589e5c31af7Sopenharmony_ci        %280 = OpLoad %6 %242
590e5c31af7Sopenharmony_ci               OpStore %279 %280
591e5c31af7Sopenharmony_ci               OpStore %281 %278
592e5c31af7Sopenharmony_ci        %282 = OpFunctionCall %2 %18 %279 %281
593e5c31af7Sopenharmony_ci        %283 = OpLoad %6 %242
594e5c31af7Sopenharmony_ci        %284 = OpIAdd %6 %283 %38
595e5c31af7Sopenharmony_ci               OpStore %242 %284
596e5c31af7Sopenharmony_ci        %286 = OpLoad %6 %242
597e5c31af7Sopenharmony_ci               OpStore %285 %286
598e5c31af7Sopenharmony_ci               OpStore %287 %187
599e5c31af7Sopenharmony_ci        %288 = OpFunctionCall %2 %18 %285 %287
600e5c31af7Sopenharmony_ci        %289 = OpLoad %6 %242
601e5c31af7Sopenharmony_ci        %290 = OpIAdd %6 %289 %38
602e5c31af7Sopenharmony_ci               OpStore %242 %290
603e5c31af7Sopenharmony_ci        %292 = OpLoad %6 %242
604e5c31af7Sopenharmony_ci               OpStore %291 %292
605e5c31af7Sopenharmony_ci               OpStore %293 %269
606e5c31af7Sopenharmony_ci        %294 = OpFunctionCall %2 %18 %291 %293
607e5c31af7Sopenharmony_ci        %295 = OpLoad %6 %242
608e5c31af7Sopenharmony_ci        %296 = OpIAdd %6 %295 %38
609e5c31af7Sopenharmony_ci               OpStore %242 %296
610e5c31af7Sopenharmony_ci        %299 = OpLoad %6 %242
611e5c31af7Sopenharmony_ci               OpStore %298 %299
612e5c31af7Sopenharmony_ci               OpStore %300 %297
613e5c31af7Sopenharmony_ci        %301 = OpFunctionCall %2 %18 %298 %300
614e5c31af7Sopenharmony_ci        %302 = OpLoad %6 %242
615e5c31af7Sopenharmony_ci        %303 = OpIAdd %6 %302 %38
616e5c31af7Sopenharmony_ci               OpStore %242 %303
617e5c31af7Sopenharmony_ci        %305 = OpLoad %6 %242
618e5c31af7Sopenharmony_ci               OpStore %304 %305
619e5c31af7Sopenharmony_ci               OpStore %306 %41
620e5c31af7Sopenharmony_ci        %307 = OpFunctionCall %2 %18 %304 %306
621e5c31af7Sopenharmony_ci        %308 = OpLoad %6 %242
622e5c31af7Sopenharmony_ci        %309 = OpIAdd %6 %308 %38
623e5c31af7Sopenharmony_ci               OpStore %242 %309
624e5c31af7Sopenharmony_ci        %311 = OpLoad %6 %242
625e5c31af7Sopenharmony_ci               OpStore %310 %311
626e5c31af7Sopenharmony_ci               OpStore %312 %226
627e5c31af7Sopenharmony_ci        %313 = OpFunctionCall %2 %18 %310 %312
628e5c31af7Sopenharmony_ci        %314 = OpLoad %6 %242
629e5c31af7Sopenharmony_ci        %315 = OpIAdd %6 %314 %38
630e5c31af7Sopenharmony_ci               OpStore %242 %315
631e5c31af7Sopenharmony_ci               OpStore %316 %35
632e5c31af7Sopenharmony_ci               OpStore %317 %35
633e5c31af7Sopenharmony_ci               OpBranch %318
634e5c31af7Sopenharmony_ci        %318 = OpLabel
635e5c31af7Sopenharmony_ci               OpLoopMerge %320 %321 None
636e5c31af7Sopenharmony_ci               OpBranch %322
637e5c31af7Sopenharmony_ci        %322 = OpLabel
638e5c31af7Sopenharmony_ci               OpBranchConditional %267 %319 %320
639e5c31af7Sopenharmony_ci        %319 = OpLabel
640e5c31af7Sopenharmony_ci        %323 = OpLoad %6 %316
641e5c31af7Sopenharmony_ci        %325 = OpSGreaterThanEqual %51 %323 %324
642e5c31af7Sopenharmony_ci               OpSelectionMerge %327 None
643e5c31af7Sopenharmony_ci               OpBranchConditional %325 %326 %327
644e5c31af7Sopenharmony_ci        %326 = OpLabel
645e5c31af7Sopenharmony_ci               OpBranch %320
646e5c31af7Sopenharmony_ci        %327 = OpLabel
647e5c31af7Sopenharmony_ci        %329 = OpLoad %6 %316
648e5c31af7Sopenharmony_ci        %330 = OpIAdd %6 %329 %38
649e5c31af7Sopenharmony_ci               OpStore %316 %330
650e5c31af7Sopenharmony_ci               OpStore %331 %38
651e5c31af7Sopenharmony_ci        %336 = OpLoad %6 %331
652e5c31af7Sopenharmony_ci        %337 = OpSGreaterThanEqual %51 %336 %35
653e5c31af7Sopenharmony_ci        %338 = OpLoad %6 %331
654e5c31af7Sopenharmony_ci        %340 = OpSLessThan %51 %338 %339
655e5c31af7Sopenharmony_ci        %341 = OpLogicalAnd %51 %337 %340
656e5c31af7Sopenharmony_ci        %342 = OpLoad %6 %331
657e5c31af7Sopenharmony_ci        %343 = OpSelect %6 %341 %342 %35
658e5c31af7Sopenharmony_ci        %344 = OpAccessChain %25 %335 %38 %38
659e5c31af7Sopenharmony_ci        %345 = OpLoad %24 %344
660e5c31af7Sopenharmony_ci        %346 = OpAccessChain %25 %335 %38 %343
661e5c31af7Sopenharmony_ci               OpStore %346 %345
662e5c31af7Sopenharmony_ci        %347 = OpLoad %6 %317
663e5c31af7Sopenharmony_ci        %348 = OpSGreaterThanEqual %51 %347 %35
664e5c31af7Sopenharmony_ci        %349 = OpLoad %6 %317
665e5c31af7Sopenharmony_ci        %350 = OpSLessThan %51 %349 %339
666e5c31af7Sopenharmony_ci        %351 = OpLogicalAnd %51 %348 %350
667e5c31af7Sopenharmony_ci        %352 = OpLoad %6 %317
668e5c31af7Sopenharmony_ci        %353 = OpSelect %6 %351 %352 %35
669e5c31af7Sopenharmony_ci        %354 = OpAccessChain %25 %335 %38 %353
670e5c31af7Sopenharmony_ci               OpStore %354 %193
671e5c31af7Sopenharmony_ci               OpBranch %321
672e5c31af7Sopenharmony_ci        %321 = OpLabel
673e5c31af7Sopenharmony_ci        %355 = OpLoad %6 %317
674e5c31af7Sopenharmony_ci        %356 = OpIAdd %6 %355 %38
675e5c31af7Sopenharmony_ci               OpStore %317 %356
676e5c31af7Sopenharmony_ci               OpBranch %318
677e5c31af7Sopenharmony_ci        %320 = OpLabel
678e5c31af7Sopenharmony_ci        %359 = OpLoad %6 %242
679e5c31af7Sopenharmony_ci               OpStore %358 %359
680e5c31af7Sopenharmony_ci               OpStore %360 %357
681e5c31af7Sopenharmony_ci        %361 = OpFunctionCall %2 %18 %358 %360
682e5c31af7Sopenharmony_ci        %362 = OpAccessChain %143 %141 %35 %142
683e5c31af7Sopenharmony_ci        %363 = OpLoad %24 %362
684e5c31af7Sopenharmony_ci        %364 = OpAccessChain %143 %141 %35 %146
685e5c31af7Sopenharmony_ci        %365 = OpLoad %24 %364
686e5c31af7Sopenharmony_ci        %366 = OpFOrdGreaterThan %51 %363 %365
687e5c31af7Sopenharmony_ci               OpSelectionMerge %368 None
688e5c31af7Sopenharmony_ci               OpBranchConditional %366 %367 %368
689e5c31af7Sopenharmony_ci        %367 = OpLabel
690e5c31af7Sopenharmony_ci               OpReturn
691e5c31af7Sopenharmony_ci        %368 = OpLabel
692e5c31af7Sopenharmony_ci        %370 = OpLoad %6 %242
693e5c31af7Sopenharmony_ci        %371 = OpIAdd %6 %370 %38
694e5c31af7Sopenharmony_ci               OpStore %242 %371
695e5c31af7Sopenharmony_ci        %374 = OpLoad %6 %242
696e5c31af7Sopenharmony_ci               OpStore %373 %374
697e5c31af7Sopenharmony_ci               OpStore %375 %372
698e5c31af7Sopenharmony_ci        %376 = OpFunctionCall %2 %18 %373 %375
699e5c31af7Sopenharmony_ci        %382 = OpLoad %379 %381
700e5c31af7Sopenharmony_ci        %383 = OpVectorShuffle %138 %382 %382 1 0
701e5c31af7Sopenharmony_ci        %386 = OpFDiv %138 %383 %385
702e5c31af7Sopenharmony_ci               OpStore %378 %386
703e5c31af7Sopenharmony_ci        %389 = OpAccessChain %25 %378 %142
704e5c31af7Sopenharmony_ci        %390 = OpLoad %24 %389
705e5c31af7Sopenharmony_ci               OpStore %388 %390
706e5c31af7Sopenharmony_ci        %391 = OpFunctionCall %24 %33 %388
707e5c31af7Sopenharmony_ci               OpStore %387 %391
708e5c31af7Sopenharmony_ci        %394 = OpAccessChain %25 %378 %146
709e5c31af7Sopenharmony_ci        %395 = OpLoad %24 %394
710e5c31af7Sopenharmony_ci               OpStore %393 %395
711e5c31af7Sopenharmony_ci        %396 = OpFunctionCall %24 %33 %393
712e5c31af7Sopenharmony_ci               OpStore %392 %396
713e5c31af7Sopenharmony_ci               OpStore %397 %398
714e5c31af7Sopenharmony_ci               OpStore %399 %35
715e5c31af7Sopenharmony_ci               OpBranch %400
716e5c31af7Sopenharmony_ci        %400 = OpLabel
717e5c31af7Sopenharmony_ci               OpLoopMerge %402 %403 None
718e5c31af7Sopenharmony_ci               OpBranch %404
719e5c31af7Sopenharmony_ci        %404 = OpLabel
720e5c31af7Sopenharmony_ci        %405 = OpLoad %6 %399
721e5c31af7Sopenharmony_ci        %407 = OpSLessThan %51 %405 %406
722e5c31af7Sopenharmony_ci               OpBranchConditional %407 %401 %402
723e5c31af7Sopenharmony_ci        %401 = OpLabel
724e5c31af7Sopenharmony_ci        %410 = OpLoad %6 %399
725e5c31af7Sopenharmony_ci               OpStore %409 %410
726e5c31af7Sopenharmony_ci        %411 = OpFunctionCall %6 %22 %409
727e5c31af7Sopenharmony_ci               OpStore %408 %411
728e5c31af7Sopenharmony_ci        %412 = OpLoad %6 %408
729e5c31af7Sopenharmony_ci        %413 = OpSGreaterThan %51 %412 %35
730e5c31af7Sopenharmony_ci               OpSelectionMerge %415 None
731e5c31af7Sopenharmony_ci               OpBranchConditional %413 %414 %416
732e5c31af7Sopenharmony_ci        %414 = OpLabel
733e5c31af7Sopenharmony_ci               OpBranch %415
734e5c31af7Sopenharmony_ci        %416 = OpLabel
735e5c31af7Sopenharmony_ci        %417 = OpLoad %6 %408
736e5c31af7Sopenharmony_ci               OpSelectionMerge %420 None
737e5c31af7Sopenharmony_ci               OpSwitch %417 %420 -1 %418 0 %419
738e5c31af7Sopenharmony_ci        %418 = OpLabel
739e5c31af7Sopenharmony_ci        %421 = OpLoad %6 %397
740e5c31af7Sopenharmony_ci        %422 = OpIAdd %6 %421 %38
741e5c31af7Sopenharmony_ci               OpStore %397 %422
742e5c31af7Sopenharmony_ci               OpBranch %420
743e5c31af7Sopenharmony_ci        %419 = OpLabel
744e5c31af7Sopenharmony_ci               OpReturn
745e5c31af7Sopenharmony_ci        %420 = OpLabel
746e5c31af7Sopenharmony_ci               OpBranch %415
747e5c31af7Sopenharmony_ci        %415 = OpLabel
748e5c31af7Sopenharmony_ci               OpBranch %403
749e5c31af7Sopenharmony_ci        %403 = OpLabel
750e5c31af7Sopenharmony_ci        %426 = OpLoad %6 %399
751e5c31af7Sopenharmony_ci        %427 = OpIAdd %6 %426 %38
752e5c31af7Sopenharmony_ci               OpStore %399 %427
753e5c31af7Sopenharmony_ci               OpBranch %400
754e5c31af7Sopenharmony_ci        %402 = OpLabel
755e5c31af7Sopenharmony_ci        %429 = OpLoad %24 %387
756e5c31af7Sopenharmony_ci        %430 = OpLoad %24 %392
757e5c31af7Sopenharmony_ci        %431 = OpLoad %6 %397
758e5c31af7Sopenharmony_ci        %432 = OpConvertSToF %24 %431
759e5c31af7Sopenharmony_ci        %433 = OpFMul %24 %430 %432
760e5c31af7Sopenharmony_ci        %434 = OpFAdd %24 %429 %433
761e5c31af7Sopenharmony_ci               OpStore %428 %434
762e5c31af7Sopenharmony_ci        %437 = OpAccessChain %143 %141 %35 %142
763e5c31af7Sopenharmony_ci        %438 = OpLoad %24 %437
764e5c31af7Sopenharmony_ci        %439 = OpAccessChain %143 %141 %35 %146
765e5c31af7Sopenharmony_ci        %440 = OpLoad %24 %439
766e5c31af7Sopenharmony_ci        %441 = OpFOrdLessThan %51 %438 %440
767e5c31af7Sopenharmony_ci               OpSelectionMerge %445 None
768e5c31af7Sopenharmony_ci               OpBranchConditional %441 %444 %447
769e5c31af7Sopenharmony_ci        %444 = OpLabel
770e5c31af7Sopenharmony_ci               OpStore %443 %446
771e5c31af7Sopenharmony_ci               OpBranch %445
772e5c31af7Sopenharmony_ci        %447 = OpLabel
773e5c31af7Sopenharmony_ci        %449 = OpLoad %24 %428
774e5c31af7Sopenharmony_ci               OpStore %448 %449
775e5c31af7Sopenharmony_ci        %450 = OpFunctionCall %26 %29 %448
776e5c31af7Sopenharmony_ci               OpStore %443 %450
777e5c31af7Sopenharmony_ci               OpBranch %445
778e5c31af7Sopenharmony_ci        %445 = OpLabel
779e5c31af7Sopenharmony_ci        %451 = OpLoad %26 %443
780e5c31af7Sopenharmony_ci        %452 = OpCompositeExtract %24 %451 0
781e5c31af7Sopenharmony_ci        %453 = OpCompositeExtract %24 %451 1
782e5c31af7Sopenharmony_ci        %454 = OpCompositeExtract %24 %451 2
783e5c31af7Sopenharmony_ci        %455 = OpCompositeConstruct %379 %452 %453 %454 %193
784e5c31af7Sopenharmony_ci               OpStore %436 %455
785e5c31af7Sopenharmony_ci               OpReturn
786e5c31af7Sopenharmony_ci               OpFunctionEnd
787e5c31af7Sopenharmony_ci         %13 = OpFunction %2 None %10
788e5c31af7Sopenharmony_ci         %11 = OpFunctionParameter %8
789e5c31af7Sopenharmony_ci         %12 = OpFunctionParameter %9
790e5c31af7Sopenharmony_ci         %14 = OpLabel
791e5c31af7Sopenharmony_ci         %36 = OpLoad %6 %12
792e5c31af7Sopenharmony_ci         %37 = OpAccessChain %9 %11 %35
793e5c31af7Sopenharmony_ci               OpStore %37 %36
794e5c31af7Sopenharmony_ci         %40 = OpAccessChain %9 %11 %38
795e5c31af7Sopenharmony_ci               OpStore %40 %39
796e5c31af7Sopenharmony_ci         %42 = OpAccessChain %9 %11 %41
797e5c31af7Sopenharmony_ci               OpStore %42 %39
798e5c31af7Sopenharmony_ci               OpReturn
799e5c31af7Sopenharmony_ci               OpFunctionEnd
800e5c31af7Sopenharmony_ci         %18 = OpFunction %2 None %15
801e5c31af7Sopenharmony_ci         %16 = OpFunctionParameter %9
802e5c31af7Sopenharmony_ci         %17 = OpFunctionParameter %9
803e5c31af7Sopenharmony_ci         %19 = OpLabel
804e5c31af7Sopenharmony_ci         %43 = OpVariable %9 Function
805e5c31af7Sopenharmony_ci         %76 = OpVariable %8 Function
806e5c31af7Sopenharmony_ci         %80 = OpVariable %9 Function
807e5c31af7Sopenharmony_ci        %102 = OpVariable %8 Function
808e5c31af7Sopenharmony_ci        %105 = OpVariable %9 Function
809e5c31af7Sopenharmony_ci        %112 = OpVariable %9 Function
810e5c31af7Sopenharmony_ci        %116 = OpVariable %115 Function
811e5c31af7Sopenharmony_ci               OpStore %43 %35
812e5c31af7Sopenharmony_ci               OpBranch %44
813e5c31af7Sopenharmony_ci         %44 = OpLabel
814e5c31af7Sopenharmony_ci               OpLoopMerge %46 %47 None
815e5c31af7Sopenharmony_ci               OpBranch %48
816e5c31af7Sopenharmony_ci         %48 = OpLabel
817e5c31af7Sopenharmony_ci         %49 = OpLoad %6 %43
818e5c31af7Sopenharmony_ci         %50 = OpLoad %6 %16
819e5c31af7Sopenharmony_ci         %52 = OpSLessThanEqual %51 %49 %50
820e5c31af7Sopenharmony_ci               OpBranchConditional %52 %45 %46
821e5c31af7Sopenharmony_ci         %45 = OpLabel
822e5c31af7Sopenharmony_ci         %53 = OpLoad %6 %17
823e5c31af7Sopenharmony_ci         %59 = OpLoad %6 %43
824e5c31af7Sopenharmony_ci         %61 = OpAccessChain %60 %58 %59 %35
825e5c31af7Sopenharmony_ci         %62 = OpLoad %6 %61
826e5c31af7Sopenharmony_ci         %63 = OpSLessThanEqual %51 %53 %62
827e5c31af7Sopenharmony_ci               OpSelectionMerge %65 None
828e5c31af7Sopenharmony_ci               OpBranchConditional %63 %64 %91
829e5c31af7Sopenharmony_ci         %64 = OpLabel
830e5c31af7Sopenharmony_ci         %66 = OpLoad %6 %43
831e5c31af7Sopenharmony_ci         %67 = OpAccessChain %60 %58 %66 %38
832e5c31af7Sopenharmony_ci         %68 = OpLoad %6 %67
833e5c31af7Sopenharmony_ci         %69 = OpIEqual %51 %68 %39
834e5c31af7Sopenharmony_ci               OpSelectionMerge %71 None
835e5c31af7Sopenharmony_ci               OpBranchConditional %69 %70 %86
836e5c31af7Sopenharmony_ci         %70 = OpLabel
837e5c31af7Sopenharmony_ci         %72 = OpLoad %6 %43
838e5c31af7Sopenharmony_ci         %73 = OpLoad %6 %16
839e5c31af7Sopenharmony_ci         %74 = OpAccessChain %60 %58 %72 %38
840e5c31af7Sopenharmony_ci               OpStore %74 %73
841e5c31af7Sopenharmony_ci         %75 = OpLoad %6 %16
842e5c31af7Sopenharmony_ci         %78 = OpAccessChain %77 %58 %75
843e5c31af7Sopenharmony_ci         %79 = OpLoad %7 %78
844e5c31af7Sopenharmony_ci               OpStore %76 %79
845e5c31af7Sopenharmony_ci         %81 = OpLoad %6 %17
846e5c31af7Sopenharmony_ci               OpStore %80 %81
847e5c31af7Sopenharmony_ci         %82 = OpFunctionCall %2 %13 %76 %80
848e5c31af7Sopenharmony_ci         %83 = OpLoad %7 %76
849e5c31af7Sopenharmony_ci         %84 = OpAccessChain %77 %58 %75
850e5c31af7Sopenharmony_ci               OpStore %84 %83
851e5c31af7Sopenharmony_ci               OpReturn
852e5c31af7Sopenharmony_ci         %86 = OpLabel
853e5c31af7Sopenharmony_ci         %87 = OpLoad %6 %43
854e5c31af7Sopenharmony_ci         %88 = OpAccessChain %60 %58 %87 %38
855e5c31af7Sopenharmony_ci         %89 = OpLoad %6 %88
856e5c31af7Sopenharmony_ci               OpStore %43 %89
857e5c31af7Sopenharmony_ci               OpBranch %47
858e5c31af7Sopenharmony_ci         %71 = OpLabel
859e5c31af7Sopenharmony_ci               OpBranch %65
860e5c31af7Sopenharmony_ci         %91 = OpLabel
861e5c31af7Sopenharmony_ci         %92 = OpLoad %6 %43
862e5c31af7Sopenharmony_ci         %93 = OpAccessChain %60 %58 %92 %41
863e5c31af7Sopenharmony_ci         %94 = OpLoad %6 %93
864e5c31af7Sopenharmony_ci         %95 = OpIEqual %51 %94 %39
865e5c31af7Sopenharmony_ci               OpSelectionMerge %97 None
866e5c31af7Sopenharmony_ci               OpBranchConditional %95 %96 %111
867e5c31af7Sopenharmony_ci         %96 = OpLabel
868e5c31af7Sopenharmony_ci         %98 = OpLoad %6 %43
869e5c31af7Sopenharmony_ci         %99 = OpLoad %6 %16
870e5c31af7Sopenharmony_ci        %100 = OpAccessChain %60 %58 %98 %41
871e5c31af7Sopenharmony_ci               OpStore %100 %99
872e5c31af7Sopenharmony_ci        %101 = OpLoad %6 %16
873e5c31af7Sopenharmony_ci        %103 = OpAccessChain %77 %58 %101
874e5c31af7Sopenharmony_ci        %104 = OpLoad %7 %103
875e5c31af7Sopenharmony_ci               OpStore %102 %104
876e5c31af7Sopenharmony_ci        %106 = OpLoad %6 %17
877e5c31af7Sopenharmony_ci               OpStore %105 %106
878e5c31af7Sopenharmony_ci        %107 = OpFunctionCall %2 %13 %102 %105
879e5c31af7Sopenharmony_ci        %108 = OpLoad %7 %102
880e5c31af7Sopenharmony_ci        %109 = OpAccessChain %77 %58 %101
881e5c31af7Sopenharmony_ci               OpStore %109 %108
882e5c31af7Sopenharmony_ci               OpReturn
883e5c31af7Sopenharmony_ci        %111 = OpLabel
884e5c31af7Sopenharmony_ci               OpStore %112 %38
885e5c31af7Sopenharmony_ci        %117 = OpLoad %6 %112
886e5c31af7Sopenharmony_ci        %118 = OpSGreaterThanEqual %51 %117 %35
887e5c31af7Sopenharmony_ci        %119 = OpLoad %6 %112
888e5c31af7Sopenharmony_ci        %121 = OpSLessThan %51 %119 %120
889e5c31af7Sopenharmony_ci        %122 = OpLogicalAnd %51 %118 %121
890e5c31af7Sopenharmony_ci        %123 = OpLoad %6 %112
891e5c31af7Sopenharmony_ci        %124 = OpSelect %6 %122 %123 %35
892e5c31af7Sopenharmony_ci        %125 = OpAccessChain %25 %116 %35
893e5c31af7Sopenharmony_ci        %126 = OpLoad %24 %125
894e5c31af7Sopenharmony_ci        %127 = OpAccessChain %25 %116 %124
895e5c31af7Sopenharmony_ci        %128 = OpLoad %24 %127
896e5c31af7Sopenharmony_ci        %129 = OpFAdd %24 %128 %126
897e5c31af7Sopenharmony_ci        %130 = OpAccessChain %25 %116 %124
898e5c31af7Sopenharmony_ci               OpStore %130 %129
899e5c31af7Sopenharmony_ci               OpBranch %131
900e5c31af7Sopenharmony_ci        %131 = OpLabel
901e5c31af7Sopenharmony_ci               OpLoopMerge %133 %134 None
902e5c31af7Sopenharmony_ci               OpBranch %132
903e5c31af7Sopenharmony_ci        %132 = OpLabel
904e5c31af7Sopenharmony_ci        %135 = OpLoad %6 %43
905e5c31af7Sopenharmony_ci        %136 = OpAccessChain %60 %58 %135 %41
906e5c31af7Sopenharmony_ci        %137 = OpLoad %6 %136
907e5c31af7Sopenharmony_ci               OpStore %43 %137
908e5c31af7Sopenharmony_ci               OpBranch %134
909e5c31af7Sopenharmony_ci        %134 = OpLabel
910e5c31af7Sopenharmony_ci        %144 = OpAccessChain %143 %141 %35 %142
911e5c31af7Sopenharmony_ci        %145 = OpLoad %24 %144
912e5c31af7Sopenharmony_ci        %147 = OpAccessChain %143 %141 %35 %146
913e5c31af7Sopenharmony_ci        %148 = OpLoad %24 %147
914e5c31af7Sopenharmony_ci        %149 = OpFOrdGreaterThan %51 %145 %148
915e5c31af7Sopenharmony_ci               OpBranchConditional %149 %131 %133
916e5c31af7Sopenharmony_ci        %133 = OpLabel
917e5c31af7Sopenharmony_ci               OpBranch %47
918e5c31af7Sopenharmony_ci         %97 = OpLabel
919e5c31af7Sopenharmony_ci               OpBranch %65
920e5c31af7Sopenharmony_ci         %65 = OpLabel
921e5c31af7Sopenharmony_ci               OpBranch %47
922e5c31af7Sopenharmony_ci         %47 = OpLabel
923e5c31af7Sopenharmony_ci               OpBranch %44
924e5c31af7Sopenharmony_ci         %46 = OpLabel
925e5c31af7Sopenharmony_ci               OpReturn
926e5c31af7Sopenharmony_ci               OpFunctionEnd
927e5c31af7Sopenharmony_ci         %22 = OpFunction %6 None %20
928e5c31af7Sopenharmony_ci         %21 = OpFunctionParameter %9
929e5c31af7Sopenharmony_ci         %23 = OpLabel
930e5c31af7Sopenharmony_ci        %151 = OpVariable %9 Function
931e5c31af7Sopenharmony_ci        %159 = OpVariable %8 Function
932e5c31af7Sopenharmony_ci        %175 = OpVariable %9 Function
933e5c31af7Sopenharmony_ci               OpStore %151 %35
934e5c31af7Sopenharmony_ci               OpBranch %152
935e5c31af7Sopenharmony_ci        %152 = OpLabel
936e5c31af7Sopenharmony_ci               OpLoopMerge %154 %155 None
937e5c31af7Sopenharmony_ci               OpBranch %156
938e5c31af7Sopenharmony_ci        %156 = OpLabel
939e5c31af7Sopenharmony_ci        %157 = OpLoad %6 %151
940e5c31af7Sopenharmony_ci        %158 = OpINotEqual %51 %157 %39
941e5c31af7Sopenharmony_ci               OpBranchConditional %158 %153 %154
942e5c31af7Sopenharmony_ci        %153 = OpLabel
943e5c31af7Sopenharmony_ci        %160 = OpLoad %6 %151
944e5c31af7Sopenharmony_ci        %161 = OpAccessChain %77 %58 %160
945e5c31af7Sopenharmony_ci        %162 = OpLoad %7 %161
946e5c31af7Sopenharmony_ci               OpStore %159 %162
947e5c31af7Sopenharmony_ci        %163 = OpAccessChain %9 %159 %35
948e5c31af7Sopenharmony_ci        %164 = OpLoad %6 %163
949e5c31af7Sopenharmony_ci        %165 = OpLoad %6 %21
950e5c31af7Sopenharmony_ci        %166 = OpIEqual %51 %164 %165
951e5c31af7Sopenharmony_ci               OpSelectionMerge %168 None
952e5c31af7Sopenharmony_ci               OpBranchConditional %166 %167 %168
953e5c31af7Sopenharmony_ci        %167 = OpLabel
954e5c31af7Sopenharmony_ci        %169 = OpLoad %6 %21
955e5c31af7Sopenharmony_ci               OpReturnValue %169
956e5c31af7Sopenharmony_ci        %168 = OpLabel
957e5c31af7Sopenharmony_ci        %171 = OpLoad %6 %21
958e5c31af7Sopenharmony_ci        %172 = OpAccessChain %9 %159 %35
959e5c31af7Sopenharmony_ci        %173 = OpLoad %6 %172
960e5c31af7Sopenharmony_ci        %174 = OpSGreaterThan %51 %171 %173
961e5c31af7Sopenharmony_ci               OpSelectionMerge %177 None
962e5c31af7Sopenharmony_ci               OpBranchConditional %174 %176 %180
963e5c31af7Sopenharmony_ci        %176 = OpLabel
964e5c31af7Sopenharmony_ci        %178 = OpAccessChain %9 %159 %41
965e5c31af7Sopenharmony_ci        %179 = OpLoad %6 %178
966e5c31af7Sopenharmony_ci               OpStore %175 %179
967e5c31af7Sopenharmony_ci               OpBranch %177
968e5c31af7Sopenharmony_ci        %180 = OpLabel
969e5c31af7Sopenharmony_ci        %181 = OpAccessChain %9 %159 %38
970e5c31af7Sopenharmony_ci        %182 = OpLoad %6 %181
971e5c31af7Sopenharmony_ci               OpStore %175 %182
972e5c31af7Sopenharmony_ci               OpBranch %177
973e5c31af7Sopenharmony_ci        %177 = OpLabel
974e5c31af7Sopenharmony_ci        %183 = OpLoad %6 %175
975e5c31af7Sopenharmony_ci               OpStore %151 %183
976e5c31af7Sopenharmony_ci               OpBranch %155
977e5c31af7Sopenharmony_ci        %155 = OpLabel
978e5c31af7Sopenharmony_ci               OpBranch %152
979e5c31af7Sopenharmony_ci        %154 = OpLabel
980e5c31af7Sopenharmony_ci               OpReturnValue %39
981e5c31af7Sopenharmony_ci               OpFunctionEnd
982e5c31af7Sopenharmony_ci         %29 = OpFunction %26 None %27
983e5c31af7Sopenharmony_ci         %28 = OpFunctionParameter %25
984e5c31af7Sopenharmony_ci         %30 = OpLabel
985e5c31af7Sopenharmony_ci        %186 = OpVariable %25 Function
986e5c31af7Sopenharmony_ci        %188 = OpVariable %9 Function
987e5c31af7Sopenharmony_ci               OpStore %188 %187
988e5c31af7Sopenharmony_ci        %189 = OpFunctionCall %6 %22 %188
989e5c31af7Sopenharmony_ci        %190 = OpConvertSToF %24 %189
990e5c31af7Sopenharmony_ci               OpStore %186 %190
991e5c31af7Sopenharmony_ci        %192 = OpLoad %24 %28
992e5c31af7Sopenharmony_ci        %195 = OpLoad %24 %186
993e5c31af7Sopenharmony_ci        %196 = OpCompositeConstruct %26 %193 %194 %195
994e5c31af7Sopenharmony_ci        %197 = OpVectorTimesScalar %26 %196 %192
995e5c31af7Sopenharmony_ci        %198 = OpCompositeConstruct %26 %191 %191 %191
996e5c31af7Sopenharmony_ci        %199 = OpFAdd %26 %198 %197
997e5c31af7Sopenharmony_ci        %201 = OpCompositeConstruct %26 %200 %200 %200
998e5c31af7Sopenharmony_ci        %202 = OpFDiv %26 %199 %201
999e5c31af7Sopenharmony_ci               OpReturnValue %202
1000e5c31af7Sopenharmony_ci               OpFunctionEnd
1001e5c31af7Sopenharmony_ci         %33 = OpFunction %24 None %31
1002e5c31af7Sopenharmony_ci         %32 = OpFunctionParameter %25
1003e5c31af7Sopenharmony_ci         %34 = OpLabel
1004e5c31af7Sopenharmony_ci        %214 = OpVariable %9 Function
1005e5c31af7Sopenharmony_ci        %227 = OpVariable %9 Function
1006e5c31af7Sopenharmony_ci        %236 = OpVariable %9 Function
1007e5c31af7Sopenharmony_ci        %206 = OpLoad %24 %32
1008e5c31af7Sopenharmony_ci        %207 = OpFMul %24 %206 %205
1009e5c31af7Sopenharmony_ci               OpStore %32 %207
1010e5c31af7Sopenharmony_ci        %208 = OpLoad %24 %32
1011e5c31af7Sopenharmony_ci        %210 = OpFOrdLessThan %51 %208 %209
1012e5c31af7Sopenharmony_ci               OpSelectionMerge %212 None
1013e5c31af7Sopenharmony_ci               OpBranchConditional %210 %211 %212
1014e5c31af7Sopenharmony_ci        %211 = OpLabel
1015e5c31af7Sopenharmony_ci               OpStore %214 %213
1016e5c31af7Sopenharmony_ci        %215 = OpFunctionCall %6 %22 %214
1017e5c31af7Sopenharmony_ci        %216 = OpConvertSToF %24 %215
1018e5c31af7Sopenharmony_ci               OpReturnValue %216
1019e5c31af7Sopenharmony_ci        %212 = OpLabel
1020e5c31af7Sopenharmony_ci        %218 = OpLoad %24 %32
1021e5c31af7Sopenharmony_ci        %220 = OpFOrdLessThan %51 %218 %219
1022e5c31af7Sopenharmony_ci               OpSelectionMerge %222 None
1023e5c31af7Sopenharmony_ci               OpBranchConditional %220 %221 %222
1024e5c31af7Sopenharmony_ci        %221 = OpLabel
1025e5c31af7Sopenharmony_ci               OpReturnValue %223
1026e5c31af7Sopenharmony_ci        %222 = OpLabel
1027e5c31af7Sopenharmony_ci        %225 = OpLoad %24 %32
1028e5c31af7Sopenharmony_ci               OpStore %227 %226
1029e5c31af7Sopenharmony_ci        %228 = OpFunctionCall %6 %22 %227
1030e5c31af7Sopenharmony_ci        %229 = OpConvertSToF %24 %228
1031e5c31af7Sopenharmony_ci        %230 = OpFOrdLessThan %51 %225 %229
1032e5c31af7Sopenharmony_ci               OpSelectionMerge %232 None
1033e5c31af7Sopenharmony_ci               OpBranchConditional %230 %231 %232
1034e5c31af7Sopenharmony_ci        %231 = OpLabel
1035e5c31af7Sopenharmony_ci               OpReturnValue %193
1036e5c31af7Sopenharmony_ci        %232 = OpLabel
1037e5c31af7Sopenharmony_ci               OpStore %236 %235
1038e5c31af7Sopenharmony_ci        %237 = OpFunctionCall %6 %22 %236
1039e5c31af7Sopenharmony_ci        %238 = OpConvertSToF %24 %237
1040e5c31af7Sopenharmony_ci        %239 = OpFAdd %24 %234 %238
1041e5c31af7Sopenharmony_ci               OpReturnValue %239
1042e5c31af7Sopenharmony_ci               OpFunctionEnd
1043e5c31af7Sopenharmony_ciEND
1044e5c31af7Sopenharmony_ci
1045e5c31af7Sopenharmony_ci# uniforms for variant
1046e5c31af7Sopenharmony_ci
1047e5c31af7Sopenharmony_ci# injectionSwitch
1048e5c31af7Sopenharmony_ciBUFFER variant_injectionSwitch DATA_TYPE vec2<float> DATA
1049e5c31af7Sopenharmony_ci 0.0 1.0
1050e5c31af7Sopenharmony_ciEND
1051e5c31af7Sopenharmony_ci
1052e5c31af7Sopenharmony_ciBUFFER framebuffer FORMAT B8G8R8A8_UNORM
1053e5c31af7Sopenharmony_ci
1054e5c31af7Sopenharmony_ciPIPELINE graphics gfz_pipeline
1055e5c31af7Sopenharmony_ci  ATTACH variant_vertex_shader
1056e5c31af7Sopenharmony_ci  ATTACH variant_fragment_shader
1057e5c31af7Sopenharmony_ci  FRAMEBUFFER_SIZE 256 256
1058e5c31af7Sopenharmony_ci  BIND BUFFER framebuffer AS color LOCATION 0
1059e5c31af7Sopenharmony_ci  BIND BUFFER variant_injectionSwitch AS uniform DESCRIPTOR_SET 0 BINDING 0
1060e5c31af7Sopenharmony_ciEND
1061e5c31af7Sopenharmony_ciCLEAR_COLOR gfz_pipeline 0 0 0 255
1062e5c31af7Sopenharmony_ci
1063e5c31af7Sopenharmony_ciCLEAR gfz_pipeline
1064e5c31af7Sopenharmony_ciRUN gfz_pipeline DRAW_RECT POS 0 0 SIZE 256 256
1065e5c31af7Sopenharmony_ciEXPECT framebuffer IDX 0 0 SIZE 256 256 EQ_RGB 255 0 0