1e5c31af7Sopenharmony_ci#!amber 2e5c31af7Sopenharmony_ci 3e5c31af7Sopenharmony_ci# Copyright 2020 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 the GraphicsFuzz project. 19e5c31af7Sopenharmony_ci 20e5c31af7Sopenharmony_ci# Short description: Equivalent shaders, one with irrelevant extra instructions 21e5c31af7Sopenharmony_ci 22e5c31af7Sopenharmony_ci# The test passes because both shaders render the same image. 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 reference_vertex_shader PASSTHROUGH 55e5c31af7Sopenharmony_ci 56e5c31af7Sopenharmony_ciSHADER fragment reference_fragment_shader SPIRV-ASM TARGET_ENV spv1.0 57e5c31af7Sopenharmony_ci; SPIR-V 58e5c31af7Sopenharmony_ci; Version: 1.0 59e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 10 60e5c31af7Sopenharmony_ci; Bound: 75 61e5c31af7Sopenharmony_ci; Schema: 0 62e5c31af7Sopenharmony_ci OpCapability Shader 63e5c31af7Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 64e5c31af7Sopenharmony_ci OpMemoryModel Logical GLSL450 65e5c31af7Sopenharmony_ci OpEntryPoint Fragment %4 "main" %16 %73 66e5c31af7Sopenharmony_ci OpExecutionMode %4 OriginUpperLeft 67e5c31af7Sopenharmony_ci OpSource ESSL 320 68e5c31af7Sopenharmony_ci OpName %4 "main" 69e5c31af7Sopenharmony_ci OpName %8 "i" 70e5c31af7Sopenharmony_ci OpName %13 "coord" 71e5c31af7Sopenharmony_ci OpName %16 "gl_FragCoord" 72e5c31af7Sopenharmony_ci OpName %22 "texel" 73e5c31af7Sopenharmony_ci OpName %26 "tex" 74e5c31af7Sopenharmony_ci OpName %73 "_GLF_color" 75e5c31af7Sopenharmony_ci OpDecorate %8 RelaxedPrecision 76e5c31af7Sopenharmony_ci OpDecorate %16 BuiltIn FragCoord 77e5c31af7Sopenharmony_ci OpDecorate %26 RelaxedPrecision 78e5c31af7Sopenharmony_ci OpDecorate %26 DescriptorSet 0 79e5c31af7Sopenharmony_ci OpDecorate %26 Binding 0 80e5c31af7Sopenharmony_ci OpDecorate %27 RelaxedPrecision 81e5c31af7Sopenharmony_ci OpDecorate %29 RelaxedPrecision 82e5c31af7Sopenharmony_ci OpDecorate %51 RelaxedPrecision 83e5c31af7Sopenharmony_ci OpDecorate %66 RelaxedPrecision 84e5c31af7Sopenharmony_ci OpDecorate %68 RelaxedPrecision 85e5c31af7Sopenharmony_ci OpDecorate %69 RelaxedPrecision 86e5c31af7Sopenharmony_ci OpDecorate %71 RelaxedPrecision 87e5c31af7Sopenharmony_ci OpDecorate %73 Location 0 88e5c31af7Sopenharmony_ci %2 = OpTypeVoid 89e5c31af7Sopenharmony_ci %3 = OpTypeFunction %2 90e5c31af7Sopenharmony_ci %6 = OpTypeInt 32 1 91e5c31af7Sopenharmony_ci %7 = OpTypePointer Function %6 92e5c31af7Sopenharmony_ci %9 = OpConstant %6 0 93e5c31af7Sopenharmony_ci %10 = OpTypeFloat 32 94e5c31af7Sopenharmony_ci %11 = OpTypeVector %10 2 95e5c31af7Sopenharmony_ci %12 = OpTypePointer Function %11 96e5c31af7Sopenharmony_ci %14 = OpTypeVector %10 4 97e5c31af7Sopenharmony_ci %15 = OpTypePointer Input %14 98e5c31af7Sopenharmony_ci %16 = OpVariable %15 Input 99e5c31af7Sopenharmony_ci %19 = OpConstant %10 0.00390625 100e5c31af7Sopenharmony_ci %21 = OpTypePointer Function %14 101e5c31af7Sopenharmony_ci %23 = OpTypeImage %10 2D 0 0 0 1 Unknown 102e5c31af7Sopenharmony_ci %24 = OpTypeSampledImage %23 103e5c31af7Sopenharmony_ci %25 = OpTypePointer UniformConstant %24 104e5c31af7Sopenharmony_ci %26 = OpVariable %25 UniformConstant 105e5c31af7Sopenharmony_ci %35 = OpTypeInt 32 0 106e5c31af7Sopenharmony_ci %36 = OpConstant %35 0 107e5c31af7Sopenharmony_ci %37 = OpTypePointer Function %10 108e5c31af7Sopenharmony_ci %40 = OpConstant %35 1 109e5c31af7Sopenharmony_ci %44 = OpConstant %35 2 110e5c31af7Sopenharmony_ci %48 = OpConstant %10 1 111e5c31af7Sopenharmony_ci %49 = OpTypeBool 112e5c31af7Sopenharmony_ci %52 = OpConstant %6 16 113e5c31af7Sopenharmony_ci %61 = OpConstant %10 256 114e5c31af7Sopenharmony_ci %70 = OpConstant %6 1 115e5c31af7Sopenharmony_ci %72 = OpTypePointer Output %14 116e5c31af7Sopenharmony_ci %73 = OpVariable %72 Output 117e5c31af7Sopenharmony_ci %4 = OpFunction %2 None %3 118e5c31af7Sopenharmony_ci %5 = OpLabel 119e5c31af7Sopenharmony_ci %8 = OpVariable %7 Function 120e5c31af7Sopenharmony_ci %13 = OpVariable %12 Function 121e5c31af7Sopenharmony_ci %22 = OpVariable %21 Function 122e5c31af7Sopenharmony_ci OpStore %8 %9 123e5c31af7Sopenharmony_ci %17 = OpLoad %14 %16 124e5c31af7Sopenharmony_ci %18 = OpVectorShuffle %11 %17 %17 0 1 125e5c31af7Sopenharmony_ci %20 = OpVectorTimesScalar %11 %18 %19 126e5c31af7Sopenharmony_ci OpStore %13 %20 127e5c31af7Sopenharmony_ci %27 = OpLoad %24 %26 128e5c31af7Sopenharmony_ci %28 = OpLoad %11 %13 129e5c31af7Sopenharmony_ci %29 = OpImageSampleImplicitLod %14 %27 %28 130e5c31af7Sopenharmony_ci OpStore %22 %29 131e5c31af7Sopenharmony_ci OpBranch %30 132e5c31af7Sopenharmony_ci %30 = OpLabel 133e5c31af7Sopenharmony_ci OpLoopMerge %32 %33 None 134e5c31af7Sopenharmony_ci OpBranch %34 135e5c31af7Sopenharmony_ci %34 = OpLabel 136e5c31af7Sopenharmony_ci %38 = OpAccessChain %37 %22 %36 137e5c31af7Sopenharmony_ci %39 = OpLoad %10 %38 138e5c31af7Sopenharmony_ci %41 = OpAccessChain %37 %22 %40 139e5c31af7Sopenharmony_ci %42 = OpLoad %10 %41 140e5c31af7Sopenharmony_ci %43 = OpFAdd %10 %39 %42 141e5c31af7Sopenharmony_ci %45 = OpAccessChain %37 %22 %44 142e5c31af7Sopenharmony_ci %46 = OpLoad %10 %45 143e5c31af7Sopenharmony_ci %47 = OpFAdd %10 %43 %46 144e5c31af7Sopenharmony_ci %50 = OpFOrdGreaterThan %49 %47 %48 145e5c31af7Sopenharmony_ci %51 = OpLoad %6 %8 146e5c31af7Sopenharmony_ci %53 = OpSLessThan %49 %51 %52 147e5c31af7Sopenharmony_ci %54 = OpLogicalAnd %49 %50 %53 148e5c31af7Sopenharmony_ci OpBranchConditional %54 %31 %32 149e5c31af7Sopenharmony_ci %31 = OpLabel 150e5c31af7Sopenharmony_ci %55 = OpLoad %14 %22 151e5c31af7Sopenharmony_ci %56 = OpVectorShuffle %11 %55 %55 0 2 152e5c31af7Sopenharmony_ci %57 = OpLoad %14 %22 153e5c31af7Sopenharmony_ci %58 = OpVectorShuffle %11 %57 %57 1 1 154e5c31af7Sopenharmony_ci %59 = OpFAdd %11 %56 %58 155e5c31af7Sopenharmony_ci OpStore %13 %59 156e5c31af7Sopenharmony_ci %60 = OpLoad %11 %13 157e5c31af7Sopenharmony_ci %62 = OpVectorTimesScalar %11 %60 %61 158e5c31af7Sopenharmony_ci %63 = OpExtInst %11 %1 Floor %62 159e5c31af7Sopenharmony_ci %64 = OpCompositeConstruct %11 %61 %61 160e5c31af7Sopenharmony_ci %65 = OpFDiv %11 %63 %64 161e5c31af7Sopenharmony_ci OpStore %13 %65 162e5c31af7Sopenharmony_ci %66 = OpLoad %24 %26 163e5c31af7Sopenharmony_ci %67 = OpLoad %11 %13 164e5c31af7Sopenharmony_ci %68 = OpImageSampleImplicitLod %14 %66 %67 165e5c31af7Sopenharmony_ci OpStore %22 %68 166e5c31af7Sopenharmony_ci %69 = OpLoad %6 %8 167e5c31af7Sopenharmony_ci %71 = OpIAdd %6 %69 %70 168e5c31af7Sopenharmony_ci OpStore %8 %71 169e5c31af7Sopenharmony_ci OpBranch %33 170e5c31af7Sopenharmony_ci %33 = OpLabel 171e5c31af7Sopenharmony_ci OpBranch %30 172e5c31af7Sopenharmony_ci %32 = OpLabel 173e5c31af7Sopenharmony_ci %74 = OpLoad %14 %22 174e5c31af7Sopenharmony_ci OpStore %73 %74 175e5c31af7Sopenharmony_ci OpReturn 176e5c31af7Sopenharmony_ci OpFunctionEnd 177e5c31af7Sopenharmony_ciEND 178e5c31af7Sopenharmony_ci 179e5c31af7Sopenharmony_ci# uniforms for reference 180e5c31af7Sopenharmony_ci 181e5c31af7Sopenharmony_ci# tex 182e5c31af7Sopenharmony_ciSAMPLER reference_tex 183e5c31af7Sopenharmony_ci 184e5c31af7Sopenharmony_ci 185e5c31af7Sopenharmony_ciBUFFER reference_framebuffer FORMAT B8G8R8A8_UNORM 186e5c31af7Sopenharmony_ci 187e5c31af7Sopenharmony_ciPIPELINE graphics reference_pipeline 188e5c31af7Sopenharmony_ci ATTACH reference_vertex_shader 189e5c31af7Sopenharmony_ci ATTACH reference_fragment_shader 190e5c31af7Sopenharmony_ci FRAMEBUFFER_SIZE 256 256 191e5c31af7Sopenharmony_ci BIND BUFFER reference_framebuffer AS color LOCATION 0 192e5c31af7Sopenharmony_ci BIND BUFFER default_texture AS combined_image_sampler SAMPLER reference_tex DESCRIPTOR_SET 0 BINDING 0 193e5c31af7Sopenharmony_ciEND 194e5c31af7Sopenharmony_ciCLEAR_COLOR reference_pipeline 0 0 0 255 195e5c31af7Sopenharmony_ci 196e5c31af7Sopenharmony_ciCLEAR reference_pipeline 197e5c31af7Sopenharmony_ciRUN reference_pipeline DRAW_RECT POS 0 0 SIZE 256 256 198e5c31af7Sopenharmony_ci 199e5c31af7Sopenharmony_ci 200e5c31af7Sopenharmony_ciSHADER vertex variant_vertex_shader PASSTHROUGH 201e5c31af7Sopenharmony_ci 202e5c31af7Sopenharmony_ciSHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0 203e5c31af7Sopenharmony_ci; SPIR-V 204e5c31af7Sopenharmony_ci; Version: 1.0 205e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 10 206e5c31af7Sopenharmony_ci; Bound: 377 207e5c31af7Sopenharmony_ci; Schema: 0 208e5c31af7Sopenharmony_ci OpCapability Shader 209e5c31af7Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 210e5c31af7Sopenharmony_ci OpMemoryModel Logical GLSL450 211e5c31af7Sopenharmony_ci OpEntryPoint Fragment %4 "main" %16 %73 212e5c31af7Sopenharmony_ci OpExecutionMode %4 OriginUpperLeft 213e5c31af7Sopenharmony_ci OpSource ESSL 320 214e5c31af7Sopenharmony_ci OpName %4 "main" 215e5c31af7Sopenharmony_ci OpName %8 "i" 216e5c31af7Sopenharmony_ci OpName %13 "coord" 217e5c31af7Sopenharmony_ci OpName %16 "gl_FragCoord" 218e5c31af7Sopenharmony_ci OpName %22 "texel" 219e5c31af7Sopenharmony_ci OpName %26 "tex" 220e5c31af7Sopenharmony_ci OpName %73 "_GLF_color" 221e5c31af7Sopenharmony_ci OpDecorate %8 RelaxedPrecision 222e5c31af7Sopenharmony_ci OpDecorate %16 BuiltIn FragCoord 223e5c31af7Sopenharmony_ci OpDecorate %26 RelaxedPrecision 224e5c31af7Sopenharmony_ci OpDecorate %26 DescriptorSet 0 225e5c31af7Sopenharmony_ci OpDecorate %26 Binding 0 226e5c31af7Sopenharmony_ci OpDecorate %27 RelaxedPrecision 227e5c31af7Sopenharmony_ci OpDecorate %29 RelaxedPrecision 228e5c31af7Sopenharmony_ci OpDecorate %51 RelaxedPrecision 229e5c31af7Sopenharmony_ci OpDecorate %66 RelaxedPrecision 230e5c31af7Sopenharmony_ci OpDecorate %68 RelaxedPrecision 231e5c31af7Sopenharmony_ci OpDecorate %69 RelaxedPrecision 232e5c31af7Sopenharmony_ci OpDecorate %71 RelaxedPrecision 233e5c31af7Sopenharmony_ci OpDecorate %73 Location 0 234e5c31af7Sopenharmony_ci %2 = OpTypeVoid 235e5c31af7Sopenharmony_ci %3 = OpTypeFunction %2 236e5c31af7Sopenharmony_ci %6 = OpTypeInt 32 1 237e5c31af7Sopenharmony_ci %7 = OpTypePointer Function %6 238e5c31af7Sopenharmony_ci %9 = OpConstant %6 0 239e5c31af7Sopenharmony_ci %10 = OpTypeFloat 32 240e5c31af7Sopenharmony_ci %11 = OpTypeVector %10 2 241e5c31af7Sopenharmony_ci %12 = OpTypePointer Function %11 242e5c31af7Sopenharmony_ci %14 = OpTypeVector %10 4 243e5c31af7Sopenharmony_ci %15 = OpTypePointer Input %14 244e5c31af7Sopenharmony_ci %16 = OpVariable %15 Input 245e5c31af7Sopenharmony_ci %19 = OpConstant %10 0.00390625 246e5c31af7Sopenharmony_ci %21 = OpTypePointer Function %14 247e5c31af7Sopenharmony_ci %23 = OpTypeImage %10 2D 0 0 0 1 Unknown 248e5c31af7Sopenharmony_ci %24 = OpTypeSampledImage %23 249e5c31af7Sopenharmony_ci %25 = OpTypePointer UniformConstant %24 250e5c31af7Sopenharmony_ci %26 = OpVariable %25 UniformConstant 251e5c31af7Sopenharmony_ci %35 = OpTypeInt 32 0 252e5c31af7Sopenharmony_ci %36 = OpConstant %35 0 253e5c31af7Sopenharmony_ci %37 = OpTypePointer Function %10 254e5c31af7Sopenharmony_ci %40 = OpConstant %35 1 255e5c31af7Sopenharmony_ci %44 = OpConstant %35 2 256e5c31af7Sopenharmony_ci %48 = OpConstant %10 1 257e5c31af7Sopenharmony_ci %49 = OpTypeBool 258e5c31af7Sopenharmony_ci %52 = OpConstant %6 16 259e5c31af7Sopenharmony_ci %61 = OpConstant %10 256 260e5c31af7Sopenharmony_ci %70 = OpConstant %6 1 261e5c31af7Sopenharmony_ci %72 = OpTypePointer Output %14 262e5c31af7Sopenharmony_ci %73 = OpVariable %72 Output 263e5c31af7Sopenharmony_ci %178 = OpTypeVector %6 3 264e5c31af7Sopenharmony_ci %179 = OpTypeVector %6 4 265e5c31af7Sopenharmony_ci %180 = OpTypeVector %35 2 266e5c31af7Sopenharmony_ci %181 = OpTypeVector %35 3 267e5c31af7Sopenharmony_ci %182 = OpTypeVector %10 3 268e5c31af7Sopenharmony_ci %183 = OpTypeMatrix %182 2 269e5c31af7Sopenharmony_ci %187 = OpTypeMatrix %14 4 270e5c31af7Sopenharmony_ci %222 = OpConstantComposite %180 %36 %36 271e5c31af7Sopenharmony_ci %225 = OpConstant %10 0 272e5c31af7Sopenharmony_ci %226 = OpConstantComposite %11 %225 %225 273e5c31af7Sopenharmony_ci %231 = OpConstantComposite %14 %225 %225 %225 %225 274e5c31af7Sopenharmony_ci %265 = OpTypeStruct %180 %180 275e5c31af7Sopenharmony_ci %267 = OpTypeStruct %35 %35 276e5c31af7Sopenharmony_ci %279 = OpTypePointer Function %265 277e5c31af7Sopenharmony_ci %280 = OpConstantComposite %265 %222 %222 278e5c31af7Sopenharmony_ci %294 = OpConstant %35 3 279e5c31af7Sopenharmony_ci %323 = OpTypePointer Function %35 280e5c31af7Sopenharmony_ci %4 = OpFunction %2 None %3 281e5c31af7Sopenharmony_ci %5 = OpLabel 282e5c31af7Sopenharmony_ci %293 = OpVariable %12 Function %226 283e5c31af7Sopenharmony_ci %288 = OpVariable %21 Function %231 284e5c31af7Sopenharmony_ci %281 = OpVariable %279 Function %280 285e5c31af7Sopenharmony_ci %8 = OpVariable %7 Function 286e5c31af7Sopenharmony_ci %13 = OpVariable %12 Function 287e5c31af7Sopenharmony_ci %22 = OpVariable %21 Function 288e5c31af7Sopenharmony_ci %188 = OpCompositeConstruct %180 %44 %40 289e5c31af7Sopenharmony_ci OpStore %8 %9 290e5c31af7Sopenharmony_ci %266 = OpIAddCarry %265 %188 %222 291e5c31af7Sopenharmony_ci %299 = OpULessThanEqual %49 %9 %70 292e5c31af7Sopenharmony_ci %344 = OpULessThanEqual %49 %294 %294 293e5c31af7Sopenharmony_ci %345 = OpSelect %35 %344 %294 %294 294e5c31af7Sopenharmony_ci OpStore %281 %266 295e5c31af7Sopenharmony_ci %346 = OpAccessChain %37 %288 %345 296e5c31af7Sopenharmony_ci %300 = OpSelect %6 %299 %9 %70 297e5c31af7Sopenharmony_ci %301 = OpAccessChain %37 %293 %300 298e5c31af7Sopenharmony_ci %17 = OpLoad %14 %16 299e5c31af7Sopenharmony_ci %360 = OpULessThanEqual %49 %36 %294 300e5c31af7Sopenharmony_ci %361 = OpSelect %35 %360 %36 %294 301e5c31af7Sopenharmony_ci %362 = OpAccessChain %37 %22 %361 302e5c31af7Sopenharmony_ci %223 = OpCompositeExtract %180 %266 0 303e5c31af7Sopenharmony_ci %189 = OpCompositeConstruct %14 %19 %19 %61 %61 304e5c31af7Sopenharmony_ci %18 = OpVectorShuffle %11 %17 %17 0 1 305e5c31af7Sopenharmony_ci %20 = OpVectorTimesScalar %11 %18 %19 306e5c31af7Sopenharmony_ci %227 = OpFSub %11 %20 %226 307e5c31af7Sopenharmony_ci %190 = OpCompositeConstruct %182 %61 %48 %48 308e5c31af7Sopenharmony_ci %228 = OpFSub %10 %48 %225 309e5c31af7Sopenharmony_ci OpStore %13 %20 310e5c31af7Sopenharmony_ci %191 = OpCompositeConstruct %180 %36 %40 311e5c31af7Sopenharmony_ci %27 = OpLoad %24 %26 312e5c31af7Sopenharmony_ci %28 = OpLoad %11 %13 313e5c31af7Sopenharmony_ci %29 = OpImageSampleImplicitLod %14 %27 %28 314e5c31af7Sopenharmony_ci OpStore %22 %29 315e5c31af7Sopenharmony_ci OpBranch %30 316e5c31af7Sopenharmony_ci %30 = OpLabel 317e5c31af7Sopenharmony_ci OpLoopMerge %32 %33 None 318e5c31af7Sopenharmony_ci OpBranch %34 319e5c31af7Sopenharmony_ci %34 = OpLabel 320e5c31af7Sopenharmony_ci %38 = OpAccessChain %37 %22 %36 321e5c31af7Sopenharmony_ci %39 = OpLoad %10 %38 322e5c31af7Sopenharmony_ci %41 = OpAccessChain %37 %22 %40 323e5c31af7Sopenharmony_ci %42 = OpLoad %10 %41 324e5c31af7Sopenharmony_ci %232 = OpFSub %14 %189 %231 325e5c31af7Sopenharmony_ci %43 = OpFAdd %10 %39 %42 326e5c31af7Sopenharmony_ci %45 = OpAccessChain %37 %22 %44 327e5c31af7Sopenharmony_ci %46 = OpLoad %10 %45 328e5c31af7Sopenharmony_ci %47 = OpFAdd %10 %43 %46 329e5c31af7Sopenharmony_ci %234 = OpCopyObject %10 %61 330e5c31af7Sopenharmony_ci %50 = OpFOrdGreaterThan %49 %47 %48 331e5c31af7Sopenharmony_ci %235 = OpISub %35 %40 %36 332e5c31af7Sopenharmony_ci %51 = OpLoad %6 %8 333e5c31af7Sopenharmony_ci %53 = OpSLessThan %49 %51 %52 334e5c31af7Sopenharmony_ci %54 = OpLogicalAnd %49 %50 %53 335e5c31af7Sopenharmony_ci OpBranchConditional %54 %31 %32 336e5c31af7Sopenharmony_ci %31 = OpLabel 337e5c31af7Sopenharmony_ci %55 = OpLoad %14 %22 338e5c31af7Sopenharmony_ci %56 = OpVectorShuffle %11 %55 %55 0 2 339e5c31af7Sopenharmony_ci %57 = OpLoad %14 %22 340e5c31af7Sopenharmony_ci %58 = OpVectorShuffle %11 %57 %57 1 1 341e5c31af7Sopenharmony_ci %59 = OpFAdd %11 %56 %58 342e5c31af7Sopenharmony_ci OpStore %13 %59 343e5c31af7Sopenharmony_ci %60 = OpLoad %11 %13 344e5c31af7Sopenharmony_ci %268 = OpUMulExtended %267 %36 %40 345e5c31af7Sopenharmony_ci %321 = OpULessThanEqual %49 %9 %70 346e5c31af7Sopenharmony_ci %322 = OpSelect %6 %321 %9 %70 347e5c31af7Sopenharmony_ci %324 = OpAccessChain %323 %281 %40 %322 348e5c31af7Sopenharmony_ci %243 = OpCompositeExtract %35 %268 0 349e5c31af7Sopenharmony_ci %62 = OpVectorTimesScalar %11 %60 %61 350e5c31af7Sopenharmony_ci %63 = OpExtInst %11 %1 Floor %62 351e5c31af7Sopenharmony_ci %64 = OpCompositeConstruct %11 %61 %61 352e5c31af7Sopenharmony_ci %65 = OpFDiv %11 %63 %64 353e5c31af7Sopenharmony_ci %205 = OpCompositeConstruct %181 %188 %40 354e5c31af7Sopenharmony_ci OpStore %13 %65 355e5c31af7Sopenharmony_ci %66 = OpLoad %24 %26 356e5c31af7Sopenharmony_ci %67 = OpLoad %11 %13 357e5c31af7Sopenharmony_ci %68 = OpImageSampleImplicitLod %14 %66 %67 358e5c31af7Sopenharmony_ci OpStore %22 %68 359e5c31af7Sopenharmony_ci %69 = OpLoad %6 %8 360e5c31af7Sopenharmony_ci %71 = OpIAdd %6 %69 %70 361e5c31af7Sopenharmony_ci %376 = OpAccessChain %323 %324 362e5c31af7Sopenharmony_ci %207 = OpCompositeConstruct %183 %190 %190 363e5c31af7Sopenharmony_ci OpStore %376 %361 364e5c31af7Sopenharmony_ci %244 = OpFMul %10 %234 %48 365e5c31af7Sopenharmony_ci OpStore %8 %71 366e5c31af7Sopenharmony_ci OpBranch %33 367e5c31af7Sopenharmony_ci %33 = OpLabel 368e5c31af7Sopenharmony_ci %208 = OpCompositeConstruct %14 %39 %42 %58 369e5c31af7Sopenharmony_ci OpBranch %30 370e5c31af7Sopenharmony_ci %32 = OpLabel 371e5c31af7Sopenharmony_ci %209 = OpCompositeConstruct %183 %190 %190 372e5c31af7Sopenharmony_ci %74 = OpLoad %14 %22 373e5c31af7Sopenharmony_ci OpStore %73 %74 374e5c31af7Sopenharmony_ci OpReturn 375e5c31af7Sopenharmony_ci OpFunctionEnd 376e5c31af7Sopenharmony_ciEND 377e5c31af7Sopenharmony_ci 378e5c31af7Sopenharmony_ci# uniforms for variant 379e5c31af7Sopenharmony_ci 380e5c31af7Sopenharmony_ci# tex 381e5c31af7Sopenharmony_ciSAMPLER variant_tex 382e5c31af7Sopenharmony_ci 383e5c31af7Sopenharmony_ci 384e5c31af7Sopenharmony_ciBUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM 385e5c31af7Sopenharmony_ci 386e5c31af7Sopenharmony_ciPIPELINE graphics variant_pipeline 387e5c31af7Sopenharmony_ci ATTACH variant_vertex_shader 388e5c31af7Sopenharmony_ci ATTACH variant_fragment_shader 389e5c31af7Sopenharmony_ci FRAMEBUFFER_SIZE 256 256 390e5c31af7Sopenharmony_ci BIND BUFFER variant_framebuffer AS color LOCATION 0 391e5c31af7Sopenharmony_ci BIND BUFFER default_texture AS combined_image_sampler SAMPLER variant_tex DESCRIPTOR_SET 0 BINDING 0 392e5c31af7Sopenharmony_ciEND 393e5c31af7Sopenharmony_ciCLEAR_COLOR variant_pipeline 0 0 0 255 394e5c31af7Sopenharmony_ci 395e5c31af7Sopenharmony_ciCLEAR variant_pipeline 396e5c31af7Sopenharmony_ciRUN variant_pipeline DRAW_RECT POS 0 0 SIZE 256 256 397e5c31af7Sopenharmony_ci 398e5c31af7Sopenharmony_ciEXPECT reference_framebuffer EQ_HISTOGRAM_EMD_BUFFER variant_framebuffer TOLERANCE 0.005 399