Files
concrete/compiler/lib/Dialect/FHE/IR/FHEDialect.cpp

62 lines
1.7 KiB
C++

// 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.
#include "concretelang/Dialect/FHE/IR/FHEDialect.h"
#include "concretelang/Dialect/FHE/IR/FHEOps.h"
#include "concretelang/Dialect/FHE/IR/FHETypes.h"
#define GET_TYPEDEF_CLASSES
#include "concretelang/Dialect/FHE/IR/FHEOpsTypes.cpp.inc"
#include "concretelang/Dialect/FHE/IR/FHEOpsDialect.cpp.inc"
#include "concretelang/Support/Constants.h"
using namespace mlir::concretelang::FHE;
void FHEDialect::initialize() {
addOperations<
#define GET_OP_LIST
#include "concretelang/Dialect/FHE/IR/FHEOps.cpp.inc"
>();
addTypes<
#define GET_TYPEDEF_LIST
#include "concretelang/Dialect/FHE/IR/FHEOpsTypes.cpp.inc"
>();
}
::mlir::Type FHEDialect::parseType(::mlir::DialectAsmParser &parser) const {
mlir::Type type;
if (parser.parseOptionalKeyword("eint").succeeded()) {
generatedTypeParser(parser, "eint", type);
return type;
}
// TODO
// Don't have a parser for a custom type
// We shouldn't call the default parser
// but what should we do instead?
parser.parseType(type);
return type;
}
void FHEDialect::printType(::mlir::Type type,
::mlir::DialectAsmPrinter &printer) const {
if (generatedTypePrinter(type, printer).failed())
// Calling default printer if failed to print FHE type
printer.printType(type);
}
mlir::LogicalResult EncryptedIntegerType::verify(
llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, unsigned p) {
if (p == 0) {
emitError() << "FHE.eint didn't support precision equals to 0";
return mlir::failure();
}
return mlir::success();
}