Commit 51692cc0 authored by Mccaskey, Alex's avatar Mccaskey, Alex
Browse files

remove old tester

parent 163389d5
Loading
Loading
Loading
Loading

mlir/tests/CMakeLists.txt

deleted100644 → 0
+0 −29
Original line number Diff line number Diff line
link_directories(${XACC_ROOT}/lib)

get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
message(STATUS "DIALECT LIBS: ${dialect_libs}")
set(LIBS
        ${dialect_libs}
        ${conversion_libs}
        MLIROptLib
        quantum-dialect
        MLIRTargetLLVMIR
        MLIRExecutionEngine
        )

add_llvm_executable(QasmTester QasmTester.cpp)

target_compile_options(QasmTester PUBLIC "-fexceptions")

target_compile_features(QasmTester
                        PUBLIC
                        cxx_std_17)
target_include_directories(QasmTester PRIVATE . ../dialect)

llvm_update_compile_flags(QasmTester)
target_link_libraries(QasmTester PUBLIC quantum-to-llvm-lowering staq-mlir-visitor )

set_target_properties(QasmTester
                        PROPERTIES INSTALL_RPATH "${MLIR_INSTALL_DIR}/lib:${CMAKE_BINARY_DIR}/mlir/parsers/openqasm:${CMAKE_BINARY_DIR}/lib")
mlir_check_all_link_libraries(QasmTester)

mlir/tests/QasmTester.cpp

deleted100644 → 0
+0 −91
Original line number Diff line number Diff line

#include "llvm/Support/TargetSelect.h"
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
#include "mlir/Dialect/StandardOps/IR/Ops.h"
#include "mlir/Dialect/Vector/VectorOps.h"
#include "mlir/ExecutionEngine/ExecutionEngine.h"
#include "mlir/ExecutionEngine/OptUtils.h"
#include "quantum_to_llvm.hpp"
#include "staq_parser.hpp"

using namespace mlir;
using namespace staq;

int main(int argc, char **argv) {
  llvm::cl::ParseCommandLineOptions(argc, argv, "openqasm compiler\n");

  std::string lineText = R"#(OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
h q[0];
cx q[0], q[1];
CX q[1], q[0];
U(1.1,2.2,3.3) q[1];
rx(2.333) q[0];
gate foo q {
  ry(3.3) q;
}
foo q[0];
qreg r[3];
ccx r[0], r[1], r[2];
creg c[2];
measure q -> c;
)#";

  std::cout << "Original:\n" << lineText << "\n";
  // Parse the OpenQasm with Staq
  ast::ptr<ast::Program> prog;
  try {
    prog = parser::parse_string(lineText);
    transformations::inline_ast(*prog);
    transformations::desugar(*prog);
  } catch (std::exception &e) {
    std::stringstream ss;
    std::cout << e.what() << "\n";
  }

  std::cout << "After parsing:\n" << *prog << "\n";
  mlir::MLIRContext context;
  context.loadDialect<mlir::quantum::QuantumDialect, mlir::StandardOpsDialect,
                      mlir::vector::VectorDialect>();

  // Generate the MLIR using a Staq Visitor
  qasm_parser::StaqToMLIR visitor(context);
  visitor.visit(*prog);
  visitor.addReturn();
  auto module = visitor.module();

  std::cout << "MLIR + Quantum Dialect:\n";
  module->dump();

  // Create the PassManager for lowering to LLVM MLIR and run it
  mlir::PassManager pm(&context);
  pm.addPass(std::make_unique<qcor::QuantumToLLVMLoweringPass>());
  auto module_op = module.getOperation();
  if (mlir::failed(pm.run(module_op))) {
    std::cout << "Pass Manager Failed\n";
    return 1;
  }
  std::cout << "Lowered to LLVM MLIR Dialect:\n";
  module_op->dump();

  // Now lower MLIR to LLVM IR
  llvm::LLVMContext llvmContext;
  auto llvmModule = mlir::translateModuleToLLVMIR(module, llvmContext);
  std::cout << "Lowered to LLVM IR:\n";
  llvmModule->dump();

  // Optimize the LLVM IR
  llvm::InitializeNativeTarget();
  llvm::InitializeNativeTargetAsmPrinter();
  auto optPipeline = mlir::makeOptimizingTransformer(3, 0, nullptr);
  if (auto err = optPipeline(llvmModule.get())) {
    llvm::errs() << "Failed to optimize LLVM IR " << err << "\n";
    return -1;
  }
  std::cout << "Optimized LLVM IR:\n";
  llvmModule->dump();

  
  return 0;
}