mirror of https://github.com/llvm/torch-mlir
Make a real library for InitAll and extend it to conditionally initialize dependencies.
* Conditioned on the top level CMake option to enable IREE. * There is still some warning flags and such that need triage, but it does build/work.pull/1/head
parent
a29ef9adc8
commit
19196f23e1
|
@ -52,7 +52,7 @@ add_definitions(${LLVM_DEFINITIONS})
|
||||||
# IREE configuration
|
# IREE configuration
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
if(${NPCOMP_ENABLE_IREE})
|
if(NPCOMP_ENABLE_IREE)
|
||||||
add_compile_definitions(NPCOMP_ENABLE_IREE)
|
add_compile_definitions(NPCOMP_ENABLE_IREE)
|
||||||
if(NPCOMP_IREE_SRCDIR)
|
if(NPCOMP_IREE_SRCDIR)
|
||||||
message(STATUS "Depending on IREE source: ${NPCOMP_IREE_SRCDIR}")
|
message(STATUS "Depending on IREE source: ${NPCOMP_IREE_SRCDIR}")
|
||||||
|
@ -63,6 +63,9 @@ if(${NPCOMP_ENABLE_IREE})
|
||||||
else()
|
else()
|
||||||
find_package(IREE REQUIRED CONFIG)
|
find_package(IREE REQUIRED CONFIG)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "IREE INCLUDE DIRS: ${IREE_PUBLIC_INCLUDE_DIRS}")
|
||||||
|
include_directories("${IREE_PUBLIC_INCLUDE_DIRS}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
|
|
@ -9,48 +9,12 @@
|
||||||
#ifndef NPCOMP_INITALL_H
|
#ifndef NPCOMP_INITALL_H
|
||||||
#define NPCOMP_INITALL_H
|
#define NPCOMP_INITALL_H
|
||||||
|
|
||||||
#include "npcomp/Dialect/Basicpy/IR/BasicpyDialect.h"
|
|
||||||
#include "npcomp/Dialect/Basicpy/Transforms/Passes.h"
|
|
||||||
#include "npcomp/Dialect/NpcompRt/IR/NpcompRtDialect.h"
|
|
||||||
#include "npcomp/Dialect/Numpy/IR/NumpyDialect.h"
|
|
||||||
#include "npcomp/Dialect/TCF/IR/TCFDialect.h"
|
|
||||||
#include "npcomp/Dialect/TCP/IR/TCPDialect.h"
|
|
||||||
|
|
||||||
#include "npcomp/Conversion/TCFToTCP/TCFToTCP.h"
|
|
||||||
#include "npcomp/Conversion/TCPToLinalg/TCPToLinalg.h"
|
|
||||||
#include "npcomp/E2E/E2E.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace mlir {
|
namespace mlir {
|
||||||
namespace NPCOMP {
|
namespace NPCOMP {
|
||||||
|
|
||||||
inline void registerAllDialects() {
|
void registerAllDialects();
|
||||||
registerDialect<Basicpy::BasicpyDialect>();
|
void registerAllPasses();
|
||||||
registerDialect<Numpy::NumpyDialect>();
|
|
||||||
registerDialect<npcomp_rt::NpcompRtDialect>();
|
|
||||||
registerDialect<tcf::TCFDialect>();
|
|
||||||
registerDialect<tcp::TCPDialect>();
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void registerAllPasses() {
|
|
||||||
using mlir::Pass; // The .inc files reference this unqualified.
|
|
||||||
#define GEN_PASS_REGISTRATION
|
|
||||||
#include "npcomp/E2E/Passes.h.inc"
|
|
||||||
// TODO: The following pipeline registration uses pass manager options,
|
|
||||||
// which causes vague linkage issues when co-mingled with code that
|
|
||||||
// uses RTTI.
|
|
||||||
mlir::PassPipelineRegistration<E2ELoweringPipelineOptions>(
|
|
||||||
"e2e-lowering-pipeline", "E2E lowering pipeline.",
|
|
||||||
mlir::NPCOMP::createE2ELoweringPipeline);
|
|
||||||
mlir::PassPipelineRegistration<>(
|
|
||||||
"lower-to-hybrid-tensor-memref-pipeline",
|
|
||||||
"Pipeline lowering to hybrid tensor/memref.",
|
|
||||||
mlir::NPCOMP::createLowerToHybridTensorMemRefPipeline);
|
|
||||||
#define GEN_PASS_REGISTRATION
|
|
||||||
#include "npcomp/Conversion/Passes.h.inc"
|
|
||||||
#define GEN_PASS_REGISTRATION
|
|
||||||
#include "npcomp/Dialect/Basicpy/Transforms/Passes.h.inc"
|
|
||||||
}
|
|
||||||
} // namespace NPCOMP
|
} // namespace NPCOMP
|
||||||
} // namespace mlir
|
} // namespace mlir
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,37 @@
|
||||||
add_subdirectory(Conversion)
|
add_subdirectory(Conversion)
|
||||||
add_subdirectory(Dialect)
|
add_subdirectory(Dialect)
|
||||||
add_subdirectory(E2E)
|
add_subdirectory(E2E)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Setup the initialization target.
|
||||||
|
# This includes conditional dependencies based on whether features are enabled.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
set(ALL_DEPENDS)
|
||||||
|
if(NPCOMP_ENABLE_IREE)
|
||||||
|
list(APPEND ALL_DEPENDS
|
||||||
|
iree_tools_init_compiler_modules
|
||||||
|
iree_tools_init_iree_passes_and_dialects
|
||||||
|
iree_tools_init_mlir_passes_and_dialects
|
||||||
|
iree_tools_init_targets
|
||||||
|
iree_tools_init_xla_dialects
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_mlir_library(NPCOMPInitAll
|
||||||
|
InitAll.cpp
|
||||||
|
|
||||||
|
LINK_LIBS
|
||||||
|
|
||||||
|
PRIVATE
|
||||||
|
# Local depends
|
||||||
|
NPCOMPE2E
|
||||||
|
NPCOMPTCP
|
||||||
|
NPCOMPTCF
|
||||||
|
NPCOMPNpcompRt
|
||||||
|
NPCOMPBasicpyDialect
|
||||||
|
NPCOMPBasicpyPasses
|
||||||
|
NPCOMPNumpyDialect
|
||||||
|
|
||||||
|
${ALL_DEPENDS}
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
//
|
||||||
|
// This file is licensed under the Apache License v2.0 with LLVM Exceptions.
|
||||||
|
// See https://llvm.org/LICENSE.txt for license information.
|
||||||
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
#include "npcomp/InitAll.h"
|
||||||
|
|
||||||
|
#include "npcomp/Dialect/Basicpy/IR/BasicpyDialect.h"
|
||||||
|
#include "npcomp/Dialect/Basicpy/Transforms/Passes.h"
|
||||||
|
#include "npcomp/Dialect/NpcompRt/IR/NpcompRtDialect.h"
|
||||||
|
#include "npcomp/Dialect/Numpy/IR/NumpyDialect.h"
|
||||||
|
#include "npcomp/Dialect/TCF/IR/TCFDialect.h"
|
||||||
|
#include "npcomp/Dialect/TCP/IR/TCPDialect.h"
|
||||||
|
|
||||||
|
#include "npcomp/Conversion/TCFToTCP/TCFToTCP.h"
|
||||||
|
#include "npcomp/Conversion/TCPToLinalg/TCPToLinalg.h"
|
||||||
|
#include "npcomp/E2E/E2E.h"
|
||||||
|
|
||||||
|
#ifdef NPCOMP_ENABLE_IREE
|
||||||
|
#include "iree/tools/init_compiler_modules.h"
|
||||||
|
#include "iree/tools/init_iree_dialects.h"
|
||||||
|
#include "iree/tools/init_iree_passes.h"
|
||||||
|
#include "iree/tools/init_mlir_dialects.h"
|
||||||
|
#include "iree/tools/init_mlir_passes.h"
|
||||||
|
#include "iree/tools/init_targets.h"
|
||||||
|
#include "iree/tools/init_xla_dialects.h"
|
||||||
|
#endif // NPCOMP_ENABLE_IREE
|
||||||
|
|
||||||
|
static void registerDependencyDialects() {
|
||||||
|
#ifdef NPCOMP_ENABLE_IREE
|
||||||
|
// TODO: We should probably be registering the MLIR dialects regardless
|
||||||
|
// of building with IREE, but we have to do it with IREE, and the
|
||||||
|
// dependencies are coming from there and wouldn't be great to duplicate.
|
||||||
|
// See iree/tools:init_mlir_passes_and_dialects
|
||||||
|
mlir::registerMlirDialects();
|
||||||
|
mlir::registerXLADialects();
|
||||||
|
mlir::iree_compiler::registerIreeDialects();
|
||||||
|
mlir::iree_compiler::registerIreeCompilerModuleDialects();
|
||||||
|
#endif // NPCOMP_ENABLE_IREE
|
||||||
|
}
|
||||||
|
|
||||||
|
static void registerDependencyPasses() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void mlir::NPCOMP::registerAllDialects() {
|
||||||
|
registerDialect<Basicpy::BasicpyDialect>();
|
||||||
|
registerDialect<Numpy::NumpyDialect>();
|
||||||
|
registerDialect<npcomp_rt::NpcompRtDialect>();
|
||||||
|
registerDialect<tcf::TCFDialect>();
|
||||||
|
registerDialect<tcp::TCPDialect>();
|
||||||
|
registerDependencyDialects();
|
||||||
|
}
|
||||||
|
|
||||||
|
void mlir::NPCOMP::registerAllPasses() {
|
||||||
|
using mlir::Pass; // The .inc files reference this unqualified.
|
||||||
|
#define GEN_PASS_REGISTRATION
|
||||||
|
#include "npcomp/E2E/Passes.h.inc"
|
||||||
|
// TODO: The following pipeline registration uses pass manager options,
|
||||||
|
// which causes vague linkage issues when co-mingled with code that
|
||||||
|
// uses RTTI.
|
||||||
|
mlir::PassPipelineRegistration<E2ELoweringPipelineOptions>(
|
||||||
|
"e2e-lowering-pipeline", "E2E lowering pipeline.",
|
||||||
|
mlir::NPCOMP::createE2ELoweringPipeline);
|
||||||
|
mlir::PassPipelineRegistration<>(
|
||||||
|
"lower-to-hybrid-tensor-memref-pipeline",
|
||||||
|
"Pipeline lowering to hybrid tensor/memref.",
|
||||||
|
mlir::NPCOMP::createLowerToHybridTensorMemRefPipeline);
|
||||||
|
#define GEN_PASS_REGISTRATION
|
||||||
|
#include "npcomp/Conversion/Passes.h.inc"
|
||||||
|
#define GEN_PASS_REGISTRATION
|
||||||
|
#include "npcomp/Dialect/Basicpy/Transforms/Passes.h.inc"
|
||||||
|
registerDependencyPasses();
|
||||||
|
}
|
|
@ -71,15 +71,7 @@ target_link_libraries(${extension_target}
|
||||||
${conversion_libs}
|
${conversion_libs}
|
||||||
pybind11::module
|
pybind11::module
|
||||||
|
|
||||||
# Local depends
|
NPCOMPInitAll
|
||||||
# Note: These need to also match tools/npcomp-opt/CMakeLists.txt
|
|
||||||
NPCOMPE2E
|
|
||||||
NPCOMPTCP
|
|
||||||
NPCOMPTCF
|
|
||||||
NPCOMPNpcompRt
|
|
||||||
NPCOMPBasicpyDialect
|
|
||||||
NPCOMPBasicpyPasses
|
|
||||||
NPCOMPNumpyDialect
|
|
||||||
|
|
||||||
# Core dialects
|
# Core dialects
|
||||||
MLIRSCF
|
MLIRSCF
|
||||||
|
|
|
@ -4,13 +4,7 @@ set(LIBS
|
||||||
${dialect_libs}
|
${dialect_libs}
|
||||||
${conversion_libs}
|
${conversion_libs}
|
||||||
MLIROptLib
|
MLIROptLib
|
||||||
# Note: the following must also match python_native/CMakeLists.txt
|
NPCOMPInitAll
|
||||||
NPCOMPE2E
|
|
||||||
NPCOMPTCP
|
|
||||||
NPCOMPTCF
|
|
||||||
NPCOMPNpcompRt
|
|
||||||
NPCOMPNumpyDialect
|
|
||||||
NPCOMPBasicpyDialect
|
|
||||||
)
|
)
|
||||||
add_llvm_executable(npcomp-opt npcomp-opt.cpp)
|
add_llvm_executable(npcomp-opt npcomp-opt.cpp)
|
||||||
|
|
||||||
|
|
|
@ -22,5 +22,5 @@ target_link_libraries(npcomp-run-mlir PRIVATE
|
||||||
MLIRParser
|
MLIRParser
|
||||||
MLIRTargetLLVMIR
|
MLIRTargetLLVMIR
|
||||||
MLIRSupport
|
MLIRSupport
|
||||||
NPCOMPE2E
|
NPCOMPInitAll
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue