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:
Quentin Bourgerie
2021-11-25 16:24:57 +01:00
parent ddca6840f1
commit b1e7a66b09
4 changed files with 77 additions and 532 deletions

View File

@@ -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

View File

@@ -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);
}];
}

View File

@@ -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

View File

@@ -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>