# module `concrete.fhe.mlir.utils` Declaration of various functions and constants related to MLIR conversion. **Global Variables** --------------- - **MAXIMUM_TLU_BIT_WIDTH** --- ## function `flood_replace_none_values` ```python flood_replace_none_values(table: list) ``` Use flooding algorithm to replace `None` values. **Args:** table (list): the list in which there are `None` values that need to be replaced with copies of the closest non `None` data from the list --- ## function `construct_table_multivariate` ```python construct_table_multivariate(node: Node, preds: List[Node]) → List[Any] ``` Construct the lookup table for a multivariate node. **Args:** node (Node): Multivariate node to construct the table for preds (List[Node]): ordered predecessors to `node` **Returns:** List[Any]: lookup table corresponding to `node` and its input value --- ## function `construct_table` ```python construct_table( node: Node, preds: List[Node], configuration: Configuration ) → List[Any] ``` Construct the lookup table for an Operation.Generic node. **Args:** node (Node): Operation.Generic to construct the table preds (List[Node]): ordered predecessors to `node` configuration (Configuration): configuration to use **Returns:** List[Any]: lookup table corresponding to `node` and its input value --- ## function `construct_deduplicated_tables` ```python construct_deduplicated_tables( node: Node, preds: List[Node], configuration: Configuration ) → Tuple[Tuple[ndarray, Optional[List[Tuple[int, ]]]], ] ``` Construct lookup tables for each cell of the input for an Operation.Generic node. **Args:** node (Node): Operation.Generic to construct the table preds (List[Node]): ordered predecessors to `node` configuration (Configuration): configuration to use **Returns:** Tuple[Tuple[numpy.ndarray, List[Tuple[int, ...]]], ...]: tuple containing tuples of 2 for - constructed table - list of indices of the input that use the constructed table e.g., - `.. code-block`: : python ( (np.array([3, 1, 2, 4]), [(1, 0), (2, 1)]), (np.array([5, 8, 6, 7]), [(0, 0), (0, 1), (1, 1), (2, 0)]), ) means the lookup on 3x2 input will result in - `.. code-block`: : python [ [5, 8, 6, 7][input[0, 0]] , [5, 8, 6, 7][input[0, 1]] ] [ [3, 1, 2, 4][input[1, 0]] , [5, 8, 6, 7][input[1, 1]] ] [ [5, 8, 6, 7][input[2, 0]] , [3, 1, 2, 4][input[2, 1]] ] --- ## class `HashableNdarray` HashableNdarray class, to use numpy arrays in dictionaries. ### method `__init__` ```python __init__(array: ndarray) ``` --- ## class `Comparison` Comparison enum, to store the result comparison in 2-bits as there are three possible outcomes.