feat(compiler): add lowering and bufferization for SDFG dialect, generate code to Stream Emulator API.

This commit is contained in:
Antoniu Pop
2022-11-30 09:41:34 +00:00
committed by Andi Drebes
parent 752f0feb75
commit 0dbb86bb36
14 changed files with 626 additions and 3 deletions

View File

@@ -35,6 +35,7 @@
#include <concretelang/Dialect/RT/IR/RTDialect.h>
#include <concretelang/Dialect/RT/Transforms/BufferizableOpInterfaceImpl.h>
#include <concretelang/Dialect/SDFG/IR/SDFGDialect.h>
#include <concretelang/Dialect/SDFG/Transforms/BufferizableOpInterfaceImpl.h>
#include <concretelang/Dialect/SDFG/Transforms/SDFGConvertibleOpInterfaceImpl.h>
#include <concretelang/Dialect/TFHE/IR/TFHEDialect.h>
#include <concretelang/Runtime/DFRuntime.hpp>
@@ -83,6 +84,7 @@ mlir::MLIRContext *CompilationContext::getMLIRContext() {
mlir::omp::OpenMPDialect, mlir::bufferization::BufferizationDialect>();
BConcrete::registerBufferizableOpInterfaceExternalModels(registry);
SDFG::registerSDFGConvertibleOpInterfaceExternalModels(registry);
SDFG::registerBufferizableOpInterfaceExternalModels(registry);
arith::registerBufferizableOpInterfaceExternalModels(registry);
bufferization::func_ext::registerBufferizableOpInterfaceExternalModels(
registry);
@@ -417,6 +419,13 @@ CompilerEngine::compile(llvm::SourceMgr &sm, Target target, OptionalLib lib) {
"Lowering from Bufferized Concrete to canonical MLIR dialects failed");
}
// SDFG -> Canonical dialects
if (mlir::concretelang::pipeline::lowerSDFGToStd(mlirContext, module,
enablePass)
.failed()) {
return errorDiag("Lowering from SDFG to canonical MLIR dialects failed");
}
if (target == Target::STD)
return std::move(res);