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 that uses null for 0 and an Unroll annotation 21e5c31af7Sopenharmony_ci 22e5c31af7Sopenharmony_ci# The test passes because both shaders render the same image. 23e5c31af7Sopenharmony_ci 24e5c31af7Sopenharmony_ciSHADER vertex reference_vertex_shader PASSTHROUGH 25e5c31af7Sopenharmony_ci 26e5c31af7Sopenharmony_ciSHADER fragment reference_fragment_shader SPIRV-ASM TARGET_ENV spv1.0 27e5c31af7Sopenharmony_ci; SPIR-V 28e5c31af7Sopenharmony_ci; Version: 1.0 29e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 7 30e5c31af7Sopenharmony_ci; Bound: 295 31e5c31af7Sopenharmony_ci; Schema: 0 32e5c31af7Sopenharmony_ci OpCapability Shader 33e5c31af7Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 34e5c31af7Sopenharmony_ci OpMemoryModel Logical GLSL450 35e5c31af7Sopenharmony_ci OpEntryPoint Fragment %4 "main" %165 %180 36e5c31af7Sopenharmony_ci OpExecutionMode %4 OriginUpperLeft 37e5c31af7Sopenharmony_ci OpSource ESSL 320 38e5c31af7Sopenharmony_ci OpName %4 "main" 39e5c31af7Sopenharmony_ci OpName %165 "gl_FragCoord" 40e5c31af7Sopenharmony_ci OpName %168 "buf0" 41e5c31af7Sopenharmony_ci OpMemberName %168 0 "resolution" 42e5c31af7Sopenharmony_ci OpName %170 "" 43e5c31af7Sopenharmony_ci OpName %180 "_GLF_color" 44e5c31af7Sopenharmony_ci OpDecorate %165 BuiltIn FragCoord 45e5c31af7Sopenharmony_ci OpMemberDecorate %168 0 Offset 0 46e5c31af7Sopenharmony_ci OpDecorate %168 Block 47e5c31af7Sopenharmony_ci OpDecorate %170 DescriptorSet 0 48e5c31af7Sopenharmony_ci OpDecorate %170 Binding 0 49e5c31af7Sopenharmony_ci OpDecorate %180 Location 0 50e5c31af7Sopenharmony_ci %2 = OpTypeVoid 51e5c31af7Sopenharmony_ci %3 = OpTypeFunction %2 52e5c31af7Sopenharmony_ci %6 = OpTypeFloat 32 53e5c31af7Sopenharmony_ci %7 = OpTypeVector %6 2 54e5c31af7Sopenharmony_ci %9 = OpTypeVector %6 4 55e5c31af7Sopenharmony_ci %10 = OpTypePointer Function %9 56e5c31af7Sopenharmony_ci %11 = OpTypeBool 57e5c31af7Sopenharmony_ci %21 = OpTypeInt 32 0 58e5c31af7Sopenharmony_ci %22 = OpConstant %21 0 59e5c31af7Sopenharmony_ci %23 = OpTypePointer Function %6 60e5c31af7Sopenharmony_ci %31 = OpConstantFalse %11 61e5c31af7Sopenharmony_ci %33 = OpConstant %21 1 62e5c31af7Sopenharmony_ci %66 = OpConstantTrue %11 63e5c31af7Sopenharmony_ci %70 = OpConstant %6 0.5 64e5c31af7Sopenharmony_ci %71 = OpConstant %6 1 65e5c31af7Sopenharmony_ci %72 = OpConstantComposite %9 %70 %70 %71 %71 66e5c31af7Sopenharmony_ci %73 = OpTypeInt 32 1 67e5c31af7Sopenharmony_ci %76 = OpConstant %73 0 68e5c31af7Sopenharmony_ci %83 = OpConstant %73 8 69e5c31af7Sopenharmony_ci %85 = OpConstant %21 8 70e5c31af7Sopenharmony_ci %86 = OpTypeArray %9 %85 71e5c31af7Sopenharmony_ci %87 = OpConstant %6 4 72e5c31af7Sopenharmony_ci %88 = OpConstant %6 20 73e5c31af7Sopenharmony_ci %89 = OpConstantComposite %9 %87 %87 %88 %87 74e5c31af7Sopenharmony_ci %90 = OpConstantComposite %9 %87 %87 %87 %88 75e5c31af7Sopenharmony_ci %91 = OpConstantComposite %9 %87 %88 %88 %87 76e5c31af7Sopenharmony_ci %92 = OpConstant %6 8 77e5c31af7Sopenharmony_ci %93 = OpConstantComposite %9 %88 %87 %87 %92 78e5c31af7Sopenharmony_ci %94 = OpConstant %6 6 79e5c31af7Sopenharmony_ci %95 = OpConstant %6 2 80e5c31af7Sopenharmony_ci %96 = OpConstantComposite %9 %92 %94 %87 %95 81e5c31af7Sopenharmony_ci %97 = OpConstant %6 12 82e5c31af7Sopenharmony_ci %98 = OpConstantComposite %9 %95 %97 %95 %87 83e5c31af7Sopenharmony_ci %99 = OpConstant %6 16 84e5c31af7Sopenharmony_ci %100 = OpConstantComposite %9 %99 %95 %87 %87 85e5c31af7Sopenharmony_ci %101 = OpConstant %6 22 86e5c31af7Sopenharmony_ci %102 = OpConstantComposite %9 %97 %101 %87 %87 87e5c31af7Sopenharmony_ci %103 = OpConstantComposite %86 %89 %90 %91 %93 %96 %98 %100 %102 88e5c31af7Sopenharmony_ci %108 = OpTypePointer Function %86 89e5c31af7Sopenharmony_ci %115 = OpConstant %21 16 90e5c31af7Sopenharmony_ci %116 = OpTypeArray %9 %115 91e5c31af7Sopenharmony_ci %117 = OpConstant %6 0 92e5c31af7Sopenharmony_ci %118 = OpConstantComposite %9 %117 %117 %117 %71 93e5c31af7Sopenharmony_ci %119 = OpConstantComposite %9 %70 %117 %117 %71 94e5c31af7Sopenharmony_ci %120 = OpConstantComposite %9 %117 %70 %117 %71 95e5c31af7Sopenharmony_ci %121 = OpConstantComposite %9 %70 %70 %117 %71 96e5c31af7Sopenharmony_ci %122 = OpConstantComposite %9 %117 %117 %70 %71 97e5c31af7Sopenharmony_ci %123 = OpConstantComposite %9 %70 %117 %70 %71 98e5c31af7Sopenharmony_ci %124 = OpConstantComposite %9 %117 %70 %70 %71 99e5c31af7Sopenharmony_ci %125 = OpConstantComposite %9 %70 %70 %70 %71 100e5c31af7Sopenharmony_ci %126 = OpConstantComposite %9 %71 %117 %117 %71 101e5c31af7Sopenharmony_ci %127 = OpConstantComposite %9 %117 %71 %117 %71 102e5c31af7Sopenharmony_ci %128 = OpConstantComposite %9 %71 %71 %117 %71 103e5c31af7Sopenharmony_ci %129 = OpConstantComposite %9 %117 %117 %71 %71 104e5c31af7Sopenharmony_ci %130 = OpConstantComposite %9 %71 %117 %71 %71 105e5c31af7Sopenharmony_ci %131 = OpConstantComposite %9 %117 %71 %71 %71 106e5c31af7Sopenharmony_ci %132 = OpConstantComposite %9 %71 %71 %71 %71 107e5c31af7Sopenharmony_ci %133 = OpConstantComposite %116 %118 %119 %120 %121 %122 %123 %124 %125 %118 %126 %127 %128 %129 %130 %131 %132 108e5c31af7Sopenharmony_ci %146 = OpConstant %73 9 109e5c31af7Sopenharmony_ci %149 = OpConstant %73 11 110e5c31af7Sopenharmony_ci %151 = OpConstant %73 16 111e5c31af7Sopenharmony_ci %153 = OpTypePointer Function %116 112e5c31af7Sopenharmony_ci %158 = OpConstant %73 1 113e5c31af7Sopenharmony_ci %164 = OpTypePointer Input %9 114e5c31af7Sopenharmony_ci %165 = OpVariable %164 Input 115e5c31af7Sopenharmony_ci %168 = OpTypeStruct %7 116e5c31af7Sopenharmony_ci %169 = OpTypePointer Uniform %168 117e5c31af7Sopenharmony_ci %170 = OpVariable %169 Uniform 118e5c31af7Sopenharmony_ci %171 = OpTypePointer Uniform %7 119e5c31af7Sopenharmony_ci %176 = OpConstant %6 32 120e5c31af7Sopenharmony_ci %179 = OpTypePointer Output %9 121e5c31af7Sopenharmony_ci %180 = OpVariable %179 Output 122e5c31af7Sopenharmony_ci %4 = OpFunction %2 None %3 123e5c31af7Sopenharmony_ci %5 = OpLabel 124e5c31af7Sopenharmony_ci %199 = OpVariable %108 Function 125e5c31af7Sopenharmony_ci %200 = OpVariable %108 Function 126e5c31af7Sopenharmony_ci %201 = OpVariable %108 Function 127e5c31af7Sopenharmony_ci %202 = OpVariable %153 Function 128e5c31af7Sopenharmony_ci %166 = OpLoad %9 %165 129e5c31af7Sopenharmony_ci %167 = OpVectorShuffle %7 %166 %166 0 1 130e5c31af7Sopenharmony_ci %172 = OpAccessChain %171 %170 %76 131e5c31af7Sopenharmony_ci %173 = OpLoad %7 %172 132e5c31af7Sopenharmony_ci %174 = OpFDiv %7 %167 %173 133e5c31af7Sopenharmony_ci %177 = OpVectorTimesScalar %7 %174 %176 134e5c31af7Sopenharmony_ci %178 = OpExtInst %7 %1 Floor %177 135e5c31af7Sopenharmony_ci OpBranch %205 136e5c31af7Sopenharmony_ci %205 = OpLabel 137e5c31af7Sopenharmony_ci %290 = OpPhi %9 %72 %5 %294 %233 138e5c31af7Sopenharmony_ci %289 = OpPhi %73 %76 %5 %235 %233 139e5c31af7Sopenharmony_ci %208 = OpSLessThan %11 %289 %83 140e5c31af7Sopenharmony_ci OpLoopMerge %236 %233 None 141e5c31af7Sopenharmony_ci OpBranchConditional %208 %209 %236 142e5c31af7Sopenharmony_ci %209 = OpLabel 143e5c31af7Sopenharmony_ci OpStore %199 %103 144e5c31af7Sopenharmony_ci %212 = OpAccessChain %10 %199 %289 145e5c31af7Sopenharmony_ci %213 = OpLoad %9 %212 146e5c31af7Sopenharmony_ci OpSelectionMerge %277 None 147e5c31af7Sopenharmony_ci OpSwitch %22 %242 148e5c31af7Sopenharmony_ci %242 = OpLabel 149e5c31af7Sopenharmony_ci %244 = OpCompositeExtract %6 %178 0 150e5c31af7Sopenharmony_ci %246 = OpCompositeExtract %6 %213 0 151e5c31af7Sopenharmony_ci %247 = OpFOrdLessThan %11 %244 %246 152e5c31af7Sopenharmony_ci OpSelectionMerge %249 None 153e5c31af7Sopenharmony_ci OpBranchConditional %247 %248 %249 154e5c31af7Sopenharmony_ci %248 = OpLabel 155e5c31af7Sopenharmony_ci OpBranch %277 156e5c31af7Sopenharmony_ci %249 = OpLabel 157e5c31af7Sopenharmony_ci %251 = OpCompositeExtract %6 %178 1 158e5c31af7Sopenharmony_ci %253 = OpCompositeExtract %6 %213 1 159e5c31af7Sopenharmony_ci %254 = OpFOrdLessThan %11 %251 %253 160e5c31af7Sopenharmony_ci OpSelectionMerge %256 None 161e5c31af7Sopenharmony_ci OpBranchConditional %254 %255 %256 162e5c31af7Sopenharmony_ci %255 = OpLabel 163e5c31af7Sopenharmony_ci OpBranch %277 164e5c31af7Sopenharmony_ci %256 = OpLabel 165e5c31af7Sopenharmony_ci %262 = OpCompositeExtract %6 %213 2 166e5c31af7Sopenharmony_ci %263 = OpFAdd %6 %246 %262 167e5c31af7Sopenharmony_ci %264 = OpFOrdGreaterThan %11 %244 %263 168e5c31af7Sopenharmony_ci OpSelectionMerge %266 None 169e5c31af7Sopenharmony_ci OpBranchConditional %264 %265 %266 170e5c31af7Sopenharmony_ci %265 = OpLabel 171e5c31af7Sopenharmony_ci OpBranch %277 172e5c31af7Sopenharmony_ci %266 = OpLabel 173e5c31af7Sopenharmony_ci %272 = OpCompositeExtract %6 %213 3 174e5c31af7Sopenharmony_ci %273 = OpFAdd %6 %253 %272 175e5c31af7Sopenharmony_ci %274 = OpFOrdGreaterThan %11 %251 %273 176e5c31af7Sopenharmony_ci OpSelectionMerge %276 None 177e5c31af7Sopenharmony_ci OpBranchConditional %274 %275 %276 178e5c31af7Sopenharmony_ci %275 = OpLabel 179e5c31af7Sopenharmony_ci OpBranch %277 180e5c31af7Sopenharmony_ci %276 = OpLabel 181e5c31af7Sopenharmony_ci OpBranch %277 182e5c31af7Sopenharmony_ci %277 = OpLabel 183e5c31af7Sopenharmony_ci %291 = OpPhi %11 %31 %248 %31 %255 %31 %265 %31 %275 %66 %276 184e5c31af7Sopenharmony_ci OpSelectionMerge %232 None 185e5c31af7Sopenharmony_ci OpBranchConditional %291 %215 %232 186e5c31af7Sopenharmony_ci %215 = OpLabel 187e5c31af7Sopenharmony_ci OpStore %200 %103 188e5c31af7Sopenharmony_ci %217 = OpAccessChain %23 %200 %289 %22 189e5c31af7Sopenharmony_ci %218 = OpLoad %6 %217 190e5c31af7Sopenharmony_ci %219 = OpConvertFToS %73 %218 191e5c31af7Sopenharmony_ci OpStore %201 %103 192e5c31af7Sopenharmony_ci %221 = OpAccessChain %23 %201 %289 %33 193e5c31af7Sopenharmony_ci %222 = OpLoad %6 %221 194e5c31af7Sopenharmony_ci %223 = OpConvertFToS %73 %222 195e5c31af7Sopenharmony_ci %224 = OpIMul %73 %219 %223 196e5c31af7Sopenharmony_ci %226 = OpIMul %73 %289 %146 197e5c31af7Sopenharmony_ci %227 = OpIAdd %73 %224 %226 198e5c31af7Sopenharmony_ci %228 = OpIAdd %73 %227 %149 199e5c31af7Sopenharmony_ci %229 = OpSMod %73 %228 %151 200e5c31af7Sopenharmony_ci OpStore %202 %133 201e5c31af7Sopenharmony_ci %230 = OpAccessChain %10 %202 %229 202e5c31af7Sopenharmony_ci %231 = OpLoad %9 %230 203e5c31af7Sopenharmony_ci OpBranch %232 204e5c31af7Sopenharmony_ci %232 = OpLabel 205e5c31af7Sopenharmony_ci %294 = OpPhi %9 %290 %277 %231 %215 206e5c31af7Sopenharmony_ci OpBranch %233 207e5c31af7Sopenharmony_ci %233 = OpLabel 208e5c31af7Sopenharmony_ci %235 = OpIAdd %73 %289 %158 209e5c31af7Sopenharmony_ci OpBranch %205 210e5c31af7Sopenharmony_ci %236 = OpLabel 211e5c31af7Sopenharmony_ci OpStore %180 %290 212e5c31af7Sopenharmony_ci OpReturn 213e5c31af7Sopenharmony_ci OpFunctionEnd 214e5c31af7Sopenharmony_ciEND 215e5c31af7Sopenharmony_ci 216e5c31af7Sopenharmony_ci# uniforms for reference 217e5c31af7Sopenharmony_ci 218e5c31af7Sopenharmony_ci# resolution 219e5c31af7Sopenharmony_ciBUFFER reference_resolution DATA_TYPE vec2<float> DATA 220e5c31af7Sopenharmony_ci 256.0 256.0 221e5c31af7Sopenharmony_ciEND 222e5c31af7Sopenharmony_ci 223e5c31af7Sopenharmony_ciBUFFER reference_framebuffer FORMAT B8G8R8A8_UNORM 224e5c31af7Sopenharmony_ci 225e5c31af7Sopenharmony_ciPIPELINE graphics reference_pipeline 226e5c31af7Sopenharmony_ci ATTACH reference_vertex_shader 227e5c31af7Sopenharmony_ci ATTACH reference_fragment_shader 228e5c31af7Sopenharmony_ci FRAMEBUFFER_SIZE 256 256 229e5c31af7Sopenharmony_ci BIND BUFFER reference_framebuffer AS color LOCATION 0 230e5c31af7Sopenharmony_ci BIND BUFFER reference_resolution AS uniform DESCRIPTOR_SET 0 BINDING 0 231e5c31af7Sopenharmony_ciEND 232e5c31af7Sopenharmony_ciCLEAR_COLOR reference_pipeline 0 0 0 255 233e5c31af7Sopenharmony_ci 234e5c31af7Sopenharmony_ciCLEAR reference_pipeline 235e5c31af7Sopenharmony_ciRUN reference_pipeline DRAW_RECT POS 0 0 SIZE 256 256 236e5c31af7Sopenharmony_ci 237e5c31af7Sopenharmony_ci 238e5c31af7Sopenharmony_ciSHADER vertex variant_vertex_shader PASSTHROUGH 239e5c31af7Sopenharmony_ci 240e5c31af7Sopenharmony_ciSHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0 241e5c31af7Sopenharmony_ci; SPIR-V 242e5c31af7Sopenharmony_ci; Version: 1.0 243e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 7 244e5c31af7Sopenharmony_ci; Bound: 426 245e5c31af7Sopenharmony_ci; Schema: 0 246e5c31af7Sopenharmony_ci OpCapability Shader 247e5c31af7Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 248e5c31af7Sopenharmony_ci OpMemoryModel Logical GLSL450 249e5c31af7Sopenharmony_ci OpEntryPoint Fragment %4 "main" %165 %180 250e5c31af7Sopenharmony_ci OpExecutionMode %4 OriginUpperLeft 251e5c31af7Sopenharmony_ci OpSource ESSL 320 252e5c31af7Sopenharmony_ci OpName %4 "main" 253e5c31af7Sopenharmony_ci OpName %165 "gl_FragCoord" 254e5c31af7Sopenharmony_ci OpName %168 "buf0" 255e5c31af7Sopenharmony_ci OpMemberName %168 0 "resolution" 256e5c31af7Sopenharmony_ci OpName %170 "" 257e5c31af7Sopenharmony_ci OpName %180 "_GLF_color" 258e5c31af7Sopenharmony_ci OpDecorate %165 BuiltIn FragCoord 259e5c31af7Sopenharmony_ci OpMemberDecorate %168 0 Offset 0 260e5c31af7Sopenharmony_ci OpDecorate %168 Block 261e5c31af7Sopenharmony_ci OpDecorate %170 DescriptorSet 0 262e5c31af7Sopenharmony_ci OpDecorate %170 Binding 0 263e5c31af7Sopenharmony_ci OpDecorate %180 Location 0 264e5c31af7Sopenharmony_ci %2 = OpTypeVoid 265e5c31af7Sopenharmony_ci %3 = OpTypeFunction %2 266e5c31af7Sopenharmony_ci %6 = OpTypeFloat 32 267e5c31af7Sopenharmony_ci %7 = OpTypeVector %6 2 268e5c31af7Sopenharmony_ci %9 = OpTypeVector %6 4 269e5c31af7Sopenharmony_ci %10 = OpTypePointer Function %9 270e5c31af7Sopenharmony_ci %11 = OpTypeBool 271e5c31af7Sopenharmony_ci %21 = OpTypeInt 32 0 272e5c31af7Sopenharmony_ci %22 = OpConstant %21 0 273e5c31af7Sopenharmony_ci %23 = OpTypePointer Function %6 274e5c31af7Sopenharmony_ci %31 = OpConstantFalse %11 275e5c31af7Sopenharmony_ci %33 = OpConstant %21 1 276e5c31af7Sopenharmony_ci %66 = OpConstantTrue %11 277e5c31af7Sopenharmony_ci %70 = OpConstant %6 0.5 278e5c31af7Sopenharmony_ci %71 = OpConstant %6 1 279e5c31af7Sopenharmony_ci %72 = OpConstantComposite %9 %70 %70 %71 %71 280e5c31af7Sopenharmony_ci %73 = OpTypeInt 32 1 281e5c31af7Sopenharmony_ci %76 = OpConstant %73 0 282e5c31af7Sopenharmony_ci %83 = OpConstant %73 8 283e5c31af7Sopenharmony_ci %85 = OpConstant %21 8 284e5c31af7Sopenharmony_ci %86 = OpTypeArray %9 %85 285e5c31af7Sopenharmony_ci %87 = OpConstant %6 4 286e5c31af7Sopenharmony_ci %88 = OpConstant %6 20 287e5c31af7Sopenharmony_ci %89 = OpConstantComposite %9 %87 %87 %88 %87 288e5c31af7Sopenharmony_ci %90 = OpConstantComposite %9 %87 %87 %87 %88 289e5c31af7Sopenharmony_ci %91 = OpConstantComposite %9 %87 %88 %88 %87 290e5c31af7Sopenharmony_ci %92 = OpConstant %6 8 291e5c31af7Sopenharmony_ci %93 = OpConstantComposite %9 %88 %87 %87 %92 292e5c31af7Sopenharmony_ci %94 = OpConstant %6 6 293e5c31af7Sopenharmony_ci %95 = OpConstant %6 2 294e5c31af7Sopenharmony_ci %96 = OpConstantComposite %9 %92 %94 %87 %95 295e5c31af7Sopenharmony_ci %97 = OpConstant %6 12 296e5c31af7Sopenharmony_ci %98 = OpConstantComposite %9 %95 %97 %95 %87 297e5c31af7Sopenharmony_ci %99 = OpConstant %6 16 298e5c31af7Sopenharmony_ci %100 = OpConstantComposite %9 %99 %95 %87 %87 299e5c31af7Sopenharmony_ci %101 = OpConstant %6 22 300e5c31af7Sopenharmony_ci %102 = OpConstantComposite %9 %97 %101 %87 %87 301e5c31af7Sopenharmony_ci %103 = OpConstantComposite %86 %89 %90 %91 %93 %96 %98 %100 %102 302e5c31af7Sopenharmony_ci %108 = OpTypePointer Function %86 303e5c31af7Sopenharmony_ci %115 = OpConstant %21 16 304e5c31af7Sopenharmony_ci %116 = OpTypeArray %9 %115 305e5c31af7Sopenharmony_ci %117 = OpConstant %6 0 306e5c31af7Sopenharmony_ci %118 = OpConstantComposite %9 %117 %117 %117 %71 307e5c31af7Sopenharmony_ci %119 = OpConstantComposite %9 %70 %117 %117 %71 308e5c31af7Sopenharmony_ci %120 = OpConstantComposite %9 %117 %70 %117 %71 309e5c31af7Sopenharmony_ci %121 = OpConstantComposite %9 %70 %70 %117 %71 310e5c31af7Sopenharmony_ci %122 = OpConstantComposite %9 %117 %117 %70 %71 311e5c31af7Sopenharmony_ci %123 = OpConstantComposite %9 %70 %117 %70 %71 312e5c31af7Sopenharmony_ci %124 = OpConstantComposite %9 %117 %70 %70 %71 313e5c31af7Sopenharmony_ci %125 = OpConstantComposite %9 %70 %70 %70 %71 314e5c31af7Sopenharmony_ci %126 = OpConstantComposite %9 %71 %117 %117 %71 315e5c31af7Sopenharmony_ci %127 = OpConstantComposite %9 %117 %71 %117 %71 316e5c31af7Sopenharmony_ci %128 = OpConstantComposite %9 %71 %71 %117 %71 317e5c31af7Sopenharmony_ci %129 = OpConstantComposite %9 %117 %117 %71 %71 318e5c31af7Sopenharmony_ci %130 = OpConstantComposite %9 %71 %117 %71 %71 319e5c31af7Sopenharmony_ci %131 = OpConstantComposite %9 %117 %71 %71 %71 320e5c31af7Sopenharmony_ci %132 = OpConstantComposite %9 %71 %71 %71 %71 321e5c31af7Sopenharmony_ci %133 = OpConstantComposite %116 %118 %119 %120 %121 %122 %123 %124 %125 %118 %126 %127 %128 %129 %130 %131 %132 322e5c31af7Sopenharmony_ci %146 = OpConstant %73 9 323e5c31af7Sopenharmony_ci %149 = OpConstant %73 11 324e5c31af7Sopenharmony_ci %151 = OpConstant %73 16 325e5c31af7Sopenharmony_ci %153 = OpTypePointer Function %116 326e5c31af7Sopenharmony_ci %158 = OpConstant %73 1 327e5c31af7Sopenharmony_ci %164 = OpTypePointer Input %9 328e5c31af7Sopenharmony_ci %165 = OpVariable %164 Input 329e5c31af7Sopenharmony_ci %168 = OpTypeStruct %7 330e5c31af7Sopenharmony_ci %169 = OpTypePointer Uniform %168 331e5c31af7Sopenharmony_ci %170 = OpVariable %169 Uniform 332e5c31af7Sopenharmony_ci %171 = OpTypePointer Uniform %7 333e5c31af7Sopenharmony_ci %176 = OpConstant %6 32 334e5c31af7Sopenharmony_ci %179 = OpTypePointer Output %9 335e5c31af7Sopenharmony_ci %180 = OpVariable %179 Output 336e5c31af7Sopenharmony_ci %425 = OpConstantNull %73 337e5c31af7Sopenharmony_ci %4 = OpFunction %2 None %3 338e5c31af7Sopenharmony_ci %5 = OpLabel 339e5c31af7Sopenharmony_ci %199 = OpVariable %108 Function 340e5c31af7Sopenharmony_ci %200 = OpVariable %108 Function 341e5c31af7Sopenharmony_ci %201 = OpVariable %108 Function 342e5c31af7Sopenharmony_ci %202 = OpVariable %153 Function 343e5c31af7Sopenharmony_ci %166 = OpLoad %9 %165 344e5c31af7Sopenharmony_ci %167 = OpVectorShuffle %7 %166 %166 0 1 345e5c31af7Sopenharmony_ci %172 = OpAccessChain %171 %170 %76 346e5c31af7Sopenharmony_ci %173 = OpLoad %7 %172 347e5c31af7Sopenharmony_ci %174 = OpFDiv %7 %167 %173 348e5c31af7Sopenharmony_ci %177 = OpVectorTimesScalar %7 %174 %176 349e5c31af7Sopenharmony_ci %178 = OpExtInst %7 %1 Floor %177 350e5c31af7Sopenharmony_ci OpBranch %205 351e5c31af7Sopenharmony_ci %205 = OpLabel 352e5c31af7Sopenharmony_ci %290 = OpPhi %9 %72 %5 %294 %233 353e5c31af7Sopenharmony_ci %289 = OpPhi %73 %425 %5 %235 %233 354e5c31af7Sopenharmony_ci %208 = OpSLessThan %11 %289 %83 355e5c31af7Sopenharmony_ci OpLoopMerge %236 %233 Unroll 356e5c31af7Sopenharmony_ci OpBranchConditional %208 %209 %236 357e5c31af7Sopenharmony_ci %209 = OpLabel 358e5c31af7Sopenharmony_ci OpStore %199 %103 359e5c31af7Sopenharmony_ci %212 = OpAccessChain %10 %199 %289 360e5c31af7Sopenharmony_ci %213 = OpLoad %9 %212 361e5c31af7Sopenharmony_ci OpSelectionMerge %277 None 362e5c31af7Sopenharmony_ci OpSwitch %22 %242 363e5c31af7Sopenharmony_ci %242 = OpLabel 364e5c31af7Sopenharmony_ci %244 = OpCompositeExtract %6 %178 0 365e5c31af7Sopenharmony_ci %246 = OpCompositeExtract %6 %213 0 366e5c31af7Sopenharmony_ci %247 = OpFOrdLessThan %11 %244 %246 367e5c31af7Sopenharmony_ci OpSelectionMerge %249 None 368e5c31af7Sopenharmony_ci OpBranchConditional %247 %248 %249 369e5c31af7Sopenharmony_ci %248 = OpLabel 370e5c31af7Sopenharmony_ci OpBranch %277 371e5c31af7Sopenharmony_ci %249 = OpLabel 372e5c31af7Sopenharmony_ci %251 = OpCompositeExtract %6 %178 1 373e5c31af7Sopenharmony_ci %253 = OpCompositeExtract %6 %213 1 374e5c31af7Sopenharmony_ci %254 = OpFOrdLessThan %11 %251 %253 375e5c31af7Sopenharmony_ci OpSelectionMerge %256 None 376e5c31af7Sopenharmony_ci OpBranchConditional %254 %255 %256 377e5c31af7Sopenharmony_ci %255 = OpLabel 378e5c31af7Sopenharmony_ci OpBranch %277 379e5c31af7Sopenharmony_ci %256 = OpLabel 380e5c31af7Sopenharmony_ci %262 = OpCompositeExtract %6 %213 2 381e5c31af7Sopenharmony_ci %263 = OpFAdd %6 %246 %262 382e5c31af7Sopenharmony_ci %264 = OpFOrdGreaterThan %11 %244 %263 383e5c31af7Sopenharmony_ci OpSelectionMerge %266 None 384e5c31af7Sopenharmony_ci OpBranchConditional %264 %265 %266 385e5c31af7Sopenharmony_ci %265 = OpLabel 386e5c31af7Sopenharmony_ci OpBranch %277 387e5c31af7Sopenharmony_ci %266 = OpLabel 388e5c31af7Sopenharmony_ci %272 = OpCompositeExtract %6 %213 3 389e5c31af7Sopenharmony_ci %273 = OpFAdd %6 %253 %272 390e5c31af7Sopenharmony_ci %274 = OpFOrdGreaterThan %11 %251 %273 391e5c31af7Sopenharmony_ci OpSelectionMerge %276 None 392e5c31af7Sopenharmony_ci OpBranchConditional %274 %275 %276 393e5c31af7Sopenharmony_ci %275 = OpLabel 394e5c31af7Sopenharmony_ci OpBranch %277 395e5c31af7Sopenharmony_ci %276 = OpLabel 396e5c31af7Sopenharmony_ci OpBranch %277 397e5c31af7Sopenharmony_ci %277 = OpLabel 398e5c31af7Sopenharmony_ci %291 = OpPhi %11 %31 %248 %31 %255 %31 %265 %31 %275 %66 %276 399e5c31af7Sopenharmony_ci OpSelectionMerge %232 None 400e5c31af7Sopenharmony_ci OpBranchConditional %291 %215 %232 401e5c31af7Sopenharmony_ci %215 = OpLabel 402e5c31af7Sopenharmony_ci OpStore %200 %103 403e5c31af7Sopenharmony_ci %217 = OpAccessChain %23 %200 %289 %22 404e5c31af7Sopenharmony_ci %218 = OpLoad %6 %217 405e5c31af7Sopenharmony_ci %219 = OpConvertFToS %73 %218 406e5c31af7Sopenharmony_ci OpStore %201 %103 407e5c31af7Sopenharmony_ci %221 = OpAccessChain %23 %201 %289 %33 408e5c31af7Sopenharmony_ci %222 = OpLoad %6 %221 409e5c31af7Sopenharmony_ci %223 = OpConvertFToS %73 %222 410e5c31af7Sopenharmony_ci %224 = OpIMul %73 %219 %223 411e5c31af7Sopenharmony_ci %226 = OpIMul %73 %289 %146 412e5c31af7Sopenharmony_ci %227 = OpIAdd %73 %224 %226 413e5c31af7Sopenharmony_ci %228 = OpIAdd %73 %227 %149 414e5c31af7Sopenharmony_ci %229 = OpSMod %73 %228 %151 415e5c31af7Sopenharmony_ci OpStore %202 %133 416e5c31af7Sopenharmony_ci %230 = OpAccessChain %10 %202 %229 417e5c31af7Sopenharmony_ci %231 = OpLoad %9 %230 418e5c31af7Sopenharmony_ci OpBranch %232 419e5c31af7Sopenharmony_ci %232 = OpLabel 420e5c31af7Sopenharmony_ci %294 = OpPhi %9 %290 %277 %231 %215 421e5c31af7Sopenharmony_ci OpBranch %233 422e5c31af7Sopenharmony_ci %233 = OpLabel 423e5c31af7Sopenharmony_ci %235 = OpIAdd %73 %289 %158 424e5c31af7Sopenharmony_ci OpBranch %205 425e5c31af7Sopenharmony_ci %236 = OpLabel 426e5c31af7Sopenharmony_ci OpStore %180 %290 427e5c31af7Sopenharmony_ci OpReturn 428e5c31af7Sopenharmony_ci OpFunctionEnd 429e5c31af7Sopenharmony_ciEND 430e5c31af7Sopenharmony_ci 431e5c31af7Sopenharmony_ci# uniforms for variant 432e5c31af7Sopenharmony_ci 433e5c31af7Sopenharmony_ci# resolution 434e5c31af7Sopenharmony_ciBUFFER variant_resolution DATA_TYPE vec2<float> DATA 435e5c31af7Sopenharmony_ci 256.0 256.0 436e5c31af7Sopenharmony_ciEND 437e5c31af7Sopenharmony_ci 438e5c31af7Sopenharmony_ciBUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM 439e5c31af7Sopenharmony_ci 440e5c31af7Sopenharmony_ciPIPELINE graphics variant_pipeline 441e5c31af7Sopenharmony_ci ATTACH variant_vertex_shader 442e5c31af7Sopenharmony_ci ATTACH variant_fragment_shader 443e5c31af7Sopenharmony_ci FRAMEBUFFER_SIZE 256 256 444e5c31af7Sopenharmony_ci BIND BUFFER variant_framebuffer AS color LOCATION 0 445e5c31af7Sopenharmony_ci BIND BUFFER variant_resolution AS uniform DESCRIPTOR_SET 0 BINDING 0 446e5c31af7Sopenharmony_ciEND 447e5c31af7Sopenharmony_ciCLEAR_COLOR variant_pipeline 0 0 0 255 448e5c31af7Sopenharmony_ci 449e5c31af7Sopenharmony_ciCLEAR variant_pipeline 450e5c31af7Sopenharmony_ciRUN variant_pipeline DRAW_RECT POS 0 0 SIZE 256 256 451e5c31af7Sopenharmony_ci 452e5c31af7Sopenharmony_ciEXPECT reference_framebuffer EQ_HISTOGRAM_EMD_BUFFER variant_framebuffer TOLERANCE 0.005 453