1e5c31af7Sopenharmony_ci#!amber
2e5c31af7Sopenharmony_ci
3e5c31af7Sopenharmony_ci# Copyright 2021 Google LLC
4e5c31af7Sopenharmony_ci#
5e5c31af7Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
6e5c31af7Sopenharmony_ci# you may not use this file except in compliance with the License.
7e5c31af7Sopenharmony_ci# You may obtain a copy of the License at
8e5c31af7Sopenharmony_ci#
9e5c31af7Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
10e5c31af7Sopenharmony_ci#
11e5c31af7Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
12e5c31af7Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
13e5c31af7Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14e5c31af7Sopenharmony_ci# See the License for the specific language governing permissions and
15e5c31af7Sopenharmony_ci# limitations under the License.
16e5c31af7Sopenharmony_ci
17e5c31af7Sopenharmony_ci
18e5c31af7Sopenharmony_ci# A test for a coverage-gap found by the GraphicsFuzz project.
19e5c31af7Sopenharmony_ci
20e5c31af7Sopenharmony_ci# Short description: A fragment shader that covers specific BRW code paths
21e5c31af7Sopenharmony_ci
22e5c31af7Sopenharmony_ci# The test passes because the shader always writes red.
23e5c31af7Sopenharmony_ci
24e5c31af7Sopenharmony_ci# Optimized using spirv-opt with the following arguments:
25e5c31af7Sopenharmony_ci# '-Os'
26e5c31af7Sopenharmony_ci# spirv-opt commit hash: a0370efd589be33d5d9a85cfde2f85841b3755af
27e5c31af7Sopenharmony_ci
28e5c31af7Sopenharmony_ci
29e5c31af7Sopenharmony_ci
30e5c31af7Sopenharmony_ciSHADER vertex variant_vertex_shader PASSTHROUGH
31e5c31af7Sopenharmony_ci
32e5c31af7Sopenharmony_ci# variant_fragment_shader is derived from the following GLSL:
33e5c31af7Sopenharmony_ci# #version 320 es
34e5c31af7Sopenharmony_ci#
35e5c31af7Sopenharmony_ci# precision highp float;
36e5c31af7Sopenharmony_ci# precision highp int;
37e5c31af7Sopenharmony_ci#
38e5c31af7Sopenharmony_ci# const int _GLF_global_loop_bound = 100;
39e5c31af7Sopenharmony_ci# int _GLF_global_loop_count = 0;
40e5c31af7Sopenharmony_ci#
41e5c31af7Sopenharmony_ci# layout(location = 0) out vec4 _GLF_color;
42e5c31af7Sopenharmony_ci#
43e5c31af7Sopenharmony_ci# struct S
44e5c31af7Sopenharmony_ci# {
45e5c31af7Sopenharmony_ci#     int data[10];
46e5c31af7Sopenharmony_ci# };
47e5c31af7Sopenharmony_ci#
48e5c31af7Sopenharmony_ci# int func(S obj)
49e5c31af7Sopenharmony_ci# {
50e5c31af7Sopenharmony_ci#     int x = 0;
51e5c31af7Sopenharmony_ci#
52e5c31af7Sopenharmony_ci#     // Five more iterations as the global loop count has already
53e5c31af7Sopenharmony_ci#     // reached its limit.
54e5c31af7Sopenharmony_ci#     while(_GLF_global_loop_count < _GLF_global_loop_bound + 5)
55e5c31af7Sopenharmony_ci#     {
56e5c31af7Sopenharmony_ci#         _GLF_global_loop_count ++;
57e5c31af7Sopenharmony_ci#
58e5c31af7Sopenharmony_ci#         // Checks if the first five elements are set to the
59e5c31af7Sopenharmony_ci#         // correct value inside the inner loop in the main
60e5c31af7Sopenharmony_ci#         // function. Return zero if the check fails.
61e5c31af7Sopenharmony_ci#         if (obj.data[x] != x)
62e5c31af7Sopenharmony_ci#             return 0;
63e5c31af7Sopenharmony_ci#
64e5c31af7Sopenharmony_ci#         x++;
65e5c31af7Sopenharmony_ci#     }
66e5c31af7Sopenharmony_ci#
67e5c31af7Sopenharmony_ci#     // Return 1 when the check passes.
68e5c31af7Sopenharmony_ci#     return 1;
69e5c31af7Sopenharmony_ci# }
70e5c31af7Sopenharmony_ci#
71e5c31af7Sopenharmony_ci# // Global loop counter incrementation cannot be inside the for loop (along with i++) for the coverage points to trigger.
72e5c31af7Sopenharmony_ci# #define LOOP _GLF_global_loop_count++; for(int i = 0; i < 5 && _GLF_global_loop_count < _GLF_global_loop_bound; i++)
73e5c31af7Sopenharmony_ci#
74e5c31af7Sopenharmony_ci# void main()
75e5c31af7Sopenharmony_ci# {
76e5c31af7Sopenharmony_ci#     S obj = S(int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
77e5c31af7Sopenharmony_ci#
78e5c31af7Sopenharmony_ci#     LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP {
79e5c31af7Sopenharmony_ci#     LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP {
80e5c31af7Sopenharmony_ci#     LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP {
81e5c31af7Sopenharmony_ci#         // Sets the first five elements to 0, 1, 2, 3, 4.
82e5c31af7Sopenharmony_ci#         obj.data[i] = i;
83e5c31af7Sopenharmony_ci#     } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } }
84e5c31af7Sopenharmony_ci#
85e5c31af7Sopenharmony_ci#     int a = 0;
86e5c31af7Sopenharmony_ci#     // Always true.
87e5c31af7Sopenharmony_ci#     if(gl_FragCoord.y > 0.0)
88e5c31af7Sopenharmony_ci#         a = func(obj);
89e5c31af7Sopenharmony_ci#
90e5c31af7Sopenharmony_ci#     // Always true.
91e5c31af7Sopenharmony_ci#     if (a == 1)
92e5c31af7Sopenharmony_ci#         _GLF_color = vec4(1, 0, 0, 1);
93e5c31af7Sopenharmony_ci#     else
94e5c31af7Sopenharmony_ci#         _GLF_color = vec4(0);
95e5c31af7Sopenharmony_ci# }
96e5c31af7Sopenharmony_ciSHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
97e5c31af7Sopenharmony_ci; SPIR-V
98e5c31af7Sopenharmony_ci; Version: 1.0
99e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 10
100e5c31af7Sopenharmony_ci; Bound: 836
101e5c31af7Sopenharmony_ci; Schema: 0
102e5c31af7Sopenharmony_ci               OpCapability Shader
103e5c31af7Sopenharmony_ci          %1 = OpExtInstImport "GLSL.std.450"
104e5c31af7Sopenharmony_ci               OpMemoryModel Logical GLSL450
105e5c31af7Sopenharmony_ci               OpEntryPoint Fragment %4 "main" %642 %659
106e5c31af7Sopenharmony_ci               OpExecutionMode %4 OriginUpperLeft
107e5c31af7Sopenharmony_ci               OpSource ESSL 320
108e5c31af7Sopenharmony_ci               OpName %4 "main"
109e5c31af7Sopenharmony_ci               OpName %642 "gl_FragCoord"
110e5c31af7Sopenharmony_ci               OpName %659 "_GLF_color"
111e5c31af7Sopenharmony_ci               OpDecorate %642 BuiltIn FragCoord
112e5c31af7Sopenharmony_ci               OpDecorate %659 Location 0
113e5c31af7Sopenharmony_ci          %2 = OpTypeVoid
114e5c31af7Sopenharmony_ci          %3 = OpTypeFunction %2
115e5c31af7Sopenharmony_ci          %6 = OpTypeInt 32 1
116e5c31af7Sopenharmony_ci          %7 = OpTypeInt 32 0
117e5c31af7Sopenharmony_ci          %8 = OpConstant %7 10
118e5c31af7Sopenharmony_ci          %9 = OpTypeArray %6 %8
119e5c31af7Sopenharmony_ci         %18 = OpConstant %6 0
120e5c31af7Sopenharmony_ci         %19 = OpTypePointer Function %6
121e5c31af7Sopenharmony_ci         %27 = OpConstant %6 105
122e5c31af7Sopenharmony_ci         %28 = OpTypeBool
123e5c31af7Sopenharmony_ci         %31 = OpConstant %6 1
124e5c31af7Sopenharmony_ci         %46 = OpConstantComposite %9 %18 %18 %18 %18 %18 %18 %18 %18 %18 %18
125e5c31af7Sopenharmony_ci         %57 = OpConstant %6 5
126e5c31af7Sopenharmony_ci         %60 = OpConstant %6 100
127e5c31af7Sopenharmony_ci        %639 = OpTypeFloat 32
128e5c31af7Sopenharmony_ci        %640 = OpTypeVector %639 4
129e5c31af7Sopenharmony_ci        %641 = OpTypePointer Input %640
130e5c31af7Sopenharmony_ci        %642 = OpVariable %641 Input
131e5c31af7Sopenharmony_ci        %643 = OpConstant %7 1
132e5c31af7Sopenharmony_ci        %644 = OpTypePointer Input %639
133e5c31af7Sopenharmony_ci        %647 = OpConstant %639 0
134e5c31af7Sopenharmony_ci        %658 = OpTypePointer Output %640
135e5c31af7Sopenharmony_ci        %659 = OpVariable %658 Output
136e5c31af7Sopenharmony_ci        %660 = OpConstant %639 1
137e5c31af7Sopenharmony_ci        %661 = OpConstantComposite %640 %660 %647 %647 %660
138e5c31af7Sopenharmony_ci        %663 = OpConstantComposite %640 %647 %647 %647 %647
139e5c31af7Sopenharmony_ci        %668 = OpConstant %7 0
140e5c31af7Sopenharmony_ci        %669 = OpConstantFalse %28
141e5c31af7Sopenharmony_ci        %672 = OpConstantTrue %28
142e5c31af7Sopenharmony_ci        %703 = OpTypePointer Function %9
143e5c31af7Sopenharmony_ci        %722 = OpUndef %6
144e5c31af7Sopenharmony_ci          %4 = OpFunction %2 None %3
145e5c31af7Sopenharmony_ci          %5 = OpLabel
146e5c31af7Sopenharmony_ci        %709 = OpVariable %703 Function
147e5c31af7Sopenharmony_ci        %704 = OpVariable %703 Function
148e5c31af7Sopenharmony_ci               OpStore %704 %46
149e5c31af7Sopenharmony_ci               OpBranch %51
150e5c31af7Sopenharmony_ci         %51 = OpLabel
151e5c31af7Sopenharmony_ci        %713 = OpPhi %6 %31 %5 %725 %54
152e5c31af7Sopenharmony_ci        %712 = OpPhi %6 %18 %5 %637 %54
153e5c31af7Sopenharmony_ci         %58 = OpSLessThan %28 %712 %57
154e5c31af7Sopenharmony_ci         %61 = OpSLessThan %28 %713 %60
155e5c31af7Sopenharmony_ci         %62 = OpLogicalAnd %28 %58 %61
156e5c31af7Sopenharmony_ci               OpLoopMerge %53 %54 None
157e5c31af7Sopenharmony_ci               OpBranchConditional %62 %52 %53
158e5c31af7Sopenharmony_ci         %52 = OpLabel
159e5c31af7Sopenharmony_ci         %64 = OpIAdd %6 %713 %31
160e5c31af7Sopenharmony_ci               OpBranch %66
161e5c31af7Sopenharmony_ci         %66 = OpLabel
162e5c31af7Sopenharmony_ci        %725 = OpPhi %6 %64 %52 %728 %69
163e5c31af7Sopenharmony_ci        %724 = OpPhi %6 %18 %52 %635 %69
164e5c31af7Sopenharmony_ci         %72 = OpSLessThan %28 %724 %57
165e5c31af7Sopenharmony_ci         %74 = OpSLessThan %28 %725 %60
166e5c31af7Sopenharmony_ci         %75 = OpLogicalAnd %28 %72 %74
167e5c31af7Sopenharmony_ci               OpLoopMerge %68 %69 None
168e5c31af7Sopenharmony_ci               OpBranchConditional %75 %67 %68
169e5c31af7Sopenharmony_ci         %67 = OpLabel
170e5c31af7Sopenharmony_ci         %77 = OpIAdd %6 %725 %31
171e5c31af7Sopenharmony_ci               OpBranch %79
172e5c31af7Sopenharmony_ci         %79 = OpLabel
173e5c31af7Sopenharmony_ci        %728 = OpPhi %6 %77 %67 %731 %82
174e5c31af7Sopenharmony_ci        %727 = OpPhi %6 %18 %67 %633 %82
175e5c31af7Sopenharmony_ci         %85 = OpSLessThan %28 %727 %57
176e5c31af7Sopenharmony_ci         %87 = OpSLessThan %28 %728 %60
177e5c31af7Sopenharmony_ci         %88 = OpLogicalAnd %28 %85 %87
178e5c31af7Sopenharmony_ci               OpLoopMerge %81 %82 None
179e5c31af7Sopenharmony_ci               OpBranchConditional %88 %80 %81
180e5c31af7Sopenharmony_ci         %80 = OpLabel
181e5c31af7Sopenharmony_ci         %90 = OpIAdd %6 %728 %31
182e5c31af7Sopenharmony_ci               OpBranch %92
183e5c31af7Sopenharmony_ci         %92 = OpLabel
184e5c31af7Sopenharmony_ci        %731 = OpPhi %6 %90 %80 %734 %95
185e5c31af7Sopenharmony_ci        %730 = OpPhi %6 %18 %80 %631 %95
186e5c31af7Sopenharmony_ci         %98 = OpSLessThan %28 %730 %57
187e5c31af7Sopenharmony_ci        %100 = OpSLessThan %28 %731 %60
188e5c31af7Sopenharmony_ci        %101 = OpLogicalAnd %28 %98 %100
189e5c31af7Sopenharmony_ci               OpLoopMerge %94 %95 None
190e5c31af7Sopenharmony_ci               OpBranchConditional %101 %93 %94
191e5c31af7Sopenharmony_ci         %93 = OpLabel
192e5c31af7Sopenharmony_ci        %103 = OpIAdd %6 %731 %31
193e5c31af7Sopenharmony_ci               OpBranch %105
194e5c31af7Sopenharmony_ci        %105 = OpLabel
195e5c31af7Sopenharmony_ci        %734 = OpPhi %6 %103 %93 %737 %108
196e5c31af7Sopenharmony_ci        %733 = OpPhi %6 %18 %93 %629 %108
197e5c31af7Sopenharmony_ci        %111 = OpSLessThan %28 %733 %57
198e5c31af7Sopenharmony_ci        %113 = OpSLessThan %28 %734 %60
199e5c31af7Sopenharmony_ci        %114 = OpLogicalAnd %28 %111 %113
200e5c31af7Sopenharmony_ci               OpLoopMerge %107 %108 None
201e5c31af7Sopenharmony_ci               OpBranchConditional %114 %106 %107
202e5c31af7Sopenharmony_ci        %106 = OpLabel
203e5c31af7Sopenharmony_ci        %116 = OpIAdd %6 %734 %31
204e5c31af7Sopenharmony_ci               OpBranch %118
205e5c31af7Sopenharmony_ci        %118 = OpLabel
206e5c31af7Sopenharmony_ci        %737 = OpPhi %6 %116 %106 %740 %121
207e5c31af7Sopenharmony_ci        %736 = OpPhi %6 %18 %106 %627 %121
208e5c31af7Sopenharmony_ci        %124 = OpSLessThan %28 %736 %57
209e5c31af7Sopenharmony_ci        %126 = OpSLessThan %28 %737 %60
210e5c31af7Sopenharmony_ci        %127 = OpLogicalAnd %28 %124 %126
211e5c31af7Sopenharmony_ci               OpLoopMerge %120 %121 None
212e5c31af7Sopenharmony_ci               OpBranchConditional %127 %119 %120
213e5c31af7Sopenharmony_ci        %119 = OpLabel
214e5c31af7Sopenharmony_ci        %129 = OpIAdd %6 %737 %31
215e5c31af7Sopenharmony_ci               OpBranch %131
216e5c31af7Sopenharmony_ci        %131 = OpLabel
217e5c31af7Sopenharmony_ci        %740 = OpPhi %6 %129 %119 %743 %134
218e5c31af7Sopenharmony_ci        %739 = OpPhi %6 %18 %119 %625 %134
219e5c31af7Sopenharmony_ci        %137 = OpSLessThan %28 %739 %57
220e5c31af7Sopenharmony_ci        %139 = OpSLessThan %28 %740 %60
221e5c31af7Sopenharmony_ci        %140 = OpLogicalAnd %28 %137 %139
222e5c31af7Sopenharmony_ci               OpLoopMerge %133 %134 None
223e5c31af7Sopenharmony_ci               OpBranchConditional %140 %132 %133
224e5c31af7Sopenharmony_ci        %132 = OpLabel
225e5c31af7Sopenharmony_ci        %142 = OpIAdd %6 %740 %31
226e5c31af7Sopenharmony_ci               OpBranch %144
227e5c31af7Sopenharmony_ci        %144 = OpLabel
228e5c31af7Sopenharmony_ci        %743 = OpPhi %6 %142 %132 %746 %147
229e5c31af7Sopenharmony_ci        %742 = OpPhi %6 %18 %132 %623 %147
230e5c31af7Sopenharmony_ci        %150 = OpSLessThan %28 %742 %57
231e5c31af7Sopenharmony_ci        %152 = OpSLessThan %28 %743 %60
232e5c31af7Sopenharmony_ci        %153 = OpLogicalAnd %28 %150 %152
233e5c31af7Sopenharmony_ci               OpLoopMerge %146 %147 None
234e5c31af7Sopenharmony_ci               OpBranchConditional %153 %145 %146
235e5c31af7Sopenharmony_ci        %145 = OpLabel
236e5c31af7Sopenharmony_ci        %155 = OpIAdd %6 %743 %31
237e5c31af7Sopenharmony_ci               OpBranch %157
238e5c31af7Sopenharmony_ci        %157 = OpLabel
239e5c31af7Sopenharmony_ci        %746 = OpPhi %6 %155 %145 %749 %160
240e5c31af7Sopenharmony_ci        %745 = OpPhi %6 %18 %145 %621 %160
241e5c31af7Sopenharmony_ci        %163 = OpSLessThan %28 %745 %57
242e5c31af7Sopenharmony_ci        %165 = OpSLessThan %28 %746 %60
243e5c31af7Sopenharmony_ci        %166 = OpLogicalAnd %28 %163 %165
244e5c31af7Sopenharmony_ci               OpLoopMerge %159 %160 None
245e5c31af7Sopenharmony_ci               OpBranchConditional %166 %158 %159
246e5c31af7Sopenharmony_ci        %158 = OpLabel
247e5c31af7Sopenharmony_ci        %168 = OpIAdd %6 %746 %31
248e5c31af7Sopenharmony_ci               OpBranch %170
249e5c31af7Sopenharmony_ci        %170 = OpLabel
250e5c31af7Sopenharmony_ci        %749 = OpPhi %6 %168 %158 %752 %173
251e5c31af7Sopenharmony_ci        %748 = OpPhi %6 %18 %158 %619 %173
252e5c31af7Sopenharmony_ci        %176 = OpSLessThan %28 %748 %57
253e5c31af7Sopenharmony_ci        %178 = OpSLessThan %28 %749 %60
254e5c31af7Sopenharmony_ci        %179 = OpLogicalAnd %28 %176 %178
255e5c31af7Sopenharmony_ci               OpLoopMerge %172 %173 None
256e5c31af7Sopenharmony_ci               OpBranchConditional %179 %171 %172
257e5c31af7Sopenharmony_ci        %171 = OpLabel
258e5c31af7Sopenharmony_ci        %181 = OpIAdd %6 %749 %31
259e5c31af7Sopenharmony_ci               OpBranch %183
260e5c31af7Sopenharmony_ci        %183 = OpLabel
261e5c31af7Sopenharmony_ci        %752 = OpPhi %6 %181 %171 %755 %186
262e5c31af7Sopenharmony_ci        %751 = OpPhi %6 %18 %171 %617 %186
263e5c31af7Sopenharmony_ci        %189 = OpSLessThan %28 %751 %57
264e5c31af7Sopenharmony_ci        %191 = OpSLessThan %28 %752 %60
265e5c31af7Sopenharmony_ci        %192 = OpLogicalAnd %28 %189 %191
266e5c31af7Sopenharmony_ci               OpLoopMerge %185 %186 None
267e5c31af7Sopenharmony_ci               OpBranchConditional %192 %184 %185
268e5c31af7Sopenharmony_ci        %184 = OpLabel
269e5c31af7Sopenharmony_ci        %194 = OpIAdd %6 %752 %31
270e5c31af7Sopenharmony_ci               OpBranch %196
271e5c31af7Sopenharmony_ci        %196 = OpLabel
272e5c31af7Sopenharmony_ci        %755 = OpPhi %6 %194 %184 %758 %199
273e5c31af7Sopenharmony_ci        %754 = OpPhi %6 %18 %184 %615 %199
274e5c31af7Sopenharmony_ci        %202 = OpSLessThan %28 %754 %57
275e5c31af7Sopenharmony_ci        %204 = OpSLessThan %28 %755 %60
276e5c31af7Sopenharmony_ci        %205 = OpLogicalAnd %28 %202 %204
277e5c31af7Sopenharmony_ci               OpLoopMerge %198 %199 None
278e5c31af7Sopenharmony_ci               OpBranchConditional %205 %197 %198
279e5c31af7Sopenharmony_ci        %197 = OpLabel
280e5c31af7Sopenharmony_ci        %207 = OpIAdd %6 %755 %31
281e5c31af7Sopenharmony_ci               OpBranch %209
282e5c31af7Sopenharmony_ci        %209 = OpLabel
283e5c31af7Sopenharmony_ci        %758 = OpPhi %6 %207 %197 %761 %212
284e5c31af7Sopenharmony_ci        %757 = OpPhi %6 %18 %197 %613 %212
285e5c31af7Sopenharmony_ci        %215 = OpSLessThan %28 %757 %57
286e5c31af7Sopenharmony_ci        %217 = OpSLessThan %28 %758 %60
287e5c31af7Sopenharmony_ci        %218 = OpLogicalAnd %28 %215 %217
288e5c31af7Sopenharmony_ci               OpLoopMerge %211 %212 None
289e5c31af7Sopenharmony_ci               OpBranchConditional %218 %210 %211
290e5c31af7Sopenharmony_ci        %210 = OpLabel
291e5c31af7Sopenharmony_ci        %220 = OpIAdd %6 %758 %31
292e5c31af7Sopenharmony_ci               OpBranch %222
293e5c31af7Sopenharmony_ci        %222 = OpLabel
294e5c31af7Sopenharmony_ci        %761 = OpPhi %6 %220 %210 %764 %225
295e5c31af7Sopenharmony_ci        %760 = OpPhi %6 %18 %210 %611 %225
296e5c31af7Sopenharmony_ci        %228 = OpSLessThan %28 %760 %57
297e5c31af7Sopenharmony_ci        %230 = OpSLessThan %28 %761 %60
298e5c31af7Sopenharmony_ci        %231 = OpLogicalAnd %28 %228 %230
299e5c31af7Sopenharmony_ci               OpLoopMerge %224 %225 None
300e5c31af7Sopenharmony_ci               OpBranchConditional %231 %223 %224
301e5c31af7Sopenharmony_ci        %223 = OpLabel
302e5c31af7Sopenharmony_ci        %233 = OpIAdd %6 %761 %31
303e5c31af7Sopenharmony_ci               OpBranch %235
304e5c31af7Sopenharmony_ci        %235 = OpLabel
305e5c31af7Sopenharmony_ci        %764 = OpPhi %6 %233 %223 %767 %238
306e5c31af7Sopenharmony_ci        %763 = OpPhi %6 %18 %223 %609 %238
307e5c31af7Sopenharmony_ci        %241 = OpSLessThan %28 %763 %57
308e5c31af7Sopenharmony_ci        %243 = OpSLessThan %28 %764 %60
309e5c31af7Sopenharmony_ci        %244 = OpLogicalAnd %28 %241 %243
310e5c31af7Sopenharmony_ci               OpLoopMerge %237 %238 None
311e5c31af7Sopenharmony_ci               OpBranchConditional %244 %236 %237
312e5c31af7Sopenharmony_ci        %236 = OpLabel
313e5c31af7Sopenharmony_ci        %246 = OpIAdd %6 %764 %31
314e5c31af7Sopenharmony_ci               OpBranch %248
315e5c31af7Sopenharmony_ci        %248 = OpLabel
316e5c31af7Sopenharmony_ci        %767 = OpPhi %6 %246 %236 %770 %251
317e5c31af7Sopenharmony_ci        %766 = OpPhi %6 %18 %236 %607 %251
318e5c31af7Sopenharmony_ci        %254 = OpSLessThan %28 %766 %57
319e5c31af7Sopenharmony_ci        %256 = OpSLessThan %28 %767 %60
320e5c31af7Sopenharmony_ci        %257 = OpLogicalAnd %28 %254 %256
321e5c31af7Sopenharmony_ci               OpLoopMerge %250 %251 None
322e5c31af7Sopenharmony_ci               OpBranchConditional %257 %249 %250
323e5c31af7Sopenharmony_ci        %249 = OpLabel
324e5c31af7Sopenharmony_ci        %259 = OpIAdd %6 %767 %31
325e5c31af7Sopenharmony_ci               OpBranch %261
326e5c31af7Sopenharmony_ci        %261 = OpLabel
327e5c31af7Sopenharmony_ci        %770 = OpPhi %6 %259 %249 %773 %264
328e5c31af7Sopenharmony_ci        %769 = OpPhi %6 %18 %249 %605 %264
329e5c31af7Sopenharmony_ci        %267 = OpSLessThan %28 %769 %57
330e5c31af7Sopenharmony_ci        %269 = OpSLessThan %28 %770 %60
331e5c31af7Sopenharmony_ci        %270 = OpLogicalAnd %28 %267 %269
332e5c31af7Sopenharmony_ci               OpLoopMerge %263 %264 None
333e5c31af7Sopenharmony_ci               OpBranchConditional %270 %262 %263
334e5c31af7Sopenharmony_ci        %262 = OpLabel
335e5c31af7Sopenharmony_ci        %272 = OpIAdd %6 %770 %31
336e5c31af7Sopenharmony_ci               OpBranch %274
337e5c31af7Sopenharmony_ci        %274 = OpLabel
338e5c31af7Sopenharmony_ci        %773 = OpPhi %6 %272 %262 %776 %277
339e5c31af7Sopenharmony_ci        %772 = OpPhi %6 %18 %262 %603 %277
340e5c31af7Sopenharmony_ci        %280 = OpSLessThan %28 %772 %57
341e5c31af7Sopenharmony_ci        %282 = OpSLessThan %28 %773 %60
342e5c31af7Sopenharmony_ci        %283 = OpLogicalAnd %28 %280 %282
343e5c31af7Sopenharmony_ci               OpLoopMerge %276 %277 None
344e5c31af7Sopenharmony_ci               OpBranchConditional %283 %275 %276
345e5c31af7Sopenharmony_ci        %275 = OpLabel
346e5c31af7Sopenharmony_ci        %285 = OpIAdd %6 %773 %31
347e5c31af7Sopenharmony_ci               OpBranch %287
348e5c31af7Sopenharmony_ci        %287 = OpLabel
349e5c31af7Sopenharmony_ci        %776 = OpPhi %6 %285 %275 %779 %290
350e5c31af7Sopenharmony_ci        %775 = OpPhi %6 %18 %275 %601 %290
351e5c31af7Sopenharmony_ci        %293 = OpSLessThan %28 %775 %57
352e5c31af7Sopenharmony_ci        %295 = OpSLessThan %28 %776 %60
353e5c31af7Sopenharmony_ci        %296 = OpLogicalAnd %28 %293 %295
354e5c31af7Sopenharmony_ci               OpLoopMerge %289 %290 None
355e5c31af7Sopenharmony_ci               OpBranchConditional %296 %288 %289
356e5c31af7Sopenharmony_ci        %288 = OpLabel
357e5c31af7Sopenharmony_ci        %298 = OpIAdd %6 %776 %31
358e5c31af7Sopenharmony_ci               OpBranch %300
359e5c31af7Sopenharmony_ci        %300 = OpLabel
360e5c31af7Sopenharmony_ci        %779 = OpPhi %6 %298 %288 %782 %303
361e5c31af7Sopenharmony_ci        %778 = OpPhi %6 %18 %288 %599 %303
362e5c31af7Sopenharmony_ci        %306 = OpSLessThan %28 %778 %57
363e5c31af7Sopenharmony_ci        %308 = OpSLessThan %28 %779 %60
364e5c31af7Sopenharmony_ci        %309 = OpLogicalAnd %28 %306 %308
365e5c31af7Sopenharmony_ci               OpLoopMerge %302 %303 None
366e5c31af7Sopenharmony_ci               OpBranchConditional %309 %301 %302
367e5c31af7Sopenharmony_ci        %301 = OpLabel
368e5c31af7Sopenharmony_ci        %311 = OpIAdd %6 %779 %31
369e5c31af7Sopenharmony_ci               OpBranch %313
370e5c31af7Sopenharmony_ci        %313 = OpLabel
371e5c31af7Sopenharmony_ci        %782 = OpPhi %6 %311 %301 %785 %316
372e5c31af7Sopenharmony_ci        %781 = OpPhi %6 %18 %301 %597 %316
373e5c31af7Sopenharmony_ci        %319 = OpSLessThan %28 %781 %57
374e5c31af7Sopenharmony_ci        %321 = OpSLessThan %28 %782 %60
375e5c31af7Sopenharmony_ci        %322 = OpLogicalAnd %28 %319 %321
376e5c31af7Sopenharmony_ci               OpLoopMerge %315 %316 None
377e5c31af7Sopenharmony_ci               OpBranchConditional %322 %314 %315
378e5c31af7Sopenharmony_ci        %314 = OpLabel
379e5c31af7Sopenharmony_ci        %324 = OpIAdd %6 %782 %31
380e5c31af7Sopenharmony_ci               OpBranch %326
381e5c31af7Sopenharmony_ci        %326 = OpLabel
382e5c31af7Sopenharmony_ci        %785 = OpPhi %6 %324 %314 %788 %329
383e5c31af7Sopenharmony_ci        %784 = OpPhi %6 %18 %314 %595 %329
384e5c31af7Sopenharmony_ci        %332 = OpSLessThan %28 %784 %57
385e5c31af7Sopenharmony_ci        %334 = OpSLessThan %28 %785 %60
386e5c31af7Sopenharmony_ci        %335 = OpLogicalAnd %28 %332 %334
387e5c31af7Sopenharmony_ci               OpLoopMerge %328 %329 None
388e5c31af7Sopenharmony_ci               OpBranchConditional %335 %327 %328
389e5c31af7Sopenharmony_ci        %327 = OpLabel
390e5c31af7Sopenharmony_ci        %337 = OpIAdd %6 %785 %31
391e5c31af7Sopenharmony_ci               OpBranch %339
392e5c31af7Sopenharmony_ci        %339 = OpLabel
393e5c31af7Sopenharmony_ci        %788 = OpPhi %6 %337 %327 %791 %342
394e5c31af7Sopenharmony_ci        %787 = OpPhi %6 %18 %327 %593 %342
395e5c31af7Sopenharmony_ci        %345 = OpSLessThan %28 %787 %57
396e5c31af7Sopenharmony_ci        %347 = OpSLessThan %28 %788 %60
397e5c31af7Sopenharmony_ci        %348 = OpLogicalAnd %28 %345 %347
398e5c31af7Sopenharmony_ci               OpLoopMerge %341 %342 None
399e5c31af7Sopenharmony_ci               OpBranchConditional %348 %340 %341
400e5c31af7Sopenharmony_ci        %340 = OpLabel
401e5c31af7Sopenharmony_ci        %350 = OpIAdd %6 %788 %31
402e5c31af7Sopenharmony_ci               OpBranch %352
403e5c31af7Sopenharmony_ci        %352 = OpLabel
404e5c31af7Sopenharmony_ci        %791 = OpPhi %6 %350 %340 %794 %355
405e5c31af7Sopenharmony_ci        %790 = OpPhi %6 %18 %340 %591 %355
406e5c31af7Sopenharmony_ci        %358 = OpSLessThan %28 %790 %57
407e5c31af7Sopenharmony_ci        %360 = OpSLessThan %28 %791 %60
408e5c31af7Sopenharmony_ci        %361 = OpLogicalAnd %28 %358 %360
409e5c31af7Sopenharmony_ci               OpLoopMerge %354 %355 None
410e5c31af7Sopenharmony_ci               OpBranchConditional %361 %353 %354
411e5c31af7Sopenharmony_ci        %353 = OpLabel
412e5c31af7Sopenharmony_ci        %363 = OpIAdd %6 %791 %31
413e5c31af7Sopenharmony_ci               OpBranch %365
414e5c31af7Sopenharmony_ci        %365 = OpLabel
415e5c31af7Sopenharmony_ci        %794 = OpPhi %6 %363 %353 %797 %368
416e5c31af7Sopenharmony_ci        %793 = OpPhi %6 %18 %353 %589 %368
417e5c31af7Sopenharmony_ci        %371 = OpSLessThan %28 %793 %57
418e5c31af7Sopenharmony_ci        %373 = OpSLessThan %28 %794 %60
419e5c31af7Sopenharmony_ci        %374 = OpLogicalAnd %28 %371 %373
420e5c31af7Sopenharmony_ci               OpLoopMerge %367 %368 None
421e5c31af7Sopenharmony_ci               OpBranchConditional %374 %366 %367
422e5c31af7Sopenharmony_ci        %366 = OpLabel
423e5c31af7Sopenharmony_ci        %376 = OpIAdd %6 %794 %31
424e5c31af7Sopenharmony_ci               OpBranch %378
425e5c31af7Sopenharmony_ci        %378 = OpLabel
426e5c31af7Sopenharmony_ci        %797 = OpPhi %6 %376 %366 %800 %381
427e5c31af7Sopenharmony_ci        %796 = OpPhi %6 %18 %366 %587 %381
428e5c31af7Sopenharmony_ci        %384 = OpSLessThan %28 %796 %57
429e5c31af7Sopenharmony_ci        %386 = OpSLessThan %28 %797 %60
430e5c31af7Sopenharmony_ci        %387 = OpLogicalAnd %28 %384 %386
431e5c31af7Sopenharmony_ci               OpLoopMerge %380 %381 None
432e5c31af7Sopenharmony_ci               OpBranchConditional %387 %379 %380
433e5c31af7Sopenharmony_ci        %379 = OpLabel
434e5c31af7Sopenharmony_ci        %389 = OpIAdd %6 %797 %31
435e5c31af7Sopenharmony_ci               OpBranch %391
436e5c31af7Sopenharmony_ci        %391 = OpLabel
437e5c31af7Sopenharmony_ci        %800 = OpPhi %6 %389 %379 %803 %394
438e5c31af7Sopenharmony_ci        %799 = OpPhi %6 %18 %379 %585 %394
439e5c31af7Sopenharmony_ci        %397 = OpSLessThan %28 %799 %57
440e5c31af7Sopenharmony_ci        %399 = OpSLessThan %28 %800 %60
441e5c31af7Sopenharmony_ci        %400 = OpLogicalAnd %28 %397 %399
442e5c31af7Sopenharmony_ci               OpLoopMerge %393 %394 None
443e5c31af7Sopenharmony_ci               OpBranchConditional %400 %392 %393
444e5c31af7Sopenharmony_ci        %392 = OpLabel
445e5c31af7Sopenharmony_ci        %402 = OpIAdd %6 %800 %31
446e5c31af7Sopenharmony_ci               OpBranch %404
447e5c31af7Sopenharmony_ci        %404 = OpLabel
448e5c31af7Sopenharmony_ci        %803 = OpPhi %6 %402 %392 %806 %407
449e5c31af7Sopenharmony_ci        %802 = OpPhi %6 %18 %392 %583 %407
450e5c31af7Sopenharmony_ci        %410 = OpSLessThan %28 %802 %57
451e5c31af7Sopenharmony_ci        %412 = OpSLessThan %28 %803 %60
452e5c31af7Sopenharmony_ci        %413 = OpLogicalAnd %28 %410 %412
453e5c31af7Sopenharmony_ci               OpLoopMerge %406 %407 None
454e5c31af7Sopenharmony_ci               OpBranchConditional %413 %405 %406
455e5c31af7Sopenharmony_ci        %405 = OpLabel
456e5c31af7Sopenharmony_ci        %415 = OpIAdd %6 %803 %31
457e5c31af7Sopenharmony_ci               OpBranch %417
458e5c31af7Sopenharmony_ci        %417 = OpLabel
459e5c31af7Sopenharmony_ci        %806 = OpPhi %6 %415 %405 %809 %420
460e5c31af7Sopenharmony_ci        %805 = OpPhi %6 %18 %405 %581 %420
461e5c31af7Sopenharmony_ci        %423 = OpSLessThan %28 %805 %57
462e5c31af7Sopenharmony_ci        %425 = OpSLessThan %28 %806 %60
463e5c31af7Sopenharmony_ci        %426 = OpLogicalAnd %28 %423 %425
464e5c31af7Sopenharmony_ci               OpLoopMerge %419 %420 None
465e5c31af7Sopenharmony_ci               OpBranchConditional %426 %418 %419
466e5c31af7Sopenharmony_ci        %418 = OpLabel
467e5c31af7Sopenharmony_ci        %428 = OpIAdd %6 %806 %31
468e5c31af7Sopenharmony_ci               OpBranch %430
469e5c31af7Sopenharmony_ci        %430 = OpLabel
470e5c31af7Sopenharmony_ci        %809 = OpPhi %6 %428 %418 %812 %433
471e5c31af7Sopenharmony_ci        %808 = OpPhi %6 %18 %418 %579 %433
472e5c31af7Sopenharmony_ci        %436 = OpSLessThan %28 %808 %57
473e5c31af7Sopenharmony_ci        %438 = OpSLessThan %28 %809 %60
474e5c31af7Sopenharmony_ci        %439 = OpLogicalAnd %28 %436 %438
475e5c31af7Sopenharmony_ci               OpLoopMerge %432 %433 None
476e5c31af7Sopenharmony_ci               OpBranchConditional %439 %431 %432
477e5c31af7Sopenharmony_ci        %431 = OpLabel
478e5c31af7Sopenharmony_ci        %441 = OpIAdd %6 %809 %31
479e5c31af7Sopenharmony_ci               OpBranch %443
480e5c31af7Sopenharmony_ci        %443 = OpLabel
481e5c31af7Sopenharmony_ci        %812 = OpPhi %6 %441 %431 %815 %446
482e5c31af7Sopenharmony_ci        %811 = OpPhi %6 %18 %431 %577 %446
483e5c31af7Sopenharmony_ci        %449 = OpSLessThan %28 %811 %57
484e5c31af7Sopenharmony_ci        %451 = OpSLessThan %28 %812 %60
485e5c31af7Sopenharmony_ci        %452 = OpLogicalAnd %28 %449 %451
486e5c31af7Sopenharmony_ci               OpLoopMerge %445 %446 None
487e5c31af7Sopenharmony_ci               OpBranchConditional %452 %444 %445
488e5c31af7Sopenharmony_ci        %444 = OpLabel
489e5c31af7Sopenharmony_ci        %454 = OpIAdd %6 %812 %31
490e5c31af7Sopenharmony_ci               OpBranch %456
491e5c31af7Sopenharmony_ci        %456 = OpLabel
492e5c31af7Sopenharmony_ci        %815 = OpPhi %6 %454 %444 %818 %459
493e5c31af7Sopenharmony_ci        %814 = OpPhi %6 %18 %444 %575 %459
494e5c31af7Sopenharmony_ci        %462 = OpSLessThan %28 %814 %57
495e5c31af7Sopenharmony_ci        %464 = OpSLessThan %28 %815 %60
496e5c31af7Sopenharmony_ci        %465 = OpLogicalAnd %28 %462 %464
497e5c31af7Sopenharmony_ci               OpLoopMerge %458 %459 None
498e5c31af7Sopenharmony_ci               OpBranchConditional %465 %457 %458
499e5c31af7Sopenharmony_ci        %457 = OpLabel
500e5c31af7Sopenharmony_ci        %467 = OpIAdd %6 %815 %31
501e5c31af7Sopenharmony_ci               OpBranch %469
502e5c31af7Sopenharmony_ci        %469 = OpLabel
503e5c31af7Sopenharmony_ci        %818 = OpPhi %6 %467 %457 %821 %472
504e5c31af7Sopenharmony_ci        %817 = OpPhi %6 %18 %457 %573 %472
505e5c31af7Sopenharmony_ci        %475 = OpSLessThan %28 %817 %57
506e5c31af7Sopenharmony_ci        %477 = OpSLessThan %28 %818 %60
507e5c31af7Sopenharmony_ci        %478 = OpLogicalAnd %28 %475 %477
508e5c31af7Sopenharmony_ci               OpLoopMerge %471 %472 None
509e5c31af7Sopenharmony_ci               OpBranchConditional %478 %470 %471
510e5c31af7Sopenharmony_ci        %470 = OpLabel
511e5c31af7Sopenharmony_ci        %480 = OpIAdd %6 %818 %31
512e5c31af7Sopenharmony_ci               OpBranch %482
513e5c31af7Sopenharmony_ci        %482 = OpLabel
514e5c31af7Sopenharmony_ci        %821 = OpPhi %6 %480 %470 %824 %485
515e5c31af7Sopenharmony_ci        %820 = OpPhi %6 %18 %470 %571 %485
516e5c31af7Sopenharmony_ci        %488 = OpSLessThan %28 %820 %57
517e5c31af7Sopenharmony_ci        %490 = OpSLessThan %28 %821 %60
518e5c31af7Sopenharmony_ci        %491 = OpLogicalAnd %28 %488 %490
519e5c31af7Sopenharmony_ci               OpLoopMerge %484 %485 None
520e5c31af7Sopenharmony_ci               OpBranchConditional %491 %483 %484
521e5c31af7Sopenharmony_ci        %483 = OpLabel
522e5c31af7Sopenharmony_ci        %493 = OpIAdd %6 %821 %31
523e5c31af7Sopenharmony_ci               OpBranch %495
524e5c31af7Sopenharmony_ci        %495 = OpLabel
525e5c31af7Sopenharmony_ci        %824 = OpPhi %6 %493 %483 %827 %498
526e5c31af7Sopenharmony_ci        %823 = OpPhi %6 %18 %483 %569 %498
527e5c31af7Sopenharmony_ci        %501 = OpSLessThan %28 %823 %57
528e5c31af7Sopenharmony_ci        %503 = OpSLessThan %28 %824 %60
529e5c31af7Sopenharmony_ci        %504 = OpLogicalAnd %28 %501 %503
530e5c31af7Sopenharmony_ci               OpLoopMerge %497 %498 None
531e5c31af7Sopenharmony_ci               OpBranchConditional %504 %496 %497
532e5c31af7Sopenharmony_ci        %496 = OpLabel
533e5c31af7Sopenharmony_ci        %506 = OpIAdd %6 %824 %31
534e5c31af7Sopenharmony_ci               OpBranch %508
535e5c31af7Sopenharmony_ci        %508 = OpLabel
536e5c31af7Sopenharmony_ci        %827 = OpPhi %6 %506 %496 %830 %511
537e5c31af7Sopenharmony_ci        %826 = OpPhi %6 %18 %496 %567 %511
538e5c31af7Sopenharmony_ci        %514 = OpSLessThan %28 %826 %57
539e5c31af7Sopenharmony_ci        %516 = OpSLessThan %28 %827 %60
540e5c31af7Sopenharmony_ci        %517 = OpLogicalAnd %28 %514 %516
541e5c31af7Sopenharmony_ci               OpLoopMerge %510 %511 None
542e5c31af7Sopenharmony_ci               OpBranchConditional %517 %509 %510
543e5c31af7Sopenharmony_ci        %509 = OpLabel
544e5c31af7Sopenharmony_ci        %519 = OpIAdd %6 %827 %31
545e5c31af7Sopenharmony_ci               OpBranch %521
546e5c31af7Sopenharmony_ci        %521 = OpLabel
547e5c31af7Sopenharmony_ci        %830 = OpPhi %6 %519 %509 %833 %524
548e5c31af7Sopenharmony_ci        %829 = OpPhi %6 %18 %509 %565 %524
549e5c31af7Sopenharmony_ci        %527 = OpSLessThan %28 %829 %57
550e5c31af7Sopenharmony_ci        %529 = OpSLessThan %28 %830 %60
551e5c31af7Sopenharmony_ci        %530 = OpLogicalAnd %28 %527 %529
552e5c31af7Sopenharmony_ci               OpLoopMerge %523 %524 None
553e5c31af7Sopenharmony_ci               OpBranchConditional %530 %522 %523
554e5c31af7Sopenharmony_ci        %522 = OpLabel
555e5c31af7Sopenharmony_ci        %532 = OpIAdd %6 %830 %31
556e5c31af7Sopenharmony_ci               OpBranch %534
557e5c31af7Sopenharmony_ci        %534 = OpLabel
558e5c31af7Sopenharmony_ci        %833 = OpPhi %6 %532 %522 %545 %537
559e5c31af7Sopenharmony_ci        %832 = OpPhi %6 %18 %522 %563 %537
560e5c31af7Sopenharmony_ci        %540 = OpSLessThan %28 %832 %57
561e5c31af7Sopenharmony_ci        %542 = OpSLessThan %28 %833 %60
562e5c31af7Sopenharmony_ci        %543 = OpLogicalAnd %28 %540 %542
563e5c31af7Sopenharmony_ci               OpLoopMerge %536 %537 None
564e5c31af7Sopenharmony_ci               OpBranchConditional %543 %535 %536
565e5c31af7Sopenharmony_ci        %535 = OpLabel
566e5c31af7Sopenharmony_ci        %545 = OpIAdd %6 %833 %31
567e5c31af7Sopenharmony_ci               OpBranch %547
568e5c31af7Sopenharmony_ci        %547 = OpLabel
569e5c31af7Sopenharmony_ci        %835 = OpPhi %6 %18 %535 %561 %548
570e5c31af7Sopenharmony_ci        %553 = OpSLessThan %28 %835 %57
571e5c31af7Sopenharmony_ci        %555 = OpSLessThan %28 %545 %60
572e5c31af7Sopenharmony_ci        %556 = OpLogicalAnd %28 %553 %555
573e5c31af7Sopenharmony_ci               OpLoopMerge %549 %548 None
574e5c31af7Sopenharmony_ci               OpBranchConditional %556 %548 %549
575e5c31af7Sopenharmony_ci        %548 = OpLabel
576e5c31af7Sopenharmony_ci        %706 = OpAccessChain %19 %704 %835
577e5c31af7Sopenharmony_ci               OpStore %706 %835
578e5c31af7Sopenharmony_ci        %561 = OpIAdd %6 %835 %31
579e5c31af7Sopenharmony_ci               OpBranch %547
580e5c31af7Sopenharmony_ci        %549 = OpLabel
581e5c31af7Sopenharmony_ci               OpBranch %537
582e5c31af7Sopenharmony_ci        %537 = OpLabel
583e5c31af7Sopenharmony_ci        %563 = OpIAdd %6 %832 %31
584e5c31af7Sopenharmony_ci               OpBranch %534
585e5c31af7Sopenharmony_ci        %536 = OpLabel
586e5c31af7Sopenharmony_ci               OpBranch %524
587e5c31af7Sopenharmony_ci        %524 = OpLabel
588e5c31af7Sopenharmony_ci        %565 = OpIAdd %6 %829 %31
589e5c31af7Sopenharmony_ci               OpBranch %521
590e5c31af7Sopenharmony_ci        %523 = OpLabel
591e5c31af7Sopenharmony_ci               OpBranch %511
592e5c31af7Sopenharmony_ci        %511 = OpLabel
593e5c31af7Sopenharmony_ci        %567 = OpIAdd %6 %826 %31
594e5c31af7Sopenharmony_ci               OpBranch %508
595e5c31af7Sopenharmony_ci        %510 = OpLabel
596e5c31af7Sopenharmony_ci               OpBranch %498
597e5c31af7Sopenharmony_ci        %498 = OpLabel
598e5c31af7Sopenharmony_ci        %569 = OpIAdd %6 %823 %31
599e5c31af7Sopenharmony_ci               OpBranch %495
600e5c31af7Sopenharmony_ci        %497 = OpLabel
601e5c31af7Sopenharmony_ci               OpBranch %485
602e5c31af7Sopenharmony_ci        %485 = OpLabel
603e5c31af7Sopenharmony_ci        %571 = OpIAdd %6 %820 %31
604e5c31af7Sopenharmony_ci               OpBranch %482
605e5c31af7Sopenharmony_ci        %484 = OpLabel
606e5c31af7Sopenharmony_ci               OpBranch %472
607e5c31af7Sopenharmony_ci        %472 = OpLabel
608e5c31af7Sopenharmony_ci        %573 = OpIAdd %6 %817 %31
609e5c31af7Sopenharmony_ci               OpBranch %469
610e5c31af7Sopenharmony_ci        %471 = OpLabel
611e5c31af7Sopenharmony_ci               OpBranch %459
612e5c31af7Sopenharmony_ci        %459 = OpLabel
613e5c31af7Sopenharmony_ci        %575 = OpIAdd %6 %814 %31
614e5c31af7Sopenharmony_ci               OpBranch %456
615e5c31af7Sopenharmony_ci        %458 = OpLabel
616e5c31af7Sopenharmony_ci               OpBranch %446
617e5c31af7Sopenharmony_ci        %446 = OpLabel
618e5c31af7Sopenharmony_ci        %577 = OpIAdd %6 %811 %31
619e5c31af7Sopenharmony_ci               OpBranch %443
620e5c31af7Sopenharmony_ci        %445 = OpLabel
621e5c31af7Sopenharmony_ci               OpBranch %433
622e5c31af7Sopenharmony_ci        %433 = OpLabel
623e5c31af7Sopenharmony_ci        %579 = OpIAdd %6 %808 %31
624e5c31af7Sopenharmony_ci               OpBranch %430
625e5c31af7Sopenharmony_ci        %432 = OpLabel
626e5c31af7Sopenharmony_ci               OpBranch %420
627e5c31af7Sopenharmony_ci        %420 = OpLabel
628e5c31af7Sopenharmony_ci        %581 = OpIAdd %6 %805 %31
629e5c31af7Sopenharmony_ci               OpBranch %417
630e5c31af7Sopenharmony_ci        %419 = OpLabel
631e5c31af7Sopenharmony_ci               OpBranch %407
632e5c31af7Sopenharmony_ci        %407 = OpLabel
633e5c31af7Sopenharmony_ci        %583 = OpIAdd %6 %802 %31
634e5c31af7Sopenharmony_ci               OpBranch %404
635e5c31af7Sopenharmony_ci        %406 = OpLabel
636e5c31af7Sopenharmony_ci               OpBranch %394
637e5c31af7Sopenharmony_ci        %394 = OpLabel
638e5c31af7Sopenharmony_ci        %585 = OpIAdd %6 %799 %31
639e5c31af7Sopenharmony_ci               OpBranch %391
640e5c31af7Sopenharmony_ci        %393 = OpLabel
641e5c31af7Sopenharmony_ci               OpBranch %381
642e5c31af7Sopenharmony_ci        %381 = OpLabel
643e5c31af7Sopenharmony_ci        %587 = OpIAdd %6 %796 %31
644e5c31af7Sopenharmony_ci               OpBranch %378
645e5c31af7Sopenharmony_ci        %380 = OpLabel
646e5c31af7Sopenharmony_ci               OpBranch %368
647e5c31af7Sopenharmony_ci        %368 = OpLabel
648e5c31af7Sopenharmony_ci        %589 = OpIAdd %6 %793 %31
649e5c31af7Sopenharmony_ci               OpBranch %365
650e5c31af7Sopenharmony_ci        %367 = OpLabel
651e5c31af7Sopenharmony_ci               OpBranch %355
652e5c31af7Sopenharmony_ci        %355 = OpLabel
653e5c31af7Sopenharmony_ci        %591 = OpIAdd %6 %790 %31
654e5c31af7Sopenharmony_ci               OpBranch %352
655e5c31af7Sopenharmony_ci        %354 = OpLabel
656e5c31af7Sopenharmony_ci               OpBranch %342
657e5c31af7Sopenharmony_ci        %342 = OpLabel
658e5c31af7Sopenharmony_ci        %593 = OpIAdd %6 %787 %31
659e5c31af7Sopenharmony_ci               OpBranch %339
660e5c31af7Sopenharmony_ci        %341 = OpLabel
661e5c31af7Sopenharmony_ci               OpBranch %329
662e5c31af7Sopenharmony_ci        %329 = OpLabel
663e5c31af7Sopenharmony_ci        %595 = OpIAdd %6 %784 %31
664e5c31af7Sopenharmony_ci               OpBranch %326
665e5c31af7Sopenharmony_ci        %328 = OpLabel
666e5c31af7Sopenharmony_ci               OpBranch %316
667e5c31af7Sopenharmony_ci        %316 = OpLabel
668e5c31af7Sopenharmony_ci        %597 = OpIAdd %6 %781 %31
669e5c31af7Sopenharmony_ci               OpBranch %313
670e5c31af7Sopenharmony_ci        %315 = OpLabel
671e5c31af7Sopenharmony_ci               OpBranch %303
672e5c31af7Sopenharmony_ci        %303 = OpLabel
673e5c31af7Sopenharmony_ci        %599 = OpIAdd %6 %778 %31
674e5c31af7Sopenharmony_ci               OpBranch %300
675e5c31af7Sopenharmony_ci        %302 = OpLabel
676e5c31af7Sopenharmony_ci               OpBranch %290
677e5c31af7Sopenharmony_ci        %290 = OpLabel
678e5c31af7Sopenharmony_ci        %601 = OpIAdd %6 %775 %31
679e5c31af7Sopenharmony_ci               OpBranch %287
680e5c31af7Sopenharmony_ci        %289 = OpLabel
681e5c31af7Sopenharmony_ci               OpBranch %277
682e5c31af7Sopenharmony_ci        %277 = OpLabel
683e5c31af7Sopenharmony_ci        %603 = OpIAdd %6 %772 %31
684e5c31af7Sopenharmony_ci               OpBranch %274
685e5c31af7Sopenharmony_ci        %276 = OpLabel
686e5c31af7Sopenharmony_ci               OpBranch %264
687e5c31af7Sopenharmony_ci        %264 = OpLabel
688e5c31af7Sopenharmony_ci        %605 = OpIAdd %6 %769 %31
689e5c31af7Sopenharmony_ci               OpBranch %261
690e5c31af7Sopenharmony_ci        %263 = OpLabel
691e5c31af7Sopenharmony_ci               OpBranch %251
692e5c31af7Sopenharmony_ci        %251 = OpLabel
693e5c31af7Sopenharmony_ci        %607 = OpIAdd %6 %766 %31
694e5c31af7Sopenharmony_ci               OpBranch %248
695e5c31af7Sopenharmony_ci        %250 = OpLabel
696e5c31af7Sopenharmony_ci               OpBranch %238
697e5c31af7Sopenharmony_ci        %238 = OpLabel
698e5c31af7Sopenharmony_ci        %609 = OpIAdd %6 %763 %31
699e5c31af7Sopenharmony_ci               OpBranch %235
700e5c31af7Sopenharmony_ci        %237 = OpLabel
701e5c31af7Sopenharmony_ci               OpBranch %225
702e5c31af7Sopenharmony_ci        %225 = OpLabel
703e5c31af7Sopenharmony_ci        %611 = OpIAdd %6 %760 %31
704e5c31af7Sopenharmony_ci               OpBranch %222
705e5c31af7Sopenharmony_ci        %224 = OpLabel
706e5c31af7Sopenharmony_ci               OpBranch %212
707e5c31af7Sopenharmony_ci        %212 = OpLabel
708e5c31af7Sopenharmony_ci        %613 = OpIAdd %6 %757 %31
709e5c31af7Sopenharmony_ci               OpBranch %209
710e5c31af7Sopenharmony_ci        %211 = OpLabel
711e5c31af7Sopenharmony_ci               OpBranch %199
712e5c31af7Sopenharmony_ci        %199 = OpLabel
713e5c31af7Sopenharmony_ci        %615 = OpIAdd %6 %754 %31
714e5c31af7Sopenharmony_ci               OpBranch %196
715e5c31af7Sopenharmony_ci        %198 = OpLabel
716e5c31af7Sopenharmony_ci               OpBranch %186
717e5c31af7Sopenharmony_ci        %186 = OpLabel
718e5c31af7Sopenharmony_ci        %617 = OpIAdd %6 %751 %31
719e5c31af7Sopenharmony_ci               OpBranch %183
720e5c31af7Sopenharmony_ci        %185 = OpLabel
721e5c31af7Sopenharmony_ci               OpBranch %173
722e5c31af7Sopenharmony_ci        %173 = OpLabel
723e5c31af7Sopenharmony_ci        %619 = OpIAdd %6 %748 %31
724e5c31af7Sopenharmony_ci               OpBranch %170
725e5c31af7Sopenharmony_ci        %172 = OpLabel
726e5c31af7Sopenharmony_ci               OpBranch %160
727e5c31af7Sopenharmony_ci        %160 = OpLabel
728e5c31af7Sopenharmony_ci        %621 = OpIAdd %6 %745 %31
729e5c31af7Sopenharmony_ci               OpBranch %157
730e5c31af7Sopenharmony_ci        %159 = OpLabel
731e5c31af7Sopenharmony_ci               OpBranch %147
732e5c31af7Sopenharmony_ci        %147 = OpLabel
733e5c31af7Sopenharmony_ci        %623 = OpIAdd %6 %742 %31
734e5c31af7Sopenharmony_ci               OpBranch %144
735e5c31af7Sopenharmony_ci        %146 = OpLabel
736e5c31af7Sopenharmony_ci               OpBranch %134
737e5c31af7Sopenharmony_ci        %134 = OpLabel
738e5c31af7Sopenharmony_ci        %625 = OpIAdd %6 %739 %31
739e5c31af7Sopenharmony_ci               OpBranch %131
740e5c31af7Sopenharmony_ci        %133 = OpLabel
741e5c31af7Sopenharmony_ci               OpBranch %121
742e5c31af7Sopenharmony_ci        %121 = OpLabel
743e5c31af7Sopenharmony_ci        %627 = OpIAdd %6 %736 %31
744e5c31af7Sopenharmony_ci               OpBranch %118
745e5c31af7Sopenharmony_ci        %120 = OpLabel
746e5c31af7Sopenharmony_ci               OpBranch %108
747e5c31af7Sopenharmony_ci        %108 = OpLabel
748e5c31af7Sopenharmony_ci        %629 = OpIAdd %6 %733 %31
749e5c31af7Sopenharmony_ci               OpBranch %105
750e5c31af7Sopenharmony_ci        %107 = OpLabel
751e5c31af7Sopenharmony_ci               OpBranch %95
752e5c31af7Sopenharmony_ci         %95 = OpLabel
753e5c31af7Sopenharmony_ci        %631 = OpIAdd %6 %730 %31
754e5c31af7Sopenharmony_ci               OpBranch %92
755e5c31af7Sopenharmony_ci         %94 = OpLabel
756e5c31af7Sopenharmony_ci               OpBranch %82
757e5c31af7Sopenharmony_ci         %82 = OpLabel
758e5c31af7Sopenharmony_ci        %633 = OpIAdd %6 %727 %31
759e5c31af7Sopenharmony_ci               OpBranch %79
760e5c31af7Sopenharmony_ci         %81 = OpLabel
761e5c31af7Sopenharmony_ci               OpBranch %69
762e5c31af7Sopenharmony_ci         %69 = OpLabel
763e5c31af7Sopenharmony_ci        %635 = OpIAdd %6 %724 %31
764e5c31af7Sopenharmony_ci               OpBranch %66
765e5c31af7Sopenharmony_ci         %68 = OpLabel
766e5c31af7Sopenharmony_ci               OpBranch %54
767e5c31af7Sopenharmony_ci         %54 = OpLabel
768e5c31af7Sopenharmony_ci        %637 = OpIAdd %6 %712 %31
769e5c31af7Sopenharmony_ci               OpBranch %51
770e5c31af7Sopenharmony_ci         %53 = OpLabel
771e5c31af7Sopenharmony_ci        %645 = OpAccessChain %644 %642 %643
772e5c31af7Sopenharmony_ci        %646 = OpLoad %639 %645
773e5c31af7Sopenharmony_ci        %648 = OpFOrdGreaterThan %28 %646 %647
774e5c31af7Sopenharmony_ci               OpSelectionMerge %650 None
775e5c31af7Sopenharmony_ci               OpBranchConditional %648 %649 %650
776e5c31af7Sopenharmony_ci        %649 = OpLabel
777e5c31af7Sopenharmony_ci        %707 = OpLoad %9 %704
778e5c31af7Sopenharmony_ci               OpStore %709 %707
779e5c31af7Sopenharmony_ci               OpSelectionMerge %701 None
780e5c31af7Sopenharmony_ci               OpSwitch %668 %680
781e5c31af7Sopenharmony_ci        %680 = OpLabel
782e5c31af7Sopenharmony_ci               OpBranch %681
783e5c31af7Sopenharmony_ci        %681 = OpLabel
784e5c31af7Sopenharmony_ci        %715 = OpPhi %6 %18 %680 %696 %697
785e5c31af7Sopenharmony_ci        %714 = OpPhi %6 %713 %680 %687 %697
786e5c31af7Sopenharmony_ci        %684 = OpSLessThan %28 %714 %27
787e5c31af7Sopenharmony_ci               OpLoopMerge %698 %697 None
788e5c31af7Sopenharmony_ci               OpBranchConditional %684 %685 %698
789e5c31af7Sopenharmony_ci        %685 = OpLabel
790e5c31af7Sopenharmony_ci        %687 = OpIAdd %6 %714 %31
791e5c31af7Sopenharmony_ci        %711 = OpAccessChain %19 %709 %715
792e5c31af7Sopenharmony_ci        %690 = OpLoad %6 %711
793e5c31af7Sopenharmony_ci        %692 = OpINotEqual %28 %690 %715
794e5c31af7Sopenharmony_ci               OpSelectionMerge %694 None
795e5c31af7Sopenharmony_ci               OpBranchConditional %692 %693 %694
796e5c31af7Sopenharmony_ci        %693 = OpLabel
797e5c31af7Sopenharmony_ci               OpBranch %698
798e5c31af7Sopenharmony_ci        %694 = OpLabel
799e5c31af7Sopenharmony_ci        %696 = OpIAdd %6 %715 %31
800e5c31af7Sopenharmony_ci               OpBranch %697
801e5c31af7Sopenharmony_ci        %697 = OpLabel
802e5c31af7Sopenharmony_ci               OpBranch %681
803e5c31af7Sopenharmony_ci        %698 = OpLabel
804e5c31af7Sopenharmony_ci        %719 = OpPhi %6 %722 %681 %18 %693
805e5c31af7Sopenharmony_ci        %716 = OpPhi %28 %669 %681 %672 %693
806e5c31af7Sopenharmony_ci               OpSelectionMerge %700 None
807e5c31af7Sopenharmony_ci               OpBranchConditional %716 %701 %700
808e5c31af7Sopenharmony_ci        %700 = OpLabel
809e5c31af7Sopenharmony_ci               OpBranch %701
810e5c31af7Sopenharmony_ci        %701 = OpLabel
811e5c31af7Sopenharmony_ci        %718 = OpPhi %6 %719 %698 %31 %700
812e5c31af7Sopenharmony_ci               OpBranch %650
813e5c31af7Sopenharmony_ci        %650 = OpLabel
814e5c31af7Sopenharmony_ci        %723 = OpPhi %6 %18 %53 %718 %701
815e5c31af7Sopenharmony_ci        %655 = OpIEqual %28 %723 %31
816e5c31af7Sopenharmony_ci               OpSelectionMerge %657 None
817e5c31af7Sopenharmony_ci               OpBranchConditional %655 %656 %662
818e5c31af7Sopenharmony_ci        %656 = OpLabel
819e5c31af7Sopenharmony_ci               OpStore %659 %661
820e5c31af7Sopenharmony_ci               OpBranch %657
821e5c31af7Sopenharmony_ci        %662 = OpLabel
822e5c31af7Sopenharmony_ci               OpStore %659 %663
823e5c31af7Sopenharmony_ci               OpBranch %657
824e5c31af7Sopenharmony_ci        %657 = OpLabel
825e5c31af7Sopenharmony_ci               OpReturn
826e5c31af7Sopenharmony_ci               OpFunctionEnd
827e5c31af7Sopenharmony_ciEND
828e5c31af7Sopenharmony_ci
829e5c31af7Sopenharmony_ci# uniforms for variant
830e5c31af7Sopenharmony_ci
831e5c31af7Sopenharmony_ci
832e5c31af7Sopenharmony_ciBUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM
833e5c31af7Sopenharmony_ci
834e5c31af7Sopenharmony_ciPIPELINE graphics variant_pipeline
835e5c31af7Sopenharmony_ci  ATTACH variant_vertex_shader
836e5c31af7Sopenharmony_ci  ATTACH variant_fragment_shader
837e5c31af7Sopenharmony_ci  FRAMEBUFFER_SIZE 16 16
838e5c31af7Sopenharmony_ci  BIND BUFFER variant_framebuffer AS color LOCATION 0
839e5c31af7Sopenharmony_ciEND
840e5c31af7Sopenharmony_ciCLEAR_COLOR variant_pipeline 0 0 0 255
841e5c31af7Sopenharmony_ci
842e5c31af7Sopenharmony_ciCLEAR variant_pipeline
843e5c31af7Sopenharmony_ciRUN variant_pipeline DRAW_RECT POS 0 0 SIZE 16 16
844e5c31af7Sopenharmony_ci
845e5c31af7Sopenharmony_ciEXPECT variant_framebuffer IDX 0 0 SIZE 16 16 EQ_RGBA 255 0 0 255
846