1e5c31af7Sopenharmony_ci#!amber 2e5c31af7Sopenharmony_ci 3e5c31af7Sopenharmony_ci# Copyright 2021 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# 29e5c31af7Sopenharmony_ci# #define _int_5 _GLF_uniform_int_values[0] 30e5c31af7Sopenharmony_ci# #define _int_3 _GLF_uniform_int_values[1] 31e5c31af7Sopenharmony_ci# #define _int_4 _GLF_uniform_int_values[2] 32e5c31af7Sopenharmony_ci# #define _int_6 _GLF_uniform_int_values[3] 33e5c31af7Sopenharmony_ci# #define _int_7 _GLF_uniform_int_values[4] 34e5c31af7Sopenharmony_ci# #define _int_8 _GLF_uniform_int_values[5] 35e5c31af7Sopenharmony_ci# #define _int_1 _GLF_uniform_int_values[6] 36e5c31af7Sopenharmony_ci# #define _int_0 _GLF_uniform_int_values[7] 37e5c31af7Sopenharmony_ci# #define _int_2 _GLF_uniform_int_values[8] 38e5c31af7Sopenharmony_ci# #define _int_9 _GLF_uniform_int_values[9] 39e5c31af7Sopenharmony_ci# #define _int_1065353216 _GLF_uniform_int_values[10] 40e5c31af7Sopenharmony_ci# 41e5c31af7Sopenharmony_ci# precision highp int; 42e5c31af7Sopenharmony_ci# precision highp float; 43e5c31af7Sopenharmony_ci# 44e5c31af7Sopenharmony_ci# // Contents of _GLF_uniform_int_values: [5, 3, 4, 6, 7, 8, 1, 0, 2, 9, 1065353216] 45e5c31af7Sopenharmony_ci# layout(set = 0, binding = 0) uniform buf0 46e5c31af7Sopenharmony_ci# { 47e5c31af7Sopenharmony_ci# int _GLF_uniform_int_values[11]; 48e5c31af7Sopenharmony_ci# }; 49e5c31af7Sopenharmony_ci# 50e5c31af7Sopenharmony_ci# layout(location = 0) out vec4 _GLF_color; 51e5c31af7Sopenharmony_ci# 52e5c31af7Sopenharmony_ci# void main() 53e5c31af7Sopenharmony_ci# { 54e5c31af7Sopenharmony_ci# // a becomes 1065353216. 55e5c31af7Sopenharmony_ci# int a = floatBitsToInt(1.0); 56e5c31af7Sopenharmony_ci# int arr[9] = int[9](_int_1, _int_2, _int_3, _int_4, _int_5, _int_6, _int_7, _int_8, _int_9); 57e5c31af7Sopenharmony_ci# 58e5c31af7Sopenharmony_ci# // During the loop only arr[8] changes to zero. 59e5c31af7Sopenharmony_ci# for(int i = 0; i < 5; i ++) 60e5c31af7Sopenharmony_ci# { 61e5c31af7Sopenharmony_ci# for(int j = 0; j < 5; j ++) 62e5c31af7Sopenharmony_ci# { 63e5c31af7Sopenharmony_ci# // a is a large number making the clamp always return 8. 64e5c31af7Sopenharmony_ci# int idx = clamp(a, 0, 8); 65e5c31af7Sopenharmony_ci# // Sets the last array element to zero. 66e5c31af7Sopenharmony_ci# arr[idx] = _int_0; 67e5c31af7Sopenharmony_ci# 68e5c31af7Sopenharmony_ci# for(int k = _int_0; k < i; k ++) 69e5c31af7Sopenharmony_ci# { 70e5c31af7Sopenharmony_ci# for(int l = 0; l < j; l ++) 71e5c31af7Sopenharmony_ci# { 72e5c31af7Sopenharmony_ci# // These cases get all hit at some point, but 73e5c31af7Sopenharmony_ci# // they only affect the last element as idx is 74e5c31af7Sopenharmony_ci# // always eight. Even that value gets overwritten 75e5c31af7Sopenharmony_ci# // by zero (see the code above) and the last 76e5c31af7Sopenharmony_ci# // iterations don't hit any of these cases making 77e5c31af7Sopenharmony_ci# // the final value zero. 78e5c31af7Sopenharmony_ci# switch(a - _int_1065353216) 79e5c31af7Sopenharmony_ci# { 80e5c31af7Sopenharmony_ci# case 6: 81e5c31af7Sopenharmony_ci# arr[idx] += _int_1; 82e5c31af7Sopenharmony_ci# break; 83e5c31af7Sopenharmony_ci# case 7: 84e5c31af7Sopenharmony_ci# arr[idx] += _int_2; 85e5c31af7Sopenharmony_ci# break; 86e5c31af7Sopenharmony_ci# case 8: 87e5c31af7Sopenharmony_ci# arr[idx] += _int_3; 88e5c31af7Sopenharmony_ci# break; 89e5c31af7Sopenharmony_ci# case 9: 90e5c31af7Sopenharmony_ci# arr[idx] += _int_4; 91e5c31af7Sopenharmony_ci# break; 92e5c31af7Sopenharmony_ci# case 10: 93e5c31af7Sopenharmony_ci# arr[idx] += _int_5; 94e5c31af7Sopenharmony_ci# break; 95e5c31af7Sopenharmony_ci# } 96e5c31af7Sopenharmony_ci# } 97e5c31af7Sopenharmony_ci# } 98e5c31af7Sopenharmony_ci# a++; 99e5c31af7Sopenharmony_ci# } 100e5c31af7Sopenharmony_ci# } 101e5c31af7Sopenharmony_ci# 102e5c31af7Sopenharmony_ci# int ref[9] = int[9](_int_1, _int_2, _int_3, _int_4, _int_5, _int_6, _int_7, _int_8, _int_0); 103e5c31af7Sopenharmony_ci# 104e5c31af7Sopenharmony_ci# _GLF_color = vec4(_int_1, _int_0, _int_0, _int_1); 105e5c31af7Sopenharmony_ci# 106e5c31af7Sopenharmony_ci# // Verify results. 107e5c31af7Sopenharmony_ci# for(int i = _int_0; i < _int_9; i ++) 108e5c31af7Sopenharmony_ci# { 109e5c31af7Sopenharmony_ci# if(arr[i] != ref[i]) 110e5c31af7Sopenharmony_ci# { 111e5c31af7Sopenharmony_ci# // Indicate a failure. 112e5c31af7Sopenharmony_ci# _GLF_color = vec4(_int_0); 113e5c31af7Sopenharmony_ci# } 114e5c31af7Sopenharmony_ci# } 115e5c31af7Sopenharmony_ci# } 116e5c31af7Sopenharmony_ciSHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0 117e5c31af7Sopenharmony_ci; SPIR-V 118e5c31af7Sopenharmony_ci; Version: 1.0 119e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 10 120e5c31af7Sopenharmony_ci; Bound: 221 121e5c31af7Sopenharmony_ci; Schema: 0 122e5c31af7Sopenharmony_ci OpCapability Shader 123e5c31af7Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 124e5c31af7Sopenharmony_ci OpMemoryModel Logical GLSL450 125e5c31af7Sopenharmony_ci OpEntryPoint Fragment %4 "main" %180 126e5c31af7Sopenharmony_ci OpExecutionMode %4 OriginUpperLeft 127e5c31af7Sopenharmony_ci OpSource ESSL 320 128e5c31af7Sopenharmony_ci OpName %4 "main" 129e5c31af7Sopenharmony_ci OpName %8 "a" 130e5c31af7Sopenharmony_ci OpName %16 "arr" 131e5c31af7Sopenharmony_ci OpName %19 "buf0" 132e5c31af7Sopenharmony_ci OpMemberName %19 0 "_GLF_uniform_int_values" 133e5c31af7Sopenharmony_ci OpName %21 "" 134e5c31af7Sopenharmony_ci OpName %51 "i" 135e5c31af7Sopenharmony_ci OpName %60 "j" 136e5c31af7Sopenharmony_ci OpName %68 "idx" 137e5c31af7Sopenharmony_ci OpName %76 "k" 138e5c31af7Sopenharmony_ci OpName %87 "l" 139e5c31af7Sopenharmony_ci OpName %158 "ref" 140e5c31af7Sopenharmony_ci OpName %180 "_GLF_color" 141e5c31af7Sopenharmony_ci OpName %194 "i" 142e5c31af7Sopenharmony_ci OpDecorate %18 ArrayStride 16 143e5c31af7Sopenharmony_ci OpMemberDecorate %19 0 Offset 0 144e5c31af7Sopenharmony_ci OpDecorate %19 Block 145e5c31af7Sopenharmony_ci OpDecorate %21 DescriptorSet 0 146e5c31af7Sopenharmony_ci OpDecorate %21 Binding 0 147e5c31af7Sopenharmony_ci OpDecorate %180 Location 0 148e5c31af7Sopenharmony_ci %2 = OpTypeVoid 149e5c31af7Sopenharmony_ci %3 = OpTypeFunction %2 150e5c31af7Sopenharmony_ci %6 = OpTypeInt 32 1 151e5c31af7Sopenharmony_ci %7 = OpTypePointer Function %6 152e5c31af7Sopenharmony_ci %9 = OpTypeFloat 32 153e5c31af7Sopenharmony_ci %10 = OpConstant %9 1 154e5c31af7Sopenharmony_ci %12 = OpTypeInt 32 0 155e5c31af7Sopenharmony_ci %13 = OpConstant %12 9 156e5c31af7Sopenharmony_ci %14 = OpTypeArray %6 %13 157e5c31af7Sopenharmony_ci %15 = OpTypePointer Function %14 158e5c31af7Sopenharmony_ci %17 = OpConstant %12 11 159e5c31af7Sopenharmony_ci %18 = OpTypeArray %6 %17 160e5c31af7Sopenharmony_ci %19 = OpTypeStruct %18 161e5c31af7Sopenharmony_ci %20 = OpTypePointer Uniform %19 162e5c31af7Sopenharmony_ci %21 = OpVariable %20 Uniform 163e5c31af7Sopenharmony_ci %22 = OpConstant %6 0 164e5c31af7Sopenharmony_ci %23 = OpConstant %6 6 165e5c31af7Sopenharmony_ci %24 = OpTypePointer Uniform %6 166e5c31af7Sopenharmony_ci %27 = OpConstant %6 8 167e5c31af7Sopenharmony_ci %30 = OpConstant %6 1 168e5c31af7Sopenharmony_ci %33 = OpConstant %6 2 169e5c31af7Sopenharmony_ci %38 = OpConstant %6 3 170e5c31af7Sopenharmony_ci %41 = OpConstant %6 4 171e5c31af7Sopenharmony_ci %44 = OpConstant %6 5 172e5c31af7Sopenharmony_ci %47 = OpConstant %6 9 173e5c31af7Sopenharmony_ci %58 = OpTypeBool 174e5c31af7Sopenharmony_ci %72 = OpConstant %6 7 175e5c31af7Sopenharmony_ci %97 = OpConstant %6 10 176e5c31af7Sopenharmony_ci %178 = OpTypeVector %9 4 177e5c31af7Sopenharmony_ci %179 = OpTypePointer Output %178 178e5c31af7Sopenharmony_ci %180 = OpVariable %179 Output 179e5c31af7Sopenharmony_ci %4 = OpFunction %2 None %3 180e5c31af7Sopenharmony_ci %5 = OpLabel 181e5c31af7Sopenharmony_ci %8 = OpVariable %7 Function 182e5c31af7Sopenharmony_ci %16 = OpVariable %15 Function 183e5c31af7Sopenharmony_ci %51 = OpVariable %7 Function 184e5c31af7Sopenharmony_ci %60 = OpVariable %7 Function 185e5c31af7Sopenharmony_ci %68 = OpVariable %7 Function 186e5c31af7Sopenharmony_ci %76 = OpVariable %7 Function 187e5c31af7Sopenharmony_ci %87 = OpVariable %7 Function 188e5c31af7Sopenharmony_ci %158 = OpVariable %15 Function 189e5c31af7Sopenharmony_ci %194 = OpVariable %7 Function 190e5c31af7Sopenharmony_ci %11 = OpBitcast %6 %10 191e5c31af7Sopenharmony_ci OpStore %8 %11 192e5c31af7Sopenharmony_ci %25 = OpAccessChain %24 %21 %22 %23 193e5c31af7Sopenharmony_ci %26 = OpLoad %6 %25 194e5c31af7Sopenharmony_ci %28 = OpAccessChain %24 %21 %22 %27 195e5c31af7Sopenharmony_ci %29 = OpLoad %6 %28 196e5c31af7Sopenharmony_ci %31 = OpAccessChain %24 %21 %22 %30 197e5c31af7Sopenharmony_ci %32 = OpLoad %6 %31 198e5c31af7Sopenharmony_ci %34 = OpAccessChain %24 %21 %22 %33 199e5c31af7Sopenharmony_ci %35 = OpLoad %6 %34 200e5c31af7Sopenharmony_ci %36 = OpAccessChain %24 %21 %22 %22 201e5c31af7Sopenharmony_ci %37 = OpLoad %6 %36 202e5c31af7Sopenharmony_ci %39 = OpAccessChain %24 %21 %22 %38 203e5c31af7Sopenharmony_ci %40 = OpLoad %6 %39 204e5c31af7Sopenharmony_ci %42 = OpAccessChain %24 %21 %22 %41 205e5c31af7Sopenharmony_ci %43 = OpLoad %6 %42 206e5c31af7Sopenharmony_ci %45 = OpAccessChain %24 %21 %22 %44 207e5c31af7Sopenharmony_ci %46 = OpLoad %6 %45 208e5c31af7Sopenharmony_ci %48 = OpAccessChain %24 %21 %22 %47 209e5c31af7Sopenharmony_ci %49 = OpLoad %6 %48 210e5c31af7Sopenharmony_ci %50 = OpCompositeConstruct %14 %26 %29 %32 %35 %37 %40 %43 %46 %49 211e5c31af7Sopenharmony_ci OpStore %16 %50 212e5c31af7Sopenharmony_ci OpStore %51 %22 213e5c31af7Sopenharmony_ci OpBranch %52 214e5c31af7Sopenharmony_ci %52 = OpLabel 215e5c31af7Sopenharmony_ci OpLoopMerge %54 %55 None 216e5c31af7Sopenharmony_ci OpBranch %56 217e5c31af7Sopenharmony_ci %56 = OpLabel 218e5c31af7Sopenharmony_ci %57 = OpLoad %6 %51 219e5c31af7Sopenharmony_ci %59 = OpSLessThan %58 %57 %44 220e5c31af7Sopenharmony_ci OpBranchConditional %59 %53 %54 221e5c31af7Sopenharmony_ci %53 = OpLabel 222e5c31af7Sopenharmony_ci OpStore %60 %22 223e5c31af7Sopenharmony_ci OpBranch %61 224e5c31af7Sopenharmony_ci %61 = OpLabel 225e5c31af7Sopenharmony_ci OpLoopMerge %63 %64 None 226e5c31af7Sopenharmony_ci OpBranch %65 227e5c31af7Sopenharmony_ci %65 = OpLabel 228e5c31af7Sopenharmony_ci %66 = OpLoad %6 %60 229e5c31af7Sopenharmony_ci %67 = OpSLessThan %58 %66 %44 230e5c31af7Sopenharmony_ci OpBranchConditional %67 %62 %63 231e5c31af7Sopenharmony_ci %62 = OpLabel 232e5c31af7Sopenharmony_ci %69 = OpLoad %6 %8 233e5c31af7Sopenharmony_ci %70 = OpExtInst %6 %1 SClamp %69 %22 %27 234e5c31af7Sopenharmony_ci OpStore %68 %70 235e5c31af7Sopenharmony_ci %71 = OpLoad %6 %68 236e5c31af7Sopenharmony_ci %73 = OpAccessChain %24 %21 %22 %72 237e5c31af7Sopenharmony_ci %74 = OpLoad %6 %73 238e5c31af7Sopenharmony_ci %75 = OpAccessChain %7 %16 %71 239e5c31af7Sopenharmony_ci OpStore %75 %74 240e5c31af7Sopenharmony_ci %77 = OpAccessChain %24 %21 %22 %72 241e5c31af7Sopenharmony_ci %78 = OpLoad %6 %77 242e5c31af7Sopenharmony_ci OpStore %76 %78 243e5c31af7Sopenharmony_ci OpBranch %79 244e5c31af7Sopenharmony_ci %79 = OpLabel 245e5c31af7Sopenharmony_ci OpLoopMerge %81 %82 None 246e5c31af7Sopenharmony_ci OpBranch %83 247e5c31af7Sopenharmony_ci %83 = OpLabel 248e5c31af7Sopenharmony_ci %84 = OpLoad %6 %76 249e5c31af7Sopenharmony_ci %85 = OpLoad %6 %51 250e5c31af7Sopenharmony_ci %86 = OpSLessThan %58 %84 %85 251e5c31af7Sopenharmony_ci OpBranchConditional %86 %80 %81 252e5c31af7Sopenharmony_ci %80 = OpLabel 253e5c31af7Sopenharmony_ci OpStore %87 %22 254e5c31af7Sopenharmony_ci OpBranch %88 255e5c31af7Sopenharmony_ci %88 = OpLabel 256e5c31af7Sopenharmony_ci OpLoopMerge %90 %91 None 257e5c31af7Sopenharmony_ci OpBranch %92 258e5c31af7Sopenharmony_ci %92 = OpLabel 259e5c31af7Sopenharmony_ci %93 = OpLoad %6 %87 260e5c31af7Sopenharmony_ci %94 = OpLoad %6 %60 261e5c31af7Sopenharmony_ci %95 = OpSLessThan %58 %93 %94 262e5c31af7Sopenharmony_ci OpBranchConditional %95 %89 %90 263e5c31af7Sopenharmony_ci %89 = OpLabel 264e5c31af7Sopenharmony_ci %96 = OpLoad %6 %8 265e5c31af7Sopenharmony_ci %98 = OpAccessChain %24 %21 %22 %97 266e5c31af7Sopenharmony_ci %99 = OpLoad %6 %98 267e5c31af7Sopenharmony_ci %100 = OpISub %6 %96 %99 268e5c31af7Sopenharmony_ci OpSelectionMerge %106 None 269e5c31af7Sopenharmony_ci OpSwitch %100 %106 6 %101 7 %102 8 %103 9 %104 10 %105 270e5c31af7Sopenharmony_ci %101 = OpLabel 271e5c31af7Sopenharmony_ci %107 = OpLoad %6 %68 272e5c31af7Sopenharmony_ci %108 = OpAccessChain %24 %21 %22 %23 273e5c31af7Sopenharmony_ci %109 = OpLoad %6 %108 274e5c31af7Sopenharmony_ci %110 = OpAccessChain %7 %16 %107 275e5c31af7Sopenharmony_ci %111 = OpLoad %6 %110 276e5c31af7Sopenharmony_ci %112 = OpIAdd %6 %111 %109 277e5c31af7Sopenharmony_ci %113 = OpAccessChain %7 %16 %107 278e5c31af7Sopenharmony_ci OpStore %113 %112 279e5c31af7Sopenharmony_ci OpBranch %106 280e5c31af7Sopenharmony_ci %102 = OpLabel 281e5c31af7Sopenharmony_ci %115 = OpLoad %6 %68 282e5c31af7Sopenharmony_ci %116 = OpAccessChain %24 %21 %22 %27 283e5c31af7Sopenharmony_ci %117 = OpLoad %6 %116 284e5c31af7Sopenharmony_ci %118 = OpAccessChain %7 %16 %115 285e5c31af7Sopenharmony_ci %119 = OpLoad %6 %118 286e5c31af7Sopenharmony_ci %120 = OpIAdd %6 %119 %117 287e5c31af7Sopenharmony_ci %121 = OpAccessChain %7 %16 %115 288e5c31af7Sopenharmony_ci OpStore %121 %120 289e5c31af7Sopenharmony_ci OpBranch %106 290e5c31af7Sopenharmony_ci %103 = OpLabel 291e5c31af7Sopenharmony_ci %123 = OpLoad %6 %68 292e5c31af7Sopenharmony_ci %124 = OpAccessChain %24 %21 %22 %30 293e5c31af7Sopenharmony_ci %125 = OpLoad %6 %124 294e5c31af7Sopenharmony_ci %126 = OpAccessChain %7 %16 %123 295e5c31af7Sopenharmony_ci %127 = OpLoad %6 %126 296e5c31af7Sopenharmony_ci %128 = OpIAdd %6 %127 %125 297e5c31af7Sopenharmony_ci %129 = OpAccessChain %7 %16 %123 298e5c31af7Sopenharmony_ci OpStore %129 %128 299e5c31af7Sopenharmony_ci OpBranch %106 300e5c31af7Sopenharmony_ci %104 = OpLabel 301e5c31af7Sopenharmony_ci %131 = OpLoad %6 %68 302e5c31af7Sopenharmony_ci %132 = OpAccessChain %24 %21 %22 %33 303e5c31af7Sopenharmony_ci %133 = OpLoad %6 %132 304e5c31af7Sopenharmony_ci %134 = OpAccessChain %7 %16 %131 305e5c31af7Sopenharmony_ci %135 = OpLoad %6 %134 306e5c31af7Sopenharmony_ci %136 = OpIAdd %6 %135 %133 307e5c31af7Sopenharmony_ci %137 = OpAccessChain %7 %16 %131 308e5c31af7Sopenharmony_ci OpStore %137 %136 309e5c31af7Sopenharmony_ci OpBranch %106 310e5c31af7Sopenharmony_ci %105 = OpLabel 311e5c31af7Sopenharmony_ci %139 = OpLoad %6 %68 312e5c31af7Sopenharmony_ci %140 = OpAccessChain %24 %21 %22 %22 313e5c31af7Sopenharmony_ci %141 = OpLoad %6 %140 314e5c31af7Sopenharmony_ci %142 = OpAccessChain %7 %16 %139 315e5c31af7Sopenharmony_ci %143 = OpLoad %6 %142 316e5c31af7Sopenharmony_ci %144 = OpIAdd %6 %143 %141 317e5c31af7Sopenharmony_ci %145 = OpAccessChain %7 %16 %139 318e5c31af7Sopenharmony_ci OpStore %145 %144 319e5c31af7Sopenharmony_ci OpBranch %106 320e5c31af7Sopenharmony_ci %106 = OpLabel 321e5c31af7Sopenharmony_ci OpBranch %91 322e5c31af7Sopenharmony_ci %91 = OpLabel 323e5c31af7Sopenharmony_ci %148 = OpLoad %6 %87 324e5c31af7Sopenharmony_ci %149 = OpIAdd %6 %148 %30 325e5c31af7Sopenharmony_ci OpStore %87 %149 326e5c31af7Sopenharmony_ci OpBranch %88 327e5c31af7Sopenharmony_ci %90 = OpLabel 328e5c31af7Sopenharmony_ci OpBranch %82 329e5c31af7Sopenharmony_ci %82 = OpLabel 330e5c31af7Sopenharmony_ci %150 = OpLoad %6 %76 331e5c31af7Sopenharmony_ci %151 = OpIAdd %6 %150 %30 332e5c31af7Sopenharmony_ci OpStore %76 %151 333e5c31af7Sopenharmony_ci OpBranch %79 334e5c31af7Sopenharmony_ci %81 = OpLabel 335e5c31af7Sopenharmony_ci %152 = OpLoad %6 %8 336e5c31af7Sopenharmony_ci %153 = OpIAdd %6 %152 %30 337e5c31af7Sopenharmony_ci OpStore %8 %153 338e5c31af7Sopenharmony_ci OpBranch %64 339e5c31af7Sopenharmony_ci %64 = OpLabel 340e5c31af7Sopenharmony_ci %154 = OpLoad %6 %60 341e5c31af7Sopenharmony_ci %155 = OpIAdd %6 %154 %30 342e5c31af7Sopenharmony_ci OpStore %60 %155 343e5c31af7Sopenharmony_ci OpBranch %61 344e5c31af7Sopenharmony_ci %63 = OpLabel 345e5c31af7Sopenharmony_ci OpBranch %55 346e5c31af7Sopenharmony_ci %55 = OpLabel 347e5c31af7Sopenharmony_ci %156 = OpLoad %6 %51 348e5c31af7Sopenharmony_ci %157 = OpIAdd %6 %156 %30 349e5c31af7Sopenharmony_ci OpStore %51 %157 350e5c31af7Sopenharmony_ci OpBranch %52 351e5c31af7Sopenharmony_ci %54 = OpLabel 352e5c31af7Sopenharmony_ci %159 = OpAccessChain %24 %21 %22 %23 353e5c31af7Sopenharmony_ci %160 = OpLoad %6 %159 354e5c31af7Sopenharmony_ci %161 = OpAccessChain %24 %21 %22 %27 355e5c31af7Sopenharmony_ci %162 = OpLoad %6 %161 356e5c31af7Sopenharmony_ci %163 = OpAccessChain %24 %21 %22 %30 357e5c31af7Sopenharmony_ci %164 = OpLoad %6 %163 358e5c31af7Sopenharmony_ci %165 = OpAccessChain %24 %21 %22 %33 359e5c31af7Sopenharmony_ci %166 = OpLoad %6 %165 360e5c31af7Sopenharmony_ci %167 = OpAccessChain %24 %21 %22 %22 361e5c31af7Sopenharmony_ci %168 = OpLoad %6 %167 362e5c31af7Sopenharmony_ci %169 = OpAccessChain %24 %21 %22 %38 363e5c31af7Sopenharmony_ci %170 = OpLoad %6 %169 364e5c31af7Sopenharmony_ci %171 = OpAccessChain %24 %21 %22 %41 365e5c31af7Sopenharmony_ci %172 = OpLoad %6 %171 366e5c31af7Sopenharmony_ci %173 = OpAccessChain %24 %21 %22 %44 367e5c31af7Sopenharmony_ci %174 = OpLoad %6 %173 368e5c31af7Sopenharmony_ci %175 = OpAccessChain %24 %21 %22 %72 369e5c31af7Sopenharmony_ci %176 = OpLoad %6 %175 370e5c31af7Sopenharmony_ci %177 = OpCompositeConstruct %14 %160 %162 %164 %166 %168 %170 %172 %174 %176 371e5c31af7Sopenharmony_ci OpStore %158 %177 372e5c31af7Sopenharmony_ci %181 = OpAccessChain %24 %21 %22 %23 373e5c31af7Sopenharmony_ci %182 = OpLoad %6 %181 374e5c31af7Sopenharmony_ci %183 = OpConvertSToF %9 %182 375e5c31af7Sopenharmony_ci %184 = OpAccessChain %24 %21 %22 %72 376e5c31af7Sopenharmony_ci %185 = OpLoad %6 %184 377e5c31af7Sopenharmony_ci %186 = OpConvertSToF %9 %185 378e5c31af7Sopenharmony_ci %187 = OpAccessChain %24 %21 %22 %72 379e5c31af7Sopenharmony_ci %188 = OpLoad %6 %187 380e5c31af7Sopenharmony_ci %189 = OpConvertSToF %9 %188 381e5c31af7Sopenharmony_ci %190 = OpAccessChain %24 %21 %22 %23 382e5c31af7Sopenharmony_ci %191 = OpLoad %6 %190 383e5c31af7Sopenharmony_ci %192 = OpConvertSToF %9 %191 384e5c31af7Sopenharmony_ci %193 = OpCompositeConstruct %178 %183 %186 %189 %192 385e5c31af7Sopenharmony_ci OpStore %180 %193 386e5c31af7Sopenharmony_ci %195 = OpAccessChain %24 %21 %22 %72 387e5c31af7Sopenharmony_ci %196 = OpLoad %6 %195 388e5c31af7Sopenharmony_ci OpStore %194 %196 389e5c31af7Sopenharmony_ci OpBranch %197 390e5c31af7Sopenharmony_ci %197 = OpLabel 391e5c31af7Sopenharmony_ci OpLoopMerge %199 %200 None 392e5c31af7Sopenharmony_ci OpBranch %201 393e5c31af7Sopenharmony_ci %201 = OpLabel 394e5c31af7Sopenharmony_ci %202 = OpLoad %6 %194 395e5c31af7Sopenharmony_ci %203 = OpAccessChain %24 %21 %22 %47 396e5c31af7Sopenharmony_ci %204 = OpLoad %6 %203 397e5c31af7Sopenharmony_ci %205 = OpSLessThan %58 %202 %204 398e5c31af7Sopenharmony_ci OpBranchConditional %205 %198 %199 399e5c31af7Sopenharmony_ci %198 = OpLabel 400e5c31af7Sopenharmony_ci %206 = OpLoad %6 %194 401e5c31af7Sopenharmony_ci %207 = OpAccessChain %7 %16 %206 402e5c31af7Sopenharmony_ci %208 = OpLoad %6 %207 403e5c31af7Sopenharmony_ci %209 = OpLoad %6 %194 404e5c31af7Sopenharmony_ci %210 = OpAccessChain %7 %158 %209 405e5c31af7Sopenharmony_ci %211 = OpLoad %6 %210 406e5c31af7Sopenharmony_ci %212 = OpINotEqual %58 %208 %211 407e5c31af7Sopenharmony_ci OpSelectionMerge %214 None 408e5c31af7Sopenharmony_ci OpBranchConditional %212 %213 %214 409e5c31af7Sopenharmony_ci %213 = OpLabel 410e5c31af7Sopenharmony_ci %215 = OpAccessChain %24 %21 %22 %72 411e5c31af7Sopenharmony_ci %216 = OpLoad %6 %215 412e5c31af7Sopenharmony_ci %217 = OpConvertSToF %9 %216 413e5c31af7Sopenharmony_ci %218 = OpCompositeConstruct %178 %217 %217 %217 %217 414e5c31af7Sopenharmony_ci OpStore %180 %218 415e5c31af7Sopenharmony_ci OpBranch %214 416e5c31af7Sopenharmony_ci %214 = OpLabel 417e5c31af7Sopenharmony_ci OpBranch %200 418e5c31af7Sopenharmony_ci %200 = OpLabel 419e5c31af7Sopenharmony_ci %219 = OpLoad %6 %194 420e5c31af7Sopenharmony_ci %220 = OpIAdd %6 %219 %30 421e5c31af7Sopenharmony_ci OpStore %194 %220 422e5c31af7Sopenharmony_ci OpBranch %197 423e5c31af7Sopenharmony_ci %199 = OpLabel 424e5c31af7Sopenharmony_ci OpReturn 425e5c31af7Sopenharmony_ci OpFunctionEnd 426e5c31af7Sopenharmony_ciEND 427e5c31af7Sopenharmony_ci 428e5c31af7Sopenharmony_ci# uniforms for variant 429e5c31af7Sopenharmony_ci 430e5c31af7Sopenharmony_ci# _GLF_uniform_int_values 431e5c31af7Sopenharmony_ciBUFFER variant__GLF_uniform_int_values DATA_TYPE int32[] STD140 DATA 432e5c31af7Sopenharmony_ci 5 3 4 6 7 8 1 0 2 9 1065353216 433e5c31af7Sopenharmony_ciEND 434e5c31af7Sopenharmony_ci 435e5c31af7Sopenharmony_ciBUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM 436e5c31af7Sopenharmony_ci 437e5c31af7Sopenharmony_ciPIPELINE graphics variant_pipeline 438e5c31af7Sopenharmony_ci ATTACH variant_vertex_shader 439e5c31af7Sopenharmony_ci ATTACH variant_fragment_shader 440e5c31af7Sopenharmony_ci FRAMEBUFFER_SIZE 16 16 441e5c31af7Sopenharmony_ci BIND BUFFER variant_framebuffer AS color LOCATION 0 442e5c31af7Sopenharmony_ci BIND BUFFER variant__GLF_uniform_int_values AS uniform DESCRIPTOR_SET 0 BINDING 0 443e5c31af7Sopenharmony_ciEND 444e5c31af7Sopenharmony_ciCLEAR_COLOR variant_pipeline 0 0 0 255 445e5c31af7Sopenharmony_ci 446e5c31af7Sopenharmony_ciCLEAR variant_pipeline 447e5c31af7Sopenharmony_ciRUN variant_pipeline DRAW_RECT POS 0 0 SIZE 16 16 448e5c31af7Sopenharmony_ci 449e5c31af7Sopenharmony_ciEXPECT variant_framebuffer IDX 0 0 SIZE 16 16 EQ_RGBA 255 0 0 255 450