mirror of
https://github.com/zama-ai/concrete.git
synced 2026-02-09 12:15:09 -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);
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -45,60 +45,6 @@ func @bootstrap_lwe(%arg0: !LowLFHE.lwe_ciphertext<2048,7>, %arg1: !LowLFHE.glwe
|
||||
return %1: !LowLFHE.lwe_ciphertext<2048,7>
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @decrypt_glwe(%arg0: !LowLFHE.glwe_secret_key, %arg1: !LowLFHE.glwe_ciphertext) -> !LowLFHE.plaintext_list
|
||||
func @decrypt_glwe(%arg0: !LowLFHE.glwe_secret_key, %arg1: !LowLFHE.glwe_ciphertext) -> !LowLFHE.plaintext_list {
|
||||
// CHECK-NEXT: %[[V1:.*]] = "LowLFHE.decrypt_glwe"(%arg0, %arg1) : (!LowLFHE.glwe_secret_key, !LowLFHE.glwe_ciphertext) -> !LowLFHE.plaintext_list
|
||||
// CHECK-NEXT: return %[[V1]] : !LowLFHE.plaintext_list
|
||||
|
||||
%1 = "LowLFHE.decrypt_glwe"(%arg0, %arg1): (!LowLFHE.glwe_secret_key, !LowLFHE.glwe_ciphertext) -> (!LowLFHE.plaintext_list)
|
||||
return %1: !LowLFHE.plaintext_list
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @decrypt_lwe(%arg0: !LowLFHE.lwe_secret_key, %arg1: !LowLFHE.lwe_ciphertext<2048,7>) -> !LowLFHE.plaintext<6>
|
||||
func @decrypt_lwe(%arg0: !LowLFHE.lwe_secret_key, %arg1: !LowLFHE.lwe_ciphertext<2048,7>) -> !LowLFHE.plaintext<6> {
|
||||
// CHECK-NEXT: %[[V1:.*]] = "LowLFHE.decrypt_lwe"(%arg0, %arg1) : (!LowLFHE.lwe_secret_key, !LowLFHE.lwe_ciphertext<2048,7>) -> !LowLFHE.plaintext<6>
|
||||
// CHECK-NEXT: return %[[V1]] : !LowLFHE.plaintext<6>
|
||||
|
||||
%1 = "LowLFHE.decrypt_lwe"(%arg0, %arg1): (!LowLFHE.lwe_secret_key, !LowLFHE.lwe_ciphertext<2048,7>) -> (!LowLFHE.plaintext<6>)
|
||||
return %1: !LowLFHE.plaintext<6>
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @encrypt_glwe(%arg0: !LowLFHE.glwe_secret_key, %arg1: !LowLFHE.plaintext_list, %arg2: !LowLFHE.enc_rand_gen, %arg3: !LowLFHE.variance) -> !LowLFHE.glwe_ciphertext
|
||||
func @encrypt_glwe(%arg0: !LowLFHE.glwe_secret_key, %arg1: !LowLFHE.plaintext_list, %arg2: !LowLFHE.enc_rand_gen, %arg3: !LowLFHE.variance) -> !LowLFHE.glwe_ciphertext {
|
||||
// CHECK-NEXT: %[[V1:.*]] = "LowLFHE.encrypt_glwe"(%arg0, %arg1, %arg2, %arg3) : (!LowLFHE.glwe_secret_key, !LowLFHE.plaintext_list, !LowLFHE.enc_rand_gen, !LowLFHE.variance) -> !LowLFHE.glwe_ciphertext
|
||||
// CHECK-NEXT: return %[[V1]] : !LowLFHE.glwe_ciphertext
|
||||
|
||||
%1 = "LowLFHE.encrypt_glwe"(%arg0, %arg1, %arg2, %arg3): (!LowLFHE.glwe_secret_key, !LowLFHE.plaintext_list, !LowLFHE.enc_rand_gen, !LowLFHE.variance) -> (!LowLFHE.glwe_ciphertext)
|
||||
return %1: !LowLFHE.glwe_ciphertext
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @encrypt_lwe(%arg0: !LowLFHE.lwe_secret_key, %arg1: !LowLFHE.plaintext<6>, %arg2: !LowLFHE.enc_rand_gen, %arg3: !LowLFHE.variance) -> !LowLFHE.lwe_ciphertext<2048,7>
|
||||
func @encrypt_lwe(%arg0: !LowLFHE.lwe_secret_key, %arg1: !LowLFHE.plaintext<6>, %arg2: !LowLFHE.enc_rand_gen, %arg3: !LowLFHE.variance) -> !LowLFHE.lwe_ciphertext<2048,7> {
|
||||
// CHECK-NEXT: %[[V1:.*]] = "LowLFHE.encrypt_lwe"(%arg0, %arg1, %arg2, %arg3) : (!LowLFHE.lwe_secret_key, !LowLFHE.plaintext<6>, !LowLFHE.enc_rand_gen, !LowLFHE.variance) -> !LowLFHE.lwe_ciphertext<2048,7>
|
||||
// CHECK-NEXT: return %[[V1]] : !LowLFHE.lwe_ciphertext<2048,7>
|
||||
|
||||
%1 = "LowLFHE.encrypt_lwe"(%arg0, %arg1, %arg2, %arg3): (!LowLFHE.lwe_secret_key, !LowLFHE.plaintext<6>, !LowLFHE.enc_rand_gen, !LowLFHE.variance) -> (!LowLFHE.lwe_ciphertext<2048,7>)
|
||||
return %1: !LowLFHE.lwe_ciphertext<2048,7>
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @get_plaintext_list_element(%arg0: !LowLFHE.plaintext_list, %arg1: index) -> i7
|
||||
func @get_plaintext_list_element(%arg0: !LowLFHE.plaintext_list, %arg1: index) -> i7 {
|
||||
// CHECK-NEXT: %[[V1:.*]] = "LowLFHE.get_plaintext_list_element"(%arg0, %arg1) : (!LowLFHE.plaintext_list, index) -> i7
|
||||
// CHECK-NEXT: return %[[V1]] : i7
|
||||
|
||||
%1 = "LowLFHE.get_plaintext_list_element"(%arg0, %arg1): (!LowLFHE.plaintext_list, index) -> i7
|
||||
return %1: i7
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @set_plaintext_list_element(%arg0: !LowLFHE.plaintext_list, %arg1: index, %arg2: i7)
|
||||
func @set_plaintext_list_element(%arg0: !LowLFHE.plaintext_list, %arg1: index, %arg2: i7){
|
||||
// CHECK-NEXT: "LowLFHE.set_plaintext_list_element"(%arg0, %arg1, %arg2) : (!LowLFHE.plaintext_list, index, i7) -> ()
|
||||
// CHECK-NEXT: return
|
||||
|
||||
"LowLFHE.set_plaintext_list_element"(%arg0, %arg1, %arg2): (!LowLFHE.plaintext_list, index, i7) -> ()
|
||||
return
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @keyswitch_lwe(%arg0: !LowLFHE.lwe_ciphertext<2048,7>) -> !LowLFHE.lwe_ciphertext<2048,7>
|
||||
func @keyswitch_lwe(%arg0: !LowLFHE.lwe_ciphertext<2048,7>) -> !LowLFHE.lwe_ciphertext<2048,7> {
|
||||
// CHECK-NEXT: %[[V1:.*]] = "LowLFHE.keyswitch_lwe"(%arg0) {baseLog = 2 : i32, inputLweSize = 1 : i32, level = 3 : i32, outputLweSize = 1 : i32} : (!LowLFHE.lwe_ciphertext<2048,7>) -> !LowLFHE.lwe_ciphertext<2048,7>
|
||||
@@ -108,60 +54,6 @@ func @keyswitch_lwe(%arg0: !LowLFHE.lwe_ciphertext<2048,7>) -> !LowLFHE.lwe_ciph
|
||||
return %1: !LowLFHE.lwe_ciphertext<2048,7>
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @fill_glwe_secret_key(%arg0: !LowLFHE.glwe_secret_key, %arg1: !LowLFHE.secret_rand_gen)
|
||||
func @fill_glwe_secret_key(%arg0: !LowLFHE.glwe_secret_key, %arg1: !LowLFHE.secret_rand_gen) {
|
||||
// CHECK-NEXT: "LowLFHE.fill_glwe_secret_key"(%arg0, %arg1) : (!LowLFHE.glwe_secret_key, !LowLFHE.secret_rand_gen) -> ()
|
||||
// CHECK-NEXT: return
|
||||
|
||||
"LowLFHE.fill_glwe_secret_key"(%arg0, %arg1): (!LowLFHE.glwe_secret_key, !LowLFHE.secret_rand_gen) -> ()
|
||||
return
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @fill_lwe_secret_key(%arg0: !LowLFHE.lwe_secret_key, %arg1: !LowLFHE.secret_rand_gen)
|
||||
func @fill_lwe_secret_key(%arg0: !LowLFHE.lwe_secret_key, %arg1: !LowLFHE.secret_rand_gen) {
|
||||
// CHECK-NEXT: "LowLFHE.fill_lwe_secret_key"(%arg0, %arg1) : (!LowLFHE.lwe_secret_key, !LowLFHE.secret_rand_gen) -> ()
|
||||
// CHECK-NEXT: return
|
||||
|
||||
"LowLFHE.fill_lwe_secret_key"(%arg0, %arg1): (!LowLFHE.lwe_secret_key, !LowLFHE.secret_rand_gen) -> ()
|
||||
return
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @fill_lwe_bootstrap_key(%arg0: !LowLFHE.lwe_bootstrap_key, %arg1: !LowLFHE.lwe_secret_key, %arg2: !LowLFHE.glwe_secret_key, %arg3: !LowLFHE.enc_rand_gen, %arg4: !LowLFHE.variance)
|
||||
func @fill_lwe_bootstrap_key(%arg0: !LowLFHE.lwe_bootstrap_key, %arg1: !LowLFHE.lwe_secret_key, %arg2: !LowLFHE.glwe_secret_key, %arg3: !LowLFHE.enc_rand_gen, %arg4: !LowLFHE.variance) {
|
||||
// CHECK-NEXT: "LowLFHE.fill_lwe_bootstrap_key"(%arg0, %arg1, %arg2, %arg3, %arg4) : (!LowLFHE.lwe_bootstrap_key, !LowLFHE.lwe_secret_key, !LowLFHE.glwe_secret_key, !LowLFHE.enc_rand_gen, !LowLFHE.variance) -> ()
|
||||
// CHECK-NEXT: return
|
||||
|
||||
"LowLFHE.fill_lwe_bootstrap_key"(%arg0, %arg1, %arg2, %arg3, %arg4): (!LowLFHE.lwe_bootstrap_key, !LowLFHE.lwe_secret_key, !LowLFHE.glwe_secret_key, !LowLFHE.enc_rand_gen, !LowLFHE.variance) -> ()
|
||||
return
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @fill_lwe_keyswitch_key(%arg0: !LowLFHE.lwe_key_switch_key, %arg1: !LowLFHE.lwe_secret_key, %arg2: !LowLFHE.lwe_secret_key, %arg3: !LowLFHE.enc_rand_gen, %arg4: !LowLFHE.variance)
|
||||
func @fill_lwe_keyswitch_key(%arg0: !LowLFHE.lwe_key_switch_key, %arg1: !LowLFHE.lwe_secret_key, %arg2: !LowLFHE.lwe_secret_key, %arg3: !LowLFHE.enc_rand_gen, %arg4: !LowLFHE.variance) {
|
||||
// CHECK-NEXT: "LowLFHE.fill_lwe_keyswitch_key"(%arg0, %arg1, %arg2, %arg3, %arg4) : (!LowLFHE.lwe_key_switch_key, !LowLFHE.lwe_secret_key, !LowLFHE.lwe_secret_key, !LowLFHE.enc_rand_gen, !LowLFHE.variance) -> ()
|
||||
// CHECK-NEXT: return
|
||||
|
||||
"LowLFHE.fill_lwe_keyswitch_key"(%arg0, %arg1, %arg2, %arg3, %arg4): (!LowLFHE.lwe_key_switch_key, !LowLFHE.lwe_secret_key, !LowLFHE.lwe_secret_key, !LowLFHE.enc_rand_gen, !LowLFHE.variance) -> ()
|
||||
return
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @fill_plaintext_list_with_expansion(%arg0: !LowLFHE.plaintext_list, %arg1: !LowLFHE.foreign_plaintext_list)
|
||||
func @fill_plaintext_list_with_expansion(%arg0: !LowLFHE.plaintext_list, %arg1: !LowLFHE.foreign_plaintext_list) {
|
||||
// CHECK-NEXT: "LowLFHE.fill_plaintext_list_with_expansion"(%arg0, %arg1) : (!LowLFHE.plaintext_list, !LowLFHE.foreign_plaintext_list) -> ()
|
||||
// CHECK-NEXT: return
|
||||
|
||||
"LowLFHE.fill_plaintext_list_with_expansion"(%arg0, %arg1): (!LowLFHE.plaintext_list, !LowLFHE.foreign_plaintext_list) -> ()
|
||||
return
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @encode_cleartext(%arg0: !LowLFHE.cleartext<6>) -> !LowLFHE.plaintext<6>
|
||||
func @encode_cleartext(%arg0: !LowLFHE.cleartext<6>) -> (!LowLFHE.plaintext<6>) {
|
||||
// CHECK-NEXT: %[[V1:.*]] = "LowLFHE.encode_cleartext"(%arg0) : (!LowLFHE.cleartext<6>) -> !LowLFHE.plaintext<6>
|
||||
// CHECK-NEXT: return %[[V1]] : !LowLFHE.plaintext<6>
|
||||
|
||||
%0 = "LowLFHE.encode_cleartext"(%arg0): (!LowLFHE.cleartext<6>) -> !LowLFHE.plaintext<6>
|
||||
return %0: !LowLFHE.plaintext<6>
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @encode_int(%arg0: i6) -> !LowLFHE.plaintext<6>
|
||||
func @encode_int(%arg0: i6) -> (!LowLFHE.plaintext<6>) {
|
||||
// CHECK-NEXT: %[[V1:.*]] = "LowLFHE.encode_int"(%arg0) : (i6) -> !LowLFHE.plaintext<6>
|
||||
@@ -171,14 +63,6 @@ func @encode_int(%arg0: i6) -> (!LowLFHE.plaintext<6>) {
|
||||
return %0: !LowLFHE.plaintext<6>
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @const_cleartext() -> !LowLFHE.cleartext<8>
|
||||
func @const_cleartext() -> (!LowLFHE.cleartext<8>) {
|
||||
// CHECK-NEXT: %[[V1:.*]] = "LowLFHE.const_cleartext"() {value = 1 : i8} : () -> !LowLFHE.cleartext<8>
|
||||
// CHECK-NEXT: return %[[V1]] : !LowLFHE.cleartext<8>
|
||||
%0 = "LowLFHE.const_cleartext"() {value = 1 : i8} : () -> !LowLFHE.cleartext<8>
|
||||
return %0: !LowLFHE.cleartext<8>
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @int_to_cleartext() -> !LowLFHE.cleartext<6>
|
||||
func @int_to_cleartext() -> !LowLFHE.cleartext<6> {
|
||||
// CHECK-NEXT: %[[V0:.*]] = arith.constant 5 : i6
|
||||
|
||||
@@ -1,16 +1,5 @@
|
||||
// RUN: zamacompiler --action=roundtrip %s 2>&1| FileCheck %s
|
||||
|
||||
// CHECK-LABEL: func @type_enc_rand_gen(%arg0: !LowLFHE.enc_rand_gen) -> !LowLFHE.enc_rand_gen
|
||||
func @type_enc_rand_gen(%arg0: !LowLFHE.enc_rand_gen) -> !LowLFHE.enc_rand_gen {
|
||||
// CHECK-NEXT: return %arg0 : !LowLFHE.enc_rand_gen
|
||||
return %arg0: !LowLFHE.enc_rand_gen
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @type_secret_rand_gen(%arg0: !LowLFHE.secret_rand_gen) -> !LowLFHE.secret_rand_gen
|
||||
func @type_secret_rand_gen(%arg0: !LowLFHE.secret_rand_gen) -> !LowLFHE.secret_rand_gen {
|
||||
// CHECK-NEXT: return %arg0 : !LowLFHE.secret_rand_gen
|
||||
return %arg0: !LowLFHE.secret_rand_gen
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @type_plaintext(%arg0: !LowLFHE.plaintext<7>) -> !LowLFHE.plaintext<7>
|
||||
func @type_plaintext(%arg0: !LowLFHE.plaintext<7>) -> !LowLFHE.plaintext<7> {
|
||||
@@ -48,60 +37,6 @@ func @type_lwe_bootstrap_key(%arg0: !LowLFHE.lwe_bootstrap_key) -> !LowLFHE.lwe_
|
||||
return %arg0: !LowLFHE.lwe_bootstrap_key
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @type_lwe_secret_key(%arg0: !LowLFHE.lwe_secret_key) -> !LowLFHE.lwe_secret_key
|
||||
func @type_lwe_secret_key(%arg0: !LowLFHE.lwe_secret_key) -> !LowLFHE.lwe_secret_key {
|
||||
// CHECK-NEXT: return %arg0 : !LowLFHE.lwe_secret_key
|
||||
return %arg0: !LowLFHE.lwe_secret_key
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @type_lwe_size(%arg0: !LowLFHE.lwe_size) -> !LowLFHE.lwe_size
|
||||
func @type_lwe_size(%arg0: !LowLFHE.lwe_size) -> !LowLFHE.lwe_size {
|
||||
// CHECK-NEXT: return %arg0 : !LowLFHE.lwe_size
|
||||
return %arg0: !LowLFHE.lwe_size
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @type_glwe_ciphertext(%arg0: !LowLFHE.glwe_ciphertext) -> !LowLFHE.glwe_ciphertext
|
||||
func @type_glwe_ciphertext(%arg0: !LowLFHE.glwe_ciphertext) -> !LowLFHE.glwe_ciphertext {
|
||||
// CHECK-NEXT: return %arg0 : !LowLFHE.glwe_ciphertext
|
||||
return %arg0: !LowLFHE.glwe_ciphertext
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @type_glwe_secret_key(%arg0: !LowLFHE.glwe_secret_key) -> !LowLFHE.glwe_secret_key
|
||||
func @type_glwe_secret_key(%arg0: !LowLFHE.glwe_secret_key) -> !LowLFHE.glwe_secret_key {
|
||||
// CHECK-NEXT: return %arg0 : !LowLFHE.glwe_secret_key
|
||||
return %arg0: !LowLFHE.glwe_secret_key
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @type_glwe_size(%arg0: !LowLFHE.glwe_size) -> !LowLFHE.glwe_size
|
||||
func @type_glwe_size(%arg0: !LowLFHE.glwe_size) -> !LowLFHE.glwe_size {
|
||||
// CHECK-NEXT: return %arg0 : !LowLFHE.glwe_size
|
||||
return %arg0: !LowLFHE.glwe_size
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @type_polynomial_size(%arg0: !LowLFHE.polynomial_size) -> !LowLFHE.polynomial_size
|
||||
func @type_polynomial_size(%arg0: !LowLFHE.polynomial_size) -> !LowLFHE.polynomial_size {
|
||||
// CHECK-NEXT: return %arg0 : !LowLFHE.polynomial_size
|
||||
return %arg0: !LowLFHE.polynomial_size
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @type_decomp_level_count(%arg0: !LowLFHE.decomp_level_count) -> !LowLFHE.decomp_level_count
|
||||
func @type_decomp_level_count(%arg0: !LowLFHE.decomp_level_count) -> !LowLFHE.decomp_level_count {
|
||||
// CHECK-NEXT: return %arg0 : !LowLFHE.decomp_level_count
|
||||
return %arg0: !LowLFHE.decomp_level_count
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @type_decomp_base_log(%arg0: !LowLFHE.decomp_base_log) -> !LowLFHE.decomp_base_log
|
||||
func @type_decomp_base_log(%arg0: !LowLFHE.decomp_base_log) -> !LowLFHE.decomp_base_log {
|
||||
// CHECK-NEXT: return %arg0 : !LowLFHE.decomp_base_log
|
||||
return %arg0: !LowLFHE.decomp_base_log
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @type_variance(%arg0: !LowLFHE.variance) -> !LowLFHE.variance
|
||||
func @type_variance(%arg0: !LowLFHE.variance) -> !LowLFHE.variance {
|
||||
// CHECK-NEXT: return %arg0 : !LowLFHE.variance
|
||||
return %arg0: !LowLFHE.variance
|
||||
}
|
||||
|
||||
// CHECK-LABEL: func @type_cleartext(%arg0: !LowLFHE.cleartext<5>) -> !LowLFHE.cleartext<5>
|
||||
func @type_cleartext(%arg0: !LowLFHE.cleartext<5>) -> !LowLFHE.cleartext<5> {
|
||||
// CHECK-NEXT: return %arg0 : !LowLFHE.cleartext<5>
|
||||
|
||||
Reference in New Issue
Block a user