Files
concrete/docs/dev/compilation/TFHEDialect.md
2023-07-13 14:33:54 +02:00

737 lines
17 KiB
Markdown

<!-- Autogenerated by mlir-tblgen; don't manually edit -->
# '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 |
| :----: | ----------- |
&laquo;unnamed&raquo; | 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 |
| :----: | ----------- |
&laquo;unnamed&raquo; | 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 MulGLWEIntOp
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 MulGLWEIntOp
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 |
| :----: | ----------- |
&laquo;unnamed&raquo; | 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 |
| :----: | ----------- |
&laquo;unnamed&raquo; | 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 |
| :----: | ----------- |
&laquo;unnamed&raquo; | 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, # inputLweDim
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` | |
| inputLweDim | `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` | |