Commit c4bc05f9 authored by Mccaskey, Alex's avatar Mccaskey, Alex
Browse files

update mlir to use tblgen to auto-generate dialect and operations.

parent a9c78844
Loading
Loading
Loading
Loading
+33 −5
Original line number Diff line number Diff line
add_mlir_dialect_library(quantum-dialect
        quantum_dialect.cpp
	LINK_LIBS PUBLIC
	MLIRIR
	)
cmake_minimum_required(VERSION 3.13.4)
project(standalone-dialect LANGUAGES CXX C)

set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON)

set(CMAKE_CXX_STANDARD 14 CACHE STRING "C++ standard to conform to")

find_package(MLIR REQUIRED CONFIG)

message(STATUS "Using MLIRConfig.cmake in: ${MLIR_DIR}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")

set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/bin)
set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/lib)
set(MLIR_BINARY_DIR ${CMAKE_BINARY_DIR})

list(APPEND CMAKE_MODULE_PATH "${MLIR_CMAKE_DIR}")
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
include(TableGen)
include(AddLLVM)
include(AddMLIR)
include(HandleLLVMOptions)

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})
add_definitions(${LLVM_DEFINITIONS})

add_subdirectory(include)
add_subdirectory(lib)
+1 −0
Original line number Diff line number Diff line
add_subdirectory(Quantum)
+3 −0
Original line number Diff line number Diff line
add_mlir_dialect(QuantumOps quantum)
add_mlir_doc(QuantumDialect -gen-dialect-doc QuantumDialect Quantum/)
add_mlir_doc(QuantumOps -gen-op-doc QuantumOps Quantum/)
+5 −0
Original line number Diff line number Diff line
#pragma once

#include "mlir/IR/Dialect.h"

#include "Quantum/QuantumOpsDialect.h.inc"
+26 −0
Original line number Diff line number Diff line
#ifndef QUANTUM_DIALECT
#define QUANTUM_DIALECT

include "mlir/IR/OpBase.td"

//===----------------------------------------------------------------------===//
// Quantum dialect definition.
//===----------------------------------------------------------------------===//

def QuantumDialect : Dialect {
    let name = "quantum";
    let summary = "A MLIR dialect for quantum assembly languages.";
    let description = [{
        This dialect provides operations specific to quantum assembly languages.
    }];
    let cppNamespace = "::mlir::quantum";
}

//===----------------------------------------------------------------------===//
// Base standalone operation definition.
//===----------------------------------------------------------------------===//

class QuantumOp<string mnemonic, list<OpTrait> traits = []> :
        Op<QuantumDialect, mnemonic, traits>;

#endif // QUANTUM_DIALECT
 No newline at end of file
Loading