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