Lines Matching defs:merge

273   Block merge("merge", spv::Op::OpReturn);
277 loop.SetBody("OpLoopMerge %merge %cont None\n");
281 nameOps("loop", "entry", "cont", "merge",
287 str += loop >> std::vector<Block>({cont, merge});
289 str += merge;
343 Block merge("merge", spv::Op::OpReturn);
346 if (is_shader) loop.SetBody("OpLoopMerge %merge %loop None\n");
349 nameOps("loop", "merge", std::make_pair("func", "Main")) +
355 str += loop >> std::vector<Block>({merge, loop});
356 str += merge;
368 Block merge("merge", spv::Op::OpReturn);
371 if (is_shader) branch.SetBody("OpSelectionMerge %merge None\n");
379 str += cont >> merge; // cont appears before its dominator
380 str += branch >> std::vector<Block>({cont, merge});
381 str += merge;
397 Block merge("merge", spv::Op::OpReturn);
400 if (is_shader) loop.SetBody(" OpLoopMerge %merge %loop None\n");
402 // cannot share the same merge
403 if (is_shader) selection.SetBody("OpSelectionMerge %merge None\n");
406 nameOps("merge", std::make_pair("func", "Main")) +
412 str += selection >> std::vector<Block>({loop, merge});
413 str += merge;
420 MatchesRegex("Block '.\\[%merge\\]' is already a merge block "
433 Block merge("merge", spv::Op::OpReturn);
436 if (is_shader) selection.SetBody(" OpSelectionMerge %merge None\n");
438 // cannot share the same merge
439 if (is_shader) loop.SetBody(" OpLoopMerge %merge %loop None\n");
442 nameOps("merge", std::make_pair("func", "Main")) +
447 str += selection >> std::vector<Block>({merge, loop});
448 str += loop >> std::vector<Block>({loop, merge});
449 str += merge;
456 MatchesRegex("Block '.\\[%merge\\]' is already a merge block "
541 Block merge("merge");
545 bad.SetBody("OpLoopMerge %merge %cont None\n");
554 str += merge >> end;
574 Block merge("merge");
578 bad.SetBody("OpSelectionMerge %merge None\n");
587 str += def >> merge;
588 str += block1 >> merge;
589 str += block2 >> merge;
590 str += block3 >> merge;
591 str += merge >> end;
642 // If a merge block is reachable, then it must be strictly dominated by
669 "merge block "
682 Block merge("merge", spv::Op::OpReturn);
686 branch.AppendBody("OpSelectionMerge %merge None\n");
689 str += nameOps("branch", "merge", std::make_pair("func", "Main"));
695 str += merge;
713 Block merge("merge", op);
718 branch.AppendBody("OpSelectionMerge %merge None\n");
720 str += nameOps("branch", "merge", std::make_pair("func", "Main"));
727 str += merge;
757 Block merge("merge", spv::Op::OpReturn);
764 branch.AppendBody("OpLoopMerge %merge %target None\n");
766 str += nameOps("branch", "merge", "target", std::make_pair("func", "Main"));
770 str += branch >> std::vector<Block>({merge});
771 str += merge;
824 Block merge("merge", spv::Op::OpUnreachable);
829 branch.AppendBody("OpSelectionMerge %merge None\n");
831 str += nameOps("branch", "merge", std::make_pair("func", "Main"));
835 str += merge;
856 Block merge("merge", spv::Op::OpReturn);
863 branch.AppendBody("OpLoopMerge %merge %target None\n");
865 str += nameOps("branch", "merge", "target", std::make_pair("func", "Main"));
870 str += merge;
872 str += branch >> std::vector<Block>({merge});
890 Block merge("merge", spv::Op::OpUnreachable);
894 merge.AppendBody("OpStore %placeholder %one\n");
898 branch.AppendBody("OpSelectionMerge %merge None\n");
900 str += nameOps("branch", "merge", std::make_pair("func", "Main"));
908 str += merge;
924 Block merge("merge", spv::Op::OpReturn);
934 branch.AppendBody("OpLoopMerge %merge %target None\n");
936 str += nameOps("branch", "merge", "target", std::make_pair("func", "Main"));
941 str += branch >> std::vector<Block>({merge});
942 str += merge;
961 Block merge("merge", spv::Op::OpUnreachable);
967 branch.AppendBody("OpSelectionMerge %merge None\n");
969 str += nameOps("branch", "merge", std::make_pair("func", "Main"));
974 str += t >> merge;
976 str += merge;
994 Block merge("merge", spv::Op::OpUnreachable);
1001 branch.AppendBody("OpSelectionMerge %merge None\n");
1002 duplicate.AppendBody("OpSelectionMerge %merge None\n");
1005 str += nameOps("branch", "merge", std::make_pair("func", "Main"));
1013 str += merge;
1024 HasSubstr("is already a merge block for another header"));
1035 Block merge("merge", spv::Op::OpReturn);
1044 branch.AppendBody("OpLoopMerge %merge %target None\n");
1046 str += nameOps("branch", "merge", "target", std::make_pair("func", "Main"));
1051 str += branch >> std::vector<Block>({merge});
1052 str += merge;
1069 Block merge("merge", spv::Op::OpReturn);
1077 t >> merge;
1082 branch.AppendBody("OpLoopMerge %merge %target None\n");
1086 str += nameOps("branch", "merge", "target", "body", "t", "f",
1095 str += merge;
1112 Block merge("merge", spv::Op::OpReturn);
1124 branch.AppendBody("OpLoopMerge %merge %target None\n");
1128 str += nameOps("branch", "merge", "pre_target", "target", "body", "t", "f",
1137 str += merge;
1181 Block merge("merge");
1186 unreachable.AppendBody("OpSelectionMerge %merge None\n");
1196 str += unreachablechildt >> merge;
1197 str += unreachablechildf >> merge;
1198 str += merge >> exit;
1437 Block merge("merge", spv::Op::OpReturn);
1440 if (is_shader) loop.SetBody("OpLoopMerge %merge %back0 None\n");
1450 str += merge;
1473 Block merge("merge", spv::Op::OpReturn);
1477 if (is_shader) loop.SetBody("OpLoopMerge %merge %cheader None\n");
1484 str += loop >> std::vector<Block>({cheader, merge});
1488 str += merge;
1511 Block merge("merge", spv::Op::OpReturn);
1514 if (is_shader) loop.SetBody("OpLoopMerge %merge %loop None\n");
1521 str += loop >> std::vector<Block>({cont, merge});
1522 str += cont >> std::vector<Block>({loop, merge});
1523 str += merge;
1546 Block merge("merge");
1550 if (is_shader) loop.SetBody("OpLoopMerge %merge %loop None\n");
1557 str += loop >> std::vector<Block>({cont, merge});
1559 str += merge >> exit;
1687 // The nested construct has an unreachable merge block. In the
1688 // augmented CFG that merge block
1721 // The continue construct cannot be the merge target of a nested selection
1730 Block merge("merge", spv::Op::OpReturn);
1734 loop.SetBody("OpLoopMerge %merge %if_merge None\n");
1740 nameOps("entry", "loop", "if_head", "if_true", "if_merge", "merge") +
1747 str += if_merge >> std::vector<Block>({loop, merge});
1748 str += merge;
1759 "by '2[%loop]', but its merge block '5[%if_merge]' is not"));
1772 Block merge("merge", spv::Op::OpReturn);
1776 loop.SetBody("OpLoopMerge %merge %latch None\n");
1780 nameOps("entry", "loop", "latch", "merge") +
1785 str += loop >> std::vector<Block>({latch, merge});
1787 str += merge;
1871 OpSelectionMerge %merge None
1872 OpBranchConditional %true %then %merge
1873 %merge = OpLabel
2343 "corresponding merge, outer loop merge or outer loop "
2396 OpSelectionMerge %merge None
2401 OpBranch %merge
2402 %merge = OpLabel
2429 OpSelectionMerge %merge None
2434 OpBranch %merge
2435 %merge = OpLabel
2463 OpSelectionMerge %merge None
2470 OpBranch %merge
2471 %merge = OpLabel
2494 OpSelectionMerge %merge None
2501 OpBranch %merge
2502 %merge = OpLabel
3717 OpSelectionMerge %merge None
3718 OpBranchConditional %undef_bool %merge %b1
3720 OpSwitch %undef_int %b2 0 %b2 1 %merge 2 %b2
3722 OpBranch %merge
3723 %merge = OpLabel
3809 OpSelectionMerge %merge None
3810 OpSwitch %int_0 %merge 1 %b1
3812 OpBranchConditional %undef %merge %b2
3814 OpBranch %merge
3815 %merge = OpLabel
3837 OpSelectionMerge %merge None
3842 OpBranch %merge
3844 OpBranch %merge
3845 %merge = OpLabel
3898 OpSelectionMerge %merge None
3905 OpBranch %merge
3907 OpBranch %merge
3908 %merge = OpLabel
3952 "'1[%loop]', but its merge block '2[%continue]' is not"));
3989 "'1[%loop]', but its merge block '2[%continue]' is not"));
4339 %30 = OpLabel ; merge for first if
4350 %70 = OpLabel ; merge for second if
4354 OpBranchConditional %cond %20 %60 ; should require a merge
4366 "'8[%8]' does not structurally dominate the merge "