feat: optimize concrete mul with constant values

This commit is contained in:
youben11
2022-05-19 14:19:49 +01:00
committed by Ayoub Benaissa
parent c42f0a1ada
commit 8d0f20390c
12 changed files with 231 additions and 0 deletions

View File

@@ -1 +1,2 @@
add_subdirectory(IR)
add_subdirectory(Transforms)

View File

@@ -0,0 +1,4 @@
set(LLVM_TARGET_DEFINITIONS Optimization.td)
mlir_tablegen(Optimization.h.inc -gen-pass-decls -name Transforms)
add_public_tablegen_target(ConcretelangConcreteOptimizationPassIncGen)
add_dependencies(mlir-headers ConcretelangConcreteOptimizationPassIncGen)

View File

@@ -0,0 +1,21 @@
// Part of the Concrete Compiler Project, under the BSD3 License with Zama
// Exceptions. See
// https://github.com/zama-ai/concrete-compiler-internal/blob/master/LICENSE.txt
// for license information.
#ifndef CONCRETELANG_CONCRETE_OPTIMIZATION_PASS_H
#define CONCRETELANG_CONCRETE_OPTIMIZATION_PASS_H
#include <concretelang/Dialect/Concrete/IR/ConcreteDialect.h>
#include <mlir/Pass/Pass.h>
#define GEN_PASS_CLASSES
#include <concretelang/Dialect/Concrete/Transforms/Optimization.h.inc>
namespace mlir {
namespace concretelang {
std::unique_ptr<mlir::OperationPass<>> createConcreteOptimizationPass();
} // namespace concretelang
} // namespace mlir
#endif

View File

@@ -0,0 +1,13 @@
#ifndef CONCRETELANG_CONCRETE_OPTIMIZATION_PASS
#define CONCRETELANG_CONCRETE_OPTIMIZATION_PASS
include "mlir/Pass/PassBase.td"
def ConcreteOptimization : Pass<"concrete-optimization"> {
let summary = "Optimize Concrete operations";
let constructor = "mlir::concretelang::createConcreteOptimizationPass()";
let options = [];
let dependentDialects = [ "mlir::concretelang::Concrete::ConcreteDialect" ];
}
#endif

View File

@@ -47,6 +47,10 @@ lowerConcreteToBConcrete(mlir::MLIRContext &context, mlir::ModuleOp &module,
std::function<bool(mlir::Pass *)> enablePass,
bool parallelizeLoops);
mlir::LogicalResult
optimizeConcrete(mlir::MLIRContext &context, mlir::ModuleOp &module,
std::function<bool(mlir::Pass *)> enablePass);
mlir::LogicalResult
lowerBConcreteToStd(mlir::MLIRContext &context, mlir::ModuleOp &module,
std::function<bool(mlir::Pass *)> enablePass);