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 texgen_vert PASSTHROUGH 25e5c31af7Sopenharmony_ci 26e5c31af7Sopenharmony_ciSHADER fragment texgen_frag GLSL 27e5c31af7Sopenharmony_ci#version 430 28e5c31af7Sopenharmony_ciprecision highp float; 29e5c31af7Sopenharmony_ci 30e5c31af7Sopenharmony_cilayout(location = 0) out vec4 _GLF_color; 31e5c31af7Sopenharmony_ci 32e5c31af7Sopenharmony_civoid main() 33e5c31af7Sopenharmony_ci{ 34e5c31af7Sopenharmony_ci _GLF_color = vec4( 35e5c31af7Sopenharmony_ci floor(gl_FragCoord.x) * (1.0 / 255.0), 36e5c31af7Sopenharmony_ci (int(gl_FragCoord.x) ^ int(gl_FragCoord.y)) * (1.0 / 255.0), 37e5c31af7Sopenharmony_ci floor(gl_FragCoord.y) * (1.0 / 255.0), 38e5c31af7Sopenharmony_ci 1.0); 39e5c31af7Sopenharmony_ci} 40e5c31af7Sopenharmony_ciEND 41e5c31af7Sopenharmony_ciBUFFER default_texture FORMAT B8G8R8A8_UNORM 42e5c31af7Sopenharmony_ci 43e5c31af7Sopenharmony_ciPIPELINE graphics texgen_pipeline 44e5c31af7Sopenharmony_ci ATTACH texgen_vert 45e5c31af7Sopenharmony_ci ATTACH texgen_frag 46e5c31af7Sopenharmony_ci FRAMEBUFFER_SIZE 256 256 47e5c31af7Sopenharmony_ci BIND BUFFER default_texture AS color LOCATION 0 48e5c31af7Sopenharmony_ciEND 49e5c31af7Sopenharmony_ci 50e5c31af7Sopenharmony_ciCLEAR_COLOR texgen_pipeline 0 0 0 255 51e5c31af7Sopenharmony_ciCLEAR texgen_pipeline 52e5c31af7Sopenharmony_ciRUN texgen_pipeline DRAW_RECT POS 0 0 SIZE 256 256 53e5c31af7Sopenharmony_ci 54e5c31af7Sopenharmony_ciSHADER vertex variant_vertex_shader PASSTHROUGH 55e5c31af7Sopenharmony_ci 56e5c31af7Sopenharmony_ci# variant_fragment_shader is derived from the following GLSL: 57e5c31af7Sopenharmony_ci# #version 320 es 58e5c31af7Sopenharmony_ci# 59e5c31af7Sopenharmony_ci# #define _int_1 _GLF_uniform_int_values[0] 60e5c31af7Sopenharmony_ci# #define _int_0 _GLF_uniform_int_values[1] 61e5c31af7Sopenharmony_ci# #define _int_256 _GLF_uniform_int_values[2] 62e5c31af7Sopenharmony_ci# #define _float_0_0 _GLF_uniform_float_values[0] 63e5c31af7Sopenharmony_ci# 64e5c31af7Sopenharmony_ci# precision highp float; 65e5c31af7Sopenharmony_ci# precision highp int; 66e5c31af7Sopenharmony_ci# 67e5c31af7Sopenharmony_ci# // Contents of _GLF_uniform_float_values: 0.0 68e5c31af7Sopenharmony_ci# layout(set = 0, binding = 0) uniform buf0 69e5c31af7Sopenharmony_ci# { 70e5c31af7Sopenharmony_ci# float _GLF_uniform_float_values[1]; 71e5c31af7Sopenharmony_ci# }; 72e5c31af7Sopenharmony_ci# 73e5c31af7Sopenharmony_ci# // Contents of _GLF_uniform_int_values: [1, 0, 256] 74e5c31af7Sopenharmony_ci# layout(set = 0, binding = 1) uniform buf1 75e5c31af7Sopenharmony_ci# { 76e5c31af7Sopenharmony_ci# int _GLF_uniform_int_values[3]; 77e5c31af7Sopenharmony_ci# }; 78e5c31af7Sopenharmony_ci# 79e5c31af7Sopenharmony_ci# layout(set = 0, binding = 2) uniform sampler2D tex; 80e5c31af7Sopenharmony_ci# 81e5c31af7Sopenharmony_ci# layout(location = 0) out vec4 _GLF_color; 82e5c31af7Sopenharmony_ci# 83e5c31af7Sopenharmony_ci# void main() 84e5c31af7Sopenharmony_ci# { 85e5c31af7Sopenharmony_ci# vec2 v = gl_FragCoord.xy; 86e5c31af7Sopenharmony_ci# int a = _int_256; 87e5c31af7Sopenharmony_ci# vec4 res = vec4(_int_0); 88e5c31af7Sopenharmony_ci# 89e5c31af7Sopenharmony_ci# // Iterates three times. 90e5c31af7Sopenharmony_ci# for(int i = 0; i < 3; i++) 91e5c31af7Sopenharmony_ci# { 92e5c31af7Sopenharmony_ci# // Iterates three times. 93e5c31af7Sopenharmony_ci# for(int j = 0; j < 3; j++) 94e5c31af7Sopenharmony_ci# { 95e5c31af7Sopenharmony_ci# vec4 v0 = texture(tex, clamp(vec2(_int_1) + max(vec2(_int_1), vec2(i, j - _int_1)), vec2(_int_1), vec2(_int_1, v.y + float(j)) - vec2(_int_1))); 96e5c31af7Sopenharmony_ci# vec4 v1 = texture(tex, clamp(vec2(_int_1) + min(min(gl_FragCoord.x > _float_0_0 ? max(vec2(i, _int_1), vec2(a, j)) : vec2(_int_1), vec2(_int_1)), max(vec2(i, j), vec2(a, j))), vec2(_int_1) + max(vec2(i, j), vec2(i, _int_1)), vec2(_int_1) + clamp(vec2(_int_1), max(vec2(_int_1), vec2(i, j)), max(vec2(_int_1), vec2(i - _int_1, j))))); 97e5c31af7Sopenharmony_ci# vec4 v2 = texture(tex, clamp(vec2(_int_1) + vec2(i * a, j), vec2(_int_1), vec2(_int_1))); 98e5c31af7Sopenharmony_ci# vec4 v3 = texture(tex, clamp(vec2(_int_1) + max(vec2(i, _int_1), vec2(_int_1, j)), vec2(_int_1) + max(vec2(i, gl_FragCoord.y > _float_0_0 ? _int_1 : j), vec2(_int_1)), v + vec2(_int_1, j))); 99e5c31af7Sopenharmony_ci# vec4 v4 = clamp(v1, v2, v3); 100e5c31af7Sopenharmony_ci# 101e5c31af7Sopenharmony_ci# // Only iteration i = 0, j = 0 increments res. 102e5c31af7Sopenharmony_ci# res += min(v0, v4) * float[9](1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)[i * 3 + j]; 103e5c31af7Sopenharmony_ci# } 104e5c31af7Sopenharmony_ci# } 105e5c31af7Sopenharmony_ci# 106e5c31af7Sopenharmony_ci# // The loops above simplify to a line below by substituting i = 0 and j = 0, and manually simplifying the expressions. 107e5c31af7Sopenharmony_ci# vec4 ref = texture(tex, vec2(_int_1, _int_1)); 108e5c31af7Sopenharmony_ci# 109e5c31af7Sopenharmony_ci# // Always true. 110e5c31af7Sopenharmony_ci# if(ref == res) 111e5c31af7Sopenharmony_ci# { 112e5c31af7Sopenharmony_ci# _GLF_color = vec4(_int_1, _int_0, _int_0, _int_1); 113e5c31af7Sopenharmony_ci# } 114e5c31af7Sopenharmony_ci# else 115e5c31af7Sopenharmony_ci# { 116e5c31af7Sopenharmony_ci# _GLF_color = vec4(_int_0); 117e5c31af7Sopenharmony_ci# } 118e5c31af7Sopenharmony_ci# } 119e5c31af7Sopenharmony_ciSHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0 120e5c31af7Sopenharmony_ci; SPIR-V 121e5c31af7Sopenharmony_ci; Version: 1.0 122e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 10 123e5c31af7Sopenharmony_ci; Bound: 355 124e5c31af7Sopenharmony_ci; Schema: 0 125e5c31af7Sopenharmony_ci OpCapability Shader 126e5c31af7Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 127e5c31af7Sopenharmony_ci OpMemoryModel Logical GLSL450 128e5c31af7Sopenharmony_ci OpEntryPoint Fragment %4 "main" %12 %336 129e5c31af7Sopenharmony_ci OpExecutionMode %4 OriginUpperLeft 130e5c31af7Sopenharmony_ci OpSource ESSL 320 131e5c31af7Sopenharmony_ci OpName %4 "main" 132e5c31af7Sopenharmony_ci OpName %9 "v" 133e5c31af7Sopenharmony_ci OpName %12 "gl_FragCoord" 134e5c31af7Sopenharmony_ci OpName %17 "a" 135e5c31af7Sopenharmony_ci OpName %21 "buf1" 136e5c31af7Sopenharmony_ci OpMemberName %21 0 "_GLF_uniform_int_values" 137e5c31af7Sopenharmony_ci OpName %23 "" 138e5c31af7Sopenharmony_ci OpName %30 "res" 139e5c31af7Sopenharmony_ci OpName %36 "i" 140e5c31af7Sopenharmony_ci OpName %46 "j" 141e5c31af7Sopenharmony_ci OpName %54 "v0" 142e5c31af7Sopenharmony_ci OpName %58 "tex" 143e5c31af7Sopenharmony_ci OpName %100 "v1" 144e5c31af7Sopenharmony_ci OpName %111 "buf0" 145e5c31af7Sopenharmony_ci OpMemberName %111 0 "_GLF_uniform_float_values" 146e5c31af7Sopenharmony_ci OpName %113 "" 147e5c31af7Sopenharmony_ci OpName %209 "v2" 148e5c31af7Sopenharmony_ci OpName %233 "v3" 149e5c31af7Sopenharmony_ci OpName %290 "v4" 150e5c31af7Sopenharmony_ci OpName %308 "indexable" 151e5c31af7Sopenharmony_ci OpName %318 "ref" 152e5c31af7Sopenharmony_ci OpName %336 "_GLF_color" 153e5c31af7Sopenharmony_ci OpDecorate %12 BuiltIn FragCoord 154e5c31af7Sopenharmony_ci OpDecorate %20 ArrayStride 16 155e5c31af7Sopenharmony_ci OpMemberDecorate %21 0 Offset 0 156e5c31af7Sopenharmony_ci OpDecorate %21 Block 157e5c31af7Sopenharmony_ci OpDecorate %23 DescriptorSet 0 158e5c31af7Sopenharmony_ci OpDecorate %23 Binding 1 159e5c31af7Sopenharmony_ci OpDecorate %58 RelaxedPrecision 160e5c31af7Sopenharmony_ci OpDecorate %58 DescriptorSet 0 161e5c31af7Sopenharmony_ci OpDecorate %58 Binding 2 162e5c31af7Sopenharmony_ci OpDecorate %59 RelaxedPrecision 163e5c31af7Sopenharmony_ci OpDecorate %62 RelaxedPrecision 164e5c31af7Sopenharmony_ci OpDecorate %63 RelaxedPrecision 165e5c31af7Sopenharmony_ci OpDecorate %66 RelaxedPrecision 166e5c31af7Sopenharmony_ci OpDecorate %67 RelaxedPrecision 167e5c31af7Sopenharmony_ci OpDecorate %69 RelaxedPrecision 168e5c31af7Sopenharmony_ci OpDecorate %74 RelaxedPrecision 169e5c31af7Sopenharmony_ci OpDecorate %75 RelaxedPrecision 170e5c31af7Sopenharmony_ci OpDecorate %76 RelaxedPrecision 171e5c31af7Sopenharmony_ci OpDecorate %77 RelaxedPrecision 172e5c31af7Sopenharmony_ci OpDecorate %80 RelaxedPrecision 173e5c31af7Sopenharmony_ci OpDecorate %81 RelaxedPrecision 174e5c31af7Sopenharmony_ci OpDecorate %84 RelaxedPrecision 175e5c31af7Sopenharmony_ci OpDecorate %92 RelaxedPrecision 176e5c31af7Sopenharmony_ci OpDecorate %95 RelaxedPrecision 177e5c31af7Sopenharmony_ci OpDecorate %96 RelaxedPrecision 178e5c31af7Sopenharmony_ci OpDecorate %97 RelaxedPrecision 179e5c31af7Sopenharmony_ci OpDecorate %98 RelaxedPrecision 180e5c31af7Sopenharmony_ci OpDecorate %99 RelaxedPrecision 181e5c31af7Sopenharmony_ci OpDecorate %101 RelaxedPrecision 182e5c31af7Sopenharmony_ci OpDecorate %104 RelaxedPrecision 183e5c31af7Sopenharmony_ci OpDecorate %105 RelaxedPrecision 184e5c31af7Sopenharmony_ci OpDecorate %110 ArrayStride 16 185e5c31af7Sopenharmony_ci OpMemberDecorate %111 0 Offset 0 186e5c31af7Sopenharmony_ci OpDecorate %111 Block 187e5c31af7Sopenharmony_ci OpDecorate %113 DescriptorSet 0 188e5c31af7Sopenharmony_ci OpDecorate %113 Binding 0 189e5c31af7Sopenharmony_ci OpDecorate %118 RelaxedPrecision 190e5c31af7Sopenharmony_ci OpDecorate %122 RelaxedPrecision 191e5c31af7Sopenharmony_ci OpDecorate %125 RelaxedPrecision 192e5c31af7Sopenharmony_ci OpDecorate %126 RelaxedPrecision 193e5c31af7Sopenharmony_ci OpDecorate %128 RelaxedPrecision 194e5c31af7Sopenharmony_ci OpDecorate %130 RelaxedPrecision 195e5c31af7Sopenharmony_ci OpDecorate %131 RelaxedPrecision 196e5c31af7Sopenharmony_ci OpDecorate %132 RelaxedPrecision 197e5c31af7Sopenharmony_ci OpDecorate %136 RelaxedPrecision 198e5c31af7Sopenharmony_ci OpDecorate %137 RelaxedPrecision 199e5c31af7Sopenharmony_ci OpDecorate %138 RelaxedPrecision 200e5c31af7Sopenharmony_ci OpDecorate %141 RelaxedPrecision 201e5c31af7Sopenharmony_ci OpDecorate %142 RelaxedPrecision 202e5c31af7Sopenharmony_ci OpDecorate %143 RelaxedPrecision 203e5c31af7Sopenharmony_ci OpDecorate %145 RelaxedPrecision 204e5c31af7Sopenharmony_ci OpDecorate %147 RelaxedPrecision 205e5c31af7Sopenharmony_ci OpDecorate %148 RelaxedPrecision 206e5c31af7Sopenharmony_ci OpDecorate %150 RelaxedPrecision 207e5c31af7Sopenharmony_ci OpDecorate %152 RelaxedPrecision 208e5c31af7Sopenharmony_ci OpDecorate %153 RelaxedPrecision 209e5c31af7Sopenharmony_ci OpDecorate %154 RelaxedPrecision 210e5c31af7Sopenharmony_ci OpDecorate %155 RelaxedPrecision 211e5c31af7Sopenharmony_ci OpDecorate %156 RelaxedPrecision 212e5c31af7Sopenharmony_ci OpDecorate %159 RelaxedPrecision 213e5c31af7Sopenharmony_ci OpDecorate %160 RelaxedPrecision 214e5c31af7Sopenharmony_ci OpDecorate %162 RelaxedPrecision 215e5c31af7Sopenharmony_ci OpDecorate %164 RelaxedPrecision 216e5c31af7Sopenharmony_ci OpDecorate %165 RelaxedPrecision 217e5c31af7Sopenharmony_ci OpDecorate %167 RelaxedPrecision 218e5c31af7Sopenharmony_ci OpDecorate %170 RelaxedPrecision 219e5c31af7Sopenharmony_ci OpDecorate %171 RelaxedPrecision 220e5c31af7Sopenharmony_ci OpDecorate %172 RelaxedPrecision 221e5c31af7Sopenharmony_ci OpDecorate %173 RelaxedPrecision 222e5c31af7Sopenharmony_ci OpDecorate %176 RelaxedPrecision 223e5c31af7Sopenharmony_ci OpDecorate %177 RelaxedPrecision 224e5c31af7Sopenharmony_ci OpDecorate %180 RelaxedPrecision 225e5c31af7Sopenharmony_ci OpDecorate %181 RelaxedPrecision 226e5c31af7Sopenharmony_ci OpDecorate %184 RelaxedPrecision 227e5c31af7Sopenharmony_ci OpDecorate %185 RelaxedPrecision 228e5c31af7Sopenharmony_ci OpDecorate %187 RelaxedPrecision 229e5c31af7Sopenharmony_ci OpDecorate %189 RelaxedPrecision 230e5c31af7Sopenharmony_ci OpDecorate %190 RelaxedPrecision 231e5c31af7Sopenharmony_ci OpDecorate %191 RelaxedPrecision 232e5c31af7Sopenharmony_ci OpDecorate %194 RelaxedPrecision 233e5c31af7Sopenharmony_ci OpDecorate %195 RelaxedPrecision 234e5c31af7Sopenharmony_ci OpDecorate %200 RelaxedPrecision 235e5c31af7Sopenharmony_ci OpDecorate %202 RelaxedPrecision 236e5c31af7Sopenharmony_ci OpDecorate %203 RelaxedPrecision 237e5c31af7Sopenharmony_ci OpDecorate %204 RelaxedPrecision 238e5c31af7Sopenharmony_ci OpDecorate %205 RelaxedPrecision 239e5c31af7Sopenharmony_ci OpDecorate %206 RelaxedPrecision 240e5c31af7Sopenharmony_ci OpDecorate %207 RelaxedPrecision 241e5c31af7Sopenharmony_ci OpDecorate %208 RelaxedPrecision 242e5c31af7Sopenharmony_ci OpDecorate %210 RelaxedPrecision 243e5c31af7Sopenharmony_ci OpDecorate %213 RelaxedPrecision 244e5c31af7Sopenharmony_ci OpDecorate %214 RelaxedPrecision 245e5c31af7Sopenharmony_ci OpDecorate %218 RelaxedPrecision 246e5c31af7Sopenharmony_ci OpDecorate %220 RelaxedPrecision 247e5c31af7Sopenharmony_ci OpDecorate %221 RelaxedPrecision 248e5c31af7Sopenharmony_ci OpDecorate %222 RelaxedPrecision 249e5c31af7Sopenharmony_ci OpDecorate %225 RelaxedPrecision 250e5c31af7Sopenharmony_ci OpDecorate %226 RelaxedPrecision 251e5c31af7Sopenharmony_ci OpDecorate %229 RelaxedPrecision 252e5c31af7Sopenharmony_ci OpDecorate %230 RelaxedPrecision 253e5c31af7Sopenharmony_ci OpDecorate %231 RelaxedPrecision 254e5c31af7Sopenharmony_ci OpDecorate %232 RelaxedPrecision 255e5c31af7Sopenharmony_ci OpDecorate %234 RelaxedPrecision 256e5c31af7Sopenharmony_ci OpDecorate %289 RelaxedPrecision 257e5c31af7Sopenharmony_ci OpDecorate %319 RelaxedPrecision 258e5c31af7Sopenharmony_ci OpDecorate %322 RelaxedPrecision 259e5c31af7Sopenharmony_ci OpDecorate %325 RelaxedPrecision 260e5c31af7Sopenharmony_ci OpDecorate %326 RelaxedPrecision 261e5c31af7Sopenharmony_ci OpDecorate %327 RelaxedPrecision 262e5c31af7Sopenharmony_ci OpDecorate %336 Location 0 263e5c31af7Sopenharmony_ci %2 = OpTypeVoid 264e5c31af7Sopenharmony_ci %3 = OpTypeFunction %2 265e5c31af7Sopenharmony_ci %6 = OpTypeFloat 32 266e5c31af7Sopenharmony_ci %7 = OpTypeVector %6 2 267e5c31af7Sopenharmony_ci %8 = OpTypePointer Function %7 268e5c31af7Sopenharmony_ci %10 = OpTypeVector %6 4 269e5c31af7Sopenharmony_ci %11 = OpTypePointer Input %10 270e5c31af7Sopenharmony_ci %12 = OpVariable %11 Input 271e5c31af7Sopenharmony_ci %15 = OpTypeInt 32 1 272e5c31af7Sopenharmony_ci %16 = OpTypePointer Function %15 273e5c31af7Sopenharmony_ci %18 = OpTypeInt 32 0 274e5c31af7Sopenharmony_ci %19 = OpConstant %18 3 275e5c31af7Sopenharmony_ci %20 = OpTypeArray %15 %19 276e5c31af7Sopenharmony_ci %21 = OpTypeStruct %20 277e5c31af7Sopenharmony_ci %22 = OpTypePointer Uniform %21 278e5c31af7Sopenharmony_ci %23 = OpVariable %22 Uniform 279e5c31af7Sopenharmony_ci %24 = OpConstant %15 0 280e5c31af7Sopenharmony_ci %25 = OpConstant %15 2 281e5c31af7Sopenharmony_ci %26 = OpTypePointer Uniform %15 282e5c31af7Sopenharmony_ci %29 = OpTypePointer Function %10 283e5c31af7Sopenharmony_ci %31 = OpConstant %15 1 284e5c31af7Sopenharmony_ci %43 = OpConstant %15 3 285e5c31af7Sopenharmony_ci %44 = OpTypeBool 286e5c31af7Sopenharmony_ci %55 = OpTypeImage %6 2D 0 0 0 1 Unknown 287e5c31af7Sopenharmony_ci %56 = OpTypeSampledImage %55 288e5c31af7Sopenharmony_ci %57 = OpTypePointer UniformConstant %56 289e5c31af7Sopenharmony_ci %58 = OpVariable %57 UniformConstant 290e5c31af7Sopenharmony_ci %85 = OpConstant %18 1 291e5c31af7Sopenharmony_ci %86 = OpTypePointer Function %6 292e5c31af7Sopenharmony_ci %106 = OpConstant %18 0 293e5c31af7Sopenharmony_ci %107 = OpTypePointer Input %6 294e5c31af7Sopenharmony_ci %110 = OpTypeArray %6 %85 295e5c31af7Sopenharmony_ci %111 = OpTypeStruct %110 296e5c31af7Sopenharmony_ci %112 = OpTypePointer Uniform %111 297e5c31af7Sopenharmony_ci %113 = OpVariable %112 Uniform 298e5c31af7Sopenharmony_ci %114 = OpTypePointer Uniform %6 299e5c31af7Sopenharmony_ci %298 = OpConstant %18 9 300e5c31af7Sopenharmony_ci %299 = OpTypeArray %6 %298 301e5c31af7Sopenharmony_ci %300 = OpConstant %6 1 302e5c31af7Sopenharmony_ci %301 = OpConstant %6 0 303e5c31af7Sopenharmony_ci %302 = OpConstantComposite %299 %300 %301 %301 %301 %301 %301 %301 %301 %301 304e5c31af7Sopenharmony_ci %307 = OpTypePointer Function %299 305e5c31af7Sopenharmony_ci %330 = OpTypeVector %44 4 306e5c31af7Sopenharmony_ci %335 = OpTypePointer Output %10 307e5c31af7Sopenharmony_ci %336 = OpVariable %335 Output 308e5c31af7Sopenharmony_ci %4 = OpFunction %2 None %3 309e5c31af7Sopenharmony_ci %5 = OpLabel 310e5c31af7Sopenharmony_ci %9 = OpVariable %8 Function 311e5c31af7Sopenharmony_ci %17 = OpVariable %16 Function 312e5c31af7Sopenharmony_ci %30 = OpVariable %29 Function 313e5c31af7Sopenharmony_ci %36 = OpVariable %16 Function 314e5c31af7Sopenharmony_ci %46 = OpVariable %16 Function 315e5c31af7Sopenharmony_ci %54 = OpVariable %29 Function 316e5c31af7Sopenharmony_ci %100 = OpVariable %29 Function 317e5c31af7Sopenharmony_ci %118 = OpVariable %8 Function 318e5c31af7Sopenharmony_ci %209 = OpVariable %29 Function 319e5c31af7Sopenharmony_ci %233 = OpVariable %29 Function 320e5c31af7Sopenharmony_ci %264 = OpVariable %16 Function 321e5c31af7Sopenharmony_ci %290 = OpVariable %29 Function 322e5c31af7Sopenharmony_ci %308 = OpVariable %307 Function 323e5c31af7Sopenharmony_ci %318 = OpVariable %29 Function 324e5c31af7Sopenharmony_ci %13 = OpLoad %10 %12 325e5c31af7Sopenharmony_ci %14 = OpVectorShuffle %7 %13 %13 0 1 326e5c31af7Sopenharmony_ci OpStore %9 %14 327e5c31af7Sopenharmony_ci %27 = OpAccessChain %26 %23 %24 %25 328e5c31af7Sopenharmony_ci %28 = OpLoad %15 %27 329e5c31af7Sopenharmony_ci OpStore %17 %28 330e5c31af7Sopenharmony_ci %32 = OpAccessChain %26 %23 %24 %31 331e5c31af7Sopenharmony_ci %33 = OpLoad %15 %32 332e5c31af7Sopenharmony_ci %34 = OpConvertSToF %6 %33 333e5c31af7Sopenharmony_ci %35 = OpCompositeConstruct %10 %34 %34 %34 %34 334e5c31af7Sopenharmony_ci OpStore %30 %35 335e5c31af7Sopenharmony_ci OpStore %36 %24 336e5c31af7Sopenharmony_ci OpBranch %37 337e5c31af7Sopenharmony_ci %37 = OpLabel 338e5c31af7Sopenharmony_ci OpLoopMerge %39 %40 None 339e5c31af7Sopenharmony_ci OpBranch %41 340e5c31af7Sopenharmony_ci %41 = OpLabel 341e5c31af7Sopenharmony_ci %42 = OpLoad %15 %36 342e5c31af7Sopenharmony_ci %45 = OpSLessThan %44 %42 %43 343e5c31af7Sopenharmony_ci OpBranchConditional %45 %38 %39 344e5c31af7Sopenharmony_ci %38 = OpLabel 345e5c31af7Sopenharmony_ci OpStore %46 %24 346e5c31af7Sopenharmony_ci OpBranch %47 347e5c31af7Sopenharmony_ci %47 = OpLabel 348e5c31af7Sopenharmony_ci OpLoopMerge %49 %50 None 349e5c31af7Sopenharmony_ci OpBranch %51 350e5c31af7Sopenharmony_ci %51 = OpLabel 351e5c31af7Sopenharmony_ci %52 = OpLoad %15 %46 352e5c31af7Sopenharmony_ci %53 = OpSLessThan %44 %52 %43 353e5c31af7Sopenharmony_ci OpBranchConditional %53 %48 %49 354e5c31af7Sopenharmony_ci %48 = OpLabel 355e5c31af7Sopenharmony_ci %59 = OpLoad %56 %58 356e5c31af7Sopenharmony_ci %60 = OpAccessChain %26 %23 %24 %24 357e5c31af7Sopenharmony_ci %61 = OpLoad %15 %60 358e5c31af7Sopenharmony_ci %62 = OpConvertSToF %6 %61 359e5c31af7Sopenharmony_ci %63 = OpCompositeConstruct %7 %62 %62 360e5c31af7Sopenharmony_ci %64 = OpAccessChain %26 %23 %24 %24 361e5c31af7Sopenharmony_ci %65 = OpLoad %15 %64 362e5c31af7Sopenharmony_ci %66 = OpConvertSToF %6 %65 363e5c31af7Sopenharmony_ci %67 = OpCompositeConstruct %7 %66 %66 364e5c31af7Sopenharmony_ci %68 = OpLoad %15 %36 365e5c31af7Sopenharmony_ci %69 = OpConvertSToF %6 %68 366e5c31af7Sopenharmony_ci %70 = OpLoad %15 %46 367e5c31af7Sopenharmony_ci %71 = OpAccessChain %26 %23 %24 %24 368e5c31af7Sopenharmony_ci %72 = OpLoad %15 %71 369e5c31af7Sopenharmony_ci %73 = OpISub %15 %70 %72 370e5c31af7Sopenharmony_ci %74 = OpConvertSToF %6 %73 371e5c31af7Sopenharmony_ci %75 = OpCompositeConstruct %7 %69 %74 372e5c31af7Sopenharmony_ci %76 = OpExtInst %7 %1 FMax %67 %75 373e5c31af7Sopenharmony_ci %77 = OpFAdd %7 %63 %76 374e5c31af7Sopenharmony_ci %78 = OpAccessChain %26 %23 %24 %24 375e5c31af7Sopenharmony_ci %79 = OpLoad %15 %78 376e5c31af7Sopenharmony_ci %80 = OpConvertSToF %6 %79 377e5c31af7Sopenharmony_ci %81 = OpCompositeConstruct %7 %80 %80 378e5c31af7Sopenharmony_ci %82 = OpAccessChain %26 %23 %24 %24 379e5c31af7Sopenharmony_ci %83 = OpLoad %15 %82 380e5c31af7Sopenharmony_ci %84 = OpConvertSToF %6 %83 381e5c31af7Sopenharmony_ci %87 = OpAccessChain %86 %9 %85 382e5c31af7Sopenharmony_ci %88 = OpLoad %6 %87 383e5c31af7Sopenharmony_ci %89 = OpLoad %15 %46 384e5c31af7Sopenharmony_ci %90 = OpConvertSToF %6 %89 385e5c31af7Sopenharmony_ci %91 = OpFAdd %6 %88 %90 386e5c31af7Sopenharmony_ci %92 = OpCompositeConstruct %7 %84 %91 387e5c31af7Sopenharmony_ci %93 = OpAccessChain %26 %23 %24 %24 388e5c31af7Sopenharmony_ci %94 = OpLoad %15 %93 389e5c31af7Sopenharmony_ci %95 = OpConvertSToF %6 %94 390e5c31af7Sopenharmony_ci %96 = OpCompositeConstruct %7 %95 %95 391e5c31af7Sopenharmony_ci %97 = OpFSub %7 %92 %96 392e5c31af7Sopenharmony_ci %98 = OpExtInst %7 %1 FClamp %77 %81 %97 393e5c31af7Sopenharmony_ci %99 = OpImageSampleImplicitLod %10 %59 %98 394e5c31af7Sopenharmony_ci OpStore %54 %99 395e5c31af7Sopenharmony_ci %101 = OpLoad %56 %58 396e5c31af7Sopenharmony_ci %102 = OpAccessChain %26 %23 %24 %24 397e5c31af7Sopenharmony_ci %103 = OpLoad %15 %102 398e5c31af7Sopenharmony_ci %104 = OpConvertSToF %6 %103 399e5c31af7Sopenharmony_ci %105 = OpCompositeConstruct %7 %104 %104 400e5c31af7Sopenharmony_ci %108 = OpAccessChain %107 %12 %106 401e5c31af7Sopenharmony_ci %109 = OpLoad %6 %108 402e5c31af7Sopenharmony_ci %115 = OpAccessChain %114 %113 %24 %24 403e5c31af7Sopenharmony_ci %116 = OpLoad %6 %115 404e5c31af7Sopenharmony_ci %117 = OpFOrdGreaterThan %44 %109 %116 405e5c31af7Sopenharmony_ci OpSelectionMerge %120 None 406e5c31af7Sopenharmony_ci OpBranchConditional %117 %119 %133 407e5c31af7Sopenharmony_ci %119 = OpLabel 408e5c31af7Sopenharmony_ci %121 = OpLoad %15 %36 409e5c31af7Sopenharmony_ci %122 = OpConvertSToF %6 %121 410e5c31af7Sopenharmony_ci %123 = OpAccessChain %26 %23 %24 %24 411e5c31af7Sopenharmony_ci %124 = OpLoad %15 %123 412e5c31af7Sopenharmony_ci %125 = OpConvertSToF %6 %124 413e5c31af7Sopenharmony_ci %126 = OpCompositeConstruct %7 %122 %125 414e5c31af7Sopenharmony_ci %127 = OpLoad %15 %17 415e5c31af7Sopenharmony_ci %128 = OpConvertSToF %6 %127 416e5c31af7Sopenharmony_ci %129 = OpLoad %15 %46 417e5c31af7Sopenharmony_ci %130 = OpConvertSToF %6 %129 418e5c31af7Sopenharmony_ci %131 = OpCompositeConstruct %7 %128 %130 419e5c31af7Sopenharmony_ci %132 = OpExtInst %7 %1 FMax %126 %131 420e5c31af7Sopenharmony_ci OpStore %118 %132 421e5c31af7Sopenharmony_ci OpBranch %120 422e5c31af7Sopenharmony_ci %133 = OpLabel 423e5c31af7Sopenharmony_ci %134 = OpAccessChain %26 %23 %24 %24 424e5c31af7Sopenharmony_ci %135 = OpLoad %15 %134 425e5c31af7Sopenharmony_ci %136 = OpConvertSToF %6 %135 426e5c31af7Sopenharmony_ci %137 = OpCompositeConstruct %7 %136 %136 427e5c31af7Sopenharmony_ci OpStore %118 %137 428e5c31af7Sopenharmony_ci OpBranch %120 429e5c31af7Sopenharmony_ci %120 = OpLabel 430e5c31af7Sopenharmony_ci %138 = OpLoad %7 %118 431e5c31af7Sopenharmony_ci %139 = OpAccessChain %26 %23 %24 %24 432e5c31af7Sopenharmony_ci %140 = OpLoad %15 %139 433e5c31af7Sopenharmony_ci %141 = OpConvertSToF %6 %140 434e5c31af7Sopenharmony_ci %142 = OpCompositeConstruct %7 %141 %141 435e5c31af7Sopenharmony_ci %143 = OpExtInst %7 %1 FMin %138 %142 436e5c31af7Sopenharmony_ci %144 = OpLoad %15 %36 437e5c31af7Sopenharmony_ci %145 = OpConvertSToF %6 %144 438e5c31af7Sopenharmony_ci %146 = OpLoad %15 %46 439e5c31af7Sopenharmony_ci %147 = OpConvertSToF %6 %146 440e5c31af7Sopenharmony_ci %148 = OpCompositeConstruct %7 %145 %147 441e5c31af7Sopenharmony_ci %149 = OpLoad %15 %17 442e5c31af7Sopenharmony_ci %150 = OpConvertSToF %6 %149 443e5c31af7Sopenharmony_ci %151 = OpLoad %15 %46 444e5c31af7Sopenharmony_ci %152 = OpConvertSToF %6 %151 445e5c31af7Sopenharmony_ci %153 = OpCompositeConstruct %7 %150 %152 446e5c31af7Sopenharmony_ci %154 = OpExtInst %7 %1 FMax %148 %153 447e5c31af7Sopenharmony_ci %155 = OpExtInst %7 %1 FMin %143 %154 448e5c31af7Sopenharmony_ci %156 = OpFAdd %7 %105 %155 449e5c31af7Sopenharmony_ci %157 = OpAccessChain %26 %23 %24 %24 450e5c31af7Sopenharmony_ci %158 = OpLoad %15 %157 451e5c31af7Sopenharmony_ci %159 = OpConvertSToF %6 %158 452e5c31af7Sopenharmony_ci %160 = OpCompositeConstruct %7 %159 %159 453e5c31af7Sopenharmony_ci %161 = OpLoad %15 %36 454e5c31af7Sopenharmony_ci %162 = OpConvertSToF %6 %161 455e5c31af7Sopenharmony_ci %163 = OpLoad %15 %46 456e5c31af7Sopenharmony_ci %164 = OpConvertSToF %6 %163 457e5c31af7Sopenharmony_ci %165 = OpCompositeConstruct %7 %162 %164 458e5c31af7Sopenharmony_ci %166 = OpLoad %15 %36 459e5c31af7Sopenharmony_ci %167 = OpConvertSToF %6 %166 460e5c31af7Sopenharmony_ci %168 = OpAccessChain %26 %23 %24 %24 461e5c31af7Sopenharmony_ci %169 = OpLoad %15 %168 462e5c31af7Sopenharmony_ci %170 = OpConvertSToF %6 %169 463e5c31af7Sopenharmony_ci %171 = OpCompositeConstruct %7 %167 %170 464e5c31af7Sopenharmony_ci %172 = OpExtInst %7 %1 FMax %165 %171 465e5c31af7Sopenharmony_ci %173 = OpFAdd %7 %160 %172 466e5c31af7Sopenharmony_ci %174 = OpAccessChain %26 %23 %24 %24 467e5c31af7Sopenharmony_ci %175 = OpLoad %15 %174 468e5c31af7Sopenharmony_ci %176 = OpConvertSToF %6 %175 469e5c31af7Sopenharmony_ci %177 = OpCompositeConstruct %7 %176 %176 470e5c31af7Sopenharmony_ci %178 = OpAccessChain %26 %23 %24 %24 471e5c31af7Sopenharmony_ci %179 = OpLoad %15 %178 472e5c31af7Sopenharmony_ci %180 = OpConvertSToF %6 %179 473e5c31af7Sopenharmony_ci %181 = OpCompositeConstruct %7 %180 %180 474e5c31af7Sopenharmony_ci %182 = OpAccessChain %26 %23 %24 %24 475e5c31af7Sopenharmony_ci %183 = OpLoad %15 %182 476e5c31af7Sopenharmony_ci %184 = OpConvertSToF %6 %183 477e5c31af7Sopenharmony_ci %185 = OpCompositeConstruct %7 %184 %184 478e5c31af7Sopenharmony_ci %186 = OpLoad %15 %36 479e5c31af7Sopenharmony_ci %187 = OpConvertSToF %6 %186 480e5c31af7Sopenharmony_ci %188 = OpLoad %15 %46 481e5c31af7Sopenharmony_ci %189 = OpConvertSToF %6 %188 482e5c31af7Sopenharmony_ci %190 = OpCompositeConstruct %7 %187 %189 483e5c31af7Sopenharmony_ci %191 = OpExtInst %7 %1 FMax %185 %190 484e5c31af7Sopenharmony_ci %192 = OpAccessChain %26 %23 %24 %24 485e5c31af7Sopenharmony_ci %193 = OpLoad %15 %192 486e5c31af7Sopenharmony_ci %194 = OpConvertSToF %6 %193 487e5c31af7Sopenharmony_ci %195 = OpCompositeConstruct %7 %194 %194 488e5c31af7Sopenharmony_ci %196 = OpLoad %15 %36 489e5c31af7Sopenharmony_ci %197 = OpAccessChain %26 %23 %24 %24 490e5c31af7Sopenharmony_ci %198 = OpLoad %15 %197 491e5c31af7Sopenharmony_ci %199 = OpISub %15 %196 %198 492e5c31af7Sopenharmony_ci %200 = OpConvertSToF %6 %199 493e5c31af7Sopenharmony_ci %201 = OpLoad %15 %46 494e5c31af7Sopenharmony_ci %202 = OpConvertSToF %6 %201 495e5c31af7Sopenharmony_ci %203 = OpCompositeConstruct %7 %200 %202 496e5c31af7Sopenharmony_ci %204 = OpExtInst %7 %1 FMax %195 %203 497e5c31af7Sopenharmony_ci %205 = OpExtInst %7 %1 FClamp %181 %191 %204 498e5c31af7Sopenharmony_ci %206 = OpFAdd %7 %177 %205 499e5c31af7Sopenharmony_ci %207 = OpExtInst %7 %1 FClamp %156 %173 %206 500e5c31af7Sopenharmony_ci %208 = OpImageSampleImplicitLod %10 %101 %207 501e5c31af7Sopenharmony_ci OpStore %100 %208 502e5c31af7Sopenharmony_ci %210 = OpLoad %56 %58 503e5c31af7Sopenharmony_ci %211 = OpAccessChain %26 %23 %24 %24 504e5c31af7Sopenharmony_ci %212 = OpLoad %15 %211 505e5c31af7Sopenharmony_ci %213 = OpConvertSToF %6 %212 506e5c31af7Sopenharmony_ci %214 = OpCompositeConstruct %7 %213 %213 507e5c31af7Sopenharmony_ci %215 = OpLoad %15 %36 508e5c31af7Sopenharmony_ci %216 = OpLoad %15 %17 509e5c31af7Sopenharmony_ci %217 = OpIMul %15 %215 %216 510e5c31af7Sopenharmony_ci %218 = OpConvertSToF %6 %217 511e5c31af7Sopenharmony_ci %219 = OpLoad %15 %46 512e5c31af7Sopenharmony_ci %220 = OpConvertSToF %6 %219 513e5c31af7Sopenharmony_ci %221 = OpCompositeConstruct %7 %218 %220 514e5c31af7Sopenharmony_ci %222 = OpFAdd %7 %214 %221 515e5c31af7Sopenharmony_ci %223 = OpAccessChain %26 %23 %24 %24 516e5c31af7Sopenharmony_ci %224 = OpLoad %15 %223 517e5c31af7Sopenharmony_ci %225 = OpConvertSToF %6 %224 518e5c31af7Sopenharmony_ci %226 = OpCompositeConstruct %7 %225 %225 519e5c31af7Sopenharmony_ci %227 = OpAccessChain %26 %23 %24 %24 520e5c31af7Sopenharmony_ci %228 = OpLoad %15 %227 521e5c31af7Sopenharmony_ci %229 = OpConvertSToF %6 %228 522e5c31af7Sopenharmony_ci %230 = OpCompositeConstruct %7 %229 %229 523e5c31af7Sopenharmony_ci %231 = OpExtInst %7 %1 FClamp %222 %226 %230 524e5c31af7Sopenharmony_ci %232 = OpImageSampleImplicitLod %10 %210 %231 525e5c31af7Sopenharmony_ci OpStore %209 %232 526e5c31af7Sopenharmony_ci %234 = OpLoad %56 %58 527e5c31af7Sopenharmony_ci %235 = OpAccessChain %26 %23 %24 %24 528e5c31af7Sopenharmony_ci %236 = OpLoad %15 %235 529e5c31af7Sopenharmony_ci %237 = OpConvertSToF %6 %236 530e5c31af7Sopenharmony_ci %238 = OpCompositeConstruct %7 %237 %237 531e5c31af7Sopenharmony_ci %239 = OpLoad %15 %36 532e5c31af7Sopenharmony_ci %240 = OpConvertSToF %6 %239 533e5c31af7Sopenharmony_ci %241 = OpAccessChain %26 %23 %24 %24 534e5c31af7Sopenharmony_ci %242 = OpLoad %15 %241 535e5c31af7Sopenharmony_ci %243 = OpConvertSToF %6 %242 536e5c31af7Sopenharmony_ci %244 = OpCompositeConstruct %7 %240 %243 537e5c31af7Sopenharmony_ci %245 = OpAccessChain %26 %23 %24 %24 538e5c31af7Sopenharmony_ci %246 = OpLoad %15 %245 539e5c31af7Sopenharmony_ci %247 = OpConvertSToF %6 %246 540e5c31af7Sopenharmony_ci %248 = OpLoad %15 %46 541e5c31af7Sopenharmony_ci %249 = OpConvertSToF %6 %248 542e5c31af7Sopenharmony_ci %250 = OpCompositeConstruct %7 %247 %249 543e5c31af7Sopenharmony_ci %251 = OpExtInst %7 %1 FMax %244 %250 544e5c31af7Sopenharmony_ci %252 = OpFAdd %7 %238 %251 545e5c31af7Sopenharmony_ci %253 = OpAccessChain %26 %23 %24 %24 546e5c31af7Sopenharmony_ci %254 = OpLoad %15 %253 547e5c31af7Sopenharmony_ci %255 = OpConvertSToF %6 %254 548e5c31af7Sopenharmony_ci %256 = OpCompositeConstruct %7 %255 %255 549e5c31af7Sopenharmony_ci %257 = OpLoad %15 %36 550e5c31af7Sopenharmony_ci %258 = OpConvertSToF %6 %257 551e5c31af7Sopenharmony_ci %259 = OpAccessChain %107 %12 %85 552e5c31af7Sopenharmony_ci %260 = OpLoad %6 %259 553e5c31af7Sopenharmony_ci %261 = OpAccessChain %114 %113 %24 %24 554e5c31af7Sopenharmony_ci %262 = OpLoad %6 %261 555e5c31af7Sopenharmony_ci %263 = OpFOrdGreaterThan %44 %260 %262 556e5c31af7Sopenharmony_ci OpSelectionMerge %266 None 557e5c31af7Sopenharmony_ci OpBranchConditional %263 %265 %269 558e5c31af7Sopenharmony_ci %265 = OpLabel 559e5c31af7Sopenharmony_ci %267 = OpAccessChain %26 %23 %24 %24 560e5c31af7Sopenharmony_ci %268 = OpLoad %15 %267 561e5c31af7Sopenharmony_ci OpStore %264 %268 562e5c31af7Sopenharmony_ci OpBranch %266 563e5c31af7Sopenharmony_ci %269 = OpLabel 564e5c31af7Sopenharmony_ci %270 = OpLoad %15 %46 565e5c31af7Sopenharmony_ci OpStore %264 %270 566e5c31af7Sopenharmony_ci OpBranch %266 567e5c31af7Sopenharmony_ci %266 = OpLabel 568e5c31af7Sopenharmony_ci %271 = OpLoad %15 %264 569e5c31af7Sopenharmony_ci %272 = OpConvertSToF %6 %271 570e5c31af7Sopenharmony_ci %273 = OpCompositeConstruct %7 %258 %272 571e5c31af7Sopenharmony_ci %274 = OpAccessChain %26 %23 %24 %24 572e5c31af7Sopenharmony_ci %275 = OpLoad %15 %274 573e5c31af7Sopenharmony_ci %276 = OpConvertSToF %6 %275 574e5c31af7Sopenharmony_ci %277 = OpCompositeConstruct %7 %276 %276 575e5c31af7Sopenharmony_ci %278 = OpExtInst %7 %1 FMax %273 %277 576e5c31af7Sopenharmony_ci %279 = OpFAdd %7 %256 %278 577e5c31af7Sopenharmony_ci %280 = OpLoad %7 %9 578e5c31af7Sopenharmony_ci %281 = OpAccessChain %26 %23 %24 %24 579e5c31af7Sopenharmony_ci %282 = OpLoad %15 %281 580e5c31af7Sopenharmony_ci %283 = OpConvertSToF %6 %282 581e5c31af7Sopenharmony_ci %284 = OpLoad %15 %46 582e5c31af7Sopenharmony_ci %285 = OpConvertSToF %6 %284 583e5c31af7Sopenharmony_ci %286 = OpCompositeConstruct %7 %283 %285 584e5c31af7Sopenharmony_ci %287 = OpFAdd %7 %280 %286 585e5c31af7Sopenharmony_ci %288 = OpExtInst %7 %1 FClamp %252 %279 %287 586e5c31af7Sopenharmony_ci %289 = OpImageSampleImplicitLod %10 %234 %288 587e5c31af7Sopenharmony_ci OpStore %233 %289 588e5c31af7Sopenharmony_ci %291 = OpLoad %10 %100 589e5c31af7Sopenharmony_ci %292 = OpLoad %10 %209 590e5c31af7Sopenharmony_ci %293 = OpLoad %10 %233 591e5c31af7Sopenharmony_ci %294 = OpExtInst %10 %1 FClamp %291 %292 %293 592e5c31af7Sopenharmony_ci OpStore %290 %294 593e5c31af7Sopenharmony_ci %295 = OpLoad %10 %54 594e5c31af7Sopenharmony_ci %296 = OpLoad %10 %290 595e5c31af7Sopenharmony_ci %297 = OpExtInst %10 %1 FMin %295 %296 596e5c31af7Sopenharmony_ci %303 = OpLoad %15 %36 597e5c31af7Sopenharmony_ci %304 = OpIMul %15 %303 %43 598e5c31af7Sopenharmony_ci %305 = OpLoad %15 %46 599e5c31af7Sopenharmony_ci %306 = OpIAdd %15 %304 %305 600e5c31af7Sopenharmony_ci OpStore %308 %302 601e5c31af7Sopenharmony_ci %309 = OpAccessChain %86 %308 %306 602e5c31af7Sopenharmony_ci %310 = OpLoad %6 %309 603e5c31af7Sopenharmony_ci %311 = OpVectorTimesScalar %10 %297 %310 604e5c31af7Sopenharmony_ci %312 = OpLoad %10 %30 605e5c31af7Sopenharmony_ci %313 = OpFAdd %10 %312 %311 606e5c31af7Sopenharmony_ci OpStore %30 %313 607e5c31af7Sopenharmony_ci OpBranch %50 608e5c31af7Sopenharmony_ci %50 = OpLabel 609e5c31af7Sopenharmony_ci %314 = OpLoad %15 %46 610e5c31af7Sopenharmony_ci %315 = OpIAdd %15 %314 %31 611e5c31af7Sopenharmony_ci OpStore %46 %315 612e5c31af7Sopenharmony_ci OpBranch %47 613e5c31af7Sopenharmony_ci %49 = OpLabel 614e5c31af7Sopenharmony_ci OpBranch %40 615e5c31af7Sopenharmony_ci %40 = OpLabel 616e5c31af7Sopenharmony_ci %316 = OpLoad %15 %36 617e5c31af7Sopenharmony_ci %317 = OpIAdd %15 %316 %31 618e5c31af7Sopenharmony_ci OpStore %36 %317 619e5c31af7Sopenharmony_ci OpBranch %37 620e5c31af7Sopenharmony_ci %39 = OpLabel 621e5c31af7Sopenharmony_ci %319 = OpLoad %56 %58 622e5c31af7Sopenharmony_ci %320 = OpAccessChain %26 %23 %24 %24 623e5c31af7Sopenharmony_ci %321 = OpLoad %15 %320 624e5c31af7Sopenharmony_ci %322 = OpConvertSToF %6 %321 625e5c31af7Sopenharmony_ci %323 = OpAccessChain %26 %23 %24 %24 626e5c31af7Sopenharmony_ci %324 = OpLoad %15 %323 627e5c31af7Sopenharmony_ci %325 = OpConvertSToF %6 %324 628e5c31af7Sopenharmony_ci %326 = OpCompositeConstruct %7 %322 %325 629e5c31af7Sopenharmony_ci %327 = OpImageSampleImplicitLod %10 %319 %326 630e5c31af7Sopenharmony_ci OpStore %318 %327 631e5c31af7Sopenharmony_ci %328 = OpLoad %10 %318 632e5c31af7Sopenharmony_ci %329 = OpLoad %10 %30 633e5c31af7Sopenharmony_ci %331 = OpFOrdEqual %330 %328 %329 634e5c31af7Sopenharmony_ci %332 = OpAll %44 %331 635e5c31af7Sopenharmony_ci OpSelectionMerge %334 None 636e5c31af7Sopenharmony_ci OpBranchConditional %332 %333 %350 637e5c31af7Sopenharmony_ci %333 = OpLabel 638e5c31af7Sopenharmony_ci %337 = OpAccessChain %26 %23 %24 %24 639e5c31af7Sopenharmony_ci %338 = OpLoad %15 %337 640e5c31af7Sopenharmony_ci %339 = OpConvertSToF %6 %338 641e5c31af7Sopenharmony_ci %340 = OpAccessChain %26 %23 %24 %31 642e5c31af7Sopenharmony_ci %341 = OpLoad %15 %340 643e5c31af7Sopenharmony_ci %342 = OpConvertSToF %6 %341 644e5c31af7Sopenharmony_ci %343 = OpAccessChain %26 %23 %24 %31 645e5c31af7Sopenharmony_ci %344 = OpLoad %15 %343 646e5c31af7Sopenharmony_ci %345 = OpConvertSToF %6 %344 647e5c31af7Sopenharmony_ci %346 = OpAccessChain %26 %23 %24 %24 648e5c31af7Sopenharmony_ci %347 = OpLoad %15 %346 649e5c31af7Sopenharmony_ci %348 = OpConvertSToF %6 %347 650e5c31af7Sopenharmony_ci %349 = OpCompositeConstruct %10 %339 %342 %345 %348 651e5c31af7Sopenharmony_ci OpStore %336 %349 652e5c31af7Sopenharmony_ci OpBranch %334 653e5c31af7Sopenharmony_ci %350 = OpLabel 654e5c31af7Sopenharmony_ci %351 = OpAccessChain %26 %23 %24 %31 655e5c31af7Sopenharmony_ci %352 = OpLoad %15 %351 656e5c31af7Sopenharmony_ci %353 = OpConvertSToF %6 %352 657e5c31af7Sopenharmony_ci %354 = OpCompositeConstruct %10 %353 %353 %353 %353 658e5c31af7Sopenharmony_ci OpStore %336 %354 659e5c31af7Sopenharmony_ci OpBranch %334 660e5c31af7Sopenharmony_ci %334 = OpLabel 661e5c31af7Sopenharmony_ci OpReturn 662e5c31af7Sopenharmony_ci OpFunctionEnd 663e5c31af7Sopenharmony_ciEND 664e5c31af7Sopenharmony_ci 665e5c31af7Sopenharmony_ci# uniforms for variant 666e5c31af7Sopenharmony_ci 667e5c31af7Sopenharmony_ci# tex 668e5c31af7Sopenharmony_ciSAMPLER variant_tex 669e5c31af7Sopenharmony_ci 670e5c31af7Sopenharmony_ci# _GLF_uniform_int_values 671e5c31af7Sopenharmony_ciBUFFER variant__GLF_uniform_int_values DATA_TYPE int32[] STD140 DATA 672e5c31af7Sopenharmony_ci 1 0 256 673e5c31af7Sopenharmony_ciEND 674e5c31af7Sopenharmony_ci# _GLF_uniform_float_values 675e5c31af7Sopenharmony_ciBUFFER variant__GLF_uniform_float_values DATA_TYPE float[] STD140 DATA 676e5c31af7Sopenharmony_ci 0.0 677e5c31af7Sopenharmony_ciEND 678e5c31af7Sopenharmony_ci 679e5c31af7Sopenharmony_ciBUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM 680e5c31af7Sopenharmony_ci 681e5c31af7Sopenharmony_ciPIPELINE graphics variant_pipeline 682e5c31af7Sopenharmony_ci ATTACH variant_vertex_shader 683e5c31af7Sopenharmony_ci ATTACH variant_fragment_shader 684e5c31af7Sopenharmony_ci FRAMEBUFFER_SIZE 32 32 685e5c31af7Sopenharmony_ci BIND BUFFER variant_framebuffer AS color LOCATION 0 686e5c31af7Sopenharmony_ci BIND BUFFER default_texture AS combined_image_sampler SAMPLER variant_tex DESCRIPTOR_SET 0 BINDING 2 687e5c31af7Sopenharmony_ci BIND BUFFER variant__GLF_uniform_int_values AS uniform DESCRIPTOR_SET 0 BINDING 1 688e5c31af7Sopenharmony_ci BIND BUFFER variant__GLF_uniform_float_values AS uniform DESCRIPTOR_SET 0 BINDING 0 689e5c31af7Sopenharmony_ciEND 690e5c31af7Sopenharmony_ciCLEAR_COLOR variant_pipeline 0 0 0 255 691e5c31af7Sopenharmony_ci 692e5c31af7Sopenharmony_ciCLEAR variant_pipeline 693e5c31af7Sopenharmony_ciRUN variant_pipeline DRAW_RECT POS 0 0 SIZE 32 32 694e5c31af7Sopenharmony_ci 695e5c31af7Sopenharmony_ciEXPECT variant_framebuffer IDX 0 0 SIZE 32 32 EQ_RGBA 255 0 0 255 696