Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 23 additions & 25 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,38 +1,40 @@
cmake_minimum_required(VERSION 3.13.4)
project(NeuraMLIRProject VERSION 0.1.0)

project(NeuraMLIRProject)
# Avoid cmake generate unknown warnings
cmake_policy(SET CMP0116 NEW)

# Enable MLIR
# set(LLVM_DIR /workspace/llvm-project/build/lib/cmake/llvm)
# set(MLIR_DIR /workspace/llvm-project/build/lib/cmake/mlir)
# set(MLIR_SOURCE_DIR /workspace/llvm-project/mlir)
# set(MLIR_BINARY_DIR /workspace/llvm-project/build)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED YES)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -frtti")
add_compile_options(-g)

# set(MLIR_DIR /home/lucas/llvm-project/build/lib/cmake/mlir)
# set(LLVM_DIR /home/lucas/llvm-project/build/lib/cmake/llvm)
# set(MLIR_SRC_DIR /home/lucas/llvm-project/mlir)
# set(MLIR_BINARY_DIR /home/lucas/llvm-project/build)
message(STATUS "Using MLIRConfig.cmake in: ${MLIR_DIR}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")

find_package(LLVM REQUIRED CONFIG)
find_package(MLIR REQUIRED CONFIG)
find_package(LLVM REQUIRED CONFIG)

list(APPEND CMAKE_MODULE_PATH "${MLIR_CMAKE_DIR}")

# Add subdirectories for dialect
add_subdirectory(include)
add_subdirectory(lib)
include_directories(${LLVM_INCLUDE_DIRS} ${MLIR_INCLUDE_DIRS})

# Add subdirectory for mlir-neura-opt
add_subdirectory(tools/mlir-neura-opt)
include(TableGen)
include(AddLLVM)
include(AddMLIR)
include(HandleLLVMOptions)

include_directories(${CMAKE_SOURCE_DIR}/include)
include_directories(${LLVM_INCLUDE_DIRS})
include_directories(${MLIR_INCLUDE_DIRS})
link_directories(${LLVM_LIBRARY_DIRS})
link_directories(${MLIR_LIBRARY_DIRS})
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_BINARY_DIR}/include)

add_definitions(${LLVM_DEFINITIONS})
add_definitions(${MLIR_DEFINITIONS})
add_subdirectory(include)
add_subdirectory(lib)
add_subdirectory(tools)

# ===--------------------------------------------------------------------===#
# LIT test setup
Expand All @@ -46,9 +48,6 @@ set(MLIR_OPT ${LLVM_TOOLS_BINARY_DIR}/mlir-opt)
set(MLIR_TRANSLATE ${LLVM_TOOLS_BINARY_DIR}/mlir-translate)
set(LLC ${LLVM_TOOLS_BINARY_DIR}/llc)

# Builds the interpreter.
add_subdirectory(tools/neura-interpreter)

# Configures lit.cfg from lit.cfg.in
configure_file(
${CMAKE_SOURCE_DIR}/test/lit.cfg.in
Expand All @@ -63,5 +62,4 @@ add_custom_target(check-neura
DEPENDS mlir-neura-opt
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Running Sora Dialect Tests with lit"
)

)
2 changes: 1 addition & 1 deletion include/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
add_subdirectory(NeuraDialect)
add_subdirectory(NeuraDialect)
12 changes: 0 additions & 12 deletions include/Conversion/ArithToNeura/ArithToNeura.h

This file was deleted.

12 changes: 0 additions & 12 deletions include/Conversion/LlvmToNeura/LlvmToNeura.h

This file was deleted.

12 changes: 4 additions & 8 deletions include/NeuraDialect/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
include(TableGen)
include(AddLLVM)
include(AddMLIR)

set(MLIR_TBLGEN_INCLUDES
${MLIR_SOURCE_DIR}/include # MLIR source include directory
${MLIR_BINARY_DIR}/include # MLIR build include directory
)
add_mlir_dialect(Neura neura)

set(LLVM_TARGET_DEFINITIONS NeuraPasses.td)
mlir_tablegen(NeuraPasses.h.inc --gen-pass-decls)
add_public_tablegen_target(MLIRNeuraTransformsIncGen)
8 changes: 8 additions & 0 deletions include/NeuraDialect/Neura.td
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#ifndef NEURA_TD
#define NEURA_TD

include "NeuraDialect.td"
include "NeuraOps.td"
include "NeuraPasses.td"

#endif // GRAPH_TD
2 changes: 1 addition & 1 deletion include/NeuraDialect/NeuraDialect.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@
#endif

// Includes generated TableGen headers.
#include "NeuraDialect.h.inc"
#include "NeuraDialect/NeuraDialect.h.inc"

#endif // NEURADIALECT_NEURADIALECT_H
7 changes: 6 additions & 1 deletion include/NeuraDialect/NeuraDialect.td
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
// NeuraDialect.td - TableGen description of the dialect.
include "mlir/IR/BuiltinDialect.td"
#ifndef NEURADIALECT_TD
#define NEURADIALECT_TD

include "mlir/IR/OpBase.td"
include "mlir/IR/DialectBase.td"

def NeuraDialect : Dialect {
let name = "neura";
let cppNamespace = "::mlir::neura";
}

#endif // NEURADIALECT_TD
2 changes: 1 addition & 1 deletion include/NeuraDialect/NeuraOps.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#include "mlir/IR/Builders.h"

#define GET_OP_CLASSES
#include "NeuraOps.h.inc"
#include "NeuraDialect/Neura.h.inc"

// Additional definitions or includes can go here.

Expand Down
33 changes: 33 additions & 0 deletions include/NeuraDialect/NeuraPasses.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// NeuraPasses.h - Header file for Neura passes

#ifndef NEURA_PASSES_H
#define NEURA_PASSES_H

#include "NeuraDialect/NeuraDialect.h"
#include "NeuraDialect/NeuraOps.h"
#include "mlir/Pass/Pass.h"
#include "mlir/Pass/PassManager.h"
#include "mlir/Pass/PassRegistry.h"
#include <memory>

namespace mlir {
namespace neura {

// Passes defined in GraphPasses.td
#define GEN_PASS_DECL
#include "NeuraDialect/NeuraPasses.h.inc"
std::unique_ptr<mlir::Pass> createInsertMovPass();
std::unique_ptr<mlir::Pass> createFusePatternsPass();
std::unique_ptr<mlir::Pass> createAssignAcceleratorPass();

// Conversion passes
std::unique_ptr<mlir::Pass> createLowerArithToNeuraPass();
std::unique_ptr<mlir::Pass> createLowerLlvmToNeuraPass();

#define GEN_PASS_REGISTRATION
#include "NeuraDialect/NeuraPasses.h.inc"

} // namespace neura
} // namespace mlir

#endif // NEURA_PASSES_H
45 changes: 45 additions & 0 deletions include/NeuraDialect/NeuraPasses.td
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// NeuraPasses.td - Passes for the Neura dialect

#ifndef NEURA_PASSES_TD
#define NEURA_PASSES_TD

include "mlir/Pass/PassBase.td"

//=========================================================//
// Passes for the Neura dialect
//=========================================================//
def AssignAccelerator : Pass<"assign-accelerator", "ModuleOp"> {
let summary = "Assigns accelerators to operations in the Neura dialect";
let description = [{Tags non - main functions as neura.kernel.}];
let constructor = "neura::createAssignAcceleratorPass()";
}

def FusePatterns : Pass<"fuse-patterns", "ModuleOp"> {
let summary = "Fuses patterns in the Neura dialect";
let description = [{Apply Neura fusion patterns.}];
let constructor = "neura::createFusePatternsPass()";
}

def InsertMov : Pass<"insert-mov", "ModuleOp"> {
let summary = "Inserts move operations in the Neura dialect";
let description =
[{Insert neura.mov before and after all neura dialect operations.}];
let constructor = "neura::createInsertMovPass()";
}

//=========================================================//
// Conversion passes
//=========================================================//
def LowerArithToNeura : Pass<"lower-arith-to-neura", "FuncOp">{
let summary = "Lower arith to Neura dialect";
let description = [{Lower arith dialect operations to Neura dialect operations.}];
let constructor = "neura::createLowerArithToNeuraPass()";
}

def LowerLlvmToNeura : Pass<"lower-llvm-to-neura", "ModuleOp">{
let summary = "Lower LLVM to Neura dialect";
let description = [{Lower LLVM operations to Neura dialect operations.}];
let constructor = "neura::createLowerLlvmToNeuraPass()";
}

#endif // NEURA_PASSES_TD
13 changes: 0 additions & 13 deletions include/Transforms/AssignAcceleratorPass.h

This file was deleted.

11 changes: 0 additions & 11 deletions include/Transforms/FusePatternsPass.h

This file was deleted.

13 changes: 0 additions & 13 deletions include/Transforms/InsertMovPass.h

This file was deleted.

4 changes: 1 addition & 3 deletions lib/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
add_subdirectory(NeuraDialect)
add_subdirectory(Conversion)
add_subdirectory(Transforms)
add_subdirectory(NeuraDialect)
43 changes: 0 additions & 43 deletions lib/Conversion/ArithToNeura/CMakeLists.txt

This file was deleted.

2 changes: 0 additions & 2 deletions lib/Conversion/CMakeLists.txt

This file was deleted.

43 changes: 0 additions & 43 deletions lib/Conversion/LlvmToNeura/CMakeLists.txt

This file was deleted.

Loading