Lines Matching full:merge
284 Block merge("merge", SpvOpReturn); in TEST_P() local
288 loop.SetBody("OpLoopMerge %merge %cont None\n"); in TEST_P()
292 nameOps("loop", "entry", "cont", "merge", in TEST_P()
298 str += loop >> std::vector<Block>({cont, merge}); in TEST_P()
300 str += merge; in TEST_P()
354 Block merge("merge", SpvOpReturn); in TEST_P() local
357 if (is_shader) loop.SetBody("OpLoopMerge %merge %loop None\n"); in TEST_P()
360 nameOps("loop", "merge", std::make_pair("func", "Main")) + in TEST_P()
366 str += loop >> std::vector<Block>({merge, loop}); in TEST_P()
367 str += merge; in TEST_P()
379 Block merge("merge", SpvOpReturn); in TEST_P() local
382 if (is_shader) branch.SetBody("OpSelectionMerge %merge None\n"); in TEST_P()
390 str += cont >> merge; // cont appears before its dominator in TEST_P()
391 str += branch >> std::vector<Block>({cont, merge}); in TEST_P()
392 str += merge; in TEST_P()
408 Block merge("merge", SpvOpReturn); in TEST_P() local
411 if (is_shader) loop.SetBody(" OpLoopMerge %merge %loop None\n"); in TEST_P()
413 // cannot share the same merge in TEST_P()
414 if (is_shader) selection.SetBody("OpSelectionMerge %merge None\n"); in TEST_P()
417 nameOps("merge", std::make_pair("func", "Main")) + in TEST_P()
423 str += selection >> std::vector<Block>({loop, merge}); in TEST_P()
424 str += merge; in TEST_P()
431 MatchesRegex("Block .\\[%merge\\] is already a merge block " in TEST_P()
444 Block merge("merge", SpvOpReturn); in TEST_P() local
447 if (is_shader) selection.SetBody(" OpSelectionMerge %merge None\n"); in TEST_P()
449 // cannot share the same merge in TEST_P()
450 if (is_shader) loop.SetBody(" OpLoopMerge %merge %loop None\n"); in TEST_P()
453 nameOps("merge", std::make_pair("func", "Main")) + in TEST_P()
458 str += selection >> std::vector<Block>({merge, loop}); in TEST_P()
459 str += loop >> std::vector<Block>({loop, merge}); in TEST_P()
460 str += merge; in TEST_P()
467 MatchesRegex("Block .\\[%merge\\] is already a merge block " in TEST_P()
551 Block merge("merge"); in TEST_P() local
555 bad.SetBody("OpLoopMerge %merge %cont None\n"); in TEST_P()
564 str += merge >> end; in TEST_P()
583 Block merge("merge"); in TEST_P() local
587 bad.SetBody("OpSelectionMerge %merge None\n"); in TEST_P()
596 str += def >> merge; in TEST_P()
597 str += block1 >> merge; in TEST_P()
598 str += block2 >> merge; in TEST_P()
599 str += block3 >> merge; in TEST_P()
600 str += merge >> end; in TEST_P()
654 Block merge("merge", SpvOpReturn); in TEST_P() local
658 if (is_shader) head.AppendBody("OpSelectionMerge %merge None\n"); in TEST_P()
661 nameOps("head", "merge", std::make_pair("func", "Main")) + in TEST_P()
665 str += entry >> merge; in TEST_P()
666 str += head >> std::vector<Block>({merge, f}); in TEST_P()
667 str += f >> merge; in TEST_P()
668 str += merge; in TEST_P()
677 ".\\[%head\\] does not dominate the merge block " in TEST_P()
678 ".\\[%merge\\]\n %merge = OpLabel\n")); in TEST_P()
685 // If a merge block is reachable, then it must be strictly dominated by in TEST_P()
710 ".\\[%head\\] does not strictly dominate the merge block " in TEST_P()
725 Block merge("merge", SpvOpReturn); in GetUnreachableMergeNoMergeInst() local
729 branch.AppendBody("OpSelectionMerge %merge None\n"); in GetUnreachableMergeNoMergeInst()
738 str += nameOps("branch", "merge", std::make_pair("func", "Main")); in GetUnreachableMergeNoMergeInst()
744 str += merge; in GetUnreachableMergeNoMergeInst()
773 Block merge("merge", op); in GetUnreachableMergeTerminatedBy() local
783 branch.AppendBody("OpSelectionMerge %merge None\n"); in GetUnreachableMergeTerminatedBy()
785 str += nameOps("branch", "merge", std::make_pair("func", "Main")); in GetUnreachableMergeTerminatedBy()
793 str += merge; in GetUnreachableMergeTerminatedBy()
846 Block merge("merge", SpvOpReturn); in GetUnreachableContinueTerminatedBy() local
858 branch.AppendBody("OpLoopMerge %merge %target None\n"); in GetUnreachableContinueTerminatedBy()
860 str += nameOps("branch", "merge", "target", std::make_pair("func", "Main")); in GetUnreachableContinueTerminatedBy()
865 str += branch >> std::vector<Block>({merge}); in GetUnreachableContinueTerminatedBy()
866 str += merge; in GetUnreachableContinueTerminatedBy()
954 Block merge("merge", SpvOpUnreachable); in GetUnreachableMergeUnreachableMergeInst() local
964 branch.AppendBody("OpSelectionMerge %merge None\n"); in GetUnreachableMergeUnreachableMergeInst()
966 str += nameOps("branch", "merge", std::make_pair("func", "Main")); in GetUnreachableMergeUnreachableMergeInst()
971 str += merge; in GetUnreachableMergeUnreachableMergeInst()
992 HasSubstr("must be referenced by a reachable merge instruction")); in TEST_F()
1003 Block merge("merge", SpvOpReturn); in GetUnreachableContinueUnreachableLoopInst() local
1015 branch.AppendBody("OpLoopMerge %merge %target None\n"); in GetUnreachableContinueUnreachableLoopInst()
1017 str += nameOps("branch", "merge", "target", std::make_pair("func", "Main")); in GetUnreachableContinueUnreachableLoopInst()
1023 str += merge; in GetUnreachableContinueUnreachableLoopInst()
1025 str += branch >> std::vector<Block>({merge}); in GetUnreachableContinueUnreachableLoopInst()
1063 Block merge("merge", SpvOpUnreachable); in GetUnreachableMergeWithComplexBody() local
1069 merge.AppendBody("OpStore %dummy %one\n"); in GetUnreachableMergeWithComplexBody()
1078 branch.AppendBody("OpSelectionMerge %merge None\n"); in GetUnreachableMergeWithComplexBody()
1080 str += nameOps("branch", "merge", std::make_pair("func", "Main")); in GetUnreachableMergeWithComplexBody()
1089 str += merge; in GetUnreachableMergeWithComplexBody()
1117 Block merge("merge", SpvOpReturn); in GetUnreachableContinueWithComplexBody() local
1134 branch.AppendBody("OpLoopMerge %merge %target None\n"); in GetUnreachableContinueWithComplexBody()
1136 str += nameOps("branch", "merge", "target", std::make_pair("func", "Main")); in GetUnreachableContinueWithComplexBody()
1142 str += branch >> std::vector<Block>({merge}); in GetUnreachableContinueWithComplexBody()
1143 str += merge; in GetUnreachableContinueWithComplexBody()
1174 Block merge("merge", SpvOpUnreachable); in GetUnreachableMergeWithBranchUse() local
1185 branch.AppendBody("OpSelectionMerge %merge None\n"); in GetUnreachableMergeWithBranchUse()
1187 str += nameOps("branch", "merge", std::make_pair("func", "Main")); in GetUnreachableMergeWithBranchUse()
1193 str += t >> merge; in GetUnreachableMergeWithBranchUse()
1195 str += merge; in GetUnreachableMergeWithBranchUse()
1224 Block merge("merge", SpvOpUnreachable); in GetUnreachableMergeWithMultipleUses() local
1236 branch.AppendBody("OpSelectionMerge %merge None\n"); in GetUnreachableMergeWithMultipleUses()
1237 duplicate.AppendBody("OpSelectionMerge %merge None\n"); in GetUnreachableMergeWithMultipleUses()
1240 str += nameOps("branch", "merge", std::make_pair("func", "Main")); in GetUnreachableMergeWithMultipleUses()
1249 str += merge; in GetUnreachableMergeWithMultipleUses()
1261 HasSubstr("is already a merge block for another header")); in TEST_P()
1272 HasSubstr("is already a merge block for another header")); in TEST_F()
1283 Block merge("merge", SpvOpReturn); in GetUnreachableContinueWithBranchUse() local
1300 branch.AppendBody("OpLoopMerge %merge %target None\n"); in GetUnreachableContinueWithBranchUse()
1302 str += nameOps("branch", "merge", "target", std::make_pair("func", "Main")); in GetUnreachableContinueWithBranchUse()
1308 str += branch >> std::vector<Block>({merge}); in GetUnreachableContinueWithBranchUse()
1309 str += merge; in GetUnreachableContinueWithBranchUse()
1338 Block merge("merge", SpvOpReturn); in GetReachableMergeAndContinue() local
1346 t >> merge; in GetReachableMergeAndContinue()
1356 branch.AppendBody("OpLoopMerge %merge %target None\n"); in GetReachableMergeAndContinue()
1361 str += nameOps("branch", "merge", "target", "body", "t", "f", in GetReachableMergeAndContinue()
1371 str += merge; in GetReachableMergeAndContinue()
1397 Block merge("merge", SpvOpReturn); in GetUnreachableMergeAndContinue() local
1413 branch.AppendBody("OpLoopMerge %merge %target None\n"); in GetUnreachableMergeAndContinue()
1418 str += nameOps("branch", "merge", "target", "body", "t", "f", in GetUnreachableMergeAndContinue()
1428 str += merge; in GetUnreachableMergeAndContinue()
1447 HasSubstr("unreachable merge-blocks must terminate with OpUnreachable")); in TEST_F()
1496 Block merge("merge"); in GetUnreachableBranch() local
1501 unreachable.AppendBody("OpSelectionMerge %merge None\n"); in GetUnreachableBranch()
1517 str += unreachablechildt >> merge; in GetUnreachableBranch()
1518 str += unreachablechildf >> merge; in GetUnreachableBranch()
1519 str += merge >> exit; in GetUnreachableBranch()
1762 Block merge("merge", SpvOpReturn); in TEST_P() local
1765 if (is_shader) loop.SetBody("OpLoopMerge %merge %back0 None\n"); in TEST_P()
1775 str += merge; in TEST_P()
1798 Block merge("merge", SpvOpReturn); in TEST_P() local
1802 if (is_shader) loop.SetBody("OpLoopMerge %merge %cheader None\n"); in TEST_P()
1809 str += loop >> std::vector<Block>({cheader, merge}); in TEST_P()
1813 str += merge; in TEST_P()
1834 Block merge("merge", SpvOpReturn); in TEST_P() local
1837 if (is_shader) loop.SetBody("OpLoopMerge %merge %loop None\n"); in TEST_P()
1844 str += loop >> std::vector<Block>({cont, merge}); in TEST_P()
1845 str += cont >> std::vector<Block>({loop, merge}); in TEST_P()
1846 str += merge; in TEST_P()
1868 Block merge("merge"); in TEST_P() local
1872 if (is_shader) loop.SetBody("OpLoopMerge %merge %loop None\n"); in TEST_P()
1879 str += loop >> std::vector<Block>({cont, merge}); in TEST_P()
1881 str += merge >> exit; in TEST_P()
2008 // The nested construct has an unreachable merge block. In the in TEST_P()
2009 // augmented CFG that merge block in TEST_P()
2042 // The continue construct cannot be the merge target of a nested selection in TEST_P()
2051 Block merge("merge", SpvOpReturn); in TEST_P() local
2055 loop.SetBody("OpLoopMerge %merge %if_merge None\n"); in TEST_P()
2061 nameOps("entry", "loop", "if_head", "if_true", "if_merge", "merge") + in TEST_P()
2068 str += if_merge >> std::vector<Block>({loop, merge}); in TEST_P()
2069 str += merge; in TEST_P()
2079 "by 2[%loop], but its merge block 5[%if_merge] is not")); in TEST_P()
2092 Block merge("merge", SpvOpReturn); in TEST_P() local
2096 loop.SetBody("OpLoopMerge %merge %latch None\n"); in TEST_P()
2100 nameOps("entry", "loop", "latch", "merge") + in TEST_P()
2105 str += loop >> std::vector<Block>({latch, merge}); in TEST_P()
2107 str += merge; in TEST_P()
2126 Block merge("merge", SpvOpReturn); in TEST_P() local
2130 loop.SetBody("OpLoopMerge %merge %loop None\n"); in TEST_P()
2134 nameOps("entry", "loop", "latch", "merge") + in TEST_P()
2141 str += merge; in TEST_P()
2225 OpSelectionMerge %merge None in TEST_F()
2226 OpBranchConditional %true %then %merge in TEST_F()
2227 %merge = OpLabel in TEST_F()
2592 "corresponding merge, outer loop merge or outer loop " in TEST_F()
2645 OpSelectionMerge %merge None in TEST_F()
2650 OpBranch %merge in TEST_F()
2651 %merge = OpLabel in TEST_F()
2678 OpSelectionMerge %merge None in TEST_F()
2683 OpBranch %merge in TEST_F()
2684 %merge = OpLabel in TEST_F()
2712 OpSelectionMerge %merge None in TEST_F()
2719 OpBranch %merge in TEST_F()
2720 %merge = OpLabel in TEST_F()
2743 OpSelectionMerge %merge None in TEST_F()
2750 OpBranch %merge in TEST_F()
2751 %merge = OpLabel in TEST_F()
3189 HasSubstr("Merge Block 1[%undef] must be an OpLabel")); in TEST_F()
3240 HasSubstr("Merge Block and Continue Target must be different ids")); in TEST_F()
3427 HasSubstr("Merge Block may not be the block containing the OpLoopMerge")); in TEST_F()
3919 OpSelectionMerge %merge None in TEST_F()
3920 OpBranchConditional %undef_bool %merge %b1 in TEST_F()
3922 OpSwitch %undef_int %b2 0 %b2 1 %merge 2 %b2 in TEST_F()
3924 OpBranch %merge in TEST_F()
3925 %merge = OpLabel in TEST_F()
4007 OpSelectionMerge %merge None in TEST_F()
4008 OpSwitch %int_0 %merge 1 %b1 in TEST_F()
4010 OpBranchConditional %undef %merge %b2 in TEST_F()
4012 OpBranch %merge in TEST_F()
4013 %merge = OpLabel in TEST_F()
4035 OpSelectionMerge %merge None in TEST_F()
4040 OpBranch %merge in TEST_F()
4042 OpBranch %merge in TEST_F()
4043 %merge = OpLabel in TEST_F()
4096 OpSelectionMerge %merge None in TEST_F()
4103 OpBranch %merge in TEST_F()
4105 OpBranch %merge in TEST_F()
4106 %merge = OpLabel in TEST_F()
4150 "1[%loop], but its merge block 2[%continue] is not")); in TEST_F()
4187 "1[%loop], but its merge block 2[%continue] is not")); in TEST_F()