blob: 8d930032956fbb75a791fe33cd87025ca75d631a [file] [log] [blame]
#!amber
# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# A test for a coverage-gap found by the GraphicsFuzz project.
# Short description: A fragment shader that covers specific BRW code paths
# The test passes because the shader always writes red.
# Optimized using spirv-opt with the following arguments:
# '-O'
# spirv-opt commit hash: a0370efd589be33d5d9a85cfde2f85841b3755af
SHADER vertex variant_vertex_shader PASSTHROUGH
# variant_fragment_shader is derived from the following GLSL:
# #version 320 es
#
# precision highp float;
# precision highp int;
#
# layout(location = 0) out vec4 _GLF_color;
#
# const int _GLF_global_loop_bound = 10;
# int _GLF_global_loop_count = 0;
#
# #define LOOP for (int i = 0; i < 5 && _GLF_global_loop_count < _GLF_global_loop_bound; i++, _GLF_global_loop_count++, a++)
#
# void main()
# {
# vec2 v = gl_FragCoord.xy;
# _GLF_color = vec4(v, 0, 1);
# int a = 0;
#
# LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP {
# LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP {
# LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP { LOOP {
# // Always false.
# if(gl_FragCoord.x < 0.0)
# {
# return;
# }
# } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } }
#
# // Always true because the partial derivative of gl_FragCoord is the same
# // in x and y directions. The two most inner loops run until _GLF_global_loop_count
# // (and a with it) becomes ten. The other loops increase the variable a by one.
# if (dFdx(v.x) - dFdy(v.y) == 0.0 && a == 10 + 38)
# _GLF_color = vec4(1, 0, 0, 1);
# else
# _GLF_color = vec4(0);
# }
SHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 10
; Bound: 2564
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %4 "main" %16 %20
OpExecutionMode %4 OriginUpperLeft
OpSource ESSL 320
OpName %4 "main"
OpName %16 "gl_FragCoord"
OpName %20 "_GLF_color"
OpDecorate %16 BuiltIn FragCoord
OpDecorate %20 Location 0
%2 = OpTypeVoid
%3 = OpTypeFunction %2
%6 = OpTypeInt 32 1
%9 = OpConstant %6 0
%10 = OpTypeFloat 32
%14 = OpTypeVector %10 4
%15 = OpTypePointer Input %14
%16 = OpVariable %15 Input
%19 = OpTypePointer Output %14
%20 = OpVariable %19 Output
%22 = OpConstant %10 0
%23 = OpConstant %10 1
%36 = OpConstant %6 5
%37 = OpTypeBool
%40 = OpConstant %6 10
%461 = OpTypeInt 32 0
%462 = OpConstant %461 0
%463 = OpTypePointer Input %10
%471 = OpConstant %6 1
%716 = OpConstant %6 48
%721 = OpConstantComposite %14 %23 %22 %22 %23
%723 = OpConstantComposite %14 %22 %22 %22 %22
%726 = OpConstantFalse %37
%729 = OpConstantTrue %37
%4 = OpFunction %2 None %3
%5 = OpLabel
OpSelectionMerge %724 None
OpSwitch %462 %725
%725 = OpLabel
%17 = OpLoad %14 %16
%24 = OpCompositeExtract %10 %17 0
%25 = OpCompositeExtract %10 %17 1
%26 = OpCompositeConstruct %14 %24 %25 %22 %23
OpStore %20 %26
OpBranch %30
%30 = OpLabel
%966 = OpPhi %37 %726 %725 %2483 %33
%926 = OpPhi %6 %9 %725 %704 %33
%811 = OpPhi %6 %9 %725 %702 %33
%810 = OpPhi %6 %9 %725 %700 %33
%38 = OpSLessThan %37 %810 %36
%41 = OpSLessThan %37 %811 %40
%42 = OpLogicalAnd %37 %38 %41
OpLoopMerge %32 %33 None
OpBranchConditional %42 %31 %32
%31 = OpLabel
OpBranch %44
%44 = OpLabel
%965 = OpPhi %37 %966 %31 %2406 %47
%925 = OpPhi %6 %926 %31 %698 %47
%813 = OpPhi %6 %811 %31 %696 %47
%812 = OpPhi %6 %9 %31 %694 %47
%50 = OpSLessThan %37 %812 %36
%52 = OpSLessThan %37 %813 %40
%53 = OpLogicalAnd %37 %50 %52
OpLoopMerge %46 %47 None
OpBranchConditional %53 %45 %46
%45 = OpLabel
OpBranch %55
%55 = OpLabel
%964 = OpPhi %37 %965 %45 %2331 %58
%924 = OpPhi %6 %925 %45 %692 %58
%815 = OpPhi %6 %813 %45 %690 %58
%814 = OpPhi %6 %9 %45 %688 %58
%61 = OpSLessThan %37 %814 %36
%63 = OpSLessThan %37 %815 %40
%64 = OpLogicalAnd %37 %61 %63
OpLoopMerge %57 %58 None
OpBranchConditional %64 %56 %57
%56 = OpLabel
OpBranch %66
%66 = OpLabel
%963 = OpPhi %37 %964 %56 %2258 %69
%923 = OpPhi %6 %924 %56 %686 %69
%817 = OpPhi %6 %815 %56 %684 %69
%816 = OpPhi %6 %9 %56 %682 %69
%72 = OpSLessThan %37 %816 %36
%74 = OpSLessThan %37 %817 %40
%75 = OpLogicalAnd %37 %72 %74
OpLoopMerge %68 %69 None
OpBranchConditional %75 %67 %68
%67 = OpLabel
OpBranch %77
%77 = OpLabel
%962 = OpPhi %37 %963 %67 %2187 %80
%922 = OpPhi %6 %923 %67 %680 %80
%819 = OpPhi %6 %817 %67 %678 %80
%818 = OpPhi %6 %9 %67 %676 %80
%83 = OpSLessThan %37 %818 %36
%85 = OpSLessThan %37 %819 %40
%86 = OpLogicalAnd %37 %83 %85
OpLoopMerge %79 %80 None
OpBranchConditional %86 %78 %79
%78 = OpLabel
OpBranch %88
%88 = OpLabel
%961 = OpPhi %37 %962 %78 %2118 %91
%921 = OpPhi %6 %922 %78 %674 %91
%821 = OpPhi %6 %819 %78 %672 %91
%820 = OpPhi %6 %9 %78 %670 %91
%94 = OpSLessThan %37 %820 %36
%96 = OpSLessThan %37 %821 %40
%97 = OpLogicalAnd %37 %94 %96
OpLoopMerge %90 %91 None
OpBranchConditional %97 %89 %90
%89 = OpLabel
OpBranch %99
%99 = OpLabel
%960 = OpPhi %37 %961 %89 %2051 %102
%920 = OpPhi %6 %921 %89 %668 %102
%823 = OpPhi %6 %821 %89 %666 %102
%822 = OpPhi %6 %9 %89 %664 %102
%105 = OpSLessThan %37 %822 %36
%107 = OpSLessThan %37 %823 %40
%108 = OpLogicalAnd %37 %105 %107
OpLoopMerge %101 %102 None
OpBranchConditional %108 %100 %101
%100 = OpLabel
OpBranch %110
%110 = OpLabel
%959 = OpPhi %37 %960 %100 %1986 %113
%919 = OpPhi %6 %920 %100 %662 %113
%825 = OpPhi %6 %823 %100 %660 %113
%824 = OpPhi %6 %9 %100 %658 %113
%116 = OpSLessThan %37 %824 %36
%118 = OpSLessThan %37 %825 %40
%119 = OpLogicalAnd %37 %116 %118
OpLoopMerge %112 %113 None
OpBranchConditional %119 %111 %112
%111 = OpLabel
OpBranch %121
%121 = OpLabel
%958 = OpPhi %37 %959 %111 %1923 %124
%918 = OpPhi %6 %919 %111 %656 %124
%827 = OpPhi %6 %825 %111 %654 %124
%826 = OpPhi %6 %9 %111 %652 %124
%127 = OpSLessThan %37 %826 %36
%129 = OpSLessThan %37 %827 %40
%130 = OpLogicalAnd %37 %127 %129
OpLoopMerge %123 %124 None
OpBranchConditional %130 %122 %123
%122 = OpLabel
OpBranch %132
%132 = OpLabel
%957 = OpPhi %37 %958 %122 %1862 %135
%917 = OpPhi %6 %918 %122 %650 %135
%829 = OpPhi %6 %827 %122 %648 %135
%828 = OpPhi %6 %9 %122 %646 %135
%138 = OpSLessThan %37 %828 %36
%140 = OpSLessThan %37 %829 %40
%141 = OpLogicalAnd %37 %138 %140
OpLoopMerge %134 %135 None
OpBranchConditional %141 %133 %134
%133 = OpLabel
OpBranch %143
%143 = OpLabel
%956 = OpPhi %37 %957 %133 %1803 %146
%916 = OpPhi %6 %917 %133 %644 %146
%831 = OpPhi %6 %829 %133 %642 %146
%830 = OpPhi %6 %9 %133 %640 %146
%149 = OpSLessThan %37 %830 %36
%151 = OpSLessThan %37 %831 %40
%152 = OpLogicalAnd %37 %149 %151
OpLoopMerge %145 %146 None
OpBranchConditional %152 %144 %145
%144 = OpLabel
OpBranch %154
%154 = OpLabel
%955 = OpPhi %37 %956 %144 %1746 %157
%915 = OpPhi %6 %916 %144 %638 %157
%833 = OpPhi %6 %831 %144 %636 %157
%832 = OpPhi %6 %9 %144 %634 %157
%160 = OpSLessThan %37 %832 %36
%162 = OpSLessThan %37 %833 %40
%163 = OpLogicalAnd %37 %160 %162
OpLoopMerge %156 %157 None
OpBranchConditional %163 %155 %156
%155 = OpLabel
OpBranch %165
%165 = OpLabel
%954 = OpPhi %37 %955 %155 %1691 %168
%914 = OpPhi %6 %915 %155 %632 %168
%835 = OpPhi %6 %833 %155 %630 %168
%834 = OpPhi %6 %9 %155 %628 %168
%171 = OpSLessThan %37 %834 %36
%173 = OpSLessThan %37 %835 %40
%174 = OpLogicalAnd %37 %171 %173
OpLoopMerge %167 %168 None
OpBranchConditional %174 %166 %167
%166 = OpLabel
OpBranch %176
%176 = OpLabel
%953 = OpPhi %37 %954 %166 %1638 %179
%913 = OpPhi %6 %914 %166 %626 %179
%837 = OpPhi %6 %835 %166 %624 %179
%836 = OpPhi %6 %9 %166 %622 %179
%182 = OpSLessThan %37 %836 %36
%184 = OpSLessThan %37 %837 %40
%185 = OpLogicalAnd %37 %182 %184
OpLoopMerge %178 %179 None
OpBranchConditional %185 %177 %178
%177 = OpLabel
OpBranch %187
%187 = OpLabel
%952 = OpPhi %37 %953 %177 %1587 %190
%912 = OpPhi %6 %913 %177 %620 %190
%839 = OpPhi %6 %837 %177 %618 %190
%838 = OpPhi %6 %9 %177 %616 %190
%193 = OpSLessThan %37 %838 %36
%195 = OpSLessThan %37 %839 %40
%196 = OpLogicalAnd %37 %193 %195
OpLoopMerge %189 %190 None
OpBranchConditional %196 %188 %189
%188 = OpLabel
OpBranch %198
%198 = OpLabel
%951 = OpPhi %37 %952 %188 %1538 %201
%911 = OpPhi %6 %912 %188 %614 %201
%841 = OpPhi %6 %839 %188 %612 %201
%840 = OpPhi %6 %9 %188 %610 %201
%204 = OpSLessThan %37 %840 %36
%206 = OpSLessThan %37 %841 %40
%207 = OpLogicalAnd %37 %204 %206
OpLoopMerge %200 %201 None
OpBranchConditional %207 %199 %200
%199 = OpLabel
OpBranch %209
%209 = OpLabel
%950 = OpPhi %37 %951 %199 %1491 %212
%910 = OpPhi %6 %911 %199 %608 %212
%843 = OpPhi %6 %841 %199 %606 %212
%842 = OpPhi %6 %9 %199 %604 %212
%215 = OpSLessThan %37 %842 %36
%217 = OpSLessThan %37 %843 %40
%218 = OpLogicalAnd %37 %215 %217
OpLoopMerge %211 %212 None
OpBranchConditional %218 %210 %211
%210 = OpLabel
OpBranch %220
%220 = OpLabel
%949 = OpPhi %37 %950 %210 %1446 %223
%909 = OpPhi %6 %910 %210 %602 %223
%845 = OpPhi %6 %843 %210 %600 %223
%844 = OpPhi %6 %9 %210 %598 %223
%226 = OpSLessThan %37 %844 %36
%228 = OpSLessThan %37 %845 %40
%229 = OpLogicalAnd %37 %226 %228
OpLoopMerge %222 %223 None
OpBranchConditional %229 %221 %222
%221 = OpLabel
OpBranch %231
%231 = OpLabel
%948 = OpPhi %37 %949 %221 %1403 %234
%908 = OpPhi %6 %909 %221 %596 %234
%847 = OpPhi %6 %845 %221 %594 %234
%846 = OpPhi %6 %9 %221 %592 %234
%237 = OpSLessThan %37 %846 %36
%239 = OpSLessThan %37 %847 %40
%240 = OpLogicalAnd %37 %237 %239
OpLoopMerge %233 %234 None
OpBranchConditional %240 %232 %233
%232 = OpLabel
OpBranch %242
%242 = OpLabel
%947 = OpPhi %37 %948 %232 %1362 %245
%907 = OpPhi %6 %908 %232 %590 %245
%849 = OpPhi %6 %847 %232 %588 %245
%848 = OpPhi %6 %9 %232 %586 %245
%248 = OpSLessThan %37 %848 %36
%250 = OpSLessThan %37 %849 %40
%251 = OpLogicalAnd %37 %248 %250
OpLoopMerge %244 %245 None
OpBranchConditional %251 %243 %244
%243 = OpLabel
OpBranch %253
%253 = OpLabel
%946 = OpPhi %37 %947 %243 %1323 %256
%906 = OpPhi %6 %907 %243 %584 %256
%851 = OpPhi %6 %849 %243 %582 %256
%850 = OpPhi %6 %9 %243 %580 %256
%259 = OpSLessThan %37 %850 %36
%261 = OpSLessThan %37 %851 %40
%262 = OpLogicalAnd %37 %259 %261
OpLoopMerge %255 %256 None
OpBranchConditional %262 %254 %255
%254 = OpLabel
OpBranch %264
%264 = OpLabel
%945 = OpPhi %37 %946 %254 %1286 %267
%905 = OpPhi %6 %906 %254 %578 %267
%853 = OpPhi %6 %851 %254 %576 %267
%852 = OpPhi %6 %9 %254 %574 %267
%270 = OpSLessThan %37 %852 %36
%272 = OpSLessThan %37 %853 %40
%273 = OpLogicalAnd %37 %270 %272
OpLoopMerge %266 %267 None
OpBranchConditional %273 %265 %266
%265 = OpLabel
OpBranch %275
%275 = OpLabel
%944 = OpPhi %37 %945 %265 %1251 %278
%904 = OpPhi %6 %905 %265 %572 %278
%855 = OpPhi %6 %853 %265 %570 %278
%854 = OpPhi %6 %9 %265 %568 %278
%281 = OpSLessThan %37 %854 %36
%283 = OpSLessThan %37 %855 %40
%284 = OpLogicalAnd %37 %281 %283
OpLoopMerge %277 %278 None
OpBranchConditional %284 %276 %277
%276 = OpLabel
OpBranch %286
%286 = OpLabel
%943 = OpPhi %37 %944 %276 %1218 %289
%903 = OpPhi %6 %904 %276 %566 %289
%857 = OpPhi %6 %855 %276 %564 %289
%856 = OpPhi %6 %9 %276 %562 %289
%292 = OpSLessThan %37 %856 %36
%294 = OpSLessThan %37 %857 %40
%295 = OpLogicalAnd %37 %292 %294
OpLoopMerge %288 %289 None
OpBranchConditional %295 %287 %288
%287 = OpLabel
OpBranch %297
%297 = OpLabel
%942 = OpPhi %37 %943 %287 %1187 %300
%902 = OpPhi %6 %903 %287 %560 %300
%859 = OpPhi %6 %857 %287 %558 %300
%858 = OpPhi %6 %9 %287 %556 %300
%303 = OpSLessThan %37 %858 %36
%305 = OpSLessThan %37 %859 %40
%306 = OpLogicalAnd %37 %303 %305
OpLoopMerge %299 %300 None
OpBranchConditional %306 %298 %299
%298 = OpLabel
OpBranch %308
%308 = OpLabel
%941 = OpPhi %37 %942 %298 %1158 %311
%901 = OpPhi %6 %902 %298 %554 %311
%861 = OpPhi %6 %859 %298 %552 %311
%860 = OpPhi %6 %9 %298 %550 %311
%314 = OpSLessThan %37 %860 %36
%316 = OpSLessThan %37 %861 %40
%317 = OpLogicalAnd %37 %314 %316
OpLoopMerge %310 %311 None
OpBranchConditional %317 %309 %310
%309 = OpLabel
OpBranch %319
%319 = OpLabel
%940 = OpPhi %37 %941 %309 %1131 %322
%900 = OpPhi %6 %901 %309 %548 %322
%863 = OpPhi %6 %861 %309 %546 %322
%862 = OpPhi %6 %9 %309 %544 %322
%325 = OpSLessThan %37 %862 %36
%327 = OpSLessThan %37 %863 %40
%328 = OpLogicalAnd %37 %325 %327
OpLoopMerge %321 %322 None
OpBranchConditional %328 %320 %321
%320 = OpLabel
OpBranch %330
%330 = OpLabel
%939 = OpPhi %37 %940 %320 %1106 %333
%899 = OpPhi %6 %900 %320 %542 %333
%865 = OpPhi %6 %863 %320 %540 %333
%864 = OpPhi %6 %9 %320 %538 %333
%336 = OpSLessThan %37 %864 %36
%338 = OpSLessThan %37 %865 %40
%339 = OpLogicalAnd %37 %336 %338
OpLoopMerge %332 %333 None
OpBranchConditional %339 %331 %332
%331 = OpLabel
OpBranch %341
%341 = OpLabel
%938 = OpPhi %37 %939 %331 %1083 %344
%898 = OpPhi %6 %899 %331 %536 %344
%867 = OpPhi %6 %865 %331 %534 %344
%866 = OpPhi %6 %9 %331 %532 %344
%347 = OpSLessThan %37 %866 %36
%349 = OpSLessThan %37 %867 %40
%350 = OpLogicalAnd %37 %347 %349
OpLoopMerge %343 %344 None
OpBranchConditional %350 %342 %343
%342 = OpLabel
OpBranch %352
%352 = OpLabel
%937 = OpPhi %37 %938 %342 %1062 %355
%897 = OpPhi %6 %898 %342 %530 %355
%869 = OpPhi %6 %867 %342 %528 %355
%868 = OpPhi %6 %9 %342 %526 %355
%358 = OpSLessThan %37 %868 %36
%360 = OpSLessThan %37 %869 %40
%361 = OpLogicalAnd %37 %358 %360
OpLoopMerge %354 %355 None
OpBranchConditional %361 %353 %354
%353 = OpLabel
OpBranch %363
%363 = OpLabel
%936 = OpPhi %37 %937 %353 %1043 %366
%896 = OpPhi %6 %897 %353 %524 %366
%871 = OpPhi %6 %869 %353 %522 %366
%870 = OpPhi %6 %9 %353 %520 %366
%369 = OpSLessThan %37 %870 %36
%371 = OpSLessThan %37 %871 %40
%372 = OpLogicalAnd %37 %369 %371
OpLoopMerge %365 %366 None
OpBranchConditional %372 %364 %365
%364 = OpLabel
OpBranch %374
%374 = OpLabel
%935 = OpPhi %37 %936 %364 %1026 %377
%895 = OpPhi %6 %896 %364 %518 %377
%873 = OpPhi %6 %871 %364 %516 %377
%872 = OpPhi %6 %9 %364 %514 %377
%380 = OpSLessThan %37 %872 %36
%382 = OpSLessThan %37 %873 %40
%383 = OpLogicalAnd %37 %380 %382
OpLoopMerge %376 %377 None
OpBranchConditional %383 %375 %376
%375 = OpLabel
OpBranch %385
%385 = OpLabel
%934 = OpPhi %37 %935 %375 %1011 %388
%894 = OpPhi %6 %895 %375 %512 %388
%875 = OpPhi %6 %873 %375 %510 %388
%874 = OpPhi %6 %9 %375 %508 %388
%391 = OpSLessThan %37 %874 %36
%393 = OpSLessThan %37 %875 %40
%394 = OpLogicalAnd %37 %391 %393
OpLoopMerge %387 %388 None
OpBranchConditional %394 %386 %387
%386 = OpLabel
OpBranch %396
%396 = OpLabel
%933 = OpPhi %37 %934 %386 %998 %399
%893 = OpPhi %6 %894 %386 %506 %399
%877 = OpPhi %6 %875 %386 %504 %399
%876 = OpPhi %6 %9 %386 %502 %399
%402 = OpSLessThan %37 %876 %36
%404 = OpSLessThan %37 %877 %40
%405 = OpLogicalAnd %37 %402 %404
OpLoopMerge %398 %399 None
OpBranchConditional %405 %397 %398
%397 = OpLabel
OpBranch %407
%407 = OpLabel
%932 = OpPhi %37 %933 %397 %987 %410
%892 = OpPhi %6 %893 %397 %500 %410
%879 = OpPhi %6 %877 %397 %498 %410
%878 = OpPhi %6 %9 %397 %496 %410
%413 = OpSLessThan %37 %878 %36
%415 = OpSLessThan %37 %879 %40
%416 = OpLogicalAnd %37 %413 %415
OpLoopMerge %409 %410 None
OpBranchConditional %416 %408 %409
%408 = OpLabel
OpBranch %418
%418 = OpLabel
%931 = OpPhi %37 %932 %408 %978 %421
%891 = OpPhi %6 %892 %408 %494 %421
%881 = OpPhi %6 %879 %408 %492 %421
%880 = OpPhi %6 %9 %408 %490 %421
%424 = OpSLessThan %37 %880 %36
%426 = OpSLessThan %37 %881 %40
%427 = OpLogicalAnd %37 %424 %426
OpLoopMerge %420 %421 None
OpBranchConditional %427 %419 %420
%419 = OpLabel
OpBranch %429
%429 = OpLabel
%930 = OpPhi %37 %931 %419 %971 %432
%890 = OpPhi %6 %891 %419 %488 %432
%883 = OpPhi %6 %881 %419 %486 %432
%882 = OpPhi %6 %9 %419 %484 %432
%435 = OpSLessThan %37 %882 %36
%437 = OpSLessThan %37 %883 %40
%438 = OpLogicalAnd %37 %435 %437
OpLoopMerge %431 %432 None
OpBranchConditional %438 %430 %431
%430 = OpLabel
OpBranch %440
%440 = OpLabel
%929 = OpPhi %37 %930 %430 %927 %443
%889 = OpPhi %6 %890 %430 %482 %443
%885 = OpPhi %6 %883 %430 %480 %443
%884 = OpPhi %6 %9 %430 %478 %443
%446 = OpSLessThan %37 %884 %36
%448 = OpSLessThan %37 %885 %40
%449 = OpLogicalAnd %37 %446 %448
OpLoopMerge %442 %443 None
OpBranchConditional %449 %441 %442
%441 = OpLabel
OpBranch %451
%451 = OpLabel
%888 = OpPhi %6 %889 %441 %476 %454
%887 = OpPhi %6 %885 %441 %474 %454
%886 = OpPhi %6 %9 %441 %472 %454
%457 = OpSLessThan %37 %886 %36
%459 = OpSLessThan %37 %887 %40
%460 = OpLogicalAnd %37 %457 %459
OpLoopMerge %453 %454 None
OpBranchConditional %460 %452 %453
%452 = OpLabel
%464 = OpAccessChain %463 %16 %462
%465 = OpLoad %10 %464
%466 = OpFOrdLessThan %37 %465 %22
OpSelectionMerge %468 None
OpBranchConditional %466 %467 %468
%467 = OpLabel
OpBranch %453
%468 = OpLabel
OpBranch %454
%454 = OpLabel
%472 = OpIAdd %6 %886 %471
%474 = OpIAdd %6 %887 %471
%476 = OpIAdd %6 %888 %471
OpBranch %451
%453 = OpLabel
%927 = OpPhi %37 %929 %451 %729 %467
OpSelectionMerge %730 None
OpBranchConditional %927 %442 %730
%730 = OpLabel
OpBranch %443
%443 = OpLabel
%478 = OpIAdd %6 %884 %471
%480 = OpIAdd %6 %887 %471
%482 = OpIAdd %6 %888 %471
OpBranch %440
%442 = OpLabel
%977 = OpPhi %6 %889 %440 %888 %453
%976 = OpPhi %6 %885 %440 %887 %453
%971 = OpPhi %37 %929 %440 %927 %453
OpSelectionMerge %732 None
OpBranchConditional %971 %431 %732
%732 = OpLabel
OpBranch %432
%432 = OpLabel
%484 = OpIAdd %6 %882 %471
%486 = OpIAdd %6 %976 %471
%488 = OpIAdd %6 %977 %471
OpBranch %429
%431 = OpLabel
%986 = OpPhi %6 %890 %429 %977 %442
%985 = OpPhi %6 %883 %429 %976 %442
%978 = OpPhi %37 %930 %429 %971 %442
OpSelectionMerge %734 None
OpBranchConditional %978 %420 %734
%734 = OpLabel
OpBranch %421
%421 = OpLabel
%490 = OpIAdd %6 %880 %471
%492 = OpIAdd %6 %985 %471
%494 = OpIAdd %6 %986 %471
OpBranch %418
%420 = OpLabel
%997 = OpPhi %6 %891 %418 %986 %431
%996 = OpPhi %6 %881 %418 %985 %431
%987 = OpPhi %37 %931 %418 %978 %431
OpSelectionMerge %736 None
OpBranchConditional %987 %409 %736
%736 = OpLabel
OpBranch %410
%410 = OpLabel
%496 = OpIAdd %6 %878 %471
%498 = OpIAdd %6 %996 %471
%500 = OpIAdd %6 %997 %471
OpBranch %407
%409 = OpLabel
%1010 = OpPhi %6 %892 %407 %997 %420
%1009 = OpPhi %6 %879 %407 %996 %420
%998 = OpPhi %37 %932 %407 %987 %420
OpSelectionMerge %738 None
OpBranchConditional %998 %398 %738
%738 = OpLabel
OpBranch %399
%399 = OpLabel
%502 = OpIAdd %6 %876 %471
%504 = OpIAdd %6 %1009 %471
%506 = OpIAdd %6 %1010 %471
OpBranch %396
%398 = OpLabel
%1025 = OpPhi %6 %893 %396 %1010 %409
%1024 = OpPhi %6 %877 %396 %1009 %409
%1011 = OpPhi %37 %933 %396 %998 %409
OpSelectionMerge %740 None
OpBranchConditional %1011 %387 %740
%740 = OpLabel
OpBranch %388
%388 = OpLabel
%508 = OpIAdd %6 %874 %471
%510 = OpIAdd %6 %1024 %471
%512 = OpIAdd %6 %1025 %471
OpBranch %385
%387 = OpLabel
%1042 = OpPhi %6 %894 %385 %1025 %398
%1041 = OpPhi %6 %875 %385 %1024 %398
%1026 = OpPhi %37 %934 %385 %1011 %398
OpSelectionMerge %742 None
OpBranchConditional %1026 %376 %742
%742 = OpLabel
OpBranch %377
%377 = OpLabel
%514 = OpIAdd %6 %872 %471
%516 = OpIAdd %6 %1041 %471
%518 = OpIAdd %6 %1042 %471
OpBranch %374
%376 = OpLabel
%1061 = OpPhi %6 %895 %374 %1042 %387
%1060 = OpPhi %6 %873 %374 %1041 %387
%1043 = OpPhi %37 %935 %374 %1026 %387
OpSelectionMerge %744 None
OpBranchConditional %1043 %365 %744
%744 = OpLabel
OpBranch %366
%366 = OpLabel
%520 = OpIAdd %6 %870 %471
%522 = OpIAdd %6 %1060 %471
%524 = OpIAdd %6 %1061 %471
OpBranch %363
%365 = OpLabel
%1082 = OpPhi %6 %896 %363 %1061 %376
%1081 = OpPhi %6 %871 %363 %1060 %376
%1062 = OpPhi %37 %936 %363 %1043 %376
OpSelectionMerge %746 None
OpBranchConditional %1062 %354 %746
%746 = OpLabel
OpBranch %355
%355 = OpLabel
%526 = OpIAdd %6 %868 %471
%528 = OpIAdd %6 %1081 %471
%530 = OpIAdd %6 %1082 %471
OpBranch %352
%354 = OpLabel
%1105 = OpPhi %6 %897 %352 %1082 %365
%1104 = OpPhi %6 %869 %352 %1081 %365
%1083 = OpPhi %37 %937 %352 %1062 %365
OpSelectionMerge %748 None
OpBranchConditional %1083 %343 %748
%748 = OpLabel
OpBranch %344
%344 = OpLabel
%532 = OpIAdd %6 %866 %471
%534 = OpIAdd %6 %1104 %471
%536 = OpIAdd %6 %1105 %471
OpBranch %341
%343 = OpLabel
%1130 = OpPhi %6 %898 %341 %1105 %354
%1129 = OpPhi %6 %867 %341 %1104 %354
%1106 = OpPhi %37 %938 %341 %1083 %354
OpSelectionMerge %750 None
OpBranchConditional %1106 %332 %750
%750 = OpLabel
OpBranch %333
%333 = OpLabel
%538 = OpIAdd %6 %864 %471
%540 = OpIAdd %6 %1129 %471
%542 = OpIAdd %6 %1130 %471
OpBranch %330
%332 = OpLabel
%1157 = OpPhi %6 %899 %330 %1130 %343
%1156 = OpPhi %6 %865 %330 %1129 %343
%1131 = OpPhi %37 %939 %330 %1106 %343
OpSelectionMerge %752 None
OpBranchConditional %1131 %321 %752
%752 = OpLabel
OpBranch %322
%322 = OpLabel
%544 = OpIAdd %6 %862 %471
%546 = OpIAdd %6 %1156 %471
%548 = OpIAdd %6 %1157 %471
OpBranch %319
%321 = OpLabel
%1186 = OpPhi %6 %900 %319 %1157 %332
%1185 = OpPhi %6 %863 %319 %1156 %332
%1158 = OpPhi %37 %940 %319 %1131 %332
OpSelectionMerge %754 None
OpBranchConditional %1158 %310 %754
%754 = OpLabel
OpBranch %311
%311 = OpLabel
%550 = OpIAdd %6 %860 %471
%552 = OpIAdd %6 %1185 %471
%554 = OpIAdd %6 %1186 %471
OpBranch %308
%310 = OpLabel
%1217 = OpPhi %6 %901 %308 %1186 %321
%1216 = OpPhi %6 %861 %308 %1185 %321
%1187 = OpPhi %37 %941 %308 %1158 %321
OpSelectionMerge %756 None
OpBranchConditional %1187 %299 %756
%756 = OpLabel
OpBranch %300
%300 = OpLabel
%556 = OpIAdd %6 %858 %471
%558 = OpIAdd %6 %1216 %471
%560 = OpIAdd %6 %1217 %471
OpBranch %297
%299 = OpLabel
%1250 = OpPhi %6 %902 %297 %1217 %310
%1249 = OpPhi %6 %859 %297 %1216 %310
%1218 = OpPhi %37 %942 %297 %1187 %310
OpSelectionMerge %758 None
OpBranchConditional %1218 %288 %758
%758 = OpLabel
OpBranch %289
%289 = OpLabel
%562 = OpIAdd %6 %856 %471
%564 = OpIAdd %6 %1249 %471
%566 = OpIAdd %6 %1250 %471
OpBranch %286
%288 = OpLabel
%1285 = OpPhi %6 %903 %286 %1250 %299
%1284 = OpPhi %6 %857 %286 %1249 %299
%1251 = OpPhi %37 %943 %286 %1218 %299
OpSelectionMerge %760 None
OpBranchConditional %1251 %277 %760
%760 = OpLabel
OpBranch %278
%278 = OpLabel
%568 = OpIAdd %6 %854 %471
%570 = OpIAdd %6 %1284 %471
%572 = OpIAdd %6 %1285 %471
OpBranch %275
%277 = OpLabel
%1322 = OpPhi %6 %904 %275 %1285 %288
%1321 = OpPhi %6 %855 %275 %1284 %288
%1286 = OpPhi %37 %944 %275 %1251 %288
OpSelectionMerge %762 None
OpBranchConditional %1286 %266 %762
%762 = OpLabel
OpBranch %267
%267 = OpLabel
%574 = OpIAdd %6 %852 %471
%576 = OpIAdd %6 %1321 %471
%578 = OpIAdd %6 %1322 %471
OpBranch %264
%266 = OpLabel
%1361 = OpPhi %6 %905 %264 %1322 %277
%1360 = OpPhi %6 %853 %264 %1321 %277
%1323 = OpPhi %37 %945 %264 %1286 %277
OpSelectionMerge %764 None
OpBranchConditional %1323 %255 %764
%764 = OpLabel
OpBranch %256
%256 = OpLabel
%580 = OpIAdd %6 %850 %471
%582 = OpIAdd %6 %1360 %471
%584 = OpIAdd %6 %1361 %471
OpBranch %253
%255 = OpLabel
%1402 = OpPhi %6 %906 %253 %1361 %266
%1401 = OpPhi %6 %851 %253 %1360 %266
%1362 = OpPhi %37 %946 %253 %1323 %266
OpSelectionMerge %766 None
OpBranchConditional %1362 %244 %766
%766 = OpLabel
OpBranch %245
%245 = OpLabel
%586 = OpIAdd %6 %848 %471
%588 = OpIAdd %6 %1401 %471
%590 = OpIAdd %6 %1402 %471
OpBranch %242
%244 = OpLabel
%1445 = OpPhi %6 %907 %242 %1402 %255
%1444 = OpPhi %6 %849 %242 %1401 %255
%1403 = OpPhi %37 %947 %242 %1362 %255
OpSelectionMerge %768 None
OpBranchConditional %1403 %233 %768
%768 = OpLabel
OpBranch %234
%234 = OpLabel
%592 = OpIAdd %6 %846 %471
%594 = OpIAdd %6 %1444 %471
%596 = OpIAdd %6 %1445 %471
OpBranch %231
%233 = OpLabel
%1490 = OpPhi %6 %908 %231 %1445 %244
%1489 = OpPhi %6 %847 %231 %1444 %244
%1446 = OpPhi %37 %948 %231 %1403 %244
OpSelectionMerge %770 None
OpBranchConditional %1446 %222 %770
%770 = OpLabel
OpBranch %223
%223 = OpLabel
%598 = OpIAdd %6 %844 %471
%600 = OpIAdd %6 %1489 %471
%602 = OpIAdd %6 %1490 %471
OpBranch %220
%222 = OpLabel
%1537 = OpPhi %6 %909 %220 %1490 %233
%1536 = OpPhi %6 %845 %220 %1489 %233
%1491 = OpPhi %37 %949 %220 %1446 %233
OpSelectionMerge %772 None
OpBranchConditional %1491 %211 %772
%772 = OpLabel
OpBranch %212
%212 = OpLabel
%604 = OpIAdd %6 %842 %471
%606 = OpIAdd %6 %1536 %471
%608 = OpIAdd %6 %1537 %471
OpBranch %209
%211 = OpLabel
%1586 = OpPhi %6 %910 %209 %1537 %222
%1585 = OpPhi %6 %843 %209 %1536 %222
%1538 = OpPhi %37 %950 %209 %1491 %222
OpSelectionMerge %774 None
OpBranchConditional %1538 %200 %774
%774 = OpLabel
OpBranch %201
%201 = OpLabel
%610 = OpIAdd %6 %840 %471
%612 = OpIAdd %6 %1585 %471
%614 = OpIAdd %6 %1586 %471
OpBranch %198
%200 = OpLabel
%1637 = OpPhi %6 %911 %198 %1586 %211
%1636 = OpPhi %6 %841 %198 %1585 %211
%1587 = OpPhi %37 %951 %198 %1538 %211
OpSelectionMerge %776 None
OpBranchConditional %1587 %189 %776
%776 = OpLabel
OpBranch %190
%190 = OpLabel
%616 = OpIAdd %6 %838 %471
%618 = OpIAdd %6 %1636 %471
%620 = OpIAdd %6 %1637 %471
OpBranch %187
%189 = OpLabel
%1690 = OpPhi %6 %912 %187 %1637 %200
%1689 = OpPhi %6 %839 %187 %1636 %200
%1638 = OpPhi %37 %952 %187 %1587 %200
OpSelectionMerge %778 None
OpBranchConditional %1638 %178 %778
%778 = OpLabel
OpBranch %179
%179 = OpLabel
%622 = OpIAdd %6 %836 %471
%624 = OpIAdd %6 %1689 %471
%626 = OpIAdd %6 %1690 %471
OpBranch %176
%178 = OpLabel
%1745 = OpPhi %6 %913 %176 %1690 %189
%1744 = OpPhi %6 %837 %176 %1689 %189
%1691 = OpPhi %37 %953 %176 %1638 %189
OpSelectionMerge %780 None
OpBranchConditional %1691 %167 %780
%780 = OpLabel
OpBranch %168
%168 = OpLabel
%628 = OpIAdd %6 %834 %471
%630 = OpIAdd %6 %1744 %471
%632 = OpIAdd %6 %1745 %471
OpBranch %165
%167 = OpLabel
%1802 = OpPhi %6 %914 %165 %1745 %178
%1801 = OpPhi %6 %835 %165 %1744 %178
%1746 = OpPhi %37 %954 %165 %1691 %178
OpSelectionMerge %782 None
OpBranchConditional %1746 %156 %782
%782 = OpLabel
OpBranch %157
%157 = OpLabel
%634 = OpIAdd %6 %832 %471
%636 = OpIAdd %6 %1801 %471
%638 = OpIAdd %6 %1802 %471
OpBranch %154
%156 = OpLabel
%1861 = OpPhi %6 %915 %154 %1802 %167
%1860 = OpPhi %6 %833 %154 %1801 %167
%1803 = OpPhi %37 %955 %154 %1746 %167
OpSelectionMerge %784 None
OpBranchConditional %1803 %145 %784
%784 = OpLabel
OpBranch %146
%146 = OpLabel
%640 = OpIAdd %6 %830 %471
%642 = OpIAdd %6 %1860 %471
%644 = OpIAdd %6 %1861 %471
OpBranch %143
%145 = OpLabel
%1922 = OpPhi %6 %916 %143 %1861 %156
%1921 = OpPhi %6 %831 %143 %1860 %156
%1862 = OpPhi %37 %956 %143 %1803 %156
OpSelectionMerge %786 None
OpBranchConditional %1862 %134 %786
%786 = OpLabel
OpBranch %135
%135 = OpLabel
%646 = OpIAdd %6 %828 %471
%648 = OpIAdd %6 %1921 %471
%650 = OpIAdd %6 %1922 %471
OpBranch %132
%134 = OpLabel
%1985 = OpPhi %6 %917 %132 %1922 %145
%1984 = OpPhi %6 %829 %132 %1921 %145
%1923 = OpPhi %37 %957 %132 %1862 %145
OpSelectionMerge %788 None
OpBranchConditional %1923 %123 %788
%788 = OpLabel
OpBranch %124
%124 = OpLabel
%652 = OpIAdd %6 %826 %471
%654 = OpIAdd %6 %1984 %471
%656 = OpIAdd %6 %1985 %471
OpBranch %121
%123 = OpLabel
%2050 = OpPhi %6 %918 %121 %1985 %134
%2049 = OpPhi %6 %827 %121 %1984 %134
%1986 = OpPhi %37 %958 %121 %1923 %134
OpSelectionMerge %790 None
OpBranchConditional %1986 %112 %790
%790 = OpLabel
OpBranch %113
%113 = OpLabel
%658 = OpIAdd %6 %824 %471
%660 = OpIAdd %6 %2049 %471
%662 = OpIAdd %6 %2050 %471
OpBranch %110
%112 = OpLabel
%2117 = OpPhi %6 %919 %110 %2050 %123
%2116 = OpPhi %6 %825 %110 %2049 %123
%2051 = OpPhi %37 %959 %110 %1986 %123
OpSelectionMerge %792 None
OpBranchConditional %2051 %101 %792
%792 = OpLabel
OpBranch %102
%102 = OpLabel
%664 = OpIAdd %6 %822 %471
%666 = OpIAdd %6 %2116 %471
%668 = OpIAdd %6 %2117 %471
OpBranch %99
%101 = OpLabel
%2186 = OpPhi %6 %920 %99 %2117 %112
%2185 = OpPhi %6 %823 %99 %2116 %112
%2118 = OpPhi %37 %960 %99 %2051 %112
OpSelectionMerge %794 None
OpBranchConditional %2118 %90 %794
%794 = OpLabel
OpBranch %91
%91 = OpLabel
%670 = OpIAdd %6 %820 %471
%672 = OpIAdd %6 %2185 %471
%674 = OpIAdd %6 %2186 %471
OpBranch %88
%90 = OpLabel
%2257 = OpPhi %6 %921 %88 %2186 %101
%2256 = OpPhi %6 %821 %88 %2185 %101
%2187 = OpPhi %37 %961 %88 %2118 %101
OpSelectionMerge %796 None
OpBranchConditional %2187 %79 %796
%796 = OpLabel
OpBranch %80
%80 = OpLabel
%676 = OpIAdd %6 %818 %471
%678 = OpIAdd %6 %2256 %471
%680 = OpIAdd %6 %2257 %471
OpBranch %77
%79 = OpLabel
%2330 = OpPhi %6 %922 %77 %2257 %90
%2329 = OpPhi %6 %819 %77 %2256 %90
%2258 = OpPhi %37 %962 %77 %2187 %90
OpSelectionMerge %798 None
OpBranchConditional %2258 %68 %798
%798 = OpLabel
OpBranch %69
%69 = OpLabel
%682 = OpIAdd %6 %816 %471
%684 = OpIAdd %6 %2329 %471
%686 = OpIAdd %6 %2330 %471
OpBranch %66
%68 = OpLabel
%2405 = OpPhi %6 %923 %66 %2330 %79
%2404 = OpPhi %6 %817 %66 %2329 %79
%2331 = OpPhi %37 %963 %66 %2258 %79
OpSelectionMerge %800 None
OpBranchConditional %2331 %57 %800
%800 = OpLabel
OpBranch %58
%58 = OpLabel
%688 = OpIAdd %6 %814 %471
%690 = OpIAdd %6 %2404 %471
%692 = OpIAdd %6 %2405 %471
OpBranch %55
%57 = OpLabel
%2482 = OpPhi %6 %924 %55 %2405 %68
%2481 = OpPhi %6 %815 %55 %2404 %68
%2406 = OpPhi %37 %964 %55 %2331 %68
OpSelectionMerge %802 None
OpBranchConditional %2406 %46 %802
%802 = OpLabel
OpBranch %47
%47 = OpLabel
%694 = OpIAdd %6 %812 %471
%696 = OpIAdd %6 %2481 %471
%698 = OpIAdd %6 %2482 %471
OpBranch %44
%46 = OpLabel
%2561 = OpPhi %6 %925 %44 %2482 %57
%2560 = OpPhi %6 %813 %44 %2481 %57
%2483 = OpPhi %37 %965 %44 %2406 %57
OpSelectionMerge %804 None
OpBranchConditional %2483 %32 %804
%804 = OpLabel
OpBranch %33
%33 = OpLabel
%700 = OpIAdd %6 %810 %471
%702 = OpIAdd %6 %2560 %471
%704 = OpIAdd %6 %2561 %471
OpBranch %30
%32 = OpLabel
%2563 = OpPhi %6 %926 %30 %2561 %46
%2562 = OpPhi %37 %966 %30 %2483 %46
OpSelectionMerge %806 None
OpBranchConditional %2562 %724 %806
%806 = OpLabel
%708 = OpDPdx %10 %24
%712 = OpDPdy %10 %25
%713 = OpFSub %10 %708 %712
%714 = OpFOrdEqual %37 %713 %22
%717 = OpIEqual %37 %2563 %716
%718 = OpLogicalAnd %37 %714 %717
OpSelectionMerge %720 None
OpBranchConditional %718 %719 %722
%719 = OpLabel
OpStore %20 %721
OpBranch %720
%722 = OpLabel
OpStore %20 %723
OpBranch %720
%720 = OpLabel
OpBranch %724
%724 = OpLabel
OpReturn
OpFunctionEnd
END
BUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM
PIPELINE graphics variant_pipeline
ATTACH variant_vertex_shader
ATTACH variant_fragment_shader
FRAMEBUFFER_SIZE 256 256
BIND BUFFER variant_framebuffer AS color LOCATION 0
END
CLEAR_COLOR variant_pipeline 0 0 0 255
CLEAR variant_pipeline
RUN variant_pipeline DRAW_RECT POS 0 0 SIZE 256 256
EXPECT variant_framebuffer IDX 0 0 SIZE 256 256 EQ_RGBA 255 0 0 255