Lines Matching refs:str
102 out << ss.str();
131 return out.str();
195 std::string str = R"(
217 CompileSuccessfully(str);
218 ASSERT_EQ(SPV_SUCCESS, ValidateInstructions()) << str;
233 std::string str = R"(
263 CompileSuccessfully(str);
265 << str << getDiagnosticString();
280 std::string str = GetDefaultHeader(GetParam()) +
286 str += entry >> loop;
287 str += loop >> std::vector<Block>({cont, merge});
288 str += cont >> loop;
289 str += merge;
290 str += "OpFunctionEnd\n";
292 CompileSuccessfully(str);
303 std::string str = GetDefaultHeader(GetParam()) +
306 str += entry >> cont;
307 str += cont >> exit;
308 str += exit;
309 str += "OpFunctionEnd\n";
311 CompileSuccessfully(str);
323 std::string str = GetDefaultHeader(GetParam()) +
327 str += entry >> cont;
328 str += cont >> exit;
329 str += exit;
330 str += "OpFunctionEnd\n";
332 CompileSuccessfully(str);
348 std::string str = GetDefaultHeader(GetParam()) +
353 str += entry >> loop;
355 str += loop >> std::vector<Block>({merge, loop});
356 str += merge;
357 str += "OpFunctionEnd\n";
359 CompileSuccessfully(str);
373 std::string str = GetDefaultHeader(GetParam()) +
378 str += entry >> branch;
379 str += cont >> merge; // cont appears before its dominator
380 str += branch >> std::vector<Block>({cont, merge});
381 str += merge;
382 str += "OpFunctionEnd\n";
384 CompileSuccessfully(str);
405 std::string str = GetDefaultHeader(GetParam()) +
410 str += entry >> loop;
411 str += loop >> selection;
412 str += selection >> std::vector<Block>({loop, merge});
413 str += merge;
414 str += "OpFunctionEnd\n";
416 CompileSuccessfully(str);
441 std::string str = GetDefaultHeader(GetParam()) +
446 str += entry >> selection;
447 str += selection >> std::vector<Block>({merge, loop});
448 str += loop >> std::vector<Block>({loop, merge});
449 str += merge;
450 str += "OpFunctionEnd\n";
452 CompileSuccessfully(str);
468 std::string str = GetDefaultHeader(GetParam()) +
473 str += entry >> bad;
474 str += bad >> entry; // Cannot target entry block
475 str += end;
476 str += "OpFunctionEnd\n";
478 CompileSuccessfully(str);
492 std::string str = GetDefaultHeader(GetParam()) +
497 str += entry >> bad;
498 str +=
500 str += end;
501 str += "OpFunctionEnd\n";
503 CompileSuccessfully(str);
518 std::string str = GetDefaultHeader(GetParam()) +
523 str += entry >> bad;
524 str += bad >> std::vector<Block>({entry, exit}); // cannot target entry block
525 str += exit;
526 str += "OpFunctionEnd\n";
528 CompileSuccessfully(str);
547 std::string str = GetDefaultHeader(GetParam()) +
552 str += entry >> bad;
553 str += bad >> std::vector<Block>({t, entry});
554 str += merge >> end;
555 str += end;
556 str += "OpFunctionEnd\n";
558 CompileSuccessfully(str);
580 std::string str = GetDefaultHeader(GetParam()) +
585 str += entry >> bad;
586 str += bad >> std::vector<Block>({def, block1, block2, block3, entry});
587 str += def >> merge;
588 str += block1 >> merge;
589 str += block2 >> merge;
590 str += block3 >> merge;
591 str += merge >> end;
592 str += end;
593 str += "OpFunctionEnd\n";
595 CompileSuccessfully(str);
616 std::string str = GetDefaultHeader(GetParam()) +
621 str += entry >> middle;
622 str += middle >> std::vector<Block>({end, middle2});
623 str += end;
624 str += "OpFunctionEnd\n";
626 str += "%func2 = OpFunction %voidt None %funct\n";
627 str += entry2 >> middle2;
628 str += middle2 >> end2;
629 str += end2;
630 str += "OpFunctionEnd\n";
632 CompileSuccessfully(str);
652 std::string str = GetDefaultHeader(GetParam()) +
657 str += head >> std::vector<Block>({exit, exit});
658 str += exit;
659 str += "OpFunctionEnd\n";
661 CompileSuccessfully(str);
672 ASSERT_EQ(SPV_SUCCESS, ValidateInstructions()) << str;
688 std::string str = header;
689 str += nameOps("branch", "merge", std::make_pair("func", "Main"));
690 str += types_consts() + "%func = OpFunction %voidt None %funct\n";
691 str += entry >> branch;
692 str += branch >> std::vector<Block>({t, f});
693 str += t;
694 str += f;
695 str += merge;
696 str += "OpFunctionEnd\n";
698 return str;
716 std::string str = header;
720 str += nameOps("branch", "merge", std::make_pair("func", "Main"));
721 str += types_consts();
722 str += "%func = OpFunction %voidt None %funct\n";
723 str += entry >> branch;
724 str += branch >> std::vector<Block>({t, f});
725 str += t;
726 str += f;
727 str += merge;
728 str += "OpFunctionEnd\n";
730 return str;
762 std::string str = header;
766 str += nameOps("branch", "merge", "target", std::make_pair("func", "Main"));
767 str += types_consts();
768 str += "%func = OpFunction %voidt None %funct\n";
769 str += entry >> branch;
770 str += branch >> std::vector<Block>({merge});
771 str += merge;
772 str += target;
773 str += "OpFunctionEnd\n";
775 return str;
827 std::string str = header;
831 str += nameOps("branch", "merge", std::make_pair("func", "Main"));
832 str += types_consts();
833 str += "%func = OpFunction %voidt None %funct\n";
834 str += body;
835 str += merge;
836 str += entry >> branch;
837 str += branch >> std::vector<Block>({t, f});
838 str += t;
839 str += f;
840 str += "OpFunctionEnd\n";
842 return str;
861 std::string str = header;
865 str += nameOps("branch", "merge", "target", std::make_pair("func", "Main"));
866 str += types_consts();
867 str += "%func = OpFunction %voidt None %funct\n";
868 str += body;
869 str += target;
870 str += merge;
871 str += entry >> branch;
872 str += branch >> std::vector<Block>({merge});
873 str += "OpFunctionEnd\n";
875 return str;
896 std::string str = header;
900 str += nameOps("branch", "merge", std::make_pair("func", "Main"));
901 str += types_consts();
902 str += "%intptrt = OpTypePointer Function %intt\n";
903 str += "%func = OpFunction %voidt None %funct\n";
904 str += entry >> branch;
905 str += branch >> std::vector<Block>({t, f});
906 str += t;
907 str += f;
908 str += merge;
909 str += "OpFunctionEnd\n";
911 return str;
932 std::string str = header;
936 str += nameOps("branch", "merge", "target", std::make_pair("func", "Main"));
937 str += types_consts();
938 str += "%intptrt = OpTypePointer Function %intt\n";
939 str += "%func = OpFunction %voidt None %funct\n";
940 str += entry >> branch;
941 str += branch >> std::vector<Block>({merge});
942 str += merge;
943 str += target;
944 str += "OpFunctionEnd\n";
946 return str;
965 std::string str = header;
969 str += nameOps("branch", "merge", std::make_pair("func", "Main"));
970 str += types_consts();
971 str += "%func = OpFunction %voidt None %funct\n";
972 str += entry >> branch;
973 str += branch >> std::vector<Block>({t, f});
974 str += t >> merge;
975 str += f;
976 str += merge;
977 str += "OpFunctionEnd\n";
979 return str;
999 std::string str = header;
1005 str += nameOps("branch", "merge", std::make_pair("func", "Main"));
1006 str += types_consts();
1007 str += "%func = OpFunction %voidt None %funct\n";
1008 str += entry >> branch;
1009 str += branch >> std::vector<Block>({t, f});
1010 str += duplicate >> std::vector<Block>({t, f});
1011 str += t;
1012 str += f;
1013 str += merge;
1014 str += "OpFunctionEnd\n";
1016 return str;
1042 std::string str = header;
1046 str += nameOps("branch", "merge", "target", std::make_pair("func", "Main"));
1047 str += types_consts();
1048 str += "%intptrt = OpTypePointer Function %intt\n";
1049 str += "%func = OpFunction %voidt None %funct\n";
1050 str += entry >> branch;
1051 str += branch >> std::vector<Block>({merge});
1052 str += merge;
1053 str += target;
1054 str += "OpFunctionEnd\n";
1056 return str;
1080 std::string str = header;
1086 str += nameOps("branch", "merge", "target", "body", "t", "f",
1088 str += types_consts();
1089 str += "%func = OpFunction %voidt None %funct\n";
1090 str += entry >> branch;
1091 str += branch >> std::vector<Block>({body});
1092 str += body >> std::vector<Block>({t, f});
1093 str += t;
1094 str += f;
1095 str += merge;
1096 str += target;
1097 str += "OpFunctionEnd\n";
1099 return str;
1122 std::string str = header;
1128 str += nameOps("branch", "merge", "pre_target", "target", "body", "t", "f",
1130 str += types_consts();
1131 str += "%func = OpFunction %voidt None %funct\n";
1132 str += entry >> branch;
1133 str += branch >> std::vector<Block>({body});
1134 str += body >> std::vector<Block>({t, f});
1135 str += t;
1136 str += f;
1137 str += merge;
1138 str += pre_target >> target;
1139 str += target;
1140 str += "OpFunctionEnd\n";
1142 return str;
1157 std::string str = header;
1158 str += nameOps("unreachable", "exit", std::make_pair("func", "Main"));
1159 str += types_consts();
1160 str += "%func = OpFunction %voidt None %funct\n";
1161 str += entry >> exit;
1162 str += unreachable >> exit;
1163 str += exit;
1164 str += "OpFunctionEnd\n";
1166 return str;
1188 std::string str = header;
1189 str += nameOps("unreachable", "exit", std::make_pair("func", "Main"));
1190 str += types_consts();
1191 str += "%func = OpFunction %voidt None %funct\n";
1193 str += entry >> exit;
1194 str +=
1196 str += unreachablechildt >> merge;
1197 str += unreachablechildf >> merge;
1198 str += merge >> exit;
1199 str += exit;
1200 str += "OpFunctionEnd\n";
1202 return str;
1211 std::string str = GetDefaultHeader(GetParam()) + std::string(types_consts()) +
1217 CompileSuccessfully(str);
1230 std::string str = GetDefaultHeader(GetParam()) + std::string(types_consts()) +
1233 str += entry >> loop;
1234 str += loop >> std::vector<Block>({loop, exit});
1235 str += exit;
1236 str += "OpFunctionEnd";
1238 CompileSuccessfully(str);
1259 std::string str =
1264 str += entry >> loop1;
1265 str += loop1 >> loop1_cont_break_block;
1266 str += loop1_cont_break_block >> std::vector<Block>({loop1_merge, loop2});
1267 str += loop2 >> std::vector<Block>({loop2, loop2_merge});
1268 str += loop2_merge >> loop1;
1269 str += loop1_merge >> exit;
1270 str += exit;
1271 str += "OpFunctionEnd";
1273 CompileSuccessfully(str);
1295 if_blocks.emplace_back("if" + ss.str(), spv::Op::OpBranchConditional);
1297 if_blocks[i].SetBody("OpSelectionMerge %if_merge" + ss.str() + " None\n");
1298 merge_blocks.emplace_back("if_merge" + ss.str(), spv::Op::OpBranch);
1300 std::string str = GetDefaultHeader(GetParam()) + std::string(types_consts()) +
1303 str += entry >> if_blocks[0];
1305 str +=
1308 str += if_blocks.back() >> std::vector<Block>({inner, merge_blocks.back()});
1309 str += inner >> merge_blocks.back();
1311 str += merge_blocks[i] >> merge_blocks[i - 1];
1313 str += merge_blocks[0];
1314 str += "OpFunctionEnd";
1316 CompileSuccessfully(str);
1336 std::string str =
1341 str += entry >> loop1;
1342 str += loop1 >> std::vector<Block>({loop2, exit});
1343 str += loop2 >> std::vector<Block>({loop2, loop2_merge});
1344 str += loop2_merge >> loop1_cont;
1345 str += loop1_cont >> std::vector<Block>({be_block, exit});
1346 str += be_block >> loop1;
1347 str += exit;
1348 str += "OpFunctionEnd";
1350 CompileSuccessfully(str);
1376 std::string str = GetDefaultHeader(GetParam()) + nameOps("split", "f") +
1380 str += entry >> split;
1381 str += split >> std::vector<Block>({t, f});
1382 str += t >> exit;
1383 str += f >> split;
1384 str += exit;
1385 str += "OpFunctionEnd";
1387 CompileSuccessfully(str);
1409 std::string str = GetDefaultHeader(GetParam()) + nameOps("split") +
1413 str += entry >> split;
1414 str += split >> std::vector<Block>({split, exit});
1415 str += exit;
1416 str += "OpFunctionEnd";
1418 CompileSuccessfully(str);
1442 std::string str = GetDefaultHeader(GetParam()) +
1446 str += entry >> loop;
1447 str += loop >> std::vector<Block>({back0, back1});
1448 str += back0 >> loop;
1449 str += back1 >> loop;
1450 str += merge;
1451 str += "OpFunctionEnd";
1453 CompileSuccessfully(str);
1461 << str;
1479 std::string str = GetDefaultHeader(GetParam()) +
1483 str += entry >> loop;
1484 str += loop >> std::vector<Block>({cheader, merge});
1485 str += cheader >> std::vector<Block>({exit, be_block});
1486 str += exit; // Branches out of a continue construct
1487 str += be_block >> loop;
1488 str += merge;
1489 str += "OpFunctionEnd";
1491 CompileSuccessfully(str);
1516 std::string str = GetDefaultHeader(GetParam()) + nameOps("cont", "loop") +
1520 str += entry >> loop;
1521 str += loop >> std::vector<Block>({cont, merge});
1522 str += cont >> std::vector<Block>({loop, merge});
1523 str += merge;
1524 str += "OpFunctionEnd";
1526 CompileSuccessfully(str);
1535 << str;
1552 std::string str = GetDefaultHeader(GetParam()) + nameOps("cont", "loop") +
1556 str += entry >> loop;
1557 str += loop >> std::vector<Block>({cont, merge});
1558 str += cont >> std::vector<Block>({loop, exit});
1559 str += merge >> exit;
1560 str += exit;
1561 str += "OpFunctionEnd";
1563 CompileSuccessfully(str);
1585 std::string str = R"(
1611 str += entry >> std::vector<Block>({def, case0, case1, case2});
1612 str += case1 >> phi;
1613 str += def;
1614 str += phi;
1615 str += case0 >> phi;
1616 str += case2 >> phi;
1617 str += "OpFunctionEnd";
1619 CompileSuccessfully(str);
1624 std::string str = R"(
1640 CompileSuccessfully(str);
1650 std::string str = R"(
1680 CompileSuccessfully(str);
1704 std::string str = GetDefaultHeader(GetParam()) +
1708 str += entry >> std::vector<Block>({inner_head, exit});
1709 str += inner_head >> std::vector<Block>({inner_true, inner_false});
1710 str += inner_true;
1711 str += inner_false;
1712 str += inner_merge >> exit;
1713 str += exit;
1714 str += "OpFunctionEnd";
1716 CompileSuccessfully(str);
1738 std::string str =
1743 str += entry >> loop;
1744 str += loop >> if_head;
1745 str += if_head >> std::vector<Block>({if_true, if_merge});
1746 str += if_true >> if_merge;
1747 str += if_merge >> std::vector<Block>({loop, merge});
1748 str += merge;
1749 str += "OpFunctionEnd";
1751 CompileSuccessfully(str);
1779 std::string str = GetDefaultHeader(GetParam()) +
1784 str += entry >> loop;
1785 str += loop >> std::vector<Block>({latch, merge});
1786 str += latch >> std::vector<Block>({loop, loop}); // This is the key
1787 str += merge;
1788 str += "OpFunctionEnd";
1790 CompileSuccessfully(str);
1792 << str << getDiagnosticString();