mirror of
https://github.com/zama-ai/concrete.git
synced 2026-02-10 04:35:03 -05:00
cleanup(compiler/lowlfhe): Remove useless LowLFHE ops and types
Some of these operators/types could be usefull but they are not yet use on the compiler pipeline it's preferable to remove them, and reintroduce if needed.
This commit is contained in:
@@ -35,6 +35,11 @@ def NegateLweCiphertextOp : LowLFHE_Op<"negate_lwe_ciphertext"> {
|
||||
let results = (outs LweCiphertextType:$result);
|
||||
}
|
||||
|
||||
def GlweFromTable : LowLFHE_Op<"glwe_from_table"> {
|
||||
let arguments = (ins TensorOf<[AnyInteger]>:$table, I32Attr:$polynomialSize, I32Attr:$k, I32Attr:$p);
|
||||
let results = (outs GlweCiphertextType:$result);
|
||||
}
|
||||
|
||||
def BootstrapLweOp : LowLFHE_Op<"bootstrap_lwe"> {
|
||||
let arguments = (ins
|
||||
// LweBootstrapKeyType:$bootstrap_key,
|
||||
@@ -48,48 +53,6 @@ def BootstrapLweOp : LowLFHE_Op<"bootstrap_lwe"> {
|
||||
let results = (outs LweCiphertextType:$result);
|
||||
}
|
||||
|
||||
def DecryptGlweOp : LowLFHE_Op<"decrypt_glwe"> {
|
||||
let arguments = (ins GlweSecretKeyType:$secret_key, GlweCiphertextType:$ciphertext);
|
||||
let results = (outs PlaintextListType:$result);
|
||||
}
|
||||
|
||||
def DecryptLweOp : LowLFHE_Op<"decrypt_lwe"> {
|
||||
let arguments = (ins LweSecretKeyType:$secret_key, LweCiphertextType:$ciphertext);
|
||||
let results = (outs PlaintextType:$result);
|
||||
}
|
||||
|
||||
def EncryptGlweOp : LowLFHE_Op<"encrypt_glwe"> {
|
||||
let arguments = (ins
|
||||
GlweSecretKeyType:$secret_key,
|
||||
PlaintextListType:$plaintext,
|
||||
EncryptionRandomGeneratorType:$generator,
|
||||
VarianceType:$variance
|
||||
);
|
||||
let results = (outs GlweCiphertextType:$result);
|
||||
}
|
||||
|
||||
def EncryptLweOp : LowLFHE_Op<"encrypt_lwe"> {
|
||||
let arguments = (ins
|
||||
LweSecretKeyType:$secret_key,
|
||||
PlaintextType:$plaintext,
|
||||
EncryptionRandomGeneratorType:$generator,
|
||||
VarianceType:$variance
|
||||
);
|
||||
let results = (outs LweCiphertextType:$result);
|
||||
}
|
||||
|
||||
def GetPlaintextListElementOp : LowLFHE_Op<"get_plaintext_list_element">{
|
||||
let arguments = (ins PlaintextListType:$plaintext, Index:$i);
|
||||
|
||||
let results = (outs AnySignlessInteger:$result);
|
||||
}
|
||||
|
||||
def SetPlaintextListElementOp : LowLFHE_Op<"set_plaintext_list_element">{
|
||||
let arguments = (ins PlaintextListType:$plaintext, Index:$i, AnySignlessInteger:$val);
|
||||
|
||||
let results = (outs );
|
||||
}
|
||||
|
||||
def KeySwitchLweOp : LowLFHE_Op<"keyswitch_lwe"> {
|
||||
let arguments = (ins
|
||||
// LweKeySwitchKeyType:$keyswitch_key,
|
||||
@@ -102,49 +65,6 @@ def KeySwitchLweOp : LowLFHE_Op<"keyswitch_lwe"> {
|
||||
let results = (outs LweCiphertextType:$result);
|
||||
}
|
||||
|
||||
|
||||
def FillGlweSecretKeyOp : LowLFHE_Op<"fill_glwe_secret_key"> {
|
||||
let arguments = (ins GlweSecretKeyType:$secret_key, SecretRandomGeneratorType:$generator);
|
||||
let results = (outs );
|
||||
}
|
||||
|
||||
def FillLweSecretKeyOp : LowLFHE_Op<"fill_lwe_secret_key"> {
|
||||
let arguments = (ins LweSecretKeyType:$secret_key, SecretRandomGeneratorType:$generator);
|
||||
let results = (outs );
|
||||
}
|
||||
|
||||
def FillLweBootstrapKeyOp : LowLFHE_Op<"fill_lwe_bootstrap_key"> {
|
||||
let arguments = (ins
|
||||
LweBootstrapKeyType:$bootstrap_key,
|
||||
LweSecretKeyType:$lwe_secret_key,
|
||||
GlweSecretKeyType:$glwe_secret_key,
|
||||
EncryptionRandomGeneratorType:$generator,
|
||||
VarianceType:$noise
|
||||
);
|
||||
let results = (outs );
|
||||
}
|
||||
|
||||
def FillLweKeyswitchKeyOp : LowLFHE_Op<"fill_lwe_keyswitch_key"> {
|
||||
let arguments = (ins
|
||||
LweKeySwitchKeyType:$keyswitch_key,
|
||||
LweSecretKeyType:$input_key,
|
||||
LweSecretKeyType:$output_key,
|
||||
EncryptionRandomGeneratorType:$generator,
|
||||
VarianceType:$noise
|
||||
);
|
||||
let results = (outs );
|
||||
}
|
||||
|
||||
def FillPlaintextListWithExpansionOp : LowLFHE_Op<"fill_plaintext_list_with_expansion"> {
|
||||
let arguments = (ins PlaintextListType:$output, ForeignPlaintextListType:$input);
|
||||
let results = (outs );
|
||||
}
|
||||
|
||||
def EncodeCleartextOp : LowLFHE_Op<"encode_cleartext"> {
|
||||
let arguments = (ins CleartextType:$cleartext);
|
||||
let results = (outs PlaintextType:$plaintext);
|
||||
}
|
||||
|
||||
def EncodeIntOp : LowLFHE_Op<"encode_int"> {
|
||||
let arguments = (ins AnyInteger:$i);
|
||||
let results = (outs PlaintextType:$plaintext);
|
||||
@@ -155,15 +75,4 @@ def IntToCleartextOp : LowLFHE_Op<"int_to_cleartext"> {
|
||||
let results = (outs CleartextType:$cleartext);
|
||||
}
|
||||
|
||||
def ConstCleartextOp : LowLFHE_Op<"const_cleartext", [ConstantLike]> {
|
||||
// TODO: maybe restrict to specific attr?
|
||||
let arguments = (ins AnyAttr:$value);
|
||||
let results = (outs CleartextType:$cleartext);
|
||||
}
|
||||
|
||||
def GlweFromTable : LowLFHE_Op<"glwe_from_table"> {
|
||||
let arguments = (ins TensorOf<[AnyInteger]>:$table, I32Attr:$polynomialSize, I32Attr:$k, I32Attr:$p);
|
||||
let results = (outs GlweCiphertextType:$result);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -6,17 +6,18 @@ include "mlir/IR/BuiltinTypes.td"
|
||||
include "zamalang/Dialect/LowLFHE/IR/LowLFHEDialect.td"
|
||||
|
||||
class LowLFHE_Type<string name, list<Trait> traits = []> : TypeDef<LowLFHE_Dialect, name, traits> { }
|
||||
def EncryptionRandomGeneratorType : LowLFHE_Type<"EncryptionRandomGenerator"> {
|
||||
let mnemonic = "enc_rand_gen";
|
||||
|
||||
let summary = "Random source for encryption";
|
||||
def GlweCiphertextType : LowLFHE_Type<"GlweCiphertext"> {
|
||||
let mnemonic = "glwe_ciphertext";
|
||||
|
||||
let summary = "GLWE ciphertext";
|
||||
|
||||
let description = [{
|
||||
Random source for encryption.
|
||||
GLWE ciphertext.
|
||||
}];
|
||||
|
||||
let printer = [{
|
||||
$_printer << "enc_rand_gen";
|
||||
$_printer << "glwe_ciphertext";
|
||||
}];
|
||||
|
||||
let parser = [{
|
||||
@@ -24,24 +25,84 @@ def EncryptionRandomGeneratorType : LowLFHE_Type<"EncryptionRandomGenerator"> {
|
||||
}];
|
||||
}
|
||||
|
||||
def SecretRandomGeneratorType : LowLFHE_Type<"SecretRandomGenerator"> {
|
||||
let mnemonic = "secret_rand_gen";
|
||||
def LweCiphertextType : LowLFHE_Type<"LweCiphertext", [MemRefElementTypeInterface]> {
|
||||
let mnemonic = "lwe_ciphertext";
|
||||
|
||||
let summary = "Random source for secret key generation";
|
||||
let summary = "LWE ciphertext";
|
||||
|
||||
let description = [{
|
||||
Random source for secret key generation.
|
||||
Learning With Error ciphertext.
|
||||
}];
|
||||
|
||||
|
||||
let parameters = (ins
|
||||
// The size of the lwe ciphertext
|
||||
"signed":$size,
|
||||
// Precision of the lwe ciphertext
|
||||
"signed":$p
|
||||
);
|
||||
|
||||
let printer = [{
|
||||
$_printer << "secret_rand_gen";
|
||||
$_printer << "lwe_ciphertext<";
|
||||
if (getImpl()->size == -1) $_printer << "_";
|
||||
else $_printer << getImpl()->size;
|
||||
$_printer << ",";
|
||||
if (getImpl()->p == -1) $_printer << "_";
|
||||
else $_printer << getImpl()->p;
|
||||
$_printer << ">";
|
||||
}];
|
||||
|
||||
let parser = [{
|
||||
return get($_ctxt);
|
||||
if ($_parser.parseLess())
|
||||
return Type();
|
||||
int size = -1;
|
||||
if ($_parser.parseOptionalKeyword("_") && $_parser.parseInteger(size))
|
||||
return Type();
|
||||
if ($_parser.parseComma())
|
||||
return Type();
|
||||
int p = -1;
|
||||
if ($_parser.parseOptionalKeyword("_") && $_parser.parseInteger(p))
|
||||
return Type();
|
||||
if ($_parser.parseGreater())
|
||||
return Type();
|
||||
Location loc = $_parser.getEncodedSourceLoc($_parser.getNameLoc());
|
||||
return getChecked(loc, loc.getContext(), size, p);
|
||||
}];
|
||||
}
|
||||
|
||||
def CleartextType : LowLFHE_Type<"Cleartext"> {
|
||||
let mnemonic = "cleartext";
|
||||
|
||||
let summary = "Cleartext";
|
||||
|
||||
let description = [{
|
||||
Cleartext.
|
||||
}];
|
||||
|
||||
let parameters = (ins
|
||||
// Number of bits of the cleartext representation
|
||||
"signed":$p
|
||||
);
|
||||
|
||||
let printer = [{
|
||||
$_printer << "cleartext<";
|
||||
if (getImpl()->p == -1) $_printer << "_";
|
||||
else $_printer << getImpl()->p;
|
||||
$_printer << ">";
|
||||
}];
|
||||
|
||||
let parser = [{
|
||||
if ($_parser.parseLess())
|
||||
return Type();
|
||||
int p = -1;
|
||||
if ($_parser.parseOptionalKeyword("_") && $_parser.parseInteger(p))
|
||||
return Type();
|
||||
if ($_parser.parseGreater())
|
||||
return Type();
|
||||
Location loc = $_parser.getEncodedSourceLoc($_parser.getNameLoc());
|
||||
return getChecked(loc, loc.getContext(), p);
|
||||
}];
|
||||
}
|
||||
|
||||
def PlaintextType : LowLFHE_Type<"Plaintext"> {
|
||||
let mnemonic = "plaintext";
|
||||
@@ -113,52 +174,6 @@ def ForeignPlaintextListType : LowLFHE_Type<"ForeignPlaintextList"> {
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
def LweCiphertextType : LowLFHE_Type<"LweCiphertext", [MemRefElementTypeInterface]> {
|
||||
let mnemonic = "lwe_ciphertext";
|
||||
|
||||
let summary = "LWE ciphertext";
|
||||
|
||||
let description = [{
|
||||
Learning With Error ciphertext.
|
||||
}];
|
||||
|
||||
|
||||
let parameters = (ins
|
||||
// The size of the lwe ciphertext
|
||||
"signed":$size,
|
||||
// Precision of the lwe ciphertext
|
||||
"signed":$p
|
||||
);
|
||||
|
||||
let printer = [{
|
||||
$_printer << "lwe_ciphertext<";
|
||||
if (getImpl()->size == -1) $_printer << "_";
|
||||
else $_printer << getImpl()->size;
|
||||
$_printer << ",";
|
||||
if (getImpl()->p == -1) $_printer << "_";
|
||||
else $_printer << getImpl()->p;
|
||||
$_printer << ">";
|
||||
}];
|
||||
|
||||
let parser = [{
|
||||
if ($_parser.parseLess())
|
||||
return Type();
|
||||
int size = -1;
|
||||
if ($_parser.parseOptionalKeyword("_") && $_parser.parseInteger(size))
|
||||
return Type();
|
||||
if ($_parser.parseComma())
|
||||
return Type();
|
||||
int p = -1;
|
||||
if ($_parser.parseOptionalKeyword("_") && $_parser.parseInteger(p))
|
||||
return Type();
|
||||
if ($_parser.parseGreater())
|
||||
return Type();
|
||||
Location loc = $_parser.getEncodedSourceLoc($_parser.getNameLoc());
|
||||
return getChecked(loc, loc.getContext(), size, p);
|
||||
}];
|
||||
}
|
||||
|
||||
def LweKeySwitchKeyType : LowLFHE_Type<"LweKeySwitchKey"> {
|
||||
let mnemonic = "lwe_key_switch_key";
|
||||
|
||||
@@ -195,205 +210,7 @@ def LweBootstrapKeyType : LowLFHE_Type<"LweBootstrapKey"> {
|
||||
}];
|
||||
}
|
||||
|
||||
def LweSecretKeyType : LowLFHE_Type<"LweSecretKey"> {
|
||||
let mnemonic = "lwe_secret_key";
|
||||
|
||||
let summary = "LWE bootstrapping key";
|
||||
|
||||
let description = [{
|
||||
Learning With Error bootstrapping key.
|
||||
}];
|
||||
|
||||
let printer = [{
|
||||
$_printer << "lwe_secret_key";
|
||||
}];
|
||||
|
||||
let parser = [{
|
||||
return get($_ctxt);
|
||||
}];
|
||||
}
|
||||
|
||||
def LweSizeType : LowLFHE_Type<"LweSize"> {
|
||||
let mnemonic = "lwe_size";
|
||||
|
||||
let summary = "LWE size";
|
||||
|
||||
let description = [{
|
||||
Learning With Error size.
|
||||
}];
|
||||
|
||||
let printer = [{
|
||||
$_printer << "lwe_size";
|
||||
}];
|
||||
|
||||
let parser = [{
|
||||
return get($_ctxt);
|
||||
}];
|
||||
}
|
||||
|
||||
def GlweCiphertextType : LowLFHE_Type<"GlweCiphertext"> {
|
||||
let mnemonic = "glwe_ciphertext";
|
||||
|
||||
let summary = "GLWE ciphertext";
|
||||
|
||||
let description = [{
|
||||
GLWE ciphertext.
|
||||
}];
|
||||
|
||||
let printer = [{
|
||||
$_printer << "glwe_ciphertext";
|
||||
}];
|
||||
|
||||
let parser = [{
|
||||
return get($_ctxt);
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
def GlweSecretKeyType : LowLFHE_Type<"GlweSecretKey"> {
|
||||
let mnemonic = "glwe_secret_key";
|
||||
|
||||
let summary = "GLWE secret key";
|
||||
|
||||
let description = [{
|
||||
GLWE secret key.
|
||||
}];
|
||||
|
||||
let printer = [{
|
||||
$_printer << "glwe_secret_key";
|
||||
}];
|
||||
|
||||
let parser = [{
|
||||
return get($_ctxt);
|
||||
}];
|
||||
}
|
||||
|
||||
def GlweSizeType : LowLFHE_Type<"GlweSize"> {
|
||||
let mnemonic = "glwe_size";
|
||||
|
||||
let summary = "GLWE size";
|
||||
|
||||
let description = [{
|
||||
GLWE size.
|
||||
}];
|
||||
|
||||
let printer = [{
|
||||
$_printer << "glwe_size";
|
||||
}];
|
||||
|
||||
let parser = [{
|
||||
return get($_ctxt);
|
||||
}];
|
||||
}
|
||||
|
||||
def PolynomialSizeType : LowLFHE_Type<"PolynomialSize"> {
|
||||
let mnemonic = "polynomial_size";
|
||||
|
||||
let summary = "Polynomial size";
|
||||
|
||||
let description = [{
|
||||
Polynomial size.
|
||||
}];
|
||||
|
||||
let printer = [{
|
||||
$_printer << "polynomial_size";
|
||||
}];
|
||||
|
||||
let parser = [{
|
||||
return get($_ctxt);
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
def DecompositionLevelCountType : LowLFHE_Type<"DecompositionLevelCount"> {
|
||||
let mnemonic = "decomp_level_count";
|
||||
|
||||
let summary = "Decomposition level";
|
||||
|
||||
let description = [{
|
||||
Decomposition level.
|
||||
}];
|
||||
|
||||
let printer = [{
|
||||
$_printer << "decomp_level_count";
|
||||
}];
|
||||
|
||||
let parser = [{
|
||||
return get($_ctxt);
|
||||
}];
|
||||
}
|
||||
|
||||
def DecompositionBaseLogType : LowLFHE_Type<"DecompositionBaseLog"> {
|
||||
let mnemonic = "decomp_base_log";
|
||||
|
||||
let summary = "Decomposition base log";
|
||||
|
||||
let description = [{
|
||||
Decomposition base log.
|
||||
}];
|
||||
|
||||
let printer = [{
|
||||
$_printer << "decomp_base_log";
|
||||
}];
|
||||
|
||||
let parser = [{
|
||||
return get($_ctxt);
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
def VarianceType : LowLFHE_Type<"Variance"> {
|
||||
let mnemonic = "variance";
|
||||
|
||||
let summary = "Variance";
|
||||
|
||||
let description = [{
|
||||
Variance.
|
||||
}];
|
||||
|
||||
let printer = [{
|
||||
$_printer << "variance";
|
||||
}];
|
||||
|
||||
let parser = [{
|
||||
return get($_ctxt);
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
def CleartextType : LowLFHE_Type<"Cleartext"> {
|
||||
let mnemonic = "cleartext";
|
||||
|
||||
let summary = "Cleartext";
|
||||
|
||||
let description = [{
|
||||
Cleartext.
|
||||
}];
|
||||
|
||||
let parameters = (ins
|
||||
// Number of bits of the cleartext representation
|
||||
"signed":$p
|
||||
);
|
||||
|
||||
let printer = [{
|
||||
$_printer << "cleartext<";
|
||||
if (getImpl()->p == -1) $_printer << "_";
|
||||
else $_printer << getImpl()->p;
|
||||
$_printer << ">";
|
||||
}];
|
||||
|
||||
let parser = [{
|
||||
if ($_parser.parseLess())
|
||||
return Type();
|
||||
int p = -1;
|
||||
if ($_parser.parseOptionalKeyword("_") && $_parser.parseInteger(p))
|
||||
return Type();
|
||||
if ($_parser.parseGreater())
|
||||
return Type();
|
||||
Location loc = $_parser.getEncodedSourceLoc($_parser.getNameLoc());
|
||||
return getChecked(loc, loc.getContext(), p);
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user