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