<!-- 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 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 |
| :----: | ----------- |
&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,   # 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` |  |

