From b1e7a66b09cb4e86d8a7df55574f28350be077cc Mon Sep 17 00:00:00 2001 From: Quentin Bourgerie Date: Thu, 25 Nov 2021 16:24:57 +0100 Subject: [PATCH] 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. --- .../zamalang/Dialect/LowLFHE/IR/LowLFHEOps.td | 101 +----- .../Dialect/LowLFHE/IR/LowLFHETypes.td | 327 ++++-------------- compiler/tests/Dialect/LowLFHE/ops.mlir | 116 ------- compiler/tests/Dialect/LowLFHE/types.mlir | 65 ---- 4 files changed, 77 insertions(+), 532 deletions(-) diff --git a/compiler/include/zamalang/Dialect/LowLFHE/IR/LowLFHEOps.td b/compiler/include/zamalang/Dialect/LowLFHE/IR/LowLFHEOps.td index 9985bd524..cddbac87d 100644 --- a/compiler/include/zamalang/Dialect/LowLFHE/IR/LowLFHEOps.td +++ b/compiler/include/zamalang/Dialect/LowLFHE/IR/LowLFHEOps.td @@ -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 diff --git a/compiler/include/zamalang/Dialect/LowLFHE/IR/LowLFHETypes.td b/compiler/include/zamalang/Dialect/LowLFHE/IR/LowLFHETypes.td index 1c84f3427..58dc8a085 100644 --- a/compiler/include/zamalang/Dialect/LowLFHE/IR/LowLFHETypes.td +++ b/compiler/include/zamalang/Dialect/LowLFHE/IR/LowLFHETypes.td @@ -6,17 +6,18 @@ include "mlir/IR/BuiltinTypes.td" include "zamalang/Dialect/LowLFHE/IR/LowLFHEDialect.td" class LowLFHE_Type traits = []> : TypeDef { } -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); - }]; -} diff --git a/compiler/tests/Dialect/LowLFHE/ops.mlir b/compiler/tests/Dialect/LowLFHE/ops.mlir index 86e97a143..76671f523 100644 --- a/compiler/tests/Dialect/LowLFHE/ops.mlir +++ b/compiler/tests/Dialect/LowLFHE/ops.mlir @@ -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 diff --git a/compiler/tests/Dialect/LowLFHE/types.mlir b/compiler/tests/Dialect/LowLFHE/types.mlir index 07cf87134..088e0ac15 100644 --- a/compiler/tests/Dialect/LowLFHE/types.mlir +++ b/compiler/tests/Dialect/LowLFHE/types.mlir @@ -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>