# 'TFHE' Dialect High Level Fully Homomorphic Encryption dialect A dialect for representation of high level operation on fully homomorphic ciphertext. ## Operation definition ### `TFHE.batched_add_glwe_cst_int` (::mlir::concretelang::TFHE::ABatchedAddGLWECstIntOp) Batched version of AddGLWEIntOp Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Operands: | Operand | Description | | :-----: | ----------- | | `ciphertext` | A GLWE ciphertext | `plaintexts` | 1D tensor of integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | 1D tensor of A GLWE ciphertext values ### `TFHE.batched_add_glwe_int_cst` (::mlir::concretelang::TFHE::ABatchedAddGLWEIntCstOp) Batched version of AddGLWEIntOp Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Operands: | Operand | Description | | :-----: | ----------- | | `ciphertexts` | 1D tensor of A GLWE ciphertext values | `plaintext` | integer #### Results: | Result | Description | | :----: | ----------- | | `result` | 1D tensor of A GLWE ciphertext values ### `TFHE.batched_add_glwe_int` (::mlir::concretelang::TFHE::ABatchedAddGLWEIntOp) Batched version of AddGLWEIntOp Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Operands: | Operand | Description | | :-----: | ----------- | | `ciphertexts` | 1D tensor of A GLWE ciphertext values | `plaintexts` | 1D tensor of integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | 1D tensor of A GLWE ciphertext values ### `TFHE.batched_add_glwe` (::mlir::concretelang::TFHE::ABatchedAddGLWEOp) Batched version of AddGLWEOp Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Operands: | Operand | Description | | :-----: | ----------- | | `ciphertexts_a` | 1D tensor of A GLWE ciphertext values | `ciphertexts_b` | 1D tensor of A GLWE ciphertext values #### Results: | Result | Description | | :----: | ----------- | | `result` | 1D tensor of A GLWE ciphertext values ### `TFHE.add_glwe_int` (::mlir::concretelang::TFHE::AddGLWEIntOp) Returns the sum of a clear integer and an lwe ciphertext Traits: AlwaysSpeculatableImplTrait Interfaces: BatchableOpInterface, ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Operands: | Operand | Description | | :-----: | ----------- | | `a` | A GLWE ciphertext | `b` | integer #### Results: | Result | Description | | :----: | ----------- | «unnamed» | A GLWE ciphertext ### `TFHE.add_glwe` (::mlir::concretelang::TFHE::AddGLWEOp) Returns the sum of two lwe ciphertexts Traits: AlwaysSpeculatableImplTrait Interfaces: BatchableOpInterface, ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Operands: | Operand | Description | | :-----: | ----------- | | `a` | A GLWE ciphertext | `b` | A GLWE ciphertext #### Results: | Result | Description | | :----: | ----------- | «unnamed» | A GLWE ciphertext ### `TFHE.batched_bootstrap_glwe` (::mlir::concretelang::TFHE::BatchedBootstrapGLWEOp) Batched version of KeySwitchGLWEOp Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Attributes: | Attribute | MLIR Type | Description | | :-------: | :-------: | ----------- | | `key` | ::mlir::concretelang::TFHE::GLWEBootstrapKeyAttr | An attribute representing bootstrap key. #### Operands: | Operand | Description | | :-----: | ----------- | | `ciphertexts` | 1D tensor of A GLWE ciphertext values | `lookup_table` | 1D tensor of 64-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | 1D tensor of A GLWE ciphertext values ### `TFHE.batched_keyswitch_glwe` (::mlir::concretelang::TFHE::BatchedKeySwitchGLWEOp) Batched version of KeySwitchGLWEOp Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Attributes: | Attribute | MLIR Type | Description | | :-------: | :-------: | ----------- | | `key` | ::mlir::concretelang::TFHE::GLWEKeyswitchKeyAttr | An attribute representing keyswitch key. #### Operands: | Operand | Description | | :-----: | ----------- | | `ciphertexts` | 1D tensor of A GLWE ciphertext values #### Results: | Result | Description | | :----: | ----------- | | `result` | 1D tensor of A GLWE ciphertext values ### `TFHE.batched_mapped_bootstrap_glwe` (::mlir::concretelang::TFHE::BatchedMappedBootstrapGLWEOp) Batched version of KeySwitchGLWEOp which also batches the lookup table Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Attributes: | Attribute | MLIR Type | Description | | :-------: | :-------: | ----------- | | `key` | ::mlir::concretelang::TFHE::GLWEBootstrapKeyAttr | An attribute representing bootstrap key. #### Operands: | Operand | Description | | :-----: | ----------- | | `ciphertexts` | 1D tensor of A GLWE ciphertext values | `lookup_table` | 2D tensor of 64-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | 1D tensor of A GLWE ciphertext values ### `TFHE.batched_mul_glwe_cst_int` (::mlir::concretelang::TFHE::BatchedMulGLWECstIntOp) Batched version of MulGLWECstIntOp Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Operands: | Operand | Description | | :-----: | ----------- | | `ciphertext` | A GLWE ciphertext | `cleartexts` | 1D tensor of integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | 1D tensor of A GLWE ciphertext values ### `TFHE.batched_mul_glwe_int_cst` (::mlir::concretelang::TFHE::BatchedMulGLWEIntCstOp) Batched version of MulGLWEIntCstOp Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Operands: | Operand | Description | | :-----: | ----------- | | `ciphertexts` | 1D tensor of A GLWE ciphertext values | `cleartext` | integer #### Results: | Result | Description | | :----: | ----------- | | `result` | 1D tensor of A GLWE ciphertext values ### `TFHE.batched_mul_glwe_int` (::mlir::concretelang::TFHE::BatchedMulGLWEIntOp) Batched version of MulGLWEIntOp Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Operands: | Operand | Description | | :-----: | ----------- | | `ciphertexts` | 1D tensor of A GLWE ciphertext values | `cleartexts` | 1D tensor of integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | 1D tensor of A GLWE ciphertext values ### `TFHE.batched_neg_glwe` (::mlir::concretelang::TFHE::BatchedNegGLWEOp) Batched version of NegGLWEOp Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Operands: | Operand | Description | | :-----: | ----------- | | `ciphertexts` | 1D tensor of A GLWE ciphertext values #### Results: | Result | Description | | :----: | ----------- | | `result` | 1D tensor of A GLWE ciphertext values ### `TFHE.bootstrap_glwe` (::mlir::concretelang::TFHE::BootstrapGLWEOp) Programmable bootstraping of a GLWE ciphertext with a lookup table Traits: AlwaysSpeculatableImplTrait Interfaces: BatchableOpInterface, ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Attributes: | Attribute | MLIR Type | Description | | :-------: | :-------: | ----------- | | `key` | ::mlir::concretelang::TFHE::GLWEBootstrapKeyAttr | An attribute representing bootstrap key. #### Operands: | Operand | Description | | :-----: | ----------- | | `ciphertext` | A GLWE ciphertext | `lookup_table` | 1D tensor of 64-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | A GLWE ciphertext ### `TFHE.encode_expand_lut_for_bootstrap` (::mlir::concretelang::TFHE::EncodeExpandLutForBootstrapOp) Encode and expand a lookup table so that it can be used for a bootstrap. Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Attributes: | Attribute | MLIR Type | Description | | :-------: | :-------: | ----------- | | `polySize` | ::mlir::IntegerAttr | 32-bit signless integer attribute | `outputBits` | ::mlir::IntegerAttr | 32-bit signless integer attribute | `isSigned` | ::mlir::BoolAttr | bool attribute #### Operands: | Operand | Description | | :-----: | ----------- | | `input_lookup_table` | 1D tensor of 64-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | 1D tensor of 64-bit signless integer values ### `TFHE.encode_lut_for_crt_woppbs` (::mlir::concretelang::TFHE::EncodeLutForCrtWopPBSOp) Encode and expand a lookup table so that it can be used for a wop pbs. Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Attributes: | Attribute | MLIR Type | Description | | :-------: | :-------: | ----------- | | `crtDecomposition` | ::mlir::ArrayAttr | 64-bit integer array attribute | `crtBits` | ::mlir::ArrayAttr | 64-bit integer array attribute | `modulusProduct` | ::mlir::IntegerAttr | 32-bit signless integer attribute | `isSigned` | ::mlir::BoolAttr | bool attribute #### Operands: | Operand | Description | | :-----: | ----------- | | `input_lookup_table` | 1D tensor of 64-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | 2D tensor of 64-bit signless integer values ### `TFHE.encode_plaintext_with_crt` (::mlir::concretelang::TFHE::EncodePlaintextWithCrtOp) Encodes a plaintext by decomposing it on a crt basis. Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Attributes: | Attribute | MLIR Type | Description | | :-------: | :-------: | ----------- | | `mods` | ::mlir::ArrayAttr | 64-bit integer array attribute | `modsProd` | ::mlir::IntegerAttr | 64-bit signless integer attribute #### Operands: | Operand | Description | | :-----: | ----------- | | `input` | 64-bit signless integer #### Results: | Result | Description | | :----: | ----------- | | `result` | 1D tensor of 64-bit signless integer values ### `TFHE.keyswitch_glwe` (::mlir::concretelang::TFHE::KeySwitchGLWEOp) Change the encryption parameters of a glwe ciphertext by applying a keyswitch Traits: AlwaysSpeculatableImplTrait Interfaces: BatchableOpInterface, ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Attributes: | Attribute | MLIR Type | Description | | :-------: | :-------: | ----------- | | `key` | ::mlir::concretelang::TFHE::GLWEKeyswitchKeyAttr | An attribute representing keyswitch key. #### Operands: | Operand | Description | | :-----: | ----------- | | `ciphertext` | A GLWE ciphertext #### Results: | Result | Description | | :----: | ----------- | | `result` | A GLWE ciphertext ### `TFHE.mul_glwe_int` (::mlir::concretelang::TFHE::MulGLWEIntOp) Returns the product of a clear integer and an lwe ciphertext Traits: AlwaysSpeculatableImplTrait Interfaces: BatchableOpInterface, ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Operands: | Operand | Description | | :-----: | ----------- | | `a` | A GLWE ciphertext | `b` | integer #### Results: | Result | Description | | :----: | ----------- | «unnamed» | A GLWE ciphertext ### `TFHE.neg_glwe` (::mlir::concretelang::TFHE::NegGLWEOp) Negates a glwe ciphertext Traits: AlwaysSpeculatableImplTrait Interfaces: BatchableOpInterface, ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Operands: | Operand | Description | | :-----: | ----------- | | `a` | A GLWE ciphertext #### Results: | Result | Description | | :----: | ----------- | «unnamed» | A GLWE ciphertext ### `TFHE.sub_int_glwe` (::mlir::concretelang::TFHE::SubGLWEIntOp) Substracts an integer and a GLWE ciphertext Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Operands: | Operand | Description | | :-----: | ----------- | | `a` | integer | `b` | A GLWE ciphertext #### Results: | Result | Description | | :----: | ----------- | «unnamed» | A GLWE ciphertext ### `TFHE.wop_pbs_glwe` (::mlir::concretelang::TFHE::WopPBSGLWEOp) Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Attributes: | Attribute | MLIR Type | Description | | :-------: | :-------: | ----------- | | `ksk` | ::mlir::concretelang::TFHE::GLWEKeyswitchKeyAttr | An attribute representing keyswitch key. | `bsk` | ::mlir::concretelang::TFHE::GLWEBootstrapKeyAttr | An attribute representing bootstrap key. | `pksk` | ::mlir::concretelang::TFHE::GLWEPackingKeyswitchKeyAttr | An attribute representing Wop Pbs key. | `crtDecomposition` | ::mlir::ArrayAttr | 64-bit integer array attribute | `cbsLevels` | ::mlir::IntegerAttr | 32-bit signless integer attribute | `cbsBaseLog` | ::mlir::IntegerAttr | 32-bit signless integer attribute #### Operands: | Operand | Description | | :-----: | ----------- | | `ciphertexts` | | `lookupTable` | 2D tensor of 64-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | ### `TFHE.zero` (::mlir::concretelang::TFHE::ZeroGLWEOp) Returns a trivial encryption of 0 Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Results: | Result | Description | | :----: | ----------- | | `out` | A GLWE ciphertext ### `TFHE.zero_tensor` (::mlir::concretelang::TFHE::ZeroTensorGLWEOp) Returns a tensor containing trivial encryptions of 0 Traits: AlwaysSpeculatableImplTrait Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface) Effects: MemoryEffects::Effect{} #### Results: | Result | Description | | :----: | ----------- | | `tensor` | ## Attribute definition ### GLWEBootstrapKeyAttr An attribute representing bootstrap key. Syntax: ``` #TFHE.bsk< mlir::concretelang::TFHE::GLWESecretKey, # inputKey mlir::concretelang::TFHE::GLWESecretKey, # outputKey int, # polySize int, # glweDim int, # levels int, # baseLog int # index > ``` #### Parameters: | Parameter | C++ type | Description | | :-------: | :-------: | ----------- | | inputKey | `mlir::concretelang::TFHE::GLWESecretKey` | | | outputKey | `mlir::concretelang::TFHE::GLWESecretKey` | | | polySize | `int` | | | glweDim | `int` | | | levels | `int` | | | baseLog | `int` | | | index | `int` | | ### GLWEKeyswitchKeyAttr An attribute representing keyswitch key. Syntax: ``` #TFHE.ksk< mlir::concretelang::TFHE::GLWESecretKey, # inputKey mlir::concretelang::TFHE::GLWESecretKey, # outputKey int, # levels int, # baseLog int # index > ``` #### Parameters: | Parameter | C++ type | Description | | :-------: | :-------: | ----------- | | inputKey | `mlir::concretelang::TFHE::GLWESecretKey` | | | outputKey | `mlir::concretelang::TFHE::GLWESecretKey` | | | levels | `int` | | | baseLog | `int` | | | index | `int` | | ### GLWEPackingKeyswitchKeyAttr An attribute representing Wop Pbs key. Syntax: ``` #TFHE.pksk< mlir::concretelang::TFHE::GLWESecretKey, # inputKey mlir::concretelang::TFHE::GLWESecretKey, # outputKey int, # outputPolySize int, # innerLweDim int, # glweDim int, # levels int, # baseLog int # index > ``` #### Parameters: | Parameter | C++ type | Description | | :-------: | :-------: | ----------- | | inputKey | `mlir::concretelang::TFHE::GLWESecretKey` | | | outputKey | `mlir::concretelang::TFHE::GLWESecretKey` | | | outputPolySize | `int` | | | innerLweDim | `int` | | | glweDim | `int` | | | levels | `int` | | | baseLog | `int` | | | index | `int` | | ## Type definition ### GLWECipherTextType A GLWE ciphertext An GLWE cipher text #### Parameters: | Parameter | C++ type | Description | | :-------: | :-------: | ----------- | | key | `mlir::concretelang::TFHE::GLWESecretKey` | |