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