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