2116 lines
68 KiB
Plaintext
2116 lines
68 KiB
Plaintext
#!amber
|
|
|
|
# Copyright 2020 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.
|
|
|
|
DEVICE_EXTENSION VK_KHR_shader_terminate_invocation
|
|
|
|
# A test for a bug found by GraphicsFuzz.
|
|
|
|
# Short description: A fragment shader with always false if with discard loop
|
|
|
|
# The test passes because both shaders render the same image.
|
|
|
|
# Optimized using spirv-opt with the following arguments:
|
|
# '-O'
|
|
# spirv-opt commit hash: 230f363e6da32791f640b02205e0645cc67c3f1d
|
|
|
|
|
|
|
|
SHADER vertex reference_vertex_shader PASSTHROUGH
|
|
|
|
# reference_fragment_shader is derived from the following GLSL:
|
|
# #version 320 es
|
|
# precision highp float;
|
|
#
|
|
# precision highp int;
|
|
#
|
|
# layout(location = 0) out vec4 _GLF_color;
|
|
#
|
|
# struct BST
|
|
# {
|
|
# int data;
|
|
# int leftIndex;
|
|
# int rightIndex;
|
|
# };
|
|
#
|
|
# BST tree[10];
|
|
#
|
|
# void makeTreeNode(inout BST tree, int data)
|
|
# {
|
|
# tree.data = data;
|
|
# tree.leftIndex = -1;
|
|
# tree.rightIndex = -1;
|
|
# }
|
|
# void insert(int treeIndex, int data)
|
|
# {
|
|
# int baseIndex = 0;
|
|
# while (baseIndex <= treeIndex)
|
|
# {
|
|
# if (data <= tree[baseIndex].data)
|
|
# {
|
|
# if (tree[baseIndex].leftIndex == -1)
|
|
# {
|
|
# tree[baseIndex].leftIndex = treeIndex;
|
|
# makeTreeNode(tree[treeIndex], data);
|
|
# return;
|
|
# }
|
|
# else
|
|
# {
|
|
# baseIndex = tree[baseIndex].leftIndex;
|
|
# continue;
|
|
# }
|
|
# }
|
|
# else
|
|
# {
|
|
# if (tree[baseIndex].rightIndex == -1)
|
|
# {
|
|
# tree[baseIndex].rightIndex = treeIndex;
|
|
# makeTreeNode(tree[treeIndex], data);
|
|
# return;
|
|
# }
|
|
# else
|
|
# {
|
|
# baseIndex = tree[baseIndex].rightIndex;
|
|
# continue;
|
|
# }
|
|
# }
|
|
# }
|
|
# }
|
|
# int search(int target)
|
|
# {
|
|
# BST currentNode;
|
|
# int index = 0;
|
|
# while (index != -1)
|
|
# {
|
|
# currentNode = tree[index];
|
|
# if (currentNode.data == target)
|
|
# {
|
|
# return target;
|
|
# }
|
|
# index = target > currentNode.data ? currentNode.rightIndex : currentNode.leftIndex;
|
|
# }
|
|
# return -1;
|
|
# }
|
|
# void main()
|
|
# {
|
|
# int treeIndex = 0;
|
|
# makeTreeNode(tree[0], 9);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 5);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 12);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 15);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 7);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 8);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 2);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 6);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 17);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 13);
|
|
# int count = 0;
|
|
# for (int i = 0; i < 20; i++)
|
|
# {
|
|
# int result = search(i);
|
|
# switch (i)
|
|
# {
|
|
# case 9:
|
|
# case 5:
|
|
# case 12:
|
|
# case 15:
|
|
# case 7:
|
|
# case 8:
|
|
# case 2:
|
|
# case 6:
|
|
# case 17:
|
|
# case 13:
|
|
# if (result == i)
|
|
# {
|
|
# count++;
|
|
# }
|
|
# break;
|
|
# default:
|
|
# if (result == -1)
|
|
# {
|
|
# count++;
|
|
# }
|
|
# break;
|
|
# }
|
|
# }
|
|
# if (count == 20)
|
|
# {
|
|
# _GLF_color = vec4(1.0, 0.0, 0.0, 1.0);
|
|
# }
|
|
# else
|
|
# {
|
|
# _GLF_color = vec4(0.0, 0.0, 1.0, 1.0);
|
|
# }
|
|
# }
|
|
SHADER fragment reference_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
|
|
; SPIR-V
|
|
; Version: 1.0
|
|
; Generator: Khronos Glslang Reference Front End; 10
|
|
; Bound: 1372
|
|
; Schema: 0
|
|
OpCapability Shader
|
|
%1 = OpExtInstImport "GLSL.std.450"
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint Fragment %4 "main" %254
|
|
OpExecutionMode %4 OriginUpperLeft
|
|
OpSource ESSL 320
|
|
OpName %4 "main"
|
|
OpName %7 "BST"
|
|
OpMemberName %7 0 "data"
|
|
OpMemberName %7 1 "leftIndex"
|
|
OpMemberName %7 2 "rightIndex"
|
|
OpName %47 "tree"
|
|
OpName %254 "_GLF_color"
|
|
OpDecorate %254 Location 0
|
|
%2 = OpTypeVoid
|
|
%3 = OpTypeFunction %2
|
|
%6 = OpTypeInt 32 1
|
|
%7 = OpTypeStruct %6 %6 %6
|
|
%8 = OpTypePointer Function %7
|
|
%9 = OpTypePointer Function %6
|
|
%24 = OpConstant %6 0
|
|
%27 = OpConstant %6 1
|
|
%28 = OpConstant %6 -1
|
|
%30 = OpConstant %6 2
|
|
%40 = OpTypeBool
|
|
%43 = OpTypeInt 32 0
|
|
%44 = OpConstant %43 10
|
|
%45 = OpTypeArray %7 %44
|
|
%141 = OpConstant %6 9
|
|
%151 = OpConstant %6 5
|
|
%158 = OpConstant %6 12
|
|
%165 = OpConstant %6 15
|
|
%172 = OpConstant %6 7
|
|
%179 = OpConstant %6 8
|
|
%192 = OpConstant %6 6
|
|
%199 = OpConstant %6 17
|
|
%206 = OpConstant %6 13
|
|
%219 = OpConstant %6 20
|
|
%251 = OpTypeFloat 32
|
|
%252 = OpTypeVector %251 4
|
|
%253 = OpTypePointer Output %252
|
|
%254 = OpVariable %253 Output
|
|
%255 = OpConstant %251 1
|
|
%256 = OpConstant %251 0
|
|
%257 = OpConstantComposite %252 %255 %256 %256 %255
|
|
%259 = OpConstantComposite %252 %256 %256 %255 %255
|
|
%262 = OpConstant %43 0
|
|
%263 = OpConstantFalse %40
|
|
%266 = OpConstantTrue %40
|
|
%1015 = OpTypePointer Function %45
|
|
%1318 = OpUndef %6
|
|
%1359 = OpConstantComposite %7 %141 %28 %28
|
|
%1360 = OpConstantComposite %7 %151 %28 %28
|
|
%1361 = OpConstantComposite %7 %158 %28 %28
|
|
%1362 = OpConstant %6 3
|
|
%1363 = OpConstantComposite %7 %165 %28 %28
|
|
%1364 = OpConstant %6 4
|
|
%1365 = OpConstantComposite %7 %172 %28 %28
|
|
%1366 = OpConstantComposite %7 %179 %28 %28
|
|
%1367 = OpConstantComposite %7 %30 %28 %28
|
|
%1368 = OpConstantComposite %7 %192 %28 %28
|
|
%1369 = OpConstantComposite %7 %199 %28 %28
|
|
%1370 = OpConstantComposite %7 %206 %28 %28
|
|
%4 = OpFunction %2 None %3
|
|
%5 = OpLabel
|
|
%47 = OpVariable %1015 Function
|
|
%148 = OpAccessChain %8 %47 %24
|
|
OpStore %148 %1359
|
|
OpSelectionMerge %347 None
|
|
OpSwitch %262 %288
|
|
%288 = OpLabel
|
|
OpBranch %289
|
|
%289 = OpLabel
|
|
%1212 = OpPhi %6 %24 %288 %1342 %343
|
|
%293 = OpSLessThanEqual %40 %1212 %27
|
|
OpLoopMerge %344 %343 None
|
|
OpBranchConditional %293 %294 %344
|
|
%294 = OpLabel
|
|
%297 = OpAccessChain %9 %47 %1212 %24
|
|
%298 = OpLoad %6 %297
|
|
%299 = OpSLessThanEqual %40 %151 %298
|
|
OpSelectionMerge %342 None
|
|
OpBranchConditional %299 %300 %321
|
|
%321 = OpLabel
|
|
%323 = OpAccessChain %9 %47 %1212 %30
|
|
%324 = OpLoad %6 %323
|
|
%325 = OpIEqual %40 %324 %28
|
|
OpSelectionMerge %341 None
|
|
OpBranchConditional %325 %326 %337
|
|
%337 = OpLabel
|
|
%340 = OpLoad %6 %323
|
|
OpBranch %343
|
|
%326 = OpLabel
|
|
OpStore %323 %27
|
|
%336 = OpAccessChain %8 %47 %27
|
|
OpStore %336 %1360
|
|
OpBranch %344
|
|
%341 = OpLabel
|
|
OpUnreachable
|
|
%300 = OpLabel
|
|
%302 = OpAccessChain %9 %47 %1212 %27
|
|
%303 = OpLoad %6 %302
|
|
%304 = OpIEqual %40 %303 %28
|
|
OpSelectionMerge %320 None
|
|
OpBranchConditional %304 %305 %316
|
|
%316 = OpLabel
|
|
%319 = OpLoad %6 %302
|
|
OpBranch %343
|
|
%305 = OpLabel
|
|
OpStore %302 %27
|
|
%315 = OpAccessChain %8 %47 %27
|
|
OpStore %315 %1360
|
|
OpBranch %344
|
|
%320 = OpLabel
|
|
OpUnreachable
|
|
%342 = OpLabel
|
|
OpUnreachable
|
|
%343 = OpLabel
|
|
%1342 = OpPhi %6 %319 %316 %340 %337
|
|
OpBranch %289
|
|
%344 = OpLabel
|
|
%1213 = OpPhi %40 %263 %289 %266 %305 %266 %326
|
|
OpSelectionMerge %346 None
|
|
OpBranchConditional %1213 %347 %346
|
|
%346 = OpLabel
|
|
OpBranch %347
|
|
%347 = OpLabel
|
|
OpSelectionMerge %424 None
|
|
OpSwitch %262 %365
|
|
%365 = OpLabel
|
|
OpBranch %366
|
|
%366 = OpLabel
|
|
%1220 = OpPhi %6 %24 %365 %1344 %420
|
|
%370 = OpSLessThanEqual %40 %1220 %30
|
|
OpLoopMerge %421 %420 None
|
|
OpBranchConditional %370 %371 %421
|
|
%371 = OpLabel
|
|
%374 = OpAccessChain %9 %47 %1220 %24
|
|
%375 = OpLoad %6 %374
|
|
%376 = OpSLessThanEqual %40 %158 %375
|
|
OpSelectionMerge %419 None
|
|
OpBranchConditional %376 %377 %398
|
|
%398 = OpLabel
|
|
%400 = OpAccessChain %9 %47 %1220 %30
|
|
%401 = OpLoad %6 %400
|
|
%402 = OpIEqual %40 %401 %28
|
|
OpSelectionMerge %418 None
|
|
OpBranchConditional %402 %403 %414
|
|
%414 = OpLabel
|
|
%417 = OpLoad %6 %400
|
|
OpBranch %420
|
|
%403 = OpLabel
|
|
OpStore %400 %30
|
|
%413 = OpAccessChain %8 %47 %30
|
|
OpStore %413 %1361
|
|
OpBranch %421
|
|
%418 = OpLabel
|
|
OpUnreachable
|
|
%377 = OpLabel
|
|
%379 = OpAccessChain %9 %47 %1220 %27
|
|
%380 = OpLoad %6 %379
|
|
%381 = OpIEqual %40 %380 %28
|
|
OpSelectionMerge %397 None
|
|
OpBranchConditional %381 %382 %393
|
|
%393 = OpLabel
|
|
%396 = OpLoad %6 %379
|
|
OpBranch %420
|
|
%382 = OpLabel
|
|
OpStore %379 %30
|
|
%392 = OpAccessChain %8 %47 %30
|
|
OpStore %392 %1361
|
|
OpBranch %421
|
|
%397 = OpLabel
|
|
OpUnreachable
|
|
%419 = OpLabel
|
|
OpUnreachable
|
|
%420 = OpLabel
|
|
%1344 = OpPhi %6 %396 %393 %417 %414
|
|
OpBranch %366
|
|
%421 = OpLabel
|
|
%1221 = OpPhi %40 %263 %366 %266 %382 %266 %403
|
|
OpSelectionMerge %423 None
|
|
OpBranchConditional %1221 %424 %423
|
|
%423 = OpLabel
|
|
OpBranch %424
|
|
%424 = OpLabel
|
|
OpSelectionMerge %501 None
|
|
OpSwitch %262 %442
|
|
%442 = OpLabel
|
|
OpBranch %443
|
|
%443 = OpLabel
|
|
%1228 = OpPhi %6 %24 %442 %1345 %497
|
|
%447 = OpSLessThanEqual %40 %1228 %1362
|
|
OpLoopMerge %498 %497 None
|
|
OpBranchConditional %447 %448 %498
|
|
%448 = OpLabel
|
|
%451 = OpAccessChain %9 %47 %1228 %24
|
|
%452 = OpLoad %6 %451
|
|
%453 = OpSLessThanEqual %40 %165 %452
|
|
OpSelectionMerge %496 None
|
|
OpBranchConditional %453 %454 %475
|
|
%475 = OpLabel
|
|
%477 = OpAccessChain %9 %47 %1228 %30
|
|
%478 = OpLoad %6 %477
|
|
%479 = OpIEqual %40 %478 %28
|
|
OpSelectionMerge %495 None
|
|
OpBranchConditional %479 %480 %491
|
|
%491 = OpLabel
|
|
%494 = OpLoad %6 %477
|
|
OpBranch %497
|
|
%480 = OpLabel
|
|
OpStore %477 %1362
|
|
%490 = OpAccessChain %8 %47 %1362
|
|
OpStore %490 %1363
|
|
OpBranch %498
|
|
%495 = OpLabel
|
|
OpUnreachable
|
|
%454 = OpLabel
|
|
%456 = OpAccessChain %9 %47 %1228 %27
|
|
%457 = OpLoad %6 %456
|
|
%458 = OpIEqual %40 %457 %28
|
|
OpSelectionMerge %474 None
|
|
OpBranchConditional %458 %459 %470
|
|
%470 = OpLabel
|
|
%473 = OpLoad %6 %456
|
|
OpBranch %497
|
|
%459 = OpLabel
|
|
OpStore %456 %1362
|
|
%469 = OpAccessChain %8 %47 %1362
|
|
OpStore %469 %1363
|
|
OpBranch %498
|
|
%474 = OpLabel
|
|
OpUnreachable
|
|
%496 = OpLabel
|
|
OpUnreachable
|
|
%497 = OpLabel
|
|
%1345 = OpPhi %6 %473 %470 %494 %491
|
|
OpBranch %443
|
|
%498 = OpLabel
|
|
%1229 = OpPhi %40 %263 %443 %266 %459 %266 %480
|
|
OpSelectionMerge %500 None
|
|
OpBranchConditional %1229 %501 %500
|
|
%500 = OpLabel
|
|
OpBranch %501
|
|
%501 = OpLabel
|
|
OpSelectionMerge %578 None
|
|
OpSwitch %262 %519
|
|
%519 = OpLabel
|
|
OpBranch %520
|
|
%520 = OpLabel
|
|
%1236 = OpPhi %6 %24 %519 %1346 %574
|
|
%524 = OpSLessThanEqual %40 %1236 %1364
|
|
OpLoopMerge %575 %574 None
|
|
OpBranchConditional %524 %525 %575
|
|
%525 = OpLabel
|
|
%528 = OpAccessChain %9 %47 %1236 %24
|
|
%529 = OpLoad %6 %528
|
|
%530 = OpSLessThanEqual %40 %172 %529
|
|
OpSelectionMerge %573 None
|
|
OpBranchConditional %530 %531 %552
|
|
%552 = OpLabel
|
|
%554 = OpAccessChain %9 %47 %1236 %30
|
|
%555 = OpLoad %6 %554
|
|
%556 = OpIEqual %40 %555 %28
|
|
OpSelectionMerge %572 None
|
|
OpBranchConditional %556 %557 %568
|
|
%568 = OpLabel
|
|
%571 = OpLoad %6 %554
|
|
OpBranch %574
|
|
%557 = OpLabel
|
|
OpStore %554 %1364
|
|
%567 = OpAccessChain %8 %47 %1364
|
|
OpStore %567 %1365
|
|
OpBranch %575
|
|
%572 = OpLabel
|
|
OpUnreachable
|
|
%531 = OpLabel
|
|
%533 = OpAccessChain %9 %47 %1236 %27
|
|
%534 = OpLoad %6 %533
|
|
%535 = OpIEqual %40 %534 %28
|
|
OpSelectionMerge %551 None
|
|
OpBranchConditional %535 %536 %547
|
|
%547 = OpLabel
|
|
%550 = OpLoad %6 %533
|
|
OpBranch %574
|
|
%536 = OpLabel
|
|
OpStore %533 %1364
|
|
%546 = OpAccessChain %8 %47 %1364
|
|
OpStore %546 %1365
|
|
OpBranch %575
|
|
%551 = OpLabel
|
|
OpUnreachable
|
|
%573 = OpLabel
|
|
OpUnreachable
|
|
%574 = OpLabel
|
|
%1346 = OpPhi %6 %550 %547 %571 %568
|
|
OpBranch %520
|
|
%575 = OpLabel
|
|
%1237 = OpPhi %40 %263 %520 %266 %536 %266 %557
|
|
OpSelectionMerge %577 None
|
|
OpBranchConditional %1237 %578 %577
|
|
%577 = OpLabel
|
|
OpBranch %578
|
|
%578 = OpLabel
|
|
OpSelectionMerge %655 None
|
|
OpSwitch %262 %596
|
|
%596 = OpLabel
|
|
OpBranch %597
|
|
%597 = OpLabel
|
|
%1244 = OpPhi %6 %24 %596 %1347 %651
|
|
%601 = OpSLessThanEqual %40 %1244 %151
|
|
OpLoopMerge %652 %651 None
|
|
OpBranchConditional %601 %602 %652
|
|
%602 = OpLabel
|
|
%605 = OpAccessChain %9 %47 %1244 %24
|
|
%606 = OpLoad %6 %605
|
|
%607 = OpSLessThanEqual %40 %179 %606
|
|
OpSelectionMerge %650 None
|
|
OpBranchConditional %607 %608 %629
|
|
%629 = OpLabel
|
|
%631 = OpAccessChain %9 %47 %1244 %30
|
|
%632 = OpLoad %6 %631
|
|
%633 = OpIEqual %40 %632 %28
|
|
OpSelectionMerge %649 None
|
|
OpBranchConditional %633 %634 %645
|
|
%645 = OpLabel
|
|
%648 = OpLoad %6 %631
|
|
OpBranch %651
|
|
%634 = OpLabel
|
|
OpStore %631 %151
|
|
%644 = OpAccessChain %8 %47 %151
|
|
OpStore %644 %1366
|
|
OpBranch %652
|
|
%649 = OpLabel
|
|
OpUnreachable
|
|
%608 = OpLabel
|
|
%610 = OpAccessChain %9 %47 %1244 %27
|
|
%611 = OpLoad %6 %610
|
|
%612 = OpIEqual %40 %611 %28
|
|
OpSelectionMerge %628 None
|
|
OpBranchConditional %612 %613 %624
|
|
%624 = OpLabel
|
|
%627 = OpLoad %6 %610
|
|
OpBranch %651
|
|
%613 = OpLabel
|
|
OpStore %610 %151
|
|
%623 = OpAccessChain %8 %47 %151
|
|
OpStore %623 %1366
|
|
OpBranch %652
|
|
%628 = OpLabel
|
|
OpUnreachable
|
|
%650 = OpLabel
|
|
OpUnreachable
|
|
%651 = OpLabel
|
|
%1347 = OpPhi %6 %627 %624 %648 %645
|
|
OpBranch %597
|
|
%652 = OpLabel
|
|
%1245 = OpPhi %40 %263 %597 %266 %613 %266 %634
|
|
OpSelectionMerge %654 None
|
|
OpBranchConditional %1245 %655 %654
|
|
%654 = OpLabel
|
|
OpBranch %655
|
|
%655 = OpLabel
|
|
OpSelectionMerge %732 None
|
|
OpSwitch %262 %673
|
|
%673 = OpLabel
|
|
OpBranch %674
|
|
%674 = OpLabel
|
|
%1252 = OpPhi %6 %24 %673 %1348 %728
|
|
%678 = OpSLessThanEqual %40 %1252 %192
|
|
OpLoopMerge %729 %728 None
|
|
OpBranchConditional %678 %679 %729
|
|
%679 = OpLabel
|
|
%682 = OpAccessChain %9 %47 %1252 %24
|
|
%683 = OpLoad %6 %682
|
|
%684 = OpSLessThanEqual %40 %30 %683
|
|
OpSelectionMerge %727 None
|
|
OpBranchConditional %684 %685 %706
|
|
%706 = OpLabel
|
|
%708 = OpAccessChain %9 %47 %1252 %30
|
|
%709 = OpLoad %6 %708
|
|
%710 = OpIEqual %40 %709 %28
|
|
OpSelectionMerge %726 None
|
|
OpBranchConditional %710 %711 %722
|
|
%722 = OpLabel
|
|
%725 = OpLoad %6 %708
|
|
OpBranch %728
|
|
%711 = OpLabel
|
|
OpStore %708 %192
|
|
%721 = OpAccessChain %8 %47 %192
|
|
OpStore %721 %1367
|
|
OpBranch %729
|
|
%726 = OpLabel
|
|
OpUnreachable
|
|
%685 = OpLabel
|
|
%687 = OpAccessChain %9 %47 %1252 %27
|
|
%688 = OpLoad %6 %687
|
|
%689 = OpIEqual %40 %688 %28
|
|
OpSelectionMerge %705 None
|
|
OpBranchConditional %689 %690 %701
|
|
%701 = OpLabel
|
|
%704 = OpLoad %6 %687
|
|
OpBranch %728
|
|
%690 = OpLabel
|
|
OpStore %687 %192
|
|
%700 = OpAccessChain %8 %47 %192
|
|
OpStore %700 %1367
|
|
OpBranch %729
|
|
%705 = OpLabel
|
|
OpUnreachable
|
|
%727 = OpLabel
|
|
OpUnreachable
|
|
%728 = OpLabel
|
|
%1348 = OpPhi %6 %704 %701 %725 %722
|
|
OpBranch %674
|
|
%729 = OpLabel
|
|
%1253 = OpPhi %40 %263 %674 %266 %690 %266 %711
|
|
OpSelectionMerge %731 None
|
|
OpBranchConditional %1253 %732 %731
|
|
%731 = OpLabel
|
|
OpBranch %732
|
|
%732 = OpLabel
|
|
OpSelectionMerge %809 None
|
|
OpSwitch %262 %750
|
|
%750 = OpLabel
|
|
OpBranch %751
|
|
%751 = OpLabel
|
|
%1260 = OpPhi %6 %24 %750 %1349 %805
|
|
%755 = OpSLessThanEqual %40 %1260 %172
|
|
OpLoopMerge %806 %805 None
|
|
OpBranchConditional %755 %756 %806
|
|
%756 = OpLabel
|
|
%759 = OpAccessChain %9 %47 %1260 %24
|
|
%760 = OpLoad %6 %759
|
|
%761 = OpSLessThanEqual %40 %192 %760
|
|
OpSelectionMerge %804 None
|
|
OpBranchConditional %761 %762 %783
|
|
%783 = OpLabel
|
|
%785 = OpAccessChain %9 %47 %1260 %30
|
|
%786 = OpLoad %6 %785
|
|
%787 = OpIEqual %40 %786 %28
|
|
OpSelectionMerge %803 None
|
|
OpBranchConditional %787 %788 %799
|
|
%799 = OpLabel
|
|
%802 = OpLoad %6 %785
|
|
OpBranch %805
|
|
%788 = OpLabel
|
|
OpStore %785 %172
|
|
%798 = OpAccessChain %8 %47 %172
|
|
OpStore %798 %1368
|
|
OpBranch %806
|
|
%803 = OpLabel
|
|
OpUnreachable
|
|
%762 = OpLabel
|
|
%764 = OpAccessChain %9 %47 %1260 %27
|
|
%765 = OpLoad %6 %764
|
|
%766 = OpIEqual %40 %765 %28
|
|
OpSelectionMerge %782 None
|
|
OpBranchConditional %766 %767 %778
|
|
%778 = OpLabel
|
|
%781 = OpLoad %6 %764
|
|
OpBranch %805
|
|
%767 = OpLabel
|
|
OpStore %764 %172
|
|
%777 = OpAccessChain %8 %47 %172
|
|
OpStore %777 %1368
|
|
OpBranch %806
|
|
%782 = OpLabel
|
|
OpUnreachable
|
|
%804 = OpLabel
|
|
OpUnreachable
|
|
%805 = OpLabel
|
|
%1349 = OpPhi %6 %781 %778 %802 %799
|
|
OpBranch %751
|
|
%806 = OpLabel
|
|
%1261 = OpPhi %40 %263 %751 %266 %767 %266 %788
|
|
OpSelectionMerge %808 None
|
|
OpBranchConditional %1261 %809 %808
|
|
%808 = OpLabel
|
|
OpBranch %809
|
|
%809 = OpLabel
|
|
OpSelectionMerge %886 None
|
|
OpSwitch %262 %827
|
|
%827 = OpLabel
|
|
OpBranch %828
|
|
%828 = OpLabel
|
|
%1268 = OpPhi %6 %24 %827 %1350 %882
|
|
%832 = OpSLessThanEqual %40 %1268 %179
|
|
OpLoopMerge %883 %882 None
|
|
OpBranchConditional %832 %833 %883
|
|
%833 = OpLabel
|
|
%836 = OpAccessChain %9 %47 %1268 %24
|
|
%837 = OpLoad %6 %836
|
|
%838 = OpSLessThanEqual %40 %199 %837
|
|
OpSelectionMerge %881 None
|
|
OpBranchConditional %838 %839 %860
|
|
%860 = OpLabel
|
|
%862 = OpAccessChain %9 %47 %1268 %30
|
|
%863 = OpLoad %6 %862
|
|
%864 = OpIEqual %40 %863 %28
|
|
OpSelectionMerge %880 None
|
|
OpBranchConditional %864 %865 %876
|
|
%876 = OpLabel
|
|
%879 = OpLoad %6 %862
|
|
OpBranch %882
|
|
%865 = OpLabel
|
|
OpStore %862 %179
|
|
%875 = OpAccessChain %8 %47 %179
|
|
OpStore %875 %1369
|
|
OpBranch %883
|
|
%880 = OpLabel
|
|
OpUnreachable
|
|
%839 = OpLabel
|
|
%841 = OpAccessChain %9 %47 %1268 %27
|
|
%842 = OpLoad %6 %841
|
|
%843 = OpIEqual %40 %842 %28
|
|
OpSelectionMerge %859 None
|
|
OpBranchConditional %843 %844 %855
|
|
%855 = OpLabel
|
|
%858 = OpLoad %6 %841
|
|
OpBranch %882
|
|
%844 = OpLabel
|
|
OpStore %841 %179
|
|
%854 = OpAccessChain %8 %47 %179
|
|
OpStore %854 %1369
|
|
OpBranch %883
|
|
%859 = OpLabel
|
|
OpUnreachable
|
|
%881 = OpLabel
|
|
OpUnreachable
|
|
%882 = OpLabel
|
|
%1350 = OpPhi %6 %858 %855 %879 %876
|
|
OpBranch %828
|
|
%883 = OpLabel
|
|
%1269 = OpPhi %40 %263 %828 %266 %844 %266 %865
|
|
OpSelectionMerge %885 None
|
|
OpBranchConditional %1269 %886 %885
|
|
%885 = OpLabel
|
|
OpBranch %886
|
|
%886 = OpLabel
|
|
OpSelectionMerge %963 None
|
|
OpSwitch %262 %904
|
|
%904 = OpLabel
|
|
OpBranch %905
|
|
%905 = OpLabel
|
|
%1276 = OpPhi %6 %24 %904 %1351 %959
|
|
%909 = OpSLessThanEqual %40 %1276 %141
|
|
OpLoopMerge %960 %959 None
|
|
OpBranchConditional %909 %910 %960
|
|
%910 = OpLabel
|
|
%913 = OpAccessChain %9 %47 %1276 %24
|
|
%914 = OpLoad %6 %913
|
|
%915 = OpSLessThanEqual %40 %206 %914
|
|
OpSelectionMerge %958 None
|
|
OpBranchConditional %915 %916 %937
|
|
%937 = OpLabel
|
|
%939 = OpAccessChain %9 %47 %1276 %30
|
|
%940 = OpLoad %6 %939
|
|
%941 = OpIEqual %40 %940 %28
|
|
OpSelectionMerge %957 None
|
|
OpBranchConditional %941 %942 %953
|
|
%953 = OpLabel
|
|
%956 = OpLoad %6 %939
|
|
OpBranch %959
|
|
%942 = OpLabel
|
|
OpStore %939 %141
|
|
%952 = OpAccessChain %8 %47 %141
|
|
OpStore %952 %1370
|
|
OpBranch %960
|
|
%957 = OpLabel
|
|
OpUnreachable
|
|
%916 = OpLabel
|
|
%918 = OpAccessChain %9 %47 %1276 %27
|
|
%919 = OpLoad %6 %918
|
|
%920 = OpIEqual %40 %919 %28
|
|
OpSelectionMerge %936 None
|
|
OpBranchConditional %920 %921 %932
|
|
%932 = OpLabel
|
|
%935 = OpLoad %6 %918
|
|
OpBranch %959
|
|
%921 = OpLabel
|
|
OpStore %918 %141
|
|
%931 = OpAccessChain %8 %47 %141
|
|
OpStore %931 %1370
|
|
OpBranch %960
|
|
%936 = OpLabel
|
|
OpUnreachable
|
|
%958 = OpLabel
|
|
OpUnreachable
|
|
%959 = OpLabel
|
|
%1351 = OpPhi %6 %935 %932 %956 %953
|
|
OpBranch %905
|
|
%960 = OpLabel
|
|
%1277 = OpPhi %40 %263 %905 %266 %921 %266 %942
|
|
OpSelectionMerge %962 None
|
|
OpBranchConditional %1277 %963 %962
|
|
%962 = OpLabel
|
|
OpBranch %963
|
|
%963 = OpLabel
|
|
OpBranch %213
|
|
%213 = OpLabel
|
|
%1290 = OpPhi %6 %1318 %963 %1287 %216
|
|
%1281 = OpPhi %6 %24 %963 %1352 %216
|
|
%1280 = OpPhi %6 %24 %963 %246 %216
|
|
%220 = OpSLessThan %40 %1280 %219
|
|
OpLoopMerge %215 %216 None
|
|
OpBranchConditional %220 %214 %215
|
|
%214 = OpLabel
|
|
OpSelectionMerge %1013 None
|
|
OpSwitch %262 %981
|
|
%981 = OpLabel
|
|
OpBranch %982
|
|
%982 = OpLabel
|
|
%1282 = OpPhi %6 %24 %981 %1371 %1009
|
|
%985 = OpINotEqual %40 %1282 %28
|
|
OpLoopMerge %1010 %1009 None
|
|
OpBranchConditional %985 %986 %1010
|
|
%986 = OpLabel
|
|
%988 = OpAccessChain %8 %47 %1282
|
|
%989 = OpLoad %7 %988
|
|
%1019 = OpCompositeExtract %6 %989 0
|
|
%1020 = OpCompositeExtract %6 %989 1
|
|
%1021 = OpCompositeExtract %6 %989 2
|
|
%993 = OpIEqual %40 %1019 %1280
|
|
OpSelectionMerge %996 None
|
|
OpBranchConditional %993 %994 %996
|
|
%994 = OpLabel
|
|
OpBranch %1010
|
|
%996 = OpLabel
|
|
%1000 = OpSGreaterThan %40 %1280 %1019
|
|
%1371 = OpSelect %6 %1000 %1021 %1020
|
|
OpBranch %1009
|
|
%1009 = OpLabel
|
|
OpBranch %982
|
|
%1010 = OpLabel
|
|
%1288 = OpPhi %6 %1290 %982 %1280 %994
|
|
%1284 = OpPhi %40 %263 %982 %266 %994
|
|
OpSelectionMerge %1012 None
|
|
OpBranchConditional %1284 %1013 %1012
|
|
%1012 = OpLabel
|
|
OpBranch %1013
|
|
%1013 = OpLabel
|
|
%1287 = OpPhi %6 %1288 %1010 %28 %1012
|
|
OpSelectionMerge %228 None
|
|
OpSwitch %1280 %227 9 %226 5 %226 12 %226 15 %226 7 %226 8 %226 2 %226 6 %226 17 %226 13 %226
|
|
%226 = OpLabel
|
|
%231 = OpIEqual %40 %1287 %1280
|
|
OpSelectionMerge %233 None
|
|
OpBranchConditional %231 %232 %233
|
|
%232 = OpLabel
|
|
%235 = OpIAdd %6 %1281 %27
|
|
OpBranch %233
|
|
%233 = OpLabel
|
|
%1354 = OpPhi %6 %1281 %226 %235 %232
|
|
OpBranch %228
|
|
%227 = OpLabel
|
|
%238 = OpIEqual %40 %1287 %28
|
|
OpSelectionMerge %240 None
|
|
OpBranchConditional %238 %239 %240
|
|
%239 = OpLabel
|
|
%242 = OpIAdd %6 %1281 %27
|
|
OpBranch %240
|
|
%240 = OpLabel
|
|
%1353 = OpPhi %6 %1281 %227 %242 %239
|
|
OpBranch %228
|
|
%228 = OpLabel
|
|
%1352 = OpPhi %6 %1353 %240 %1354 %233
|
|
OpBranch %216
|
|
%216 = OpLabel
|
|
%246 = OpIAdd %6 %1280 %27
|
|
OpBranch %213
|
|
%215 = OpLabel
|
|
%248 = OpIEqual %40 %1281 %219
|
|
OpSelectionMerge %250 None
|
|
OpBranchConditional %248 %249 %258
|
|
%258 = OpLabel
|
|
OpStore %254 %259
|
|
OpBranch %250
|
|
%249 = OpLabel
|
|
OpStore %254 %257
|
|
OpBranch %250
|
|
%250 = OpLabel
|
|
OpReturn
|
|
OpFunctionEnd
|
|
END
|
|
|
|
|
|
BUFFER reference_framebuffer FORMAT B8G8R8A8_UNORM
|
|
|
|
PIPELINE graphics reference_pipeline
|
|
ATTACH reference_vertex_shader
|
|
ATTACH reference_fragment_shader
|
|
FRAMEBUFFER_SIZE 256 256
|
|
BIND BUFFER reference_framebuffer AS color LOCATION 0
|
|
END
|
|
CLEAR_COLOR reference_pipeline 0 0 0 255
|
|
|
|
CLEAR reference_pipeline
|
|
RUN reference_pipeline DRAW_RECT POS 0 0 SIZE 256 256
|
|
|
|
|
|
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(set = 0, binding = 0) uniform buf0
|
|
# {
|
|
# vec2 injectionSwitch;
|
|
# };
|
|
# layout(location = 0) out vec4 _GLF_color;
|
|
#
|
|
# struct BST
|
|
# {
|
|
# int data;
|
|
# int leftIndex;
|
|
# int rightIndex;
|
|
# };
|
|
#
|
|
# BST tree[10];
|
|
#
|
|
# void makeTreeNode(inout BST tree, int data)
|
|
# {
|
|
# tree.data = data;
|
|
# tree.leftIndex = -1;
|
|
# tree.rightIndex = -1;
|
|
# }
|
|
# void insert(int treeIndex, int data)
|
|
# {
|
|
# int baseIndex = 0;
|
|
# while (baseIndex <= treeIndex)
|
|
# {
|
|
# if (data <= tree[baseIndex].data)
|
|
# {
|
|
# if (tree[baseIndex].leftIndex == -1)
|
|
# {
|
|
# // Always false.
|
|
# if ((injectionSwitch.y < injectionSwitch.x))
|
|
# {
|
|
# do
|
|
# {
|
|
# // This is never reached.
|
|
# discard;
|
|
# }
|
|
# // Always false.
|
|
# while (injectionSwitch.y < injectionSwitch.x);
|
|
# }
|
|
# tree[baseIndex].leftIndex = treeIndex;
|
|
# makeTreeNode(tree[treeIndex], data);
|
|
# // Iterates once.
|
|
# for (int int_i = 0; int_i < int((injectionSwitch.y)); int_i++)
|
|
# {
|
|
# return;
|
|
# }
|
|
# }
|
|
# else
|
|
# {
|
|
# baseIndex = tree[baseIndex].leftIndex;
|
|
# continue;
|
|
# }
|
|
# }
|
|
# else
|
|
# {
|
|
# if (tree[baseIndex].rightIndex == -1)
|
|
# {
|
|
# tree[baseIndex].rightIndex = treeIndex;
|
|
# makeTreeNode(tree[treeIndex], data);
|
|
# return;
|
|
# }
|
|
# else
|
|
# {
|
|
# baseIndex = tree[baseIndex].rightIndex;
|
|
# continue;
|
|
# }
|
|
# }
|
|
# }
|
|
# }
|
|
# int search(int target)
|
|
# {
|
|
# BST currentNode;
|
|
# int index = 0;
|
|
# while (index != -1)
|
|
# {
|
|
# currentNode = tree[index];
|
|
# if (currentNode.data == target)
|
|
# {
|
|
# return target;
|
|
# }
|
|
# index = target > currentNode.data ? currentNode.rightIndex : currentNode.leftIndex;
|
|
# }
|
|
# return -1;
|
|
# }
|
|
# void main()
|
|
# {
|
|
# int treeIndex = 0;
|
|
# makeTreeNode(tree[0], 9);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 5);
|
|
# treeIndex++;
|
|
# // gl_FragCoord.y < 0.0 == false
|
|
# // Iterates once,
|
|
# for (int int_i = 0; (gl_FragCoord.y < 0.0) || (int_i != int(injectionSwitch.y)); int_i++)
|
|
# {
|
|
# insert(treeIndex, 12);
|
|
# }
|
|
# treeIndex++;
|
|
# insert(treeIndex, 15);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 7);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 8);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 2);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 6);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 17);
|
|
# treeIndex++;
|
|
# insert(treeIndex, 13);
|
|
# int count = 0;
|
|
# for (int i = 0; i < 20; i++)
|
|
# {
|
|
# int result = search(i);
|
|
# switch (i)
|
|
# {
|
|
# case 9:
|
|
# case 5:
|
|
# case 12:
|
|
# case 15:
|
|
# case 7:
|
|
# case 8:
|
|
# case 2:
|
|
# case 6:
|
|
# case 17:
|
|
# case 13:
|
|
# if (result == i)
|
|
# {
|
|
# count++;
|
|
# }
|
|
# break;
|
|
# default:
|
|
# if (result == -1)
|
|
# {
|
|
# count++;
|
|
# }
|
|
# break;
|
|
# }
|
|
# }
|
|
# if (count == 20)
|
|
# {
|
|
# _GLF_color = vec4(1.0, 0.0, 0.0, 1.0);
|
|
# }
|
|
# else
|
|
# {
|
|
# _GLF_color = vec4(0.0, 0.0, 1.0, 1.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: 1740
|
|
; Schema: 0
|
|
OpCapability Shader
|
|
OpExtension "SPV_KHR_terminate_invocation"
|
|
%1 = OpExtInstImport "GLSL.std.450"
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint Fragment %4 "main" %204 %315
|
|
OpExecutionMode %4 OriginUpperLeft
|
|
OpSource ESSL 320
|
|
OpName %4 "main"
|
|
OpName %7 "BST"
|
|
OpMemberName %7 0 "data"
|
|
OpMemberName %7 1 "leftIndex"
|
|
OpMemberName %7 2 "rightIndex"
|
|
OpName %47 "tree"
|
|
OpName %63 "buf0"
|
|
OpMemberName %63 0 "injectionSwitch"
|
|
OpName %65 ""
|
|
OpName %204 "gl_FragCoord"
|
|
OpName %315 "_GLF_color"
|
|
OpMemberDecorate %63 0 Offset 0
|
|
OpDecorate %63 Block
|
|
OpDecorate %65 DescriptorSet 0
|
|
OpDecorate %65 Binding 0
|
|
OpDecorate %204 BuiltIn FragCoord
|
|
OpDecorate %315 Location 0
|
|
%2 = OpTypeVoid
|
|
%3 = OpTypeFunction %2
|
|
%6 = OpTypeInt 32 1
|
|
%7 = OpTypeStruct %6 %6 %6
|
|
%8 = OpTypePointer Function %7
|
|
%9 = OpTypePointer Function %6
|
|
%24 = OpConstant %6 0
|
|
%27 = OpConstant %6 1
|
|
%28 = OpConstant %6 -1
|
|
%30 = OpConstant %6 2
|
|
%40 = OpTypeBool
|
|
%43 = OpTypeInt 32 0
|
|
%44 = OpConstant %43 10
|
|
%45 = OpTypeArray %7 %44
|
|
%61 = OpTypeFloat 32
|
|
%62 = OpTypeVector %61 2
|
|
%63 = OpTypeStruct %62
|
|
%64 = OpTypePointer Uniform %63
|
|
%65 = OpVariable %64 Uniform
|
|
%66 = OpConstant %43 1
|
|
%67 = OpTypePointer Uniform %61
|
|
%70 = OpConstant %43 0
|
|
%179 = OpConstant %6 9
|
|
%189 = OpConstant %6 5
|
|
%202 = OpTypeVector %61 4
|
|
%203 = OpTypePointer Input %202
|
|
%204 = OpVariable %203 Input
|
|
%205 = OpTypePointer Input %61
|
|
%208 = OpConstant %61 0
|
|
%219 = OpConstant %6 12
|
|
%228 = OpConstant %6 15
|
|
%235 = OpConstant %6 7
|
|
%242 = OpConstant %6 8
|
|
%255 = OpConstant %6 6
|
|
%262 = OpConstant %6 17
|
|
%269 = OpConstant %6 13
|
|
%282 = OpConstant %6 20
|
|
%314 = OpTypePointer Output %202
|
|
%315 = OpVariable %314 Output
|
|
%316 = OpConstant %61 1
|
|
%317 = OpConstantComposite %202 %316 %208 %208 %316
|
|
%319 = OpConstantComposite %202 %208 %208 %316 %316
|
|
%322 = OpConstantFalse %40
|
|
%325 = OpConstantTrue %40
|
|
%1301 = OpTypePointer Function %45
|
|
%1620 = OpUndef %6
|
|
%1727 = OpConstantComposite %7 %179 %28 %28
|
|
%1728 = OpConstantComposite %7 %189 %28 %28
|
|
%1729 = OpConstant %6 3
|
|
%1730 = OpConstantComposite %7 %219 %28 %28
|
|
%1731 = OpConstantComposite %7 %228 %28 %28
|
|
%1732 = OpConstant %6 4
|
|
%1733 = OpConstantComposite %7 %235 %28 %28
|
|
%1734 = OpConstantComposite %7 %242 %28 %28
|
|
%1735 = OpConstantComposite %7 %30 %28 %28
|
|
%1736 = OpConstantComposite %7 %255 %28 %28
|
|
%1737 = OpConstantComposite %7 %262 %28 %28
|
|
%1738 = OpConstantComposite %7 %269 %28 %28
|
|
%4 = OpFunction %2 None %3
|
|
%5 = OpLabel
|
|
%47 = OpVariable %1301 Function
|
|
%186 = OpAccessChain %8 %47 %24
|
|
OpStore %186 %1727
|
|
OpSelectionMerge %432 None
|
|
OpSwitch %70 %350
|
|
%350 = OpLabel
|
|
OpBranch %351
|
|
%351 = OpLabel
|
|
%1501 = OpPhi %40 %322 %350 %1674 %428
|
|
%1498 = OpPhi %6 %24 %350 %1671 %428
|
|
%355 = OpSLessThanEqual %40 %1498 %27
|
|
OpLoopMerge %429 %428 None
|
|
OpBranchConditional %355 %356 %429
|
|
%356 = OpLabel
|
|
%359 = OpAccessChain %9 %47 %1498 %24
|
|
%360 = OpLoad %6 %359
|
|
%361 = OpSLessThanEqual %40 %189 %360
|
|
OpSelectionMerge %427 None
|
|
OpBranchConditional %361 %362 %406
|
|
%406 = OpLabel
|
|
%408 = OpAccessChain %9 %47 %1498 %30
|
|
%409 = OpLoad %6 %408
|
|
%410 = OpIEqual %40 %409 %28
|
|
OpSelectionMerge %426 None
|
|
OpBranchConditional %410 %411 %422
|
|
%422 = OpLabel
|
|
%425 = OpLoad %6 %408
|
|
OpBranch %428
|
|
%411 = OpLabel
|
|
OpStore %408 %27
|
|
%421 = OpAccessChain %8 %47 %27
|
|
OpStore %421 %1728
|
|
OpBranch %429
|
|
%426 = OpLabel
|
|
OpUnreachable
|
|
%362 = OpLabel
|
|
%364 = OpAccessChain %9 %47 %1498 %27
|
|
%365 = OpLoad %6 %364
|
|
%366 = OpIEqual %40 %365 %28
|
|
OpSelectionMerge %405 None
|
|
OpBranchConditional %366 %367 %401
|
|
%401 = OpLabel
|
|
%404 = OpLoad %6 %364
|
|
OpBranch %428
|
|
%367 = OpLabel
|
|
%368 = OpAccessChain %67 %65 %24 %66
|
|
%369 = OpLoad %61 %368
|
|
%370 = OpAccessChain %67 %65 %24 %70
|
|
%371 = OpLoad %61 %370
|
|
%372 = OpFOrdLessThan %40 %369 %371
|
|
OpSelectionMerge %378 None
|
|
OpBranchConditional %372 %373 %378
|
|
%373 = OpLabel
|
|
OpBranch %374
|
|
%374 = OpLabel
|
|
OpLoopMerge %377 %376 None
|
|
OpBranch %375
|
|
%375 = OpLabel
|
|
OpTerminateInvocation
|
|
%376 = OpLabel
|
|
OpBranch %374
|
|
%377 = OpLabel
|
|
OpUnreachable
|
|
%378 = OpLabel
|
|
OpStore %364 %27
|
|
%388 = OpAccessChain %8 %47 %27
|
|
OpStore %388 %1728
|
|
OpBranch %389
|
|
%389 = OpLabel
|
|
%394 = OpConvertFToS %6 %369
|
|
%395 = OpSLessThan %40 %24 %394
|
|
OpLoopMerge %398 %397 None
|
|
OpBranchConditional %395 %396 %398
|
|
%396 = OpLabel
|
|
OpBranch %398
|
|
%397 = OpLabel
|
|
OpBranch %389
|
|
%398 = OpLabel
|
|
%1499 = OpPhi %40 %1501 %389 %325 %396
|
|
OpSelectionMerge %400 None
|
|
OpBranchConditional %1499 %429 %400
|
|
%400 = OpLabel
|
|
OpBranch %405
|
|
%405 = OpLabel
|
|
OpBranch %427
|
|
%427 = OpLabel
|
|
OpBranch %428
|
|
%428 = OpLabel
|
|
%1674 = OpPhi %40 %1501 %401 %1501 %422 %1499 %427
|
|
%1671 = OpPhi %6 %404 %401 %425 %422 %1498 %427
|
|
OpBranch %351
|
|
%429 = OpLabel
|
|
%1502 = OpPhi %40 %1501 %351 %1499 %398 %325 %411
|
|
OpSelectionMerge %431 None
|
|
OpBranchConditional %1502 %432 %431
|
|
%431 = OpLabel
|
|
OpBranch %432
|
|
%432 = OpLabel
|
|
OpBranch %197
|
|
%197 = OpLabel
|
|
%1509 = OpPhi %6 %24 %432 %225 %200
|
|
OpLoopMerge %199 %200 None
|
|
OpBranch %201
|
|
%201 = OpLabel
|
|
%206 = OpAccessChain %205 %204 %66
|
|
%207 = OpLoad %61 %206
|
|
%209 = OpFOrdLessThan %40 %207 %208
|
|
%210 = OpLogicalNot %40 %209
|
|
OpSelectionMerge %212 None
|
|
OpBranchConditional %210 %211 %212
|
|
%211 = OpLabel
|
|
%214 = OpAccessChain %67 %65 %24 %66
|
|
%215 = OpLoad %61 %214
|
|
%216 = OpConvertFToS %6 %215
|
|
%217 = OpINotEqual %40 %1509 %216
|
|
OpBranch %212
|
|
%212 = OpLabel
|
|
%218 = OpPhi %40 %209 %201 %217 %211
|
|
OpBranchConditional %218 %198 %199
|
|
%198 = OpLabel
|
|
OpSelectionMerge %534 None
|
|
OpSwitch %70 %452
|
|
%452 = OpLabel
|
|
OpBranch %453
|
|
%453 = OpLabel
|
|
%1662 = OpPhi %40 %322 %452 %1726 %530
|
|
%1659 = OpPhi %6 %24 %452 %1723 %530
|
|
%457 = OpSLessThanEqual %40 %1659 %30
|
|
OpLoopMerge %531 %530 None
|
|
OpBranchConditional %457 %458 %531
|
|
%458 = OpLabel
|
|
%461 = OpAccessChain %9 %47 %1659 %24
|
|
%462 = OpLoad %6 %461
|
|
%463 = OpSLessThanEqual %40 %219 %462
|
|
OpSelectionMerge %529 None
|
|
OpBranchConditional %463 %464 %508
|
|
%508 = OpLabel
|
|
%510 = OpAccessChain %9 %47 %1659 %30
|
|
%511 = OpLoad %6 %510
|
|
%512 = OpIEqual %40 %511 %28
|
|
OpSelectionMerge %528 None
|
|
OpBranchConditional %512 %513 %524
|
|
%524 = OpLabel
|
|
%527 = OpLoad %6 %510
|
|
OpBranch %530
|
|
%513 = OpLabel
|
|
OpStore %510 %30
|
|
%523 = OpAccessChain %8 %47 %30
|
|
OpStore %523 %1730
|
|
OpBranch %531
|
|
%528 = OpLabel
|
|
OpUnreachable
|
|
%464 = OpLabel
|
|
%466 = OpAccessChain %9 %47 %1659 %27
|
|
%467 = OpLoad %6 %466
|
|
%468 = OpIEqual %40 %467 %28
|
|
OpSelectionMerge %507 None
|
|
OpBranchConditional %468 %469 %503
|
|
%503 = OpLabel
|
|
%506 = OpLoad %6 %466
|
|
OpBranch %530
|
|
%469 = OpLabel
|
|
%470 = OpAccessChain %67 %65 %24 %66
|
|
%471 = OpLoad %61 %470
|
|
%472 = OpAccessChain %67 %65 %24 %70
|
|
%473 = OpLoad %61 %472
|
|
%474 = OpFOrdLessThan %40 %471 %473
|
|
OpSelectionMerge %480 None
|
|
OpBranchConditional %474 %475 %480
|
|
%475 = OpLabel
|
|
OpBranch %476
|
|
%476 = OpLabel
|
|
OpLoopMerge %479 %478 None
|
|
OpBranch %477
|
|
%477 = OpLabel
|
|
OpTerminateInvocation
|
|
%478 = OpLabel
|
|
OpBranch %476
|
|
%479 = OpLabel
|
|
OpUnreachable
|
|
%480 = OpLabel
|
|
OpStore %466 %30
|
|
%490 = OpAccessChain %8 %47 %30
|
|
OpStore %490 %1730
|
|
OpBranch %491
|
|
%491 = OpLabel
|
|
%496 = OpConvertFToS %6 %471
|
|
%497 = OpSLessThan %40 %24 %496
|
|
OpLoopMerge %500 %499 None
|
|
OpBranchConditional %497 %498 %500
|
|
%498 = OpLabel
|
|
OpBranch %500
|
|
%499 = OpLabel
|
|
OpBranch %491
|
|
%500 = OpLabel
|
|
%1660 = OpPhi %40 %1662 %491 %325 %498
|
|
OpSelectionMerge %502 None
|
|
OpBranchConditional %1660 %531 %502
|
|
%502 = OpLabel
|
|
OpBranch %507
|
|
%507 = OpLabel
|
|
OpBranch %529
|
|
%529 = OpLabel
|
|
OpBranch %530
|
|
%530 = OpLabel
|
|
%1726 = OpPhi %40 %1662 %503 %1662 %524 %1660 %529
|
|
%1723 = OpPhi %6 %506 %503 %527 %524 %1659 %529
|
|
OpBranch %453
|
|
%531 = OpLabel
|
|
%1663 = OpPhi %40 %1662 %453 %1660 %500 %325 %513
|
|
OpSelectionMerge %533 None
|
|
OpBranchConditional %1663 %534 %533
|
|
%533 = OpLabel
|
|
OpBranch %534
|
|
%534 = OpLabel
|
|
OpBranch %200
|
|
%200 = OpLabel
|
|
%225 = OpIAdd %6 %1509 %27
|
|
OpBranch %197
|
|
%199 = OpLabel
|
|
OpSelectionMerge %636 None
|
|
OpSwitch %70 %554
|
|
%554 = OpLabel
|
|
OpBranch %555
|
|
%555 = OpLabel
|
|
%1515 = OpPhi %40 %322 %554 %1685 %632
|
|
%1512 = OpPhi %6 %24 %554 %1682 %632
|
|
%559 = OpSLessThanEqual %40 %1512 %1729
|
|
OpLoopMerge %633 %632 None
|
|
OpBranchConditional %559 %560 %633
|
|
%560 = OpLabel
|
|
%563 = OpAccessChain %9 %47 %1512 %24
|
|
%564 = OpLoad %6 %563
|
|
%565 = OpSLessThanEqual %40 %228 %564
|
|
OpSelectionMerge %631 None
|
|
OpBranchConditional %565 %566 %610
|
|
%610 = OpLabel
|
|
%612 = OpAccessChain %9 %47 %1512 %30
|
|
%613 = OpLoad %6 %612
|
|
%614 = OpIEqual %40 %613 %28
|
|
OpSelectionMerge %630 None
|
|
OpBranchConditional %614 %615 %626
|
|
%626 = OpLabel
|
|
%629 = OpLoad %6 %612
|
|
OpBranch %632
|
|
%615 = OpLabel
|
|
OpStore %612 %1729
|
|
%625 = OpAccessChain %8 %47 %1729
|
|
OpStore %625 %1731
|
|
OpBranch %633
|
|
%630 = OpLabel
|
|
OpUnreachable
|
|
%566 = OpLabel
|
|
%568 = OpAccessChain %9 %47 %1512 %27
|
|
%569 = OpLoad %6 %568
|
|
%570 = OpIEqual %40 %569 %28
|
|
OpSelectionMerge %609 None
|
|
OpBranchConditional %570 %571 %605
|
|
%605 = OpLabel
|
|
%608 = OpLoad %6 %568
|
|
OpBranch %632
|
|
%571 = OpLabel
|
|
%572 = OpAccessChain %67 %65 %24 %66
|
|
%573 = OpLoad %61 %572
|
|
%574 = OpAccessChain %67 %65 %24 %70
|
|
%575 = OpLoad %61 %574
|
|
%576 = OpFOrdLessThan %40 %573 %575
|
|
OpSelectionMerge %582 None
|
|
OpBranchConditional %576 %577 %582
|
|
%577 = OpLabel
|
|
OpBranch %578
|
|
%578 = OpLabel
|
|
OpLoopMerge %581 %580 None
|
|
OpBranch %579
|
|
%579 = OpLabel
|
|
OpTerminateInvocation
|
|
%580 = OpLabel
|
|
OpBranch %578
|
|
%581 = OpLabel
|
|
OpUnreachable
|
|
%582 = OpLabel
|
|
OpStore %568 %1729
|
|
%592 = OpAccessChain %8 %47 %1729
|
|
OpStore %592 %1731
|
|
OpBranch %593
|
|
%593 = OpLabel
|
|
%598 = OpConvertFToS %6 %573
|
|
%599 = OpSLessThan %40 %24 %598
|
|
OpLoopMerge %602 %601 None
|
|
OpBranchConditional %599 %600 %602
|
|
%600 = OpLabel
|
|
OpBranch %602
|
|
%601 = OpLabel
|
|
OpBranch %593
|
|
%602 = OpLabel
|
|
%1513 = OpPhi %40 %1515 %593 %325 %600
|
|
OpSelectionMerge %604 None
|
|
OpBranchConditional %1513 %633 %604
|
|
%604 = OpLabel
|
|
OpBranch %609
|
|
%609 = OpLabel
|
|
OpBranch %631
|
|
%631 = OpLabel
|
|
OpBranch %632
|
|
%632 = OpLabel
|
|
%1685 = OpPhi %40 %1515 %605 %1515 %626 %1513 %631
|
|
%1682 = OpPhi %6 %608 %605 %629 %626 %1512 %631
|
|
OpBranch %555
|
|
%633 = OpLabel
|
|
%1516 = OpPhi %40 %1515 %555 %1513 %602 %325 %615
|
|
OpSelectionMerge %635 None
|
|
OpBranchConditional %1516 %636 %635
|
|
%635 = OpLabel
|
|
OpBranch %636
|
|
%636 = OpLabel
|
|
OpSelectionMerge %738 None
|
|
OpSwitch %70 %656
|
|
%656 = OpLabel
|
|
OpBranch %657
|
|
%657 = OpLabel
|
|
%1526 = OpPhi %40 %322 %656 %1689 %734
|
|
%1523 = OpPhi %6 %24 %656 %1686 %734
|
|
%661 = OpSLessThanEqual %40 %1523 %1732
|
|
OpLoopMerge %735 %734 None
|
|
OpBranchConditional %661 %662 %735
|
|
%662 = OpLabel
|
|
%665 = OpAccessChain %9 %47 %1523 %24
|
|
%666 = OpLoad %6 %665
|
|
%667 = OpSLessThanEqual %40 %235 %666
|
|
OpSelectionMerge %733 None
|
|
OpBranchConditional %667 %668 %712
|
|
%712 = OpLabel
|
|
%714 = OpAccessChain %9 %47 %1523 %30
|
|
%715 = OpLoad %6 %714
|
|
%716 = OpIEqual %40 %715 %28
|
|
OpSelectionMerge %732 None
|
|
OpBranchConditional %716 %717 %728
|
|
%728 = OpLabel
|
|
%731 = OpLoad %6 %714
|
|
OpBranch %734
|
|
%717 = OpLabel
|
|
OpStore %714 %1732
|
|
%727 = OpAccessChain %8 %47 %1732
|
|
OpStore %727 %1733
|
|
OpBranch %735
|
|
%732 = OpLabel
|
|
OpUnreachable
|
|
%668 = OpLabel
|
|
%670 = OpAccessChain %9 %47 %1523 %27
|
|
%671 = OpLoad %6 %670
|
|
%672 = OpIEqual %40 %671 %28
|
|
OpSelectionMerge %711 None
|
|
OpBranchConditional %672 %673 %707
|
|
%707 = OpLabel
|
|
%710 = OpLoad %6 %670
|
|
OpBranch %734
|
|
%673 = OpLabel
|
|
%674 = OpAccessChain %67 %65 %24 %66
|
|
%675 = OpLoad %61 %674
|
|
%676 = OpAccessChain %67 %65 %24 %70
|
|
%677 = OpLoad %61 %676
|
|
%678 = OpFOrdLessThan %40 %675 %677
|
|
OpSelectionMerge %684 None
|
|
OpBranchConditional %678 %679 %684
|
|
%679 = OpLabel
|
|
OpBranch %680
|
|
%680 = OpLabel
|
|
OpLoopMerge %683 %682 None
|
|
OpBranch %681
|
|
%681 = OpLabel
|
|
OpTerminateInvocation
|
|
%682 = OpLabel
|
|
OpBranch %680
|
|
%683 = OpLabel
|
|
OpUnreachable
|
|
%684 = OpLabel
|
|
OpStore %670 %1732
|
|
%694 = OpAccessChain %8 %47 %1732
|
|
OpStore %694 %1733
|
|
OpBranch %695
|
|
%695 = OpLabel
|
|
%700 = OpConvertFToS %6 %675
|
|
%701 = OpSLessThan %40 %24 %700
|
|
OpLoopMerge %704 %703 None
|
|
OpBranchConditional %701 %702 %704
|
|
%702 = OpLabel
|
|
OpBranch %704
|
|
%703 = OpLabel
|
|
OpBranch %695
|
|
%704 = OpLabel
|
|
%1524 = OpPhi %40 %1526 %695 %325 %702
|
|
OpSelectionMerge %706 None
|
|
OpBranchConditional %1524 %735 %706
|
|
%706 = OpLabel
|
|
OpBranch %711
|
|
%711 = OpLabel
|
|
OpBranch %733
|
|
%733 = OpLabel
|
|
OpBranch %734
|
|
%734 = OpLabel
|
|
%1689 = OpPhi %40 %1526 %707 %1526 %728 %1524 %733
|
|
%1686 = OpPhi %6 %710 %707 %731 %728 %1523 %733
|
|
OpBranch %657
|
|
%735 = OpLabel
|
|
%1527 = OpPhi %40 %1526 %657 %1524 %704 %325 %717
|
|
OpSelectionMerge %737 None
|
|
OpBranchConditional %1527 %738 %737
|
|
%737 = OpLabel
|
|
OpBranch %738
|
|
%738 = OpLabel
|
|
OpSelectionMerge %840 None
|
|
OpSwitch %70 %758
|
|
%758 = OpLabel
|
|
OpBranch %759
|
|
%759 = OpLabel
|
|
%1537 = OpPhi %40 %322 %758 %1693 %836
|
|
%1534 = OpPhi %6 %24 %758 %1690 %836
|
|
%763 = OpSLessThanEqual %40 %1534 %189
|
|
OpLoopMerge %837 %836 None
|
|
OpBranchConditional %763 %764 %837
|
|
%764 = OpLabel
|
|
%767 = OpAccessChain %9 %47 %1534 %24
|
|
%768 = OpLoad %6 %767
|
|
%769 = OpSLessThanEqual %40 %242 %768
|
|
OpSelectionMerge %835 None
|
|
OpBranchConditional %769 %770 %814
|
|
%814 = OpLabel
|
|
%816 = OpAccessChain %9 %47 %1534 %30
|
|
%817 = OpLoad %6 %816
|
|
%818 = OpIEqual %40 %817 %28
|
|
OpSelectionMerge %834 None
|
|
OpBranchConditional %818 %819 %830
|
|
%830 = OpLabel
|
|
%833 = OpLoad %6 %816
|
|
OpBranch %836
|
|
%819 = OpLabel
|
|
OpStore %816 %189
|
|
%829 = OpAccessChain %8 %47 %189
|
|
OpStore %829 %1734
|
|
OpBranch %837
|
|
%834 = OpLabel
|
|
OpUnreachable
|
|
%770 = OpLabel
|
|
%772 = OpAccessChain %9 %47 %1534 %27
|
|
%773 = OpLoad %6 %772
|
|
%774 = OpIEqual %40 %773 %28
|
|
OpSelectionMerge %813 None
|
|
OpBranchConditional %774 %775 %809
|
|
%809 = OpLabel
|
|
%812 = OpLoad %6 %772
|
|
OpBranch %836
|
|
%775 = OpLabel
|
|
%776 = OpAccessChain %67 %65 %24 %66
|
|
%777 = OpLoad %61 %776
|
|
%778 = OpAccessChain %67 %65 %24 %70
|
|
%779 = OpLoad %61 %778
|
|
%780 = OpFOrdLessThan %40 %777 %779
|
|
OpSelectionMerge %786 None
|
|
OpBranchConditional %780 %781 %786
|
|
%781 = OpLabel
|
|
OpBranch %782
|
|
%782 = OpLabel
|
|
OpLoopMerge %785 %784 None
|
|
OpBranch %783
|
|
%783 = OpLabel
|
|
OpTerminateInvocation
|
|
%784 = OpLabel
|
|
OpBranch %782
|
|
%785 = OpLabel
|
|
OpUnreachable
|
|
%786 = OpLabel
|
|
OpStore %772 %189
|
|
%796 = OpAccessChain %8 %47 %189
|
|
OpStore %796 %1734
|
|
OpBranch %797
|
|
%797 = OpLabel
|
|
%802 = OpConvertFToS %6 %777
|
|
%803 = OpSLessThan %40 %24 %802
|
|
OpLoopMerge %806 %805 None
|
|
OpBranchConditional %803 %804 %806
|
|
%804 = OpLabel
|
|
OpBranch %806
|
|
%805 = OpLabel
|
|
OpBranch %797
|
|
%806 = OpLabel
|
|
%1535 = OpPhi %40 %1537 %797 %325 %804
|
|
OpSelectionMerge %808 None
|
|
OpBranchConditional %1535 %837 %808
|
|
%808 = OpLabel
|
|
OpBranch %813
|
|
%813 = OpLabel
|
|
OpBranch %835
|
|
%835 = OpLabel
|
|
OpBranch %836
|
|
%836 = OpLabel
|
|
%1693 = OpPhi %40 %1537 %809 %1537 %830 %1535 %835
|
|
%1690 = OpPhi %6 %812 %809 %833 %830 %1534 %835
|
|
OpBranch %759
|
|
%837 = OpLabel
|
|
%1538 = OpPhi %40 %1537 %759 %1535 %806 %325 %819
|
|
OpSelectionMerge %839 None
|
|
OpBranchConditional %1538 %840 %839
|
|
%839 = OpLabel
|
|
OpBranch %840
|
|
%840 = OpLabel
|
|
OpSelectionMerge %942 None
|
|
OpSwitch %70 %860
|
|
%860 = OpLabel
|
|
OpBranch %861
|
|
%861 = OpLabel
|
|
%1548 = OpPhi %40 %322 %860 %1697 %938
|
|
%1545 = OpPhi %6 %24 %860 %1694 %938
|
|
%865 = OpSLessThanEqual %40 %1545 %255
|
|
OpLoopMerge %939 %938 None
|
|
OpBranchConditional %865 %866 %939
|
|
%866 = OpLabel
|
|
%869 = OpAccessChain %9 %47 %1545 %24
|
|
%870 = OpLoad %6 %869
|
|
%871 = OpSLessThanEqual %40 %30 %870
|
|
OpSelectionMerge %937 None
|
|
OpBranchConditional %871 %872 %916
|
|
%916 = OpLabel
|
|
%918 = OpAccessChain %9 %47 %1545 %30
|
|
%919 = OpLoad %6 %918
|
|
%920 = OpIEqual %40 %919 %28
|
|
OpSelectionMerge %936 None
|
|
OpBranchConditional %920 %921 %932
|
|
%932 = OpLabel
|
|
%935 = OpLoad %6 %918
|
|
OpBranch %938
|
|
%921 = OpLabel
|
|
OpStore %918 %255
|
|
%931 = OpAccessChain %8 %47 %255
|
|
OpStore %931 %1735
|
|
OpBranch %939
|
|
%936 = OpLabel
|
|
OpUnreachable
|
|
%872 = OpLabel
|
|
%874 = OpAccessChain %9 %47 %1545 %27
|
|
%875 = OpLoad %6 %874
|
|
%876 = OpIEqual %40 %875 %28
|
|
OpSelectionMerge %915 None
|
|
OpBranchConditional %876 %877 %911
|
|
%911 = OpLabel
|
|
%914 = OpLoad %6 %874
|
|
OpBranch %938
|
|
%877 = OpLabel
|
|
%878 = OpAccessChain %67 %65 %24 %66
|
|
%879 = OpLoad %61 %878
|
|
%880 = OpAccessChain %67 %65 %24 %70
|
|
%881 = OpLoad %61 %880
|
|
%882 = OpFOrdLessThan %40 %879 %881
|
|
OpSelectionMerge %888 None
|
|
OpBranchConditional %882 %883 %888
|
|
%883 = OpLabel
|
|
OpBranch %884
|
|
%884 = OpLabel
|
|
OpLoopMerge %887 %886 None
|
|
OpBranch %885
|
|
%885 = OpLabel
|
|
OpTerminateInvocation
|
|
%886 = OpLabel
|
|
OpBranch %884
|
|
%887 = OpLabel
|
|
OpUnreachable
|
|
%888 = OpLabel
|
|
OpStore %874 %255
|
|
%898 = OpAccessChain %8 %47 %255
|
|
OpStore %898 %1735
|
|
OpBranch %899
|
|
%899 = OpLabel
|
|
%904 = OpConvertFToS %6 %879
|
|
%905 = OpSLessThan %40 %24 %904
|
|
OpLoopMerge %908 %907 None
|
|
OpBranchConditional %905 %906 %908
|
|
%906 = OpLabel
|
|
OpBranch %908
|
|
%907 = OpLabel
|
|
OpBranch %899
|
|
%908 = OpLabel
|
|
%1546 = OpPhi %40 %1548 %899 %325 %906
|
|
OpSelectionMerge %910 None
|
|
OpBranchConditional %1546 %939 %910
|
|
%910 = OpLabel
|
|
OpBranch %915
|
|
%915 = OpLabel
|
|
OpBranch %937
|
|
%937 = OpLabel
|
|
OpBranch %938
|
|
%938 = OpLabel
|
|
%1697 = OpPhi %40 %1548 %911 %1548 %932 %1546 %937
|
|
%1694 = OpPhi %6 %914 %911 %935 %932 %1545 %937
|
|
OpBranch %861
|
|
%939 = OpLabel
|
|
%1549 = OpPhi %40 %1548 %861 %1546 %908 %325 %921
|
|
OpSelectionMerge %941 None
|
|
OpBranchConditional %1549 %942 %941
|
|
%941 = OpLabel
|
|
OpBranch %942
|
|
%942 = OpLabel
|
|
OpSelectionMerge %1044 None
|
|
OpSwitch %70 %962
|
|
%962 = OpLabel
|
|
OpBranch %963
|
|
%963 = OpLabel
|
|
%1559 = OpPhi %40 %322 %962 %1701 %1040
|
|
%1556 = OpPhi %6 %24 %962 %1698 %1040
|
|
%967 = OpSLessThanEqual %40 %1556 %235
|
|
OpLoopMerge %1041 %1040 None
|
|
OpBranchConditional %967 %968 %1041
|
|
%968 = OpLabel
|
|
%971 = OpAccessChain %9 %47 %1556 %24
|
|
%972 = OpLoad %6 %971
|
|
%973 = OpSLessThanEqual %40 %255 %972
|
|
OpSelectionMerge %1039 None
|
|
OpBranchConditional %973 %974 %1018
|
|
%1018 = OpLabel
|
|
%1020 = OpAccessChain %9 %47 %1556 %30
|
|
%1021 = OpLoad %6 %1020
|
|
%1022 = OpIEqual %40 %1021 %28
|
|
OpSelectionMerge %1038 None
|
|
OpBranchConditional %1022 %1023 %1034
|
|
%1034 = OpLabel
|
|
%1037 = OpLoad %6 %1020
|
|
OpBranch %1040
|
|
%1023 = OpLabel
|
|
OpStore %1020 %235
|
|
%1033 = OpAccessChain %8 %47 %235
|
|
OpStore %1033 %1736
|
|
OpBranch %1041
|
|
%1038 = OpLabel
|
|
OpUnreachable
|
|
%974 = OpLabel
|
|
%976 = OpAccessChain %9 %47 %1556 %27
|
|
%977 = OpLoad %6 %976
|
|
%978 = OpIEqual %40 %977 %28
|
|
OpSelectionMerge %1017 None
|
|
OpBranchConditional %978 %979 %1013
|
|
%1013 = OpLabel
|
|
%1016 = OpLoad %6 %976
|
|
OpBranch %1040
|
|
%979 = OpLabel
|
|
%980 = OpAccessChain %67 %65 %24 %66
|
|
%981 = OpLoad %61 %980
|
|
%982 = OpAccessChain %67 %65 %24 %70
|
|
%983 = OpLoad %61 %982
|
|
%984 = OpFOrdLessThan %40 %981 %983
|
|
OpSelectionMerge %990 None
|
|
OpBranchConditional %984 %985 %990
|
|
%985 = OpLabel
|
|
OpBranch %986
|
|
%986 = OpLabel
|
|
OpLoopMerge %989 %988 None
|
|
OpBranch %987
|
|
%987 = OpLabel
|
|
OpTerminateInvocation
|
|
%988 = OpLabel
|
|
OpBranch %986
|
|
%989 = OpLabel
|
|
OpUnreachable
|
|
%990 = OpLabel
|
|
OpStore %976 %235
|
|
%1000 = OpAccessChain %8 %47 %235
|
|
OpStore %1000 %1736
|
|
OpBranch %1001
|
|
%1001 = OpLabel
|
|
%1006 = OpConvertFToS %6 %981
|
|
%1007 = OpSLessThan %40 %24 %1006
|
|
OpLoopMerge %1010 %1009 None
|
|
OpBranchConditional %1007 %1008 %1010
|
|
%1008 = OpLabel
|
|
OpBranch %1010
|
|
%1009 = OpLabel
|
|
OpBranch %1001
|
|
%1010 = OpLabel
|
|
%1557 = OpPhi %40 %1559 %1001 %325 %1008
|
|
OpSelectionMerge %1012 None
|
|
OpBranchConditional %1557 %1041 %1012
|
|
%1012 = OpLabel
|
|
OpBranch %1017
|
|
%1017 = OpLabel
|
|
OpBranch %1039
|
|
%1039 = OpLabel
|
|
OpBranch %1040
|
|
%1040 = OpLabel
|
|
%1701 = OpPhi %40 %1559 %1013 %1559 %1034 %1557 %1039
|
|
%1698 = OpPhi %6 %1016 %1013 %1037 %1034 %1556 %1039
|
|
OpBranch %963
|
|
%1041 = OpLabel
|
|
%1560 = OpPhi %40 %1559 %963 %1557 %1010 %325 %1023
|
|
OpSelectionMerge %1043 None
|
|
OpBranchConditional %1560 %1044 %1043
|
|
%1043 = OpLabel
|
|
OpBranch %1044
|
|
%1044 = OpLabel
|
|
OpSelectionMerge %1146 None
|
|
OpSwitch %70 %1064
|
|
%1064 = OpLabel
|
|
OpBranch %1065
|
|
%1065 = OpLabel
|
|
%1570 = OpPhi %40 %322 %1064 %1705 %1142
|
|
%1567 = OpPhi %6 %24 %1064 %1702 %1142
|
|
%1069 = OpSLessThanEqual %40 %1567 %242
|
|
OpLoopMerge %1143 %1142 None
|
|
OpBranchConditional %1069 %1070 %1143
|
|
%1070 = OpLabel
|
|
%1073 = OpAccessChain %9 %47 %1567 %24
|
|
%1074 = OpLoad %6 %1073
|
|
%1075 = OpSLessThanEqual %40 %262 %1074
|
|
OpSelectionMerge %1141 None
|
|
OpBranchConditional %1075 %1076 %1120
|
|
%1120 = OpLabel
|
|
%1122 = OpAccessChain %9 %47 %1567 %30
|
|
%1123 = OpLoad %6 %1122
|
|
%1124 = OpIEqual %40 %1123 %28
|
|
OpSelectionMerge %1140 None
|
|
OpBranchConditional %1124 %1125 %1136
|
|
%1136 = OpLabel
|
|
%1139 = OpLoad %6 %1122
|
|
OpBranch %1142
|
|
%1125 = OpLabel
|
|
OpStore %1122 %242
|
|
%1135 = OpAccessChain %8 %47 %242
|
|
OpStore %1135 %1737
|
|
OpBranch %1143
|
|
%1140 = OpLabel
|
|
OpUnreachable
|
|
%1076 = OpLabel
|
|
%1078 = OpAccessChain %9 %47 %1567 %27
|
|
%1079 = OpLoad %6 %1078
|
|
%1080 = OpIEqual %40 %1079 %28
|
|
OpSelectionMerge %1119 None
|
|
OpBranchConditional %1080 %1081 %1115
|
|
%1115 = OpLabel
|
|
%1118 = OpLoad %6 %1078
|
|
OpBranch %1142
|
|
%1081 = OpLabel
|
|
%1082 = OpAccessChain %67 %65 %24 %66
|
|
%1083 = OpLoad %61 %1082
|
|
%1084 = OpAccessChain %67 %65 %24 %70
|
|
%1085 = OpLoad %61 %1084
|
|
%1086 = OpFOrdLessThan %40 %1083 %1085
|
|
OpSelectionMerge %1092 None
|
|
OpBranchConditional %1086 %1087 %1092
|
|
%1087 = OpLabel
|
|
OpBranch %1088
|
|
%1088 = OpLabel
|
|
OpLoopMerge %1091 %1090 None
|
|
OpBranch %1089
|
|
%1089 = OpLabel
|
|
OpTerminateInvocation
|
|
%1090 = OpLabel
|
|
OpBranch %1088
|
|
%1091 = OpLabel
|
|
OpUnreachable
|
|
%1092 = OpLabel
|
|
OpStore %1078 %242
|
|
%1102 = OpAccessChain %8 %47 %242
|
|
OpStore %1102 %1737
|
|
OpBranch %1103
|
|
%1103 = OpLabel
|
|
%1108 = OpConvertFToS %6 %1083
|
|
%1109 = OpSLessThan %40 %24 %1108
|
|
OpLoopMerge %1112 %1111 None
|
|
OpBranchConditional %1109 %1110 %1112
|
|
%1110 = OpLabel
|
|
OpBranch %1112
|
|
%1111 = OpLabel
|
|
OpBranch %1103
|
|
%1112 = OpLabel
|
|
%1568 = OpPhi %40 %1570 %1103 %325 %1110
|
|
OpSelectionMerge %1114 None
|
|
OpBranchConditional %1568 %1143 %1114
|
|
%1114 = OpLabel
|
|
OpBranch %1119
|
|
%1119 = OpLabel
|
|
OpBranch %1141
|
|
%1141 = OpLabel
|
|
OpBranch %1142
|
|
%1142 = OpLabel
|
|
%1705 = OpPhi %40 %1570 %1115 %1570 %1136 %1568 %1141
|
|
%1702 = OpPhi %6 %1118 %1115 %1139 %1136 %1567 %1141
|
|
OpBranch %1065
|
|
%1143 = OpLabel
|
|
%1571 = OpPhi %40 %1570 %1065 %1568 %1112 %325 %1125
|
|
OpSelectionMerge %1145 None
|
|
OpBranchConditional %1571 %1146 %1145
|
|
%1145 = OpLabel
|
|
OpBranch %1146
|
|
%1146 = OpLabel
|
|
OpSelectionMerge %1248 None
|
|
OpSwitch %70 %1166
|
|
%1166 = OpLabel
|
|
OpBranch %1167
|
|
%1167 = OpLabel
|
|
%1581 = OpPhi %40 %322 %1166 %1709 %1244
|
|
%1578 = OpPhi %6 %24 %1166 %1706 %1244
|
|
%1171 = OpSLessThanEqual %40 %1578 %179
|
|
OpLoopMerge %1245 %1244 None
|
|
OpBranchConditional %1171 %1172 %1245
|
|
%1172 = OpLabel
|
|
%1175 = OpAccessChain %9 %47 %1578 %24
|
|
%1176 = OpLoad %6 %1175
|
|
%1177 = OpSLessThanEqual %40 %269 %1176
|
|
OpSelectionMerge %1243 None
|
|
OpBranchConditional %1177 %1178 %1222
|
|
%1222 = OpLabel
|
|
%1224 = OpAccessChain %9 %47 %1578 %30
|
|
%1225 = OpLoad %6 %1224
|
|
%1226 = OpIEqual %40 %1225 %28
|
|
OpSelectionMerge %1242 None
|
|
OpBranchConditional %1226 %1227 %1238
|
|
%1238 = OpLabel
|
|
%1241 = OpLoad %6 %1224
|
|
OpBranch %1244
|
|
%1227 = OpLabel
|
|
OpStore %1224 %179
|
|
%1237 = OpAccessChain %8 %47 %179
|
|
OpStore %1237 %1738
|
|
OpBranch %1245
|
|
%1242 = OpLabel
|
|
OpUnreachable
|
|
%1178 = OpLabel
|
|
%1180 = OpAccessChain %9 %47 %1578 %27
|
|
%1181 = OpLoad %6 %1180
|
|
%1182 = OpIEqual %40 %1181 %28
|
|
OpSelectionMerge %1221 None
|
|
OpBranchConditional %1182 %1183 %1217
|
|
%1217 = OpLabel
|
|
%1220 = OpLoad %6 %1180
|
|
OpBranch %1244
|
|
%1183 = OpLabel
|
|
%1184 = OpAccessChain %67 %65 %24 %66
|
|
%1185 = OpLoad %61 %1184
|
|
%1186 = OpAccessChain %67 %65 %24 %70
|
|
%1187 = OpLoad %61 %1186
|
|
%1188 = OpFOrdLessThan %40 %1185 %1187
|
|
OpSelectionMerge %1194 None
|
|
OpBranchConditional %1188 %1189 %1194
|
|
%1189 = OpLabel
|
|
OpBranch %1190
|
|
%1190 = OpLabel
|
|
OpLoopMerge %1193 %1192 None
|
|
OpBranch %1191
|
|
%1191 = OpLabel
|
|
OpTerminateInvocation
|
|
%1192 = OpLabel
|
|
OpBranch %1190
|
|
%1193 = OpLabel
|
|
OpUnreachable
|
|
%1194 = OpLabel
|
|
OpStore %1180 %179
|
|
%1204 = OpAccessChain %8 %47 %179
|
|
OpStore %1204 %1738
|
|
OpBranch %1205
|
|
%1205 = OpLabel
|
|
%1210 = OpConvertFToS %6 %1185
|
|
%1211 = OpSLessThan %40 %24 %1210
|
|
OpLoopMerge %1214 %1213 None
|
|
OpBranchConditional %1211 %1212 %1214
|
|
%1212 = OpLabel
|
|
OpBranch %1214
|
|
%1213 = OpLabel
|
|
OpBranch %1205
|
|
%1214 = OpLabel
|
|
%1579 = OpPhi %40 %1581 %1205 %325 %1212
|
|
OpSelectionMerge %1216 None
|
|
OpBranchConditional %1579 %1245 %1216
|
|
%1216 = OpLabel
|
|
OpBranch %1221
|
|
%1221 = OpLabel
|
|
OpBranch %1243
|
|
%1243 = OpLabel
|
|
OpBranch %1244
|
|
%1244 = OpLabel
|
|
%1709 = OpPhi %40 %1581 %1217 %1581 %1238 %1579 %1243
|
|
%1706 = OpPhi %6 %1220 %1217 %1241 %1238 %1578 %1243
|
|
OpBranch %1167
|
|
%1245 = OpLabel
|
|
%1582 = OpPhi %40 %1581 %1167 %1579 %1214 %325 %1227
|
|
OpSelectionMerge %1247 None
|
|
OpBranchConditional %1582 %1248 %1247
|
|
%1247 = OpLabel
|
|
OpBranch %1248
|
|
%1248 = OpLabel
|
|
OpBranch %276
|
|
%276 = OpLabel
|
|
%1593 = OpPhi %6 %1620 %1248 %1590 %279
|
|
%1584 = OpPhi %6 %24 %1248 %1710 %279
|
|
%1583 = OpPhi %6 %24 %1248 %309 %279
|
|
%283 = OpSLessThan %40 %1583 %282
|
|
OpLoopMerge %278 %279 None
|
|
OpBranchConditional %283 %277 %278
|
|
%277 = OpLabel
|
|
OpSelectionMerge %1299 None
|
|
OpSwitch %70 %1267
|
|
%1267 = OpLabel
|
|
OpBranch %1268
|
|
%1268 = OpLabel
|
|
%1585 = OpPhi %6 %24 %1267 %1739 %1295
|
|
%1271 = OpINotEqual %40 %1585 %28
|
|
OpLoopMerge %1296 %1295 None
|
|
OpBranchConditional %1271 %1272 %1296
|
|
%1272 = OpLabel
|
|
%1274 = OpAccessChain %8 %47 %1585
|
|
%1275 = OpLoad %7 %1274
|
|
%1305 = OpCompositeExtract %6 %1275 0
|
|
%1306 = OpCompositeExtract %6 %1275 1
|
|
%1307 = OpCompositeExtract %6 %1275 2
|
|
%1279 = OpIEqual %40 %1305 %1583
|
|
OpSelectionMerge %1282 None
|
|
OpBranchConditional %1279 %1280 %1282
|
|
%1280 = OpLabel
|
|
OpBranch %1296
|
|
%1282 = OpLabel
|
|
%1286 = OpSGreaterThan %40 %1583 %1305
|
|
%1739 = OpSelect %6 %1286 %1307 %1306
|
|
OpBranch %1295
|
|
%1295 = OpLabel
|
|
OpBranch %1268
|
|
%1296 = OpLabel
|
|
%1591 = OpPhi %6 %1593 %1268 %1583 %1280
|
|
%1587 = OpPhi %40 %322 %1268 %325 %1280
|
|
OpSelectionMerge %1298 None
|
|
OpBranchConditional %1587 %1299 %1298
|
|
%1298 = OpLabel
|
|
OpBranch %1299
|
|
%1299 = OpLabel
|
|
%1590 = OpPhi %6 %1591 %1296 %28 %1298
|
|
OpSelectionMerge %291 None
|
|
OpSwitch %1583 %290 9 %289 5 %289 12 %289 15 %289 7 %289 8 %289 2 %289 6 %289 17 %289 13 %289
|
|
%289 = OpLabel
|
|
%294 = OpIEqual %40 %1590 %1583
|
|
OpSelectionMerge %296 None
|
|
OpBranchConditional %294 %295 %296
|
|
%295 = OpLabel
|
|
%298 = OpIAdd %6 %1584 %27
|
|
OpBranch %296
|
|
%296 = OpLabel
|
|
%1712 = OpPhi %6 %1584 %289 %298 %295
|
|
OpBranch %291
|
|
%290 = OpLabel
|
|
%301 = OpIEqual %40 %1590 %28
|
|
OpSelectionMerge %303 None
|
|
OpBranchConditional %301 %302 %303
|
|
%302 = OpLabel
|
|
%305 = OpIAdd %6 %1584 %27
|
|
OpBranch %303
|
|
%303 = OpLabel
|
|
%1711 = OpPhi %6 %1584 %290 %305 %302
|
|
OpBranch %291
|
|
%291 = OpLabel
|
|
%1710 = OpPhi %6 %1711 %303 %1712 %296
|
|
OpBranch %279
|
|
%279 = OpLabel
|
|
%309 = OpIAdd %6 %1583 %27
|
|
OpBranch %276
|
|
%278 = OpLabel
|
|
%311 = OpIEqual %40 %1584 %282
|
|
OpSelectionMerge %313 None
|
|
OpBranchConditional %311 %312 %318
|
|
%318 = OpLabel
|
|
OpStore %315 %319
|
|
OpBranch %313
|
|
%312 = OpLabel
|
|
OpStore %315 %317
|
|
OpBranch %313
|
|
%313 = OpLabel
|
|
OpReturn
|
|
OpFunctionEnd
|
|
END
|
|
|
|
# uniforms for variant
|
|
|
|
# injectionSwitch
|
|
BUFFER variant_injectionSwitch DATA_TYPE vec2<float> DATA
|
|
0.0 1.0
|
|
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
|
|
BIND BUFFER variant_injectionSwitch AS uniform DESCRIPTOR_SET 0 BINDING 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 reference_framebuffer EQ_HISTOGRAM_EMD_BUFFER variant_framebuffer TOLERANCE 0.005
|