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 instructions propagated to predecessors
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: 653
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" %12 %435
36e5c31af7Sopenharmony_ci               OpExecutionMode %4 OriginUpperLeft
37e5c31af7Sopenharmony_ci               OpSource ESSL 320
38e5c31af7Sopenharmony_ci               OpName %4 "main"
39e5c31af7Sopenharmony_ci               OpName %12 "gl_FragCoord"
40e5c31af7Sopenharmony_ci               OpName %15 "buf0"
41e5c31af7Sopenharmony_ci               OpMemberName %15 0 "resolution"
42e5c31af7Sopenharmony_ci               OpName %17 ""
43e5c31af7Sopenharmony_ci               OpName %55 "map"
44e5c31af7Sopenharmony_ci               OpName %435 "_GLF_color"
45e5c31af7Sopenharmony_ci               OpDecorate %12 BuiltIn FragCoord
46e5c31af7Sopenharmony_ci               OpMemberDecorate %15 0 Offset 0
47e5c31af7Sopenharmony_ci               OpDecorate %15 Block
48e5c31af7Sopenharmony_ci               OpDecorate %17 DescriptorSet 0
49e5c31af7Sopenharmony_ci               OpDecorate %17 Binding 0
50e5c31af7Sopenharmony_ci               OpDecorate %435 Location 0
51e5c31af7Sopenharmony_ci          %2 = OpTypeVoid
52e5c31af7Sopenharmony_ci          %3 = OpTypeFunction %2
53e5c31af7Sopenharmony_ci          %6 = OpTypeFloat 32
54e5c31af7Sopenharmony_ci          %7 = OpTypeVector %6 2
55e5c31af7Sopenharmony_ci         %10 = OpTypeVector %6 4
56e5c31af7Sopenharmony_ci         %11 = OpTypePointer Input %10
57e5c31af7Sopenharmony_ci         %12 = OpVariable %11 Input
58e5c31af7Sopenharmony_ci         %15 = OpTypeStruct %7
59e5c31af7Sopenharmony_ci         %16 = OpTypePointer Uniform %15
60e5c31af7Sopenharmony_ci         %17 = OpVariable %16 Uniform
61e5c31af7Sopenharmony_ci         %18 = OpTypeInt 32 1
62e5c31af7Sopenharmony_ci         %19 = OpConstant %18 0
63e5c31af7Sopenharmony_ci         %20 = OpTypePointer Uniform %7
64e5c31af7Sopenharmony_ci         %24 = OpTypeVector %18 2
65e5c31af7Sopenharmony_ci         %27 = OpTypeInt 32 0
66e5c31af7Sopenharmony_ci         %28 = OpConstant %27 0
67e5c31af7Sopenharmony_ci         %32 = OpConstant %6 16
68e5c31af7Sopenharmony_ci         %41 = OpTypePointer Function %18
69e5c31af7Sopenharmony_ci         %49 = OpConstant %18 256
70e5c31af7Sopenharmony_ci         %50 = OpTypeBool
71e5c31af7Sopenharmony_ci         %52 = OpConstant %27 256
72e5c31af7Sopenharmony_ci         %53 = OpTypeArray %18 %52
73e5c31af7Sopenharmony_ci         %60 = OpConstant %18 1
74e5c31af7Sopenharmony_ci         %63 = OpConstantComposite %24 %19 %19
75e5c31af7Sopenharmony_ci         %66 = OpConstantTrue %50
76e5c31af7Sopenharmony_ci         %82 = OpConstant %18 2
77e5c31af7Sopenharmony_ci         %86 = OpConstant %18 16
78e5c31af7Sopenharmony_ci        %119 = OpConstant %18 14
79e5c31af7Sopenharmony_ci        %162 = OpConstantFalse %50
80e5c31af7Sopenharmony_ci        %169 = OpConstant %18 8
81e5c31af7Sopenharmony_ci        %434 = OpTypePointer Output %10
82e5c31af7Sopenharmony_ci        %435 = OpVariable %434 Output
83e5c31af7Sopenharmony_ci        %436 = OpConstant %6 1
84e5c31af7Sopenharmony_ci        %437 = OpConstantComposite %10 %436 %436 %436 %436
85e5c31af7Sopenharmony_ci        %440 = OpConstant %6 0
86e5c31af7Sopenharmony_ci        %441 = OpConstantComposite %10 %440 %440 %440 %436
87e5c31af7Sopenharmony_ci        %447 = OpTypePointer Function %53
88e5c31af7Sopenharmony_ci        %648 = OpConstant %18 32
89e5c31af7Sopenharmony_ci        %649 = OpUndef %24
90e5c31af7Sopenharmony_ci          %4 = OpFunction %2 None %3
91e5c31af7Sopenharmony_ci          %5 = OpLabel
92e5c31af7Sopenharmony_ci         %55 = OpVariable %447 Function
93e5c31af7Sopenharmony_ci               OpSelectionMerge %442 None
94e5c31af7Sopenharmony_ci               OpSwitch %28 %443
95e5c31af7Sopenharmony_ci        %443 = OpLabel
96e5c31af7Sopenharmony_ci         %13 = OpLoad %10 %12
97e5c31af7Sopenharmony_ci         %14 = OpVectorShuffle %7 %13 %13 0 1
98e5c31af7Sopenharmony_ci         %21 = OpAccessChain %20 %17 %19
99e5c31af7Sopenharmony_ci         %22 = OpLoad %7 %21
100e5c31af7Sopenharmony_ci         %23 = OpFDiv %7 %14 %22
101e5c31af7Sopenharmony_ci         %31 = OpCompositeExtract %6 %23 0
102e5c31af7Sopenharmony_ci         %33 = OpFMul %6 %31 %32
103e5c31af7Sopenharmony_ci         %34 = OpConvertFToS %18 %33
104e5c31af7Sopenharmony_ci         %37 = OpCompositeExtract %6 %23 1
105e5c31af7Sopenharmony_ci         %38 = OpFMul %6 %37 %32
106e5c31af7Sopenharmony_ci         %39 = OpConvertFToS %18 %38
107e5c31af7Sopenharmony_ci               OpBranch %43
108e5c31af7Sopenharmony_ci         %43 = OpLabel
109e5c31af7Sopenharmony_ci        %518 = OpPhi %18 %19 %443 %61 %44
110e5c31af7Sopenharmony_ci         %51 = OpSLessThan %50 %518 %49
111e5c31af7Sopenharmony_ci               OpLoopMerge %45 %44 None
112e5c31af7Sopenharmony_ci               OpBranchConditional %51 %44 %45
113e5c31af7Sopenharmony_ci         %44 = OpLabel
114e5c31af7Sopenharmony_ci         %58 = OpAccessChain %41 %55 %518
115e5c31af7Sopenharmony_ci               OpStore %58 %19
116e5c31af7Sopenharmony_ci         %61 = OpIAdd %18 %518 %60
117e5c31af7Sopenharmony_ci               OpBranch %43
118e5c31af7Sopenharmony_ci         %45 = OpLabel
119e5c31af7Sopenharmony_ci               OpBranch %68
120e5c31af7Sopenharmony_ci         %68 = OpLabel
121e5c31af7Sopenharmony_ci        %591 = OpPhi %50 %66 %45 %569 %71
122e5c31af7Sopenharmony_ci        %520 = OpPhi %24 %63 %45 %637 %71
123e5c31af7Sopenharmony_ci        %519 = OpPhi %18 %19 %45 %621 %71
124e5c31af7Sopenharmony_ci               OpLoopMerge %70 %71 None
125e5c31af7Sopenharmony_ci               OpBranch %69
126e5c31af7Sopenharmony_ci         %69 = OpLabel
127e5c31af7Sopenharmony_ci         %73 = OpIAdd %18 %519 %60
128e5c31af7Sopenharmony_ci         %76 = OpCompositeExtract %18 %520 0
129e5c31af7Sopenharmony_ci         %77 = OpSGreaterThan %50 %76 %19
130e5c31af7Sopenharmony_ci               OpSelectionMerge %79 None
131e5c31af7Sopenharmony_ci               OpBranchConditional %77 %78 %79
132e5c31af7Sopenharmony_ci         %78 = OpLabel
133e5c31af7Sopenharmony_ci         %83 = OpISub %18 %76 %82
134e5c31af7Sopenharmony_ci         %85 = OpCompositeExtract %18 %520 1
135e5c31af7Sopenharmony_ci         %87 = OpIMul %18 %85 %86
136e5c31af7Sopenharmony_ci         %88 = OpIAdd %18 %83 %87
137e5c31af7Sopenharmony_ci         %89 = OpAccessChain %41 %55 %88
138e5c31af7Sopenharmony_ci         %90 = OpLoad %18 %89
139e5c31af7Sopenharmony_ci         %91 = OpIEqual %50 %90 %19
140e5c31af7Sopenharmony_ci               OpBranch %79
141e5c31af7Sopenharmony_ci         %79 = OpLabel
142e5c31af7Sopenharmony_ci         %92 = OpPhi %50 %77 %69 %91 %78
143e5c31af7Sopenharmony_ci        %650 = OpSelect %18 %92 %60 %19
144e5c31af7Sopenharmony_ci         %98 = OpCompositeExtract %18 %520 1
145e5c31af7Sopenharmony_ci         %99 = OpSGreaterThan %50 %98 %19
146e5c31af7Sopenharmony_ci               OpSelectionMerge %101 None
147e5c31af7Sopenharmony_ci               OpBranchConditional %99 %100 %101
148e5c31af7Sopenharmony_ci        %100 = OpLabel
149e5c31af7Sopenharmony_ci        %106 = OpISub %18 %98 %82
150e5c31af7Sopenharmony_ci        %107 = OpIMul %18 %106 %86
151e5c31af7Sopenharmony_ci        %108 = OpIAdd %18 %76 %107
152e5c31af7Sopenharmony_ci        %109 = OpAccessChain %41 %55 %108
153e5c31af7Sopenharmony_ci        %110 = OpLoad %18 %109
154e5c31af7Sopenharmony_ci        %111 = OpIEqual %50 %110 %19
155e5c31af7Sopenharmony_ci               OpBranch %101
156e5c31af7Sopenharmony_ci        %101 = OpLabel
157e5c31af7Sopenharmony_ci        %112 = OpPhi %50 %99 %79 %111 %100
158e5c31af7Sopenharmony_ci               OpSelectionMerge %114 None
159e5c31af7Sopenharmony_ci               OpBranchConditional %112 %113 %114
160e5c31af7Sopenharmony_ci        %113 = OpLabel
161e5c31af7Sopenharmony_ci        %116 = OpIAdd %18 %650 %60
162e5c31af7Sopenharmony_ci               OpBranch %114
163e5c31af7Sopenharmony_ci        %114 = OpLabel
164e5c31af7Sopenharmony_ci        %529 = OpPhi %18 %650 %101 %116 %113
165e5c31af7Sopenharmony_ci        %120 = OpSLessThan %50 %76 %119
166e5c31af7Sopenharmony_ci               OpSelectionMerge %122 None
167e5c31af7Sopenharmony_ci               OpBranchConditional %120 %121 %122
168e5c31af7Sopenharmony_ci        %121 = OpLabel
169e5c31af7Sopenharmony_ci        %125 = OpIAdd %18 %76 %82
170e5c31af7Sopenharmony_ci        %128 = OpIMul %18 %98 %86
171e5c31af7Sopenharmony_ci        %129 = OpIAdd %18 %125 %128
172e5c31af7Sopenharmony_ci        %130 = OpAccessChain %41 %55 %129
173e5c31af7Sopenharmony_ci        %131 = OpLoad %18 %130
174e5c31af7Sopenharmony_ci        %132 = OpIEqual %50 %131 %19
175e5c31af7Sopenharmony_ci               OpBranch %122
176e5c31af7Sopenharmony_ci        %122 = OpLabel
177e5c31af7Sopenharmony_ci        %133 = OpPhi %50 %120 %114 %132 %121
178e5c31af7Sopenharmony_ci               OpSelectionMerge %135 None
179e5c31af7Sopenharmony_ci               OpBranchConditional %133 %134 %135
180e5c31af7Sopenharmony_ci        %134 = OpLabel
181e5c31af7Sopenharmony_ci        %137 = OpIAdd %18 %529 %60
182e5c31af7Sopenharmony_ci               OpBranch %135
183e5c31af7Sopenharmony_ci        %135 = OpLabel
184e5c31af7Sopenharmony_ci        %533 = OpPhi %18 %529 %122 %137 %134
185e5c31af7Sopenharmony_ci        %140 = OpSLessThan %50 %98 %119
186e5c31af7Sopenharmony_ci               OpSelectionMerge %142 None
187e5c31af7Sopenharmony_ci               OpBranchConditional %140 %141 %142
188e5c31af7Sopenharmony_ci        %141 = OpLabel
189e5c31af7Sopenharmony_ci        %147 = OpIAdd %18 %98 %82
190e5c31af7Sopenharmony_ci        %148 = OpIMul %18 %147 %86
191e5c31af7Sopenharmony_ci        %149 = OpIAdd %18 %76 %148
192e5c31af7Sopenharmony_ci        %150 = OpAccessChain %41 %55 %149
193e5c31af7Sopenharmony_ci        %151 = OpLoad %18 %150
194e5c31af7Sopenharmony_ci        %152 = OpIEqual %50 %151 %19
195e5c31af7Sopenharmony_ci               OpBranch %142
196e5c31af7Sopenharmony_ci        %142 = OpLabel
197e5c31af7Sopenharmony_ci        %153 = OpPhi %50 %140 %135 %152 %141
198e5c31af7Sopenharmony_ci               OpSelectionMerge %155 None
199e5c31af7Sopenharmony_ci               OpBranchConditional %153 %154 %155
200e5c31af7Sopenharmony_ci        %154 = OpLabel
201e5c31af7Sopenharmony_ci        %157 = OpIAdd %18 %533 %60
202e5c31af7Sopenharmony_ci               OpBranch %155
203e5c31af7Sopenharmony_ci        %155 = OpLabel
204e5c31af7Sopenharmony_ci        %534 = OpPhi %18 %533 %142 %157 %154
205e5c31af7Sopenharmony_ci        %159 = OpIEqual %50 %534 %19
206e5c31af7Sopenharmony_ci               OpSelectionMerge %161 None
207e5c31af7Sopenharmony_ci               OpBranchConditional %159 %160 %207
208e5c31af7Sopenharmony_ci        %160 = OpLabel
209e5c31af7Sopenharmony_ci               OpBranch %163
210e5c31af7Sopenharmony_ci        %163 = OpLabel
211e5c31af7Sopenharmony_ci        %570 = OpPhi %50 %162 %160 %639 %166
212e5c31af7Sopenharmony_ci        %568 = OpPhi %24 %520 %160 %619 %166
213e5c31af7Sopenharmony_ci        %567 = OpPhi %18 %19 %160 %199 %166
214e5c31af7Sopenharmony_ci        %170 = OpSLessThan %50 %567 %169
215e5c31af7Sopenharmony_ci               OpLoopMerge %165 %166 None
216e5c31af7Sopenharmony_ci               OpBranchConditional %170 %164 %165
217e5c31af7Sopenharmony_ci        %164 = OpLabel
218e5c31af7Sopenharmony_ci               OpBranch %172
219e5c31af7Sopenharmony_ci        %172 = OpLabel
220e5c31af7Sopenharmony_ci        %619 = OpPhi %24 %568 %164 %644 %175
221e5c31af7Sopenharmony_ci        %617 = OpPhi %18 %19 %164 %197 %175
222e5c31af7Sopenharmony_ci        %639 = OpPhi %50 %570 %164 %651 %175
223e5c31af7Sopenharmony_ci        %178 = OpSLessThan %50 %617 %169
224e5c31af7Sopenharmony_ci               OpLoopMerge %174 %175 None
225e5c31af7Sopenharmony_ci               OpBranchConditional %178 %173 %174
226e5c31af7Sopenharmony_ci        %173 = OpLabel
227e5c31af7Sopenharmony_ci        %180 = OpIMul %18 %617 %82
228e5c31af7Sopenharmony_ci        %182 = OpIMul %18 %567 %82
229e5c31af7Sopenharmony_ci        %183 = OpIMul %18 %567 %648
230e5c31af7Sopenharmony_ci        %184 = OpIAdd %18 %180 %183
231e5c31af7Sopenharmony_ci        %185 = OpAccessChain %41 %55 %184
232e5c31af7Sopenharmony_ci        %186 = OpLoad %18 %185
233e5c31af7Sopenharmony_ci        %187 = OpIEqual %50 %186 %19
234e5c31af7Sopenharmony_ci               OpSelectionMerge %189 None
235e5c31af7Sopenharmony_ci               OpBranchConditional %187 %188 %189
236e5c31af7Sopenharmony_ci        %188 = OpLabel
237e5c31af7Sopenharmony_ci        %463 = OpCompositeInsert %24 %180 %649 0
238e5c31af7Sopenharmony_ci        %465 = OpCompositeInsert %24 %182 %463 1
239e5c31af7Sopenharmony_ci               OpBranch %189
240e5c31af7Sopenharmony_ci        %189 = OpLabel
241e5c31af7Sopenharmony_ci        %644 = OpPhi %24 %619 %173 %465 %188
242e5c31af7Sopenharmony_ci        %651 = OpSelect %50 %187 %66 %639
243e5c31af7Sopenharmony_ci               OpBranch %175
244e5c31af7Sopenharmony_ci        %175 = OpLabel
245e5c31af7Sopenharmony_ci        %197 = OpIAdd %18 %617 %60
246e5c31af7Sopenharmony_ci               OpBranch %172
247e5c31af7Sopenharmony_ci        %174 = OpLabel
248e5c31af7Sopenharmony_ci               OpBranch %166
249e5c31af7Sopenharmony_ci        %166 = OpLabel
250e5c31af7Sopenharmony_ci        %199 = OpIAdd %18 %567 %60
251e5c31af7Sopenharmony_ci               OpBranch %163
252e5c31af7Sopenharmony_ci        %165 = OpLabel
253e5c31af7Sopenharmony_ci        %201 = OpCompositeExtract %18 %568 0
254e5c31af7Sopenharmony_ci        %203 = OpCompositeExtract %18 %568 1
255e5c31af7Sopenharmony_ci        %204 = OpIMul %18 %203 %86
256e5c31af7Sopenharmony_ci        %205 = OpIAdd %18 %201 %204
257e5c31af7Sopenharmony_ci        %206 = OpAccessChain %41 %55 %205
258e5c31af7Sopenharmony_ci               OpStore %206 %60
259e5c31af7Sopenharmony_ci               OpBranch %161
260e5c31af7Sopenharmony_ci        %207 = OpLabel
261e5c31af7Sopenharmony_ci        %211 = OpSMod %18 %73 %534
262e5c31af7Sopenharmony_ci        %214 = OpIAdd %18 %73 %534
263e5c31af7Sopenharmony_ci        %216 = OpSGreaterThanEqual %50 %211 %19
264e5c31af7Sopenharmony_ci        %652 = OpSelect %50 %216 %77 %216
265e5c31af7Sopenharmony_ci               OpSelectionMerge %224 None
266e5c31af7Sopenharmony_ci               OpBranchConditional %652 %223 %224
267e5c31af7Sopenharmony_ci        %223 = OpLabel
268e5c31af7Sopenharmony_ci        %227 = OpISub %18 %76 %82
269e5c31af7Sopenharmony_ci        %230 = OpIMul %18 %98 %86
270e5c31af7Sopenharmony_ci        %231 = OpIAdd %18 %227 %230
271e5c31af7Sopenharmony_ci        %232 = OpAccessChain %41 %55 %231
272e5c31af7Sopenharmony_ci        %233 = OpLoad %18 %232
273e5c31af7Sopenharmony_ci        %234 = OpIEqual %50 %233 %19
274e5c31af7Sopenharmony_ci               OpBranch %224
275e5c31af7Sopenharmony_ci        %224 = OpLabel
276e5c31af7Sopenharmony_ci        %235 = OpPhi %50 %652 %207 %234 %223
277e5c31af7Sopenharmony_ci               OpSelectionMerge %237 None
278e5c31af7Sopenharmony_ci               OpBranchConditional %235 %236 %237
279e5c31af7Sopenharmony_ci        %236 = OpLabel
280e5c31af7Sopenharmony_ci        %239 = OpISub %18 %211 %60
281e5c31af7Sopenharmony_ci        %244 = OpIMul %18 %98 %86
282e5c31af7Sopenharmony_ci        %245 = OpIAdd %18 %76 %244
283e5c31af7Sopenharmony_ci        %246 = OpAccessChain %41 %55 %245
284e5c31af7Sopenharmony_ci               OpStore %246 %60
285e5c31af7Sopenharmony_ci        %249 = OpISub %18 %76 %60
286e5c31af7Sopenharmony_ci        %253 = OpIAdd %18 %249 %244
287e5c31af7Sopenharmony_ci        %254 = OpAccessChain %41 %55 %253
288e5c31af7Sopenharmony_ci               OpStore %254 %60
289e5c31af7Sopenharmony_ci        %257 = OpISub %18 %76 %82
290e5c31af7Sopenharmony_ci        %261 = OpIAdd %18 %257 %244
291e5c31af7Sopenharmony_ci        %262 = OpAccessChain %41 %55 %261
292e5c31af7Sopenharmony_ci               OpStore %262 %60
293e5c31af7Sopenharmony_ci        %479 = OpCompositeInsert %24 %257 %520 0
294e5c31af7Sopenharmony_ci               OpBranch %237
295e5c31af7Sopenharmony_ci        %237 = OpLabel
296e5c31af7Sopenharmony_ci        %550 = OpPhi %24 %520 %224 %479 %236
297e5c31af7Sopenharmony_ci        %549 = OpPhi %18 %211 %224 %239 %236
298e5c31af7Sopenharmony_ci        %268 = OpSGreaterThanEqual %50 %549 %19
299e5c31af7Sopenharmony_ci               OpSelectionMerge %270 None
300e5c31af7Sopenharmony_ci               OpBranchConditional %268 %269 %270
301e5c31af7Sopenharmony_ci        %269 = OpLabel
302e5c31af7Sopenharmony_ci        %272 = OpCompositeExtract %18 %550 1
303e5c31af7Sopenharmony_ci        %273 = OpSGreaterThan %50 %272 %19
304e5c31af7Sopenharmony_ci               OpBranch %270
305e5c31af7Sopenharmony_ci        %270 = OpLabel
306e5c31af7Sopenharmony_ci        %274 = OpPhi %50 %268 %237 %273 %269
307e5c31af7Sopenharmony_ci               OpSelectionMerge %276 None
308e5c31af7Sopenharmony_ci               OpBranchConditional %274 %275 %276
309e5c31af7Sopenharmony_ci        %275 = OpLabel
310e5c31af7Sopenharmony_ci        %278 = OpCompositeExtract %18 %550 0
311e5c31af7Sopenharmony_ci        %280 = OpCompositeExtract %18 %550 1
312e5c31af7Sopenharmony_ci        %281 = OpISub %18 %280 %82
313e5c31af7Sopenharmony_ci        %282 = OpIMul %18 %281 %86
314e5c31af7Sopenharmony_ci        %283 = OpIAdd %18 %278 %282
315e5c31af7Sopenharmony_ci        %284 = OpAccessChain %41 %55 %283
316e5c31af7Sopenharmony_ci        %285 = OpLoad %18 %284
317e5c31af7Sopenharmony_ci        %286 = OpIEqual %50 %285 %19
318e5c31af7Sopenharmony_ci               OpBranch %276
319e5c31af7Sopenharmony_ci        %276 = OpLabel
320e5c31af7Sopenharmony_ci        %287 = OpPhi %50 %274 %270 %286 %275
321e5c31af7Sopenharmony_ci               OpSelectionMerge %289 None
322e5c31af7Sopenharmony_ci               OpBranchConditional %287 %288 %289
323e5c31af7Sopenharmony_ci        %288 = OpLabel
324e5c31af7Sopenharmony_ci        %291 = OpISub %18 %549 %60
325e5c31af7Sopenharmony_ci        %293 = OpCompositeExtract %18 %550 0
326e5c31af7Sopenharmony_ci        %295 = OpCompositeExtract %18 %550 1
327e5c31af7Sopenharmony_ci        %296 = OpIMul %18 %295 %86
328e5c31af7Sopenharmony_ci        %297 = OpIAdd %18 %293 %296
329e5c31af7Sopenharmony_ci        %298 = OpAccessChain %41 %55 %297
330e5c31af7Sopenharmony_ci               OpStore %298 %60
331e5c31af7Sopenharmony_ci        %303 = OpISub %18 %295 %60
332e5c31af7Sopenharmony_ci        %304 = OpIMul %18 %303 %86
333e5c31af7Sopenharmony_ci        %305 = OpIAdd %18 %293 %304
334e5c31af7Sopenharmony_ci        %306 = OpAccessChain %41 %55 %305
335e5c31af7Sopenharmony_ci               OpStore %306 %60
336e5c31af7Sopenharmony_ci        %311 = OpISub %18 %295 %82
337e5c31af7Sopenharmony_ci        %312 = OpIMul %18 %311 %86
338e5c31af7Sopenharmony_ci        %313 = OpIAdd %18 %293 %312
339e5c31af7Sopenharmony_ci        %314 = OpAccessChain %41 %55 %313
340e5c31af7Sopenharmony_ci               OpStore %314 %60
341e5c31af7Sopenharmony_ci        %491 = OpCompositeInsert %24 %311 %550 1
342e5c31af7Sopenharmony_ci               OpBranch %289
343e5c31af7Sopenharmony_ci        %289 = OpLabel
344e5c31af7Sopenharmony_ci        %556 = OpPhi %24 %550 %276 %491 %288
345e5c31af7Sopenharmony_ci        %555 = OpPhi %18 %549 %276 %291 %288
346e5c31af7Sopenharmony_ci        %320 = OpSGreaterThanEqual %50 %555 %19
347e5c31af7Sopenharmony_ci               OpSelectionMerge %322 None
348e5c31af7Sopenharmony_ci               OpBranchConditional %320 %321 %322
349e5c31af7Sopenharmony_ci        %321 = OpLabel
350e5c31af7Sopenharmony_ci        %324 = OpCompositeExtract %18 %556 0
351e5c31af7Sopenharmony_ci        %325 = OpSLessThan %50 %324 %119
352e5c31af7Sopenharmony_ci               OpBranch %322
353e5c31af7Sopenharmony_ci        %322 = OpLabel
354e5c31af7Sopenharmony_ci        %326 = OpPhi %50 %320 %289 %325 %321
355e5c31af7Sopenharmony_ci               OpSelectionMerge %328 None
356e5c31af7Sopenharmony_ci               OpBranchConditional %326 %327 %328
357e5c31af7Sopenharmony_ci        %327 = OpLabel
358e5c31af7Sopenharmony_ci        %330 = OpCompositeExtract %18 %556 0
359e5c31af7Sopenharmony_ci        %331 = OpIAdd %18 %330 %82
360e5c31af7Sopenharmony_ci        %333 = OpCompositeExtract %18 %556 1
361e5c31af7Sopenharmony_ci        %334 = OpIMul %18 %333 %86
362e5c31af7Sopenharmony_ci        %335 = OpIAdd %18 %331 %334
363e5c31af7Sopenharmony_ci        %336 = OpAccessChain %41 %55 %335
364e5c31af7Sopenharmony_ci        %337 = OpLoad %18 %336
365e5c31af7Sopenharmony_ci        %338 = OpIEqual %50 %337 %19
366e5c31af7Sopenharmony_ci               OpBranch %328
367e5c31af7Sopenharmony_ci        %328 = OpLabel
368e5c31af7Sopenharmony_ci        %339 = OpPhi %50 %326 %322 %338 %327
369e5c31af7Sopenharmony_ci               OpSelectionMerge %341 None
370e5c31af7Sopenharmony_ci               OpBranchConditional %339 %340 %341
371e5c31af7Sopenharmony_ci        %340 = OpLabel
372e5c31af7Sopenharmony_ci        %343 = OpISub %18 %555 %60
373e5c31af7Sopenharmony_ci        %345 = OpCompositeExtract %18 %556 0
374e5c31af7Sopenharmony_ci        %347 = OpCompositeExtract %18 %556 1
375e5c31af7Sopenharmony_ci        %348 = OpIMul %18 %347 %86
376e5c31af7Sopenharmony_ci        %349 = OpIAdd %18 %345 %348
377e5c31af7Sopenharmony_ci        %350 = OpAccessChain %41 %55 %349
378e5c31af7Sopenharmony_ci               OpStore %350 %60
379e5c31af7Sopenharmony_ci        %353 = OpIAdd %18 %345 %60
380e5c31af7Sopenharmony_ci        %357 = OpIAdd %18 %353 %348
381e5c31af7Sopenharmony_ci        %358 = OpAccessChain %41 %55 %357
382e5c31af7Sopenharmony_ci               OpStore %358 %60
383e5c31af7Sopenharmony_ci        %361 = OpIAdd %18 %345 %82
384e5c31af7Sopenharmony_ci        %365 = OpIAdd %18 %361 %348
385e5c31af7Sopenharmony_ci        %366 = OpAccessChain %41 %55 %365
386e5c31af7Sopenharmony_ci               OpStore %366 %60
387e5c31af7Sopenharmony_ci        %503 = OpCompositeInsert %24 %361 %556 0
388e5c31af7Sopenharmony_ci               OpBranch %341
389e5c31af7Sopenharmony_ci        %341 = OpLabel
390e5c31af7Sopenharmony_ci        %562 = OpPhi %24 %556 %328 %503 %340
391e5c31af7Sopenharmony_ci        %561 = OpPhi %18 %555 %328 %343 %340
392e5c31af7Sopenharmony_ci        %372 = OpSGreaterThanEqual %50 %561 %19
393e5c31af7Sopenharmony_ci               OpSelectionMerge %374 None
394e5c31af7Sopenharmony_ci               OpBranchConditional %372 %373 %374
395e5c31af7Sopenharmony_ci        %373 = OpLabel
396e5c31af7Sopenharmony_ci        %376 = OpCompositeExtract %18 %562 1
397e5c31af7Sopenharmony_ci        %377 = OpSLessThan %50 %376 %119
398e5c31af7Sopenharmony_ci               OpBranch %374
399e5c31af7Sopenharmony_ci        %374 = OpLabel
400e5c31af7Sopenharmony_ci        %378 = OpPhi %50 %372 %341 %377 %373
401e5c31af7Sopenharmony_ci               OpSelectionMerge %380 None
402e5c31af7Sopenharmony_ci               OpBranchConditional %378 %379 %380
403e5c31af7Sopenharmony_ci        %379 = OpLabel
404e5c31af7Sopenharmony_ci        %382 = OpCompositeExtract %18 %562 0
405e5c31af7Sopenharmony_ci        %384 = OpCompositeExtract %18 %562 1
406e5c31af7Sopenharmony_ci        %385 = OpIAdd %18 %384 %82
407e5c31af7Sopenharmony_ci        %386 = OpIMul %18 %385 %86
408e5c31af7Sopenharmony_ci        %387 = OpIAdd %18 %382 %386
409e5c31af7Sopenharmony_ci        %388 = OpAccessChain %41 %55 %387
410e5c31af7Sopenharmony_ci        %389 = OpLoad %18 %388
411e5c31af7Sopenharmony_ci        %390 = OpIEqual %50 %389 %19
412e5c31af7Sopenharmony_ci               OpBranch %380
413e5c31af7Sopenharmony_ci        %380 = OpLabel
414e5c31af7Sopenharmony_ci        %391 = OpPhi %50 %378 %374 %390 %379
415e5c31af7Sopenharmony_ci               OpSelectionMerge %393 None
416e5c31af7Sopenharmony_ci               OpBranchConditional %391 %392 %393
417e5c31af7Sopenharmony_ci        %392 = OpLabel
418e5c31af7Sopenharmony_ci        %397 = OpCompositeExtract %18 %562 0
419e5c31af7Sopenharmony_ci        %399 = OpCompositeExtract %18 %562 1
420e5c31af7Sopenharmony_ci        %400 = OpIMul %18 %399 %86
421e5c31af7Sopenharmony_ci        %401 = OpIAdd %18 %397 %400
422e5c31af7Sopenharmony_ci        %402 = OpAccessChain %41 %55 %401
423e5c31af7Sopenharmony_ci               OpStore %402 %60
424e5c31af7Sopenharmony_ci        %407 = OpIAdd %18 %399 %60
425e5c31af7Sopenharmony_ci        %408 = OpIMul %18 %407 %86
426e5c31af7Sopenharmony_ci        %409 = OpIAdd %18 %397 %408
427e5c31af7Sopenharmony_ci        %410 = OpAccessChain %41 %55 %409
428e5c31af7Sopenharmony_ci               OpStore %410 %60
429e5c31af7Sopenharmony_ci        %415 = OpIAdd %18 %399 %82
430e5c31af7Sopenharmony_ci        %416 = OpIMul %18 %415 %86
431e5c31af7Sopenharmony_ci        %417 = OpIAdd %18 %397 %416
432e5c31af7Sopenharmony_ci        %418 = OpAccessChain %41 %55 %417
433e5c31af7Sopenharmony_ci               OpStore %418 %60
434e5c31af7Sopenharmony_ci        %515 = OpCompositeInsert %24 %415 %562 1
435e5c31af7Sopenharmony_ci               OpBranch %393
436e5c31af7Sopenharmony_ci        %393 = OpLabel
437e5c31af7Sopenharmony_ci        %638 = OpPhi %24 %562 %380 %515 %392
438e5c31af7Sopenharmony_ci               OpBranch %161
439e5c31af7Sopenharmony_ci        %161 = OpLabel
440e5c31af7Sopenharmony_ci        %637 = OpPhi %24 %568 %165 %638 %393
441e5c31af7Sopenharmony_ci        %621 = OpPhi %18 %73 %165 %214 %393
442e5c31af7Sopenharmony_ci        %569 = OpPhi %50 %570 %165 %591 %393
443e5c31af7Sopenharmony_ci        %425 = OpIMul %18 %39 %86
444e5c31af7Sopenharmony_ci        %428 = OpIAdd %18 %425 %34
445e5c31af7Sopenharmony_ci        %429 = OpAccessChain %41 %55 %428
446e5c31af7Sopenharmony_ci        %430 = OpLoad %18 %429
447e5c31af7Sopenharmony_ci        %431 = OpIEqual %50 %430 %60
448e5c31af7Sopenharmony_ci               OpSelectionMerge %433 None
449e5c31af7Sopenharmony_ci               OpBranchConditional %431 %432 %433
450e5c31af7Sopenharmony_ci        %432 = OpLabel
451e5c31af7Sopenharmony_ci               OpStore %435 %437
452e5c31af7Sopenharmony_ci               OpBranch %70
453e5c31af7Sopenharmony_ci        %433 = OpLabel
454e5c31af7Sopenharmony_ci               OpBranch %71
455e5c31af7Sopenharmony_ci         %71 = OpLabel
456e5c31af7Sopenharmony_ci               OpBranchConditional %569 %68 %70
457e5c31af7Sopenharmony_ci         %70 = OpLabel
458e5c31af7Sopenharmony_ci        %592 = OpPhi %50 %66 %432 %162 %71
459e5c31af7Sopenharmony_ci               OpSelectionMerge %445 None
460e5c31af7Sopenharmony_ci               OpBranchConditional %592 %442 %445
461e5c31af7Sopenharmony_ci        %445 = OpLabel
462e5c31af7Sopenharmony_ci               OpStore %435 %441
463e5c31af7Sopenharmony_ci               OpBranch %442
464e5c31af7Sopenharmony_ci        %442 = OpLabel
465e5c31af7Sopenharmony_ci               OpReturn
466e5c31af7Sopenharmony_ci               OpFunctionEnd
467e5c31af7Sopenharmony_ciEND
468e5c31af7Sopenharmony_ci
469e5c31af7Sopenharmony_ci# uniforms for reference
470e5c31af7Sopenharmony_ci
471e5c31af7Sopenharmony_ci# resolution
472e5c31af7Sopenharmony_ciBUFFER reference_resolution DATA_TYPE vec2<float> STD140 DATA
473e5c31af7Sopenharmony_ci 32.0 32.0
474e5c31af7Sopenharmony_ciEND
475e5c31af7Sopenharmony_ci
476e5c31af7Sopenharmony_ciBUFFER reference_framebuffer FORMAT B8G8R8A8_UNORM
477e5c31af7Sopenharmony_ci
478e5c31af7Sopenharmony_ciPIPELINE graphics reference_pipeline
479e5c31af7Sopenharmony_ci  ATTACH reference_vertex_shader
480e5c31af7Sopenharmony_ci  ATTACH reference_fragment_shader
481e5c31af7Sopenharmony_ci  FRAMEBUFFER_SIZE 32 32
482e5c31af7Sopenharmony_ci  BIND BUFFER reference_framebuffer AS color LOCATION 0
483e5c31af7Sopenharmony_ci  BIND BUFFER reference_resolution AS uniform DESCRIPTOR_SET 0 BINDING 0
484e5c31af7Sopenharmony_ciEND
485e5c31af7Sopenharmony_ciCLEAR_COLOR reference_pipeline 0 0 0 255
486e5c31af7Sopenharmony_ci
487e5c31af7Sopenharmony_ciCLEAR reference_pipeline
488e5c31af7Sopenharmony_ciRUN reference_pipeline DRAW_RECT POS 0 0 SIZE 32 32
489e5c31af7Sopenharmony_ci
490e5c31af7Sopenharmony_ci
491e5c31af7Sopenharmony_ciSHADER vertex variant_vertex_shader PASSTHROUGH
492e5c31af7Sopenharmony_ci
493e5c31af7Sopenharmony_ciSHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
494e5c31af7Sopenharmony_ci; SPIR-V
495e5c31af7Sopenharmony_ci; Version: 1.0
496e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 7
497e5c31af7Sopenharmony_ci; Bound: 865
498e5c31af7Sopenharmony_ci; Schema: 0
499e5c31af7Sopenharmony_ci               OpCapability Shader
500e5c31af7Sopenharmony_ci          %1 = OpExtInstImport "GLSL.std.450"
501e5c31af7Sopenharmony_ci               OpMemoryModel Logical GLSL450
502e5c31af7Sopenharmony_ci               OpEntryPoint Fragment %4 "main" %12 %435
503e5c31af7Sopenharmony_ci               OpExecutionMode %4 OriginUpperLeft
504e5c31af7Sopenharmony_ci               OpSource ESSL 320
505e5c31af7Sopenharmony_ci               OpName %4 "main"
506e5c31af7Sopenharmony_ci               OpName %12 "gl_FragCoord"
507e5c31af7Sopenharmony_ci               OpName %15 "buf0"
508e5c31af7Sopenharmony_ci               OpMemberName %15 0 "resolution"
509e5c31af7Sopenharmony_ci               OpName %17 ""
510e5c31af7Sopenharmony_ci               OpName %55 "map"
511e5c31af7Sopenharmony_ci               OpName %435 "_GLF_color"
512e5c31af7Sopenharmony_ci               OpDecorate %12 BuiltIn FragCoord
513e5c31af7Sopenharmony_ci               OpMemberDecorate %15 0 Offset 0
514e5c31af7Sopenharmony_ci               OpDecorate %15 Block
515e5c31af7Sopenharmony_ci               OpDecorate %17 DescriptorSet 0
516e5c31af7Sopenharmony_ci               OpDecorate %17 Binding 0
517e5c31af7Sopenharmony_ci               OpDecorate %435 Location 0
518e5c31af7Sopenharmony_ci          %2 = OpTypeVoid
519e5c31af7Sopenharmony_ci          %3 = OpTypeFunction %2
520e5c31af7Sopenharmony_ci          %6 = OpTypeFloat 32
521e5c31af7Sopenharmony_ci          %7 = OpTypeVector %6 2
522e5c31af7Sopenharmony_ci         %10 = OpTypeVector %6 4
523e5c31af7Sopenharmony_ci         %11 = OpTypePointer Input %10
524e5c31af7Sopenharmony_ci         %12 = OpVariable %11 Input
525e5c31af7Sopenharmony_ci         %15 = OpTypeStruct %7
526e5c31af7Sopenharmony_ci         %16 = OpTypePointer Uniform %15
527e5c31af7Sopenharmony_ci         %17 = OpVariable %16 Uniform
528e5c31af7Sopenharmony_ci         %18 = OpTypeInt 32 1
529e5c31af7Sopenharmony_ci         %19 = OpConstant %18 0
530e5c31af7Sopenharmony_ci         %20 = OpTypePointer Uniform %7
531e5c31af7Sopenharmony_ci         %24 = OpTypeVector %18 2
532e5c31af7Sopenharmony_ci         %27 = OpTypeInt 32 0
533e5c31af7Sopenharmony_ci         %28 = OpConstant %27 0
534e5c31af7Sopenharmony_ci         %32 = OpConstant %6 16
535e5c31af7Sopenharmony_ci         %41 = OpTypePointer Function %18
536e5c31af7Sopenharmony_ci         %49 = OpConstant %18 256
537e5c31af7Sopenharmony_ci         %50 = OpTypeBool
538e5c31af7Sopenharmony_ci         %52 = OpConstant %27 256
539e5c31af7Sopenharmony_ci         %53 = OpTypeArray %18 %52
540e5c31af7Sopenharmony_ci         %60 = OpConstant %18 1
541e5c31af7Sopenharmony_ci         %63 = OpConstantComposite %24 %19 %19
542e5c31af7Sopenharmony_ci         %66 = OpConstantTrue %50
543e5c31af7Sopenharmony_ci         %82 = OpConstant %18 2
544e5c31af7Sopenharmony_ci         %86 = OpConstant %18 16
545e5c31af7Sopenharmony_ci        %119 = OpConstant %18 14
546e5c31af7Sopenharmony_ci        %162 = OpConstantFalse %50
547e5c31af7Sopenharmony_ci        %169 = OpConstant %18 8
548e5c31af7Sopenharmony_ci        %434 = OpTypePointer Output %10
549e5c31af7Sopenharmony_ci        %435 = OpVariable %434 Output
550e5c31af7Sopenharmony_ci        %436 = OpConstant %6 1
551e5c31af7Sopenharmony_ci        %437 = OpConstantComposite %10 %436 %436 %436 %436
552e5c31af7Sopenharmony_ci        %440 = OpConstant %6 0
553e5c31af7Sopenharmony_ci        %441 = OpConstantComposite %10 %440 %440 %440 %436
554e5c31af7Sopenharmony_ci        %447 = OpTypePointer Function %53
555e5c31af7Sopenharmony_ci        %648 = OpConstant %18 32
556e5c31af7Sopenharmony_ci        %649 = OpUndef %24
557e5c31af7Sopenharmony_ci          %4 = OpFunction %2 None %3
558e5c31af7Sopenharmony_ci          %5 = OpLabel
559e5c31af7Sopenharmony_ci         %55 = OpVariable %447 Function
560e5c31af7Sopenharmony_ci               OpSelectionMerge %442 None
561e5c31af7Sopenharmony_ci               OpSwitch %28 %443
562e5c31af7Sopenharmony_ci        %443 = OpLabel
563e5c31af7Sopenharmony_ci         %13 = OpLoad %10 %12
564e5c31af7Sopenharmony_ci         %14 = OpVectorShuffle %7 %13 %13 0 1
565e5c31af7Sopenharmony_ci         %21 = OpAccessChain %20 %17 %19
566e5c31af7Sopenharmony_ci         %22 = OpLoad %7 %21
567e5c31af7Sopenharmony_ci         %23 = OpFDiv %7 %14 %22
568e5c31af7Sopenharmony_ci         %31 = OpCompositeExtract %6 %23 0
569e5c31af7Sopenharmony_ci         %33 = OpFMul %6 %31 %32
570e5c31af7Sopenharmony_ci         %34 = OpConvertFToS %18 %33
571e5c31af7Sopenharmony_ci         %37 = OpCompositeExtract %6 %23 1
572e5c31af7Sopenharmony_ci         %38 = OpFMul %6 %37 %32
573e5c31af7Sopenharmony_ci         %39 = OpConvertFToS %18 %38
574e5c31af7Sopenharmony_ci        %753 = OpSLessThan %50 %19 %49
575e5c31af7Sopenharmony_ci        %827 = OpIAdd %18 %19 %60
576e5c31af7Sopenharmony_ci        %863 = OpSLessThan %50 %827 %49
577e5c31af7Sopenharmony_ci               OpBranch %43
578e5c31af7Sopenharmony_ci         %43 = OpLabel
579e5c31af7Sopenharmony_ci        %829 = OpPhi %50 %863 %443 %864 %44
580e5c31af7Sopenharmony_ci        %755 = OpPhi %18 %827 %443 %828 %44
581e5c31af7Sopenharmony_ci         %51 = OpPhi %50 %753 %443 %754 %44
582e5c31af7Sopenharmony_ci        %518 = OpPhi %18 %19 %443 %61 %44
583e5c31af7Sopenharmony_ci               OpLoopMerge %45 %44 None
584e5c31af7Sopenharmony_ci               OpBranchConditional %51 %44 %45
585e5c31af7Sopenharmony_ci         %44 = OpLabel
586e5c31af7Sopenharmony_ci        %754 = OpPhi %50 %829 %43
587e5c31af7Sopenharmony_ci         %61 = OpPhi %18 %755 %43
588e5c31af7Sopenharmony_ci         %58 = OpAccessChain %41 %55 %518
589e5c31af7Sopenharmony_ci               OpStore %58 %19
590e5c31af7Sopenharmony_ci        %828 = OpIAdd %18 %61 %60
591e5c31af7Sopenharmony_ci        %864 = OpSLessThan %50 %828 %49
592e5c31af7Sopenharmony_ci               OpBranch %43
593e5c31af7Sopenharmony_ci         %45 = OpLabel
594e5c31af7Sopenharmony_ci               OpBranch %68
595e5c31af7Sopenharmony_ci         %68 = OpLabel
596e5c31af7Sopenharmony_ci        %591 = OpPhi %50 %66 %45 %569 %71
597e5c31af7Sopenharmony_ci        %520 = OpPhi %24 %63 %45 %637 %71
598e5c31af7Sopenharmony_ci        %519 = OpPhi %18 %19 %45 %621 %71
599e5c31af7Sopenharmony_ci               OpLoopMerge %70 %71 None
600e5c31af7Sopenharmony_ci               OpBranch %69
601e5c31af7Sopenharmony_ci         %69 = OpLabel
602e5c31af7Sopenharmony_ci         %73 = OpIAdd %18 %519 %60
603e5c31af7Sopenharmony_ci         %76 = OpCompositeExtract %18 %520 0
604e5c31af7Sopenharmony_ci         %77 = OpSGreaterThan %50 %76 %19
605e5c31af7Sopenharmony_ci               OpSelectionMerge %79 None
606e5c31af7Sopenharmony_ci               OpBranchConditional %77 %78 %79
607e5c31af7Sopenharmony_ci         %78 = OpLabel
608e5c31af7Sopenharmony_ci         %83 = OpISub %18 %76 %82
609e5c31af7Sopenharmony_ci         %85 = OpCompositeExtract %18 %520 1
610e5c31af7Sopenharmony_ci         %87 = OpIMul %18 %85 %86
611e5c31af7Sopenharmony_ci         %88 = OpIAdd %18 %83 %87
612e5c31af7Sopenharmony_ci         %89 = OpAccessChain %41 %55 %88
613e5c31af7Sopenharmony_ci         %90 = OpLoad %18 %89
614e5c31af7Sopenharmony_ci         %91 = OpIEqual %50 %90 %19
615e5c31af7Sopenharmony_ci               OpBranch %79
616e5c31af7Sopenharmony_ci         %79 = OpLabel
617e5c31af7Sopenharmony_ci         %92 = OpPhi %50 %77 %69 %91 %78
618e5c31af7Sopenharmony_ci        %650 = OpSelect %18 %92 %60 %19
619e5c31af7Sopenharmony_ci         %98 = OpCompositeExtract %18 %520 1
620e5c31af7Sopenharmony_ci         %99 = OpSGreaterThan %50 %98 %19
621e5c31af7Sopenharmony_ci               OpSelectionMerge %101 None
622e5c31af7Sopenharmony_ci               OpBranchConditional %99 %100 %101
623e5c31af7Sopenharmony_ci        %100 = OpLabel
624e5c31af7Sopenharmony_ci        %106 = OpISub %18 %98 %82
625e5c31af7Sopenharmony_ci        %107 = OpIMul %18 %106 %86
626e5c31af7Sopenharmony_ci        %108 = OpIAdd %18 %76 %107
627e5c31af7Sopenharmony_ci        %109 = OpAccessChain %41 %55 %108
628e5c31af7Sopenharmony_ci        %110 = OpLoad %18 %109
629e5c31af7Sopenharmony_ci        %111 = OpIEqual %50 %110 %19
630e5c31af7Sopenharmony_ci               OpBranch %101
631e5c31af7Sopenharmony_ci        %101 = OpLabel
632e5c31af7Sopenharmony_ci        %112 = OpPhi %50 %99 %79 %111 %100
633e5c31af7Sopenharmony_ci               OpSelectionMerge %114 None
634e5c31af7Sopenharmony_ci               OpBranchConditional %112 %113 %114
635e5c31af7Sopenharmony_ci        %113 = OpLabel
636e5c31af7Sopenharmony_ci        %116 = OpIAdd %18 %650 %60
637e5c31af7Sopenharmony_ci               OpBranch %114
638e5c31af7Sopenharmony_ci        %114 = OpLabel
639e5c31af7Sopenharmony_ci        %529 = OpPhi %18 %650 %101 %116 %113
640e5c31af7Sopenharmony_ci        %120 = OpSLessThan %50 %76 %119
641e5c31af7Sopenharmony_ci               OpSelectionMerge %122 None
642e5c31af7Sopenharmony_ci               OpBranchConditional %120 %121 %122
643e5c31af7Sopenharmony_ci        %121 = OpLabel
644e5c31af7Sopenharmony_ci        %125 = OpIAdd %18 %76 %82
645e5c31af7Sopenharmony_ci        %128 = OpIMul %18 %98 %86
646e5c31af7Sopenharmony_ci        %129 = OpIAdd %18 %125 %128
647e5c31af7Sopenharmony_ci        %130 = OpAccessChain %41 %55 %129
648e5c31af7Sopenharmony_ci        %131 = OpLoad %18 %130
649e5c31af7Sopenharmony_ci        %132 = OpIEqual %50 %131 %19
650e5c31af7Sopenharmony_ci               OpBranch %122
651e5c31af7Sopenharmony_ci        %122 = OpLabel
652e5c31af7Sopenharmony_ci        %133 = OpPhi %50 %120 %114 %132 %121
653e5c31af7Sopenharmony_ci               OpSelectionMerge %135 None
654e5c31af7Sopenharmony_ci               OpBranchConditional %133 %134 %135
655e5c31af7Sopenharmony_ci        %134 = OpLabel
656e5c31af7Sopenharmony_ci        %137 = OpIAdd %18 %529 %60
657e5c31af7Sopenharmony_ci               OpBranch %135
658e5c31af7Sopenharmony_ci        %135 = OpLabel
659e5c31af7Sopenharmony_ci        %533 = OpPhi %18 %529 %122 %137 %134
660e5c31af7Sopenharmony_ci        %140 = OpSLessThan %50 %98 %119
661e5c31af7Sopenharmony_ci               OpSelectionMerge %142 None
662e5c31af7Sopenharmony_ci               OpBranchConditional %140 %141 %142
663e5c31af7Sopenharmony_ci        %141 = OpLabel
664e5c31af7Sopenharmony_ci        %147 = OpIAdd %18 %98 %82
665e5c31af7Sopenharmony_ci        %148 = OpIMul %18 %147 %86
666e5c31af7Sopenharmony_ci        %149 = OpIAdd %18 %76 %148
667e5c31af7Sopenharmony_ci        %150 = OpAccessChain %41 %55 %149
668e5c31af7Sopenharmony_ci        %151 = OpLoad %18 %150
669e5c31af7Sopenharmony_ci        %152 = OpIEqual %50 %151 %19
670e5c31af7Sopenharmony_ci               OpBranch %142
671e5c31af7Sopenharmony_ci        %142 = OpLabel
672e5c31af7Sopenharmony_ci        %153 = OpPhi %50 %140 %135 %152 %141
673e5c31af7Sopenharmony_ci               OpSelectionMerge %155 None
674e5c31af7Sopenharmony_ci               OpBranchConditional %153 %154 %155
675e5c31af7Sopenharmony_ci        %154 = OpLabel
676e5c31af7Sopenharmony_ci        %157 = OpIAdd %18 %533 %60
677e5c31af7Sopenharmony_ci               OpBranch %155
678e5c31af7Sopenharmony_ci        %155 = OpLabel
679e5c31af7Sopenharmony_ci        %534 = OpPhi %18 %533 %142 %157 %154
680e5c31af7Sopenharmony_ci        %159 = OpIEqual %50 %534 %19
681e5c31af7Sopenharmony_ci               OpSelectionMerge %161 None
682e5c31af7Sopenharmony_ci               OpBranchConditional %159 %160 %207
683e5c31af7Sopenharmony_ci        %160 = OpLabel
684e5c31af7Sopenharmony_ci               OpBranch %163
685e5c31af7Sopenharmony_ci        %163 = OpLabel
686e5c31af7Sopenharmony_ci        %570 = OpPhi %50 %162 %160 %639 %166
687e5c31af7Sopenharmony_ci        %568 = OpPhi %24 %520 %160 %619 %166
688e5c31af7Sopenharmony_ci        %567 = OpPhi %18 %19 %160 %199 %166
689e5c31af7Sopenharmony_ci        %170 = OpSLessThan %50 %567 %169
690e5c31af7Sopenharmony_ci               OpLoopMerge %165 %166 None
691e5c31af7Sopenharmony_ci               OpBranchConditional %170 %164 %165
692e5c31af7Sopenharmony_ci        %164 = OpLabel
693e5c31af7Sopenharmony_ci               OpBranch %172
694e5c31af7Sopenharmony_ci        %172 = OpLabel
695e5c31af7Sopenharmony_ci        %619 = OpPhi %24 %568 %164 %644 %175
696e5c31af7Sopenharmony_ci        %617 = OpPhi %18 %19 %164 %197 %175
697e5c31af7Sopenharmony_ci        %639 = OpPhi %50 %570 %164 %651 %175
698e5c31af7Sopenharmony_ci        %178 = OpSLessThan %50 %617 %169
699e5c31af7Sopenharmony_ci               OpLoopMerge %174 %175 None
700e5c31af7Sopenharmony_ci               OpBranchConditional %178 %173 %174
701e5c31af7Sopenharmony_ci        %173 = OpLabel
702e5c31af7Sopenharmony_ci        %180 = OpIMul %18 %617 %82
703e5c31af7Sopenharmony_ci        %182 = OpIMul %18 %567 %82
704e5c31af7Sopenharmony_ci        %183 = OpIMul %18 %567 %648
705e5c31af7Sopenharmony_ci        %184 = OpIAdd %18 %180 %183
706e5c31af7Sopenharmony_ci        %185 = OpAccessChain %41 %55 %184
707e5c31af7Sopenharmony_ci        %186 = OpLoad %18 %185
708e5c31af7Sopenharmony_ci        %187 = OpIEqual %50 %186 %19
709e5c31af7Sopenharmony_ci               OpSelectionMerge %189 None
710e5c31af7Sopenharmony_ci               OpBranchConditional %187 %188 %189
711e5c31af7Sopenharmony_ci        %188 = OpLabel
712e5c31af7Sopenharmony_ci        %463 = OpCompositeInsert %24 %180 %649 0
713e5c31af7Sopenharmony_ci        %465 = OpCompositeInsert %24 %182 %463 1
714e5c31af7Sopenharmony_ci               OpBranch %189
715e5c31af7Sopenharmony_ci        %189 = OpLabel
716e5c31af7Sopenharmony_ci        %644 = OpPhi %24 %619 %173 %465 %188
717e5c31af7Sopenharmony_ci        %651 = OpSelect %50 %187 %66 %639
718e5c31af7Sopenharmony_ci               OpBranch %175
719e5c31af7Sopenharmony_ci        %175 = OpLabel
720e5c31af7Sopenharmony_ci        %197 = OpIAdd %18 %617 %60
721e5c31af7Sopenharmony_ci               OpBranch %172
722e5c31af7Sopenharmony_ci        %174 = OpLabel
723e5c31af7Sopenharmony_ci               OpBranch %166
724e5c31af7Sopenharmony_ci        %166 = OpLabel
725e5c31af7Sopenharmony_ci        %199 = OpIAdd %18 %567 %60
726e5c31af7Sopenharmony_ci               OpBranch %163
727e5c31af7Sopenharmony_ci        %165 = OpLabel
728e5c31af7Sopenharmony_ci        %201 = OpCompositeExtract %18 %568 0
729e5c31af7Sopenharmony_ci        %203 = OpCompositeExtract %18 %568 1
730e5c31af7Sopenharmony_ci        %204 = OpIMul %18 %203 %86
731e5c31af7Sopenharmony_ci        %205 = OpIAdd %18 %201 %204
732e5c31af7Sopenharmony_ci        %206 = OpAccessChain %41 %55 %205
733e5c31af7Sopenharmony_ci               OpStore %206 %60
734e5c31af7Sopenharmony_ci               OpBranch %161
735e5c31af7Sopenharmony_ci        %207 = OpLabel
736e5c31af7Sopenharmony_ci        %211 = OpSMod %18 %73 %534
737e5c31af7Sopenharmony_ci        %214 = OpIAdd %18 %73 %534
738e5c31af7Sopenharmony_ci        %216 = OpSGreaterThanEqual %50 %211 %19
739e5c31af7Sopenharmony_ci        %652 = OpSelect %50 %216 %77 %216
740e5c31af7Sopenharmony_ci               OpSelectionMerge %224 None
741e5c31af7Sopenharmony_ci               OpBranchConditional %652 %223 %224
742e5c31af7Sopenharmony_ci        %223 = OpLabel
743e5c31af7Sopenharmony_ci        %227 = OpISub %18 %76 %82
744e5c31af7Sopenharmony_ci        %230 = OpIMul %18 %98 %86
745e5c31af7Sopenharmony_ci        %231 = OpIAdd %18 %227 %230
746e5c31af7Sopenharmony_ci        %232 = OpAccessChain %41 %55 %231
747e5c31af7Sopenharmony_ci        %233 = OpLoad %18 %232
748e5c31af7Sopenharmony_ci        %234 = OpIEqual %50 %233 %19
749e5c31af7Sopenharmony_ci               OpBranch %224
750e5c31af7Sopenharmony_ci        %224 = OpLabel
751e5c31af7Sopenharmony_ci        %235 = OpPhi %50 %652 %207 %234 %223
752e5c31af7Sopenharmony_ci               OpSelectionMerge %237 None
753e5c31af7Sopenharmony_ci               OpBranchConditional %235 %236 %237
754e5c31af7Sopenharmony_ci        %236 = OpLabel
755e5c31af7Sopenharmony_ci        %239 = OpISub %18 %211 %60
756e5c31af7Sopenharmony_ci        %244 = OpIMul %18 %98 %86
757e5c31af7Sopenharmony_ci        %245 = OpIAdd %18 %76 %244
758e5c31af7Sopenharmony_ci        %246 = OpAccessChain %41 %55 %245
759e5c31af7Sopenharmony_ci               OpStore %246 %60
760e5c31af7Sopenharmony_ci        %249 = OpISub %18 %76 %60
761e5c31af7Sopenharmony_ci        %253 = OpIAdd %18 %249 %244
762e5c31af7Sopenharmony_ci        %254 = OpAccessChain %41 %55 %253
763e5c31af7Sopenharmony_ci               OpStore %254 %60
764e5c31af7Sopenharmony_ci        %257 = OpISub %18 %76 %82
765e5c31af7Sopenharmony_ci        %261 = OpIAdd %18 %257 %244
766e5c31af7Sopenharmony_ci        %262 = OpAccessChain %41 %55 %261
767e5c31af7Sopenharmony_ci               OpStore %262 %60
768e5c31af7Sopenharmony_ci        %479 = OpCompositeInsert %24 %257 %520 0
769e5c31af7Sopenharmony_ci               OpBranch %237
770e5c31af7Sopenharmony_ci        %237 = OpLabel
771e5c31af7Sopenharmony_ci        %550 = OpPhi %24 %520 %224 %479 %236
772e5c31af7Sopenharmony_ci        %549 = OpPhi %18 %211 %224 %239 %236
773e5c31af7Sopenharmony_ci        %268 = OpSGreaterThanEqual %50 %549 %19
774e5c31af7Sopenharmony_ci               OpSelectionMerge %270 None
775e5c31af7Sopenharmony_ci               OpBranchConditional %268 %269 %270
776e5c31af7Sopenharmony_ci        %269 = OpLabel
777e5c31af7Sopenharmony_ci        %272 = OpCompositeExtract %18 %550 1
778e5c31af7Sopenharmony_ci        %273 = OpSGreaterThan %50 %272 %19
779e5c31af7Sopenharmony_ci               OpBranch %270
780e5c31af7Sopenharmony_ci        %270 = OpLabel
781e5c31af7Sopenharmony_ci        %274 = OpPhi %50 %268 %237 %273 %269
782e5c31af7Sopenharmony_ci               OpSelectionMerge %276 None
783e5c31af7Sopenharmony_ci               OpBranchConditional %274 %275 %276
784e5c31af7Sopenharmony_ci        %275 = OpLabel
785e5c31af7Sopenharmony_ci        %278 = OpCompositeExtract %18 %550 0
786e5c31af7Sopenharmony_ci        %280 = OpCompositeExtract %18 %550 1
787e5c31af7Sopenharmony_ci        %281 = OpISub %18 %280 %82
788e5c31af7Sopenharmony_ci        %282 = OpIMul %18 %281 %86
789e5c31af7Sopenharmony_ci        %283 = OpIAdd %18 %278 %282
790e5c31af7Sopenharmony_ci        %284 = OpAccessChain %41 %55 %283
791e5c31af7Sopenharmony_ci        %285 = OpLoad %18 %284
792e5c31af7Sopenharmony_ci        %286 = OpIEqual %50 %285 %19
793e5c31af7Sopenharmony_ci               OpBranch %276
794e5c31af7Sopenharmony_ci        %276 = OpLabel
795e5c31af7Sopenharmony_ci        %287 = OpPhi %50 %274 %270 %286 %275
796e5c31af7Sopenharmony_ci               OpSelectionMerge %289 None
797e5c31af7Sopenharmony_ci               OpBranchConditional %287 %288 %289
798e5c31af7Sopenharmony_ci        %288 = OpLabel
799e5c31af7Sopenharmony_ci        %291 = OpISub %18 %549 %60
800e5c31af7Sopenharmony_ci        %293 = OpCompositeExtract %18 %550 0
801e5c31af7Sopenharmony_ci        %295 = OpCompositeExtract %18 %550 1
802e5c31af7Sopenharmony_ci        %296 = OpIMul %18 %295 %86
803e5c31af7Sopenharmony_ci        %297 = OpIAdd %18 %293 %296
804e5c31af7Sopenharmony_ci        %298 = OpAccessChain %41 %55 %297
805e5c31af7Sopenharmony_ci               OpStore %298 %60
806e5c31af7Sopenharmony_ci        %303 = OpISub %18 %295 %60
807e5c31af7Sopenharmony_ci        %304 = OpIMul %18 %303 %86
808e5c31af7Sopenharmony_ci        %305 = OpIAdd %18 %293 %304
809e5c31af7Sopenharmony_ci        %306 = OpAccessChain %41 %55 %305
810e5c31af7Sopenharmony_ci               OpStore %306 %60
811e5c31af7Sopenharmony_ci        %311 = OpISub %18 %295 %82
812e5c31af7Sopenharmony_ci        %312 = OpIMul %18 %311 %86
813e5c31af7Sopenharmony_ci        %313 = OpIAdd %18 %293 %312
814e5c31af7Sopenharmony_ci        %314 = OpAccessChain %41 %55 %313
815e5c31af7Sopenharmony_ci               OpStore %314 %60
816e5c31af7Sopenharmony_ci        %491 = OpCompositeInsert %24 %311 %550 1
817e5c31af7Sopenharmony_ci               OpBranch %289
818e5c31af7Sopenharmony_ci        %289 = OpLabel
819e5c31af7Sopenharmony_ci        %556 = OpPhi %24 %550 %276 %491 %288
820e5c31af7Sopenharmony_ci        %555 = OpPhi %18 %549 %276 %291 %288
821e5c31af7Sopenharmony_ci        %320 = OpSGreaterThanEqual %50 %555 %19
822e5c31af7Sopenharmony_ci               OpSelectionMerge %322 None
823e5c31af7Sopenharmony_ci               OpBranchConditional %320 %321 %322
824e5c31af7Sopenharmony_ci        %321 = OpLabel
825e5c31af7Sopenharmony_ci        %324 = OpCompositeExtract %18 %556 0
826e5c31af7Sopenharmony_ci        %325 = OpSLessThan %50 %324 %119
827e5c31af7Sopenharmony_ci               OpBranch %322
828e5c31af7Sopenharmony_ci        %322 = OpLabel
829e5c31af7Sopenharmony_ci        %326 = OpPhi %50 %320 %289 %325 %321
830e5c31af7Sopenharmony_ci               OpSelectionMerge %328 None
831e5c31af7Sopenharmony_ci               OpBranchConditional %326 %327 %328
832e5c31af7Sopenharmony_ci        %327 = OpLabel
833e5c31af7Sopenharmony_ci        %330 = OpCompositeExtract %18 %556 0
834e5c31af7Sopenharmony_ci        %331 = OpIAdd %18 %330 %82
835e5c31af7Sopenharmony_ci        %333 = OpCompositeExtract %18 %556 1
836e5c31af7Sopenharmony_ci        %334 = OpIMul %18 %333 %86
837e5c31af7Sopenharmony_ci        %335 = OpIAdd %18 %331 %334
838e5c31af7Sopenharmony_ci        %336 = OpAccessChain %41 %55 %335
839e5c31af7Sopenharmony_ci        %337 = OpLoad %18 %336
840e5c31af7Sopenharmony_ci        %338 = OpIEqual %50 %337 %19
841e5c31af7Sopenharmony_ci               OpBranch %328
842e5c31af7Sopenharmony_ci        %328 = OpLabel
843e5c31af7Sopenharmony_ci        %339 = OpPhi %50 %326 %322 %338 %327
844e5c31af7Sopenharmony_ci               OpSelectionMerge %341 None
845e5c31af7Sopenharmony_ci               OpBranchConditional %339 %340 %341
846e5c31af7Sopenharmony_ci        %340 = OpLabel
847e5c31af7Sopenharmony_ci        %343 = OpISub %18 %555 %60
848e5c31af7Sopenharmony_ci        %345 = OpCompositeExtract %18 %556 0
849e5c31af7Sopenharmony_ci        %347 = OpCompositeExtract %18 %556 1
850e5c31af7Sopenharmony_ci        %348 = OpIMul %18 %347 %86
851e5c31af7Sopenharmony_ci        %349 = OpIAdd %18 %345 %348
852e5c31af7Sopenharmony_ci        %350 = OpAccessChain %41 %55 %349
853e5c31af7Sopenharmony_ci               OpStore %350 %60
854e5c31af7Sopenharmony_ci        %353 = OpIAdd %18 %345 %60
855e5c31af7Sopenharmony_ci        %357 = OpIAdd %18 %353 %348
856e5c31af7Sopenharmony_ci        %358 = OpAccessChain %41 %55 %357
857e5c31af7Sopenharmony_ci               OpStore %358 %60
858e5c31af7Sopenharmony_ci        %361 = OpIAdd %18 %345 %82
859e5c31af7Sopenharmony_ci        %365 = OpIAdd %18 %361 %348
860e5c31af7Sopenharmony_ci        %366 = OpAccessChain %41 %55 %365
861e5c31af7Sopenharmony_ci               OpStore %366 %60
862e5c31af7Sopenharmony_ci        %503 = OpCompositeInsert %24 %361 %556 0
863e5c31af7Sopenharmony_ci               OpBranch %341
864e5c31af7Sopenharmony_ci        %341 = OpLabel
865e5c31af7Sopenharmony_ci        %562 = OpPhi %24 %556 %328 %503 %340
866e5c31af7Sopenharmony_ci        %561 = OpPhi %18 %555 %328 %343 %340
867e5c31af7Sopenharmony_ci        %372 = OpSGreaterThanEqual %50 %561 %19
868e5c31af7Sopenharmony_ci               OpSelectionMerge %374 None
869e5c31af7Sopenharmony_ci               OpBranchConditional %372 %373 %374
870e5c31af7Sopenharmony_ci        %373 = OpLabel
871e5c31af7Sopenharmony_ci        %376 = OpCompositeExtract %18 %562 1
872e5c31af7Sopenharmony_ci        %377 = OpSLessThan %50 %376 %119
873e5c31af7Sopenharmony_ci               OpBranch %374
874e5c31af7Sopenharmony_ci        %374 = OpLabel
875e5c31af7Sopenharmony_ci        %378 = OpPhi %50 %372 %341 %377 %373
876e5c31af7Sopenharmony_ci               OpSelectionMerge %380 None
877e5c31af7Sopenharmony_ci               OpBranchConditional %378 %379 %380
878e5c31af7Sopenharmony_ci        %379 = OpLabel
879e5c31af7Sopenharmony_ci        %382 = OpCompositeExtract %18 %562 0
880e5c31af7Sopenharmony_ci        %384 = OpCompositeExtract %18 %562 1
881e5c31af7Sopenharmony_ci        %385 = OpIAdd %18 %384 %82
882e5c31af7Sopenharmony_ci        %386 = OpIMul %18 %385 %86
883e5c31af7Sopenharmony_ci        %387 = OpIAdd %18 %382 %386
884e5c31af7Sopenharmony_ci        %388 = OpAccessChain %41 %55 %387
885e5c31af7Sopenharmony_ci        %389 = OpLoad %18 %388
886e5c31af7Sopenharmony_ci        %390 = OpIEqual %50 %389 %19
887e5c31af7Sopenharmony_ci               OpBranch %380
888e5c31af7Sopenharmony_ci        %380 = OpLabel
889e5c31af7Sopenharmony_ci        %391 = OpPhi %50 %378 %374 %390 %379
890e5c31af7Sopenharmony_ci               OpSelectionMerge %393 None
891e5c31af7Sopenharmony_ci               OpBranchConditional %391 %392 %393
892e5c31af7Sopenharmony_ci        %392 = OpLabel
893e5c31af7Sopenharmony_ci        %397 = OpCompositeExtract %18 %562 0
894e5c31af7Sopenharmony_ci        %399 = OpCompositeExtract %18 %562 1
895e5c31af7Sopenharmony_ci        %400 = OpIMul %18 %399 %86
896e5c31af7Sopenharmony_ci        %401 = OpIAdd %18 %397 %400
897e5c31af7Sopenharmony_ci        %402 = OpAccessChain %41 %55 %401
898e5c31af7Sopenharmony_ci               OpStore %402 %60
899e5c31af7Sopenharmony_ci        %407 = OpIAdd %18 %399 %60
900e5c31af7Sopenharmony_ci        %408 = OpIMul %18 %407 %86
901e5c31af7Sopenharmony_ci        %409 = OpIAdd %18 %397 %408
902e5c31af7Sopenharmony_ci        %410 = OpAccessChain %41 %55 %409
903e5c31af7Sopenharmony_ci               OpStore %410 %60
904e5c31af7Sopenharmony_ci        %415 = OpIAdd %18 %399 %82
905e5c31af7Sopenharmony_ci        %416 = OpIMul %18 %415 %86
906e5c31af7Sopenharmony_ci        %417 = OpIAdd %18 %397 %416
907e5c31af7Sopenharmony_ci        %418 = OpAccessChain %41 %55 %417
908e5c31af7Sopenharmony_ci               OpStore %418 %60
909e5c31af7Sopenharmony_ci        %515 = OpCompositeInsert %24 %415 %562 1
910e5c31af7Sopenharmony_ci               OpBranch %393
911e5c31af7Sopenharmony_ci        %393 = OpLabel
912e5c31af7Sopenharmony_ci        %638 = OpPhi %24 %562 %380 %515 %392
913e5c31af7Sopenharmony_ci               OpBranch %161
914e5c31af7Sopenharmony_ci        %161 = OpLabel
915e5c31af7Sopenharmony_ci        %637 = OpPhi %24 %568 %165 %638 %393
916e5c31af7Sopenharmony_ci        %621 = OpPhi %18 %73 %165 %214 %393
917e5c31af7Sopenharmony_ci        %569 = OpPhi %50 %570 %165 %591 %393
918e5c31af7Sopenharmony_ci        %425 = OpIMul %18 %39 %86
919e5c31af7Sopenharmony_ci        %428 = OpIAdd %18 %425 %34
920e5c31af7Sopenharmony_ci        %429 = OpAccessChain %41 %55 %428
921e5c31af7Sopenharmony_ci        %430 = OpLoad %18 %429
922e5c31af7Sopenharmony_ci        %431 = OpIEqual %50 %430 %60
923e5c31af7Sopenharmony_ci               OpSelectionMerge %433 None
924e5c31af7Sopenharmony_ci               OpBranchConditional %431 %432 %433
925e5c31af7Sopenharmony_ci        %432 = OpLabel
926e5c31af7Sopenharmony_ci               OpStore %435 %437
927e5c31af7Sopenharmony_ci               OpBranch %70
928e5c31af7Sopenharmony_ci        %433 = OpLabel
929e5c31af7Sopenharmony_ci               OpBranch %71
930e5c31af7Sopenharmony_ci         %71 = OpLabel
931e5c31af7Sopenharmony_ci               OpBranchConditional %569 %68 %70
932e5c31af7Sopenharmony_ci         %70 = OpLabel
933e5c31af7Sopenharmony_ci        %592 = OpPhi %50 %66 %432 %162 %71
934e5c31af7Sopenharmony_ci               OpSelectionMerge %445 None
935e5c31af7Sopenharmony_ci               OpBranchConditional %592 %442 %445
936e5c31af7Sopenharmony_ci        %445 = OpLabel
937e5c31af7Sopenharmony_ci               OpStore %435 %441
938e5c31af7Sopenharmony_ci               OpBranch %442
939e5c31af7Sopenharmony_ci        %442 = OpLabel
940e5c31af7Sopenharmony_ci               OpReturn
941e5c31af7Sopenharmony_ci               OpFunctionEnd
942e5c31af7Sopenharmony_ciEND
943e5c31af7Sopenharmony_ci
944e5c31af7Sopenharmony_ci# uniforms for variant
945e5c31af7Sopenharmony_ci
946e5c31af7Sopenharmony_ci# resolution
947e5c31af7Sopenharmony_ciBUFFER variant_resolution DATA_TYPE vec2<float> STD140 DATA
948e5c31af7Sopenharmony_ci 32.0 32.0
949e5c31af7Sopenharmony_ciEND
950e5c31af7Sopenharmony_ci
951e5c31af7Sopenharmony_ciBUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM
952e5c31af7Sopenharmony_ci
953e5c31af7Sopenharmony_ciPIPELINE graphics variant_pipeline
954e5c31af7Sopenharmony_ci  ATTACH variant_vertex_shader
955e5c31af7Sopenharmony_ci  ATTACH variant_fragment_shader
956e5c31af7Sopenharmony_ci  FRAMEBUFFER_SIZE 32 32
957e5c31af7Sopenharmony_ci  BIND BUFFER variant_framebuffer AS color LOCATION 0
958e5c31af7Sopenharmony_ci  BIND BUFFER variant_resolution AS uniform DESCRIPTOR_SET 0 BINDING 0
959e5c31af7Sopenharmony_ciEND
960e5c31af7Sopenharmony_ciCLEAR_COLOR variant_pipeline 0 0 0 255
961e5c31af7Sopenharmony_ci
962e5c31af7Sopenharmony_ciCLEAR variant_pipeline
963e5c31af7Sopenharmony_ciRUN variant_pipeline DRAW_RECT POS 0 0 SIZE 32 32
964e5c31af7Sopenharmony_ci
965e5c31af7Sopenharmony_ciEXPECT reference_framebuffer EQ_HISTOGRAM_EMD_BUFFER variant_framebuffer TOLERANCE 0.005
966