Loading mlir/CMakeLists.txt +3 −1 Original line number Diff line number Diff line Loading @@ -15,13 +15,15 @@ include(TableGen) include(AddLLVM) include(AddMLIR) include(HandleLLVMOptions) message(STATUS "MLIR HELLO ${LLVM_INCLUDE_DIRS}") include_directories(${LLVM_INCLUDE_DIRS}) include_directories(${MLIR_INCLUDE_DIRS}) include_directories(${PROJECT_SOURCE_DIR}/include) include_directories(${PROJECT_BINARY_DIR}/include) link_directories(${LLVM_BUILD_LIBRARY_DIR}) get_filename_component(MLIR_INSTALL_DIR "${MLIR_DIR}/../../.." ABSOLUTE) add_subdirectory(dialect) add_subdirectory(parsers) add_subdirectory(transforms) Loading mlir/dialect/quantum_dialect.cpp +234 −146 File changed.Preview size limit exceeded, changes collapsed. Show changes mlir/parsers/openqasm/staq_parser.cpp +9 −27 Original line number Diff line number Diff line #include "staq_parser.hpp" #include "mlir/Dialect/LLVMIR/LLVMDialect.h" Loading @@ -7,6 +6,10 @@ namespace qasm_parser { void StaqToMLIR::visit(Program &prog) { prog.foreach_stmt([this](auto &stmt) { stmt.accept(*this); }); } StaqToMLIR::StaqToMLIR(mlir::MLIRContext &context) : builder(&context) { theModule = mlir::ModuleOp::create(builder.getUnknownLoc()); Loading @@ -25,22 +28,11 @@ void StaqToMLIR::addReturn() { builder.create<mlir::ReturnOp>(builder.getUnknownLoc()); } void StaqToMLIR::visit(VarAccess &) {} // Expressions void StaqToMLIR::visit(BExpr &) {} void StaqToMLIR::visit(UExpr &) {} void StaqToMLIR::visit(PiExpr &) {} void StaqToMLIR::visit(IntExpr &) {} void StaqToMLIR::visit(RealExpr &r) {} void StaqToMLIR::visit(VarExpr &v) {} void StaqToMLIR::visit(ResetStmt &) {} void StaqToMLIR::visit(IfStmt &) {} void StaqToMLIR::visit(BarrierGate &) {} void StaqToMLIR::visit(GateDecl &) {} void StaqToMLIR::visit(OracleDecl &) {} void StaqToMLIR::visit(RegisterDecl &d) { if (d.is_quantum()) { std::uint64_t size = d.size(); std::int64_t size = d.size(); auto name = d.id(); auto pos = d.pos(); Loading @@ -64,11 +56,6 @@ void StaqToMLIR::visit(RegisterDecl &d) { } } void StaqToMLIR::visit(AncillaDecl &) {} void StaqToMLIR::visit(Program &prog) { // Program body prog.foreach_stmt([this](auto &stmt) { stmt.accept(*this); }); } void StaqToMLIR::visit(MeasureStmt &m) { auto pos = m.pos(); auto line = pos.get_linenum(); Loading @@ -79,10 +66,8 @@ void StaqToMLIR::visit(MeasureStmt &m) { builder.getFileLineColLoc(builder.getIdentifier(fname), line, col); auto str_attr = builder.getStringAttr("mz"); // params auto dataType = mlir::VectorType::get({1}, builder.getF64Type()); std::vector<double> v{0.0}; auto params_arr_ref = llvm::makeArrayRef(v); mlir::DenseElementsAttr params_dataAttribute; std::vector<mlir::Value> qubits_for_inst; Loading Loading @@ -154,9 +139,6 @@ void StaqToMLIR::visit(CNOTGate &g) { auto str_attr = builder.getStringAttr("cx"); // params // auto dataType = mlir::VectorType::get({1}, builder.getF64Type()); // std::vector<double> v{0.0}; // auto params_arr_ref = llvm::makeArrayRef(v); mlir::DenseElementsAttr params_dataAttribute; // ctrl qbits Loading mlir/parsers/openqasm/staq_parser.hpp +18 −14 Original line number Diff line number Diff line #pragma once #pragma GCC diagnostic ignored "-Wsuggest-override" #pragma GCC diagnostic ignored "-Wdeprecated-copy" #pragma GCC diagnostic ignored "-Wunused-function" #include "ast/ast.hpp" #include "ast/traversal.hpp" Loading @@ -10,6 +13,9 @@ #include "mlir/IR/Verifier.h" #include "parser/parser.hpp" #include "quantum_dialect.hpp" #include "optimization/simplify.hpp" #include "transformations/desugar.hpp" #include "transformations/inline.hpp" using namespace staq::ast; Loading @@ -24,27 +30,25 @@ class StaqToMLIR : public staq::ast::Visitor { public: StaqToMLIR(mlir::MLIRContext &context); mlir::ModuleOp module() {return theModule;} void visit(VarAccess &) override; // Expressions void visit(BExpr &) override; void visit(UExpr &) override; void visit(PiExpr &) override; void visit(IntExpr &) override; void visit(RealExpr &r) override; void visit(VarExpr &v) override; void visit(ResetStmt &) override; void visit(IfStmt &) override; void visit(BarrierGate &) override; void visit(VarAccess &) override {} void visit(BExpr &) override {} void visit(UExpr &) override {} void visit(PiExpr &) override {} void visit(IntExpr &) override {} void visit(RealExpr &r) override {} void visit(VarExpr &v) override {} void visit(ResetStmt &) override {} void visit(IfStmt &) override {} void visit(BarrierGate &) override {} void visit(GateDecl &) override; void visit(OracleDecl &) override; void visit(OracleDecl &) override {} void visit(RegisterDecl &) override; void visit(AncillaDecl &) override; void visit(AncillaDecl &) override {} void visit(Program &prog) override; void visit(MeasureStmt &m) override; void visit(UGate &u) override; void visit(CNOTGate &cx) override; void visit(DeclaredGate &g) override; void addReturn(); }; } // namespace qasm_parser No newline at end of file mlir/tests/CMakeLists.txt +1 −1 Original line number Diff line number Diff line Loading @@ -25,5 +25,5 @@ llvm_update_compile_flags(QasmTester) target_link_libraries(QasmTester PUBLIC quantum-to-llvm-lowering staq-mlir-visitor ) set_target_properties(QasmTester PROPERTIES INSTALL_RPATH "/home/cades/.mlir/lib:${CMAKE_BINARY_DIR}/mlir/parsers/openqasm:${CMAKE_BINARY_DIR}/lib") PROPERTIES INSTALL_RPATH "${MLIR_INSTALL_DIR}/lib:${CMAKE_BINARY_DIR}/mlir/parsers/openqasm:${CMAKE_BINARY_DIR}/lib") mlir_check_all_link_libraries(QasmTester) Loading
mlir/CMakeLists.txt +3 −1 Original line number Diff line number Diff line Loading @@ -15,13 +15,15 @@ include(TableGen) include(AddLLVM) include(AddMLIR) include(HandleLLVMOptions) message(STATUS "MLIR HELLO ${LLVM_INCLUDE_DIRS}") include_directories(${LLVM_INCLUDE_DIRS}) include_directories(${MLIR_INCLUDE_DIRS}) include_directories(${PROJECT_SOURCE_DIR}/include) include_directories(${PROJECT_BINARY_DIR}/include) link_directories(${LLVM_BUILD_LIBRARY_DIR}) get_filename_component(MLIR_INSTALL_DIR "${MLIR_DIR}/../../.." ABSOLUTE) add_subdirectory(dialect) add_subdirectory(parsers) add_subdirectory(transforms) Loading
mlir/dialect/quantum_dialect.cpp +234 −146 File changed.Preview size limit exceeded, changes collapsed. Show changes
mlir/parsers/openqasm/staq_parser.cpp +9 −27 Original line number Diff line number Diff line #include "staq_parser.hpp" #include "mlir/Dialect/LLVMIR/LLVMDialect.h" Loading @@ -7,6 +6,10 @@ namespace qasm_parser { void StaqToMLIR::visit(Program &prog) { prog.foreach_stmt([this](auto &stmt) { stmt.accept(*this); }); } StaqToMLIR::StaqToMLIR(mlir::MLIRContext &context) : builder(&context) { theModule = mlir::ModuleOp::create(builder.getUnknownLoc()); Loading @@ -25,22 +28,11 @@ void StaqToMLIR::addReturn() { builder.create<mlir::ReturnOp>(builder.getUnknownLoc()); } void StaqToMLIR::visit(VarAccess &) {} // Expressions void StaqToMLIR::visit(BExpr &) {} void StaqToMLIR::visit(UExpr &) {} void StaqToMLIR::visit(PiExpr &) {} void StaqToMLIR::visit(IntExpr &) {} void StaqToMLIR::visit(RealExpr &r) {} void StaqToMLIR::visit(VarExpr &v) {} void StaqToMLIR::visit(ResetStmt &) {} void StaqToMLIR::visit(IfStmt &) {} void StaqToMLIR::visit(BarrierGate &) {} void StaqToMLIR::visit(GateDecl &) {} void StaqToMLIR::visit(OracleDecl &) {} void StaqToMLIR::visit(RegisterDecl &d) { if (d.is_quantum()) { std::uint64_t size = d.size(); std::int64_t size = d.size(); auto name = d.id(); auto pos = d.pos(); Loading @@ -64,11 +56,6 @@ void StaqToMLIR::visit(RegisterDecl &d) { } } void StaqToMLIR::visit(AncillaDecl &) {} void StaqToMLIR::visit(Program &prog) { // Program body prog.foreach_stmt([this](auto &stmt) { stmt.accept(*this); }); } void StaqToMLIR::visit(MeasureStmt &m) { auto pos = m.pos(); auto line = pos.get_linenum(); Loading @@ -79,10 +66,8 @@ void StaqToMLIR::visit(MeasureStmt &m) { builder.getFileLineColLoc(builder.getIdentifier(fname), line, col); auto str_attr = builder.getStringAttr("mz"); // params auto dataType = mlir::VectorType::get({1}, builder.getF64Type()); std::vector<double> v{0.0}; auto params_arr_ref = llvm::makeArrayRef(v); mlir::DenseElementsAttr params_dataAttribute; std::vector<mlir::Value> qubits_for_inst; Loading Loading @@ -154,9 +139,6 @@ void StaqToMLIR::visit(CNOTGate &g) { auto str_attr = builder.getStringAttr("cx"); // params // auto dataType = mlir::VectorType::get({1}, builder.getF64Type()); // std::vector<double> v{0.0}; // auto params_arr_ref = llvm::makeArrayRef(v); mlir::DenseElementsAttr params_dataAttribute; // ctrl qbits Loading
mlir/parsers/openqasm/staq_parser.hpp +18 −14 Original line number Diff line number Diff line #pragma once #pragma GCC diagnostic ignored "-Wsuggest-override" #pragma GCC diagnostic ignored "-Wdeprecated-copy" #pragma GCC diagnostic ignored "-Wunused-function" #include "ast/ast.hpp" #include "ast/traversal.hpp" Loading @@ -10,6 +13,9 @@ #include "mlir/IR/Verifier.h" #include "parser/parser.hpp" #include "quantum_dialect.hpp" #include "optimization/simplify.hpp" #include "transformations/desugar.hpp" #include "transformations/inline.hpp" using namespace staq::ast; Loading @@ -24,27 +30,25 @@ class StaqToMLIR : public staq::ast::Visitor { public: StaqToMLIR(mlir::MLIRContext &context); mlir::ModuleOp module() {return theModule;} void visit(VarAccess &) override; // Expressions void visit(BExpr &) override; void visit(UExpr &) override; void visit(PiExpr &) override; void visit(IntExpr &) override; void visit(RealExpr &r) override; void visit(VarExpr &v) override; void visit(ResetStmt &) override; void visit(IfStmt &) override; void visit(BarrierGate &) override; void visit(VarAccess &) override {} void visit(BExpr &) override {} void visit(UExpr &) override {} void visit(PiExpr &) override {} void visit(IntExpr &) override {} void visit(RealExpr &r) override {} void visit(VarExpr &v) override {} void visit(ResetStmt &) override {} void visit(IfStmt &) override {} void visit(BarrierGate &) override {} void visit(GateDecl &) override; void visit(OracleDecl &) override; void visit(OracleDecl &) override {} void visit(RegisterDecl &) override; void visit(AncillaDecl &) override; void visit(AncillaDecl &) override {} void visit(Program &prog) override; void visit(MeasureStmt &m) override; void visit(UGate &u) override; void visit(CNOTGate &cx) override; void visit(DeclaredGate &g) override; void addReturn(); }; } // namespace qasm_parser No newline at end of file
mlir/tests/CMakeLists.txt +1 −1 Original line number Diff line number Diff line Loading @@ -25,5 +25,5 @@ llvm_update_compile_flags(QasmTester) target_link_libraries(QasmTester PUBLIC quantum-to-llvm-lowering staq-mlir-visitor ) set_target_properties(QasmTester PROPERTIES INSTALL_RPATH "/home/cades/.mlir/lib:${CMAKE_BINARY_DIR}/mlir/parsers/openqasm:${CMAKE_BINARY_DIR}/lib") PROPERTIES INSTALL_RPATH "${MLIR_INSTALL_DIR}/lib:${CMAKE_BINARY_DIR}/mlir/parsers/openqasm:${CMAKE_BINARY_DIR}/lib") mlir_check_all_link_libraries(QasmTester)