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