Loading handlers/token_collector/staq/staq_token_collector.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -53,7 +53,8 @@ static const std::map<std::string, std::string> gates{ {"z", "Z"}, {"h", "H"}, {"s", "S"}, {"sdg", "Sdg"}, {"t", "T"}, {"tdg", "Tdg"}, {"rx", "Rx"}, {"ry", "Ry"}, {"rz", "Rz"}, {"cz", "CZ"}, {"cy", "CY"}, {"swap", "Swap"}, {"ccx", "CCX"}, {"ch", "CH"}, {"crz", "CRZ"}, {"measure", "Measure"}}; {"ccx", "CCX"}, {"ch", "CH"}, {"crz", "CRZ"}, {"measure", "Measure"}, {"reset", "Reset"}}; void StaqTokenCollector::collect(clang::Preprocessor &PP, clang::CachedTokens &Toks, Loading handlers/token_collector/staq/tests/StaqTokenCollectorTester.in.cpp +25 −0 Original line number Diff line number Diff line Loading @@ -261,6 +261,31 @@ quantum::mz(c[3]); ss.str()); } TEST(StaqTokenCollectorTester, checkReset) { LexerHelper helper; auto [tokens, PP] = helper.Lex(R"#( creg c[1]; h q[0]; reset q[0]; reset q[1]; x q[0]; measure q[0] -> c[0];)#"); clang::CachedTokens cached; for (auto &t : tokens) { cached.push_back(t); } std::stringstream ss; auto xasm_tc = xacc::getService<qcor::TokenCollector>("staq"); xasm_tc->collect(*PP.get(), cached, {"q"}, ss); std::cout << "heres the test\n"; std::cout << ss.str() << "\n"; EXPECT_TRUE(ss.str().find("quantum::reset(q[0]);") != std::string::npos); EXPECT_TRUE(ss.str().find("quantum::reset(q[1]);") != std::string::npos); } int main(int argc, char **argv) { std::string xacc_config_install_dir = std::string(XACC_INSTALL_DIR); std::string qcor_root = std::string(QCOR_INSTALL_DIR); Loading handlers/token_collector/xasm/tests/XASMTokenCollectorTester.cpp +18 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,24 @@ beta_counter ++ ; ss.str()); } TEST(XASMTokenCollectorTester, checkReset) { LexerHelper helper; auto [tokens, PP] = helper.Lex("H(q[0]);\nReset(q[0]);\nRy(q[3], theta);"); clang::CachedTokens cached; for (auto &t : tokens) { cached.push_back(t); } std::stringstream ss; auto xasm_tc = xacc::getService<qcor::TokenCollector>("xasm"); xasm_tc->collect(*PP.get(), cached, {"q"}, ss); std::cout << "heres the test\n"; std::cout << ss.str() << "\n"; EXPECT_TRUE(ss.str().find("quantum::reset(q[0]);") != std::string::npos); } int main(int argc, char **argv) { std::string xacc_config_install_dir = std::string(XACC_INSTALL_DIR); std::string qcor_root = std::string(QCOR_INSTALL_DIR); Loading runtime/qrt/impls/nisq/tests/NisqQrtTester.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,23 @@ TEST(NisqQrtTester, checkExpInst) { EXPECT_EQ(evaled->toString(), ::quantum::qrt_impl->get_current_program()->toString()); } TEST(NisqQrtTester, checkResetInstSim) { ::quantum::initialize("qpp", "empty"); ::quantum::set_shots(1024); auto qreg = qalloc(1); qreg.setName("q"); ::quantum::h({"q", 0}); ::quantum::reset({"q", 0}); ::quantum::x({"q", 0}); ::quantum::mz({"q", 0}); std::cout << "HOWDY\n" << ::quantum::qrt_impl->get_current_program()->toString() << "\n"; ::quantum::submit(qreg.results()); qreg.print(); // Because of reset after H, qubit -> 0 then becomes 1 after X. EXPECT_EQ(qreg.counts()["1"], 1024); } int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); auto ret = RUN_ALL_TESTS(); Loading runtime/qrt/qrt_mapper.hpp +1 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,7 @@ public: void visit(Identity &i) override { addOneQubitGate("i", i); } void visit(U &u) override { addOneQubitGate("u3", u); } void visit(U1 &u1) override { addOneQubitGate("u1", u1); } void visit(Reset &r) override { addOneQubitGate("reset", r); } void visit(Circuit &circ) override { if (circ.name() == kernelName) { return; Loading Loading
handlers/token_collector/staq/staq_token_collector.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -53,7 +53,8 @@ static const std::map<std::string, std::string> gates{ {"z", "Z"}, {"h", "H"}, {"s", "S"}, {"sdg", "Sdg"}, {"t", "T"}, {"tdg", "Tdg"}, {"rx", "Rx"}, {"ry", "Ry"}, {"rz", "Rz"}, {"cz", "CZ"}, {"cy", "CY"}, {"swap", "Swap"}, {"ccx", "CCX"}, {"ch", "CH"}, {"crz", "CRZ"}, {"measure", "Measure"}}; {"ccx", "CCX"}, {"ch", "CH"}, {"crz", "CRZ"}, {"measure", "Measure"}, {"reset", "Reset"}}; void StaqTokenCollector::collect(clang::Preprocessor &PP, clang::CachedTokens &Toks, Loading
handlers/token_collector/staq/tests/StaqTokenCollectorTester.in.cpp +25 −0 Original line number Diff line number Diff line Loading @@ -261,6 +261,31 @@ quantum::mz(c[3]); ss.str()); } TEST(StaqTokenCollectorTester, checkReset) { LexerHelper helper; auto [tokens, PP] = helper.Lex(R"#( creg c[1]; h q[0]; reset q[0]; reset q[1]; x q[0]; measure q[0] -> c[0];)#"); clang::CachedTokens cached; for (auto &t : tokens) { cached.push_back(t); } std::stringstream ss; auto xasm_tc = xacc::getService<qcor::TokenCollector>("staq"); xasm_tc->collect(*PP.get(), cached, {"q"}, ss); std::cout << "heres the test\n"; std::cout << ss.str() << "\n"; EXPECT_TRUE(ss.str().find("quantum::reset(q[0]);") != std::string::npos); EXPECT_TRUE(ss.str().find("quantum::reset(q[1]);") != std::string::npos); } int main(int argc, char **argv) { std::string xacc_config_install_dir = std::string(XACC_INSTALL_DIR); std::string qcor_root = std::string(QCOR_INSTALL_DIR); Loading
handlers/token_collector/xasm/tests/XASMTokenCollectorTester.cpp +18 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,24 @@ beta_counter ++ ; ss.str()); } TEST(XASMTokenCollectorTester, checkReset) { LexerHelper helper; auto [tokens, PP] = helper.Lex("H(q[0]);\nReset(q[0]);\nRy(q[3], theta);"); clang::CachedTokens cached; for (auto &t : tokens) { cached.push_back(t); } std::stringstream ss; auto xasm_tc = xacc::getService<qcor::TokenCollector>("xasm"); xasm_tc->collect(*PP.get(), cached, {"q"}, ss); std::cout << "heres the test\n"; std::cout << ss.str() << "\n"; EXPECT_TRUE(ss.str().find("quantum::reset(q[0]);") != std::string::npos); } int main(int argc, char **argv) { std::string xacc_config_install_dir = std::string(XACC_INSTALL_DIR); std::string qcor_root = std::string(QCOR_INSTALL_DIR); Loading
runtime/qrt/impls/nisq/tests/NisqQrtTester.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,23 @@ TEST(NisqQrtTester, checkExpInst) { EXPECT_EQ(evaled->toString(), ::quantum::qrt_impl->get_current_program()->toString()); } TEST(NisqQrtTester, checkResetInstSim) { ::quantum::initialize("qpp", "empty"); ::quantum::set_shots(1024); auto qreg = qalloc(1); qreg.setName("q"); ::quantum::h({"q", 0}); ::quantum::reset({"q", 0}); ::quantum::x({"q", 0}); ::quantum::mz({"q", 0}); std::cout << "HOWDY\n" << ::quantum::qrt_impl->get_current_program()->toString() << "\n"; ::quantum::submit(qreg.results()); qreg.print(); // Because of reset after H, qubit -> 0 then becomes 1 after X. EXPECT_EQ(qreg.counts()["1"], 1024); } int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); auto ret = RUN_ALL_TESTS(); Loading
runtime/qrt/qrt_mapper.hpp +1 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,7 @@ public: void visit(Identity &i) override { addOneQubitGate("i", i); } void visit(U &u) override { addOneQubitGate("u3", u); } void visit(U1 &u1) override { addOneQubitGate("u1", u1); } void visit(Reset &r) override { addOneQubitGate("reset", r); } void visit(Circuit &circ) override { if (circ.name() == kernelName) { return; Loading