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