diff --git a/p-isa_tools/kerngen/kernel_optimization/loop_ordering_lookup.py b/p-isa_tools/kerngen/kernel_optimization/loop_ordering_lookup.py new file mode 100644 index 00000000..ee06c8a3 --- /dev/null +++ b/p-isa_tools/kerngen/kernel_optimization/loop_ordering_lookup.py @@ -0,0 +1,145 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# These contents may have been developed with support from one or more Intel-operated +# generative artificial intelligence solutions. + +""" +Loop order lookup functionality for encrypted computing kernels. + +This module provides functionality to determine primary and secondary loop orders +based on scheme, kernel type, polynomial order, and RNS parameters. +""" + +import json +from pathlib import Path + +LOOP_ORDER_CONFIG = str(Path(__file__).parent.parent.absolute() / "kernel_optimization/loop_order_config.json") + + +def _parse_range(range_str: str) -> tuple[int, int]: + """ + Parse a range string like '1-5' or '3' into min, max values. + + Args: + range_str (str): Range string like '1-5' or '3' + + Returns: + Tuple[int, int]: (min_value, max_value) inclusive + """ + if "-" in range_str: + min_val, max_val = range_str.split("-") + return int(min_val), int(max_val) + else: + val = int(range_str) + return val, val + + +def _value_in_range(value: int, range_str: str) -> bool: + """ + Check if a value falls within a range string. + + Args: + value (int): Value to check + range_str (str): Range string like '1-5' or '3' + + Returns: + bool: True if value is in range + """ + min_val, max_val = _parse_range(range_str) + return min_val <= value <= max_val + + +def get_loop_order( + scheme: str, + kernel: str, + polyorder: int, + max_rns: int, +) -> tuple[str, str]: + """ + Get primary and secondary loop order based on configuration. + + Args: + scheme (str): Encryption scheme ('bgv', 'ckks') + kernel (str): Kernel type ('add', 'mul', 'muli', 'copy', 'sub', + 'square', 'ntt', 'intt', 'mod', 'modup', 'relin', + 'rotate', 'rescale') + polyorder (int): Polynomial order (16384, 32768, 65536) + max_rns (int): Maximum RNS value + config_file (str, optional): Path to configuration file. + Defaults to loop_order_config.json in same directory. + + Returns: + Tuple[str, str]: Primary and secondary loop order + + Raises: + FileNotFoundError: If configuration file is not found + KeyError: If the specified parameters are not found in configuration + ValueError: If parameters are invalid + """ + # Validate inputs + valid_schemes = {"bgv", "ckks"} + valid_kernels = {"add", "mul", "muli", "copy", "sub", "square", "ntt", "intt", "mod", "modup", "relin", "rotate", "rescale"} + valid_polyorders = {16384, 32768, 65536} + + scheme = scheme.lower() + kernel = kernel.lower() + + if scheme not in valid_schemes: + raise ValueError(f"Invalid scheme '{scheme}'. Must be one of {valid_schemes}") + + if kernel not in valid_kernels: + raise ValueError(f"Invalid kernel '{kernel}'. Must be one of {valid_kernels}") + + if polyorder not in valid_polyorders: + raise ValueError(f"Invalid polyorder '{polyorder}'. Must be one of {valid_polyorders}") + + if max_rns < 1: + raise ValueError(f"Invalid RNS value: max_rns={max_rns}") + + try: + with open(LOOP_ORDER_CONFIG, encoding="utf-8") as f: + config = json.load(f) + except FileNotFoundError as e: + raise FileNotFoundError(f"Configuration file not found: {LOOP_ORDER_CONFIG}") from e + except json.JSONDecodeError as e: + raise ValueError(f"Invalid JSON in configuration file: {e}") from e + + # Lookup configuration with range support + try: + scheme_config = config[scheme] + kernel_config = scheme_config[kernel] + polyorder_config = kernel_config[str(polyorder)] + + # Find matching max_rns range + loop_order = None + for max_rns_range, order_config in polyorder_config.items(): + if _value_in_range(max_rns, max_rns_range): + loop_order = order_config + break + + if loop_order is None: + raise KeyError(f"max_rns={max_rns}") + + return tuple(loop_order) + + except KeyError as e: + raise KeyError( + f"Configuration not found for scheme='{scheme}', kernel='{kernel}', " + f"polyorder={polyorder}, max_rns={max_rns}. " + f"Missing key: {e}" + ) from e + + +def list_available_configurations(config_file: str | None = None) -> dict: + """ + List all available configurations in the config file. + + Args: + config_file (str, optional): Path to configuration file. + + Returns: + dict: The complete configuration structure + """ + + with open(LOOP_ORDER_CONFIG, encoding="utf-8") as f: + return json.load(f) diff --git a/p-isa_tools/kerngen/kernel_optimization/loops.py b/p-isa_tools/kerngen/kernel_optimization/loops.py index 9c5907f8..d767f28a 100644 --- a/p-isa_tools/kerngen/kernel_optimization/loops.py +++ b/p-isa_tools/kerngen/kernel_optimization/loops.py @@ -8,7 +8,7 @@ import re from const.options import LoopKey -from high_parser.pisa_operations import Comment, PIsaOp +from high_parser.pisa_operations import NTT, BinaryOp, Comment, PIsaOp class PIsaOpGroup: @@ -53,6 +53,54 @@ def remove_comments(pisa_list: list[PIsaOp]) -> list[PIsaOp]: return [pisa for pisa in pisa_list if not isinstance(pisa, Comment)] +def reuse_rns_label(pisa: PIsaOp, current_rns: int) -> PIsaOp: + """Helper function to remove RNS terms from modsw output""" + if isinstance(pisa, BinaryOp): + if "x_" in pisa.input0 or "y_" in pisa.input0 or "outtmp_" in pisa.input0: + pisa.input0 = re.sub( + "(x|y|outtmp)_([0-9]+)_[0-9]+_", + r"\1_\2_" + f"{current_rns-1}_", + pisa.input0, + ) + if "x_" in pisa.input1 or "y_" in pisa.input1 or "outtmp_" in pisa.input1: + pisa.input1 = re.sub( + "(x|y|outtmp)_([0-9]+)_[0-9]+_", + r"\1_\2_" + f"{current_rns-1}_", + pisa.input1, + ) + if "x_" in pisa.output or "y_" in pisa.output or "outtmp_" in pisa.output: + pisa.output = re.sub( + "(x|y|outtmp)_([0-9]+)_[0-9]+_", + r"\1_\2_" + f"{current_rns-1}_", + pisa.output, + ) + if isinstance(pisa, NTT): + if "x_" in pisa.input0 and "x_" in pisa.input1 or "outtmp_" in pisa.input0 and "outtmp_" in pisa.input1: + pisa.input0 = re.sub( + "(x|outtmp|y)_([0-9]+)_[0-9]+_", + r"\1_\2_" + f"{current_rns-1}_", + pisa.input0, + ) + pisa.input1 = re.sub( + "(x|outtmp|y)_([0-9]+)_[0-9]+_", + r"\1_\2_" + f"{current_rns-1}_", + pisa.input1, + ) + if "x_" in pisa.output0 and "x_" in pisa.output1 or "outtmp_" in pisa.output0 and "outtmp_" in pisa.output1: + pisa.output0 = re.sub( + "(x|outtmp|y)_([0-9]+)_[0-9]+_", + r"\1_\2_" + f"{current_rns-1}_", + pisa.output0, + ) + pisa.output1 = re.sub( + "(x|outtmp|y)_([0-9]+)_[0-9]+_", + r"\1_\2_" + f"{current_rns-1}_", + pisa.output1, + ) + + return pisa + + def split_by_reorderable(pisa_list: list[PIsaOp]) -> list[PIsaOpGroup]: """Split a list of PIsaOp instructions into reorderable and non-reorderable groups. @@ -95,7 +143,6 @@ def split_by_reorderable(pisa_list: list[PIsaOp]) -> list[PIsaOpGroup]: if no_reoderable_group: for group in groups: group.is_reorderable = True - return groups diff --git a/p-isa_tools/kerngen/kerngraph.py b/p-isa_tools/kerngen/kerngraph.py index 2b3f401e..56c871e8 100755 --- a/p-isa_tools/kerngen/kerngraph.py +++ b/p-isa_tools/kerngen/kerngraph.py @@ -34,7 +34,8 @@ from const.options import LoopKey from high_parser.config import Config -from kernel_optimization.loops import loop_interchange, split_by_reorderable +from kernel_optimization.loop_ordering_lookup import get_loop_order +from kernel_optimization.loops import loop_interchange, reuse_rns_label, split_by_reorderable from kernel_parser.parser import KernelParser from pisa_generators.basic import mixed_to_pisa_ops @@ -49,8 +50,8 @@ def parse_args(): "--target", nargs="*", default=[], - # Composition high ops such are ntt, mod, and relin are not currently supported - choices=["add", "sub", "mul", "muli", "copy", "ntt", "intt", "mod", "relin"], + # Composition high ops such are ntt, mod, etc. + choices=["add", "sub", "mul", "muli", "copy", "ntt", "intt", "mod", "relin", "rotate", "rescale"], help="List of high_op names", ) parser.add_argument( @@ -69,11 +70,55 @@ def parse_args(): choices=list(LoopKey) + [None], help="Secondary key for loop interchange (default: None, Options: RNS, PART)", ) + parser.add_argument( + "--optimal", + action="store_true", + help="Use optimal primary and secondary loop order based on kernel configuration (overrides -p and -s)", + ) parsed_args = parser.parse_args() # verify that primary and secondary keys are not the same - if parsed_args.primary == parsed_args.secondary: + if not parsed_args.optimal and parsed_args.primary == parsed_args.secondary: raise ValueError("Primary and secondary keys cannot be the same.") - return parser.parse_args() + return parsed_args + + +def get_optimal_loop_order(kernel, debug=False): + """ + Get optimal loop order for a kernel based on its properties. + + Args: + kernel: Parsed kernel object + debug (bool): Enable debug output + + Returns: + Tuple[LoopKey, LoopKey]: Primary and secondary loop keys, or (None, None) if not found + """ + try: + # Extract kernel properties + scheme = getattr(kernel.context, "scheme", "bgv").lower() + kernel_name = str(kernel).split("(")[0].lower() + polyorder = getattr(kernel.context, "poly_order", 16384) + max_rns = getattr(kernel.context, "max_rns", 3) + # Get optimal loop order from configuration + primary_str, secondary_str = get_loop_order(scheme, kernel_name, polyorder, max_rns) + # Map string values to LoopKey enum + loop_key_mapping = {"part": LoopKey.PART, "rns": LoopKey.RNS, "null": None} + + primary_key = loop_key_mapping.get(primary_str) + secondary_key = loop_key_mapping.get(secondary_str) + + if debug: + print( + "# Optimal loop order for" + + f" {scheme}.{kernel_name}: primary={primary_str} ({primary_key}), secondary={secondary_str} ({secondary_key})" + ) + + return primary_key, secondary_key + + except ValueError as e: + if debug: + print(f"# Warning: Could not determine optimal loop order for kernel {kernel}: {e}") + return None, None def parse_kernels(input_lines, debug=False): @@ -92,17 +137,24 @@ def parse_kernels(input_lines, debug=False): def process_kernel_with_reordering(kernel, args): """Process a kernel with reordering optimization.""" + # Determine loop order + if args.optimal: + primary_key, secondary_key = get_optimal_loop_order(kernel, args.debug) + else: + primary_key = args.primary + secondary_key = args.secondary + groups = split_by_reorderable(kernel.to_pisa()) processed_kernel = [] for group in groups: if group.is_reorderable: - processed_kernel.append( - loop_interchange( - group.pisa_list, - primary_key=args.primary, - secondary_key=args.secondary, - ) - ) + interchanged_pisa = loop_interchange(group.pisa_list, primary_key=primary_key, secondary_key=secondary_key) + + if ("mod" in args.target) and (primary_key is not None and secondary_key is not None): + for pisa in mixed_to_pisa_ops(interchanged_pisa): + processed_kernel.append(reuse_rns_label(pisa, kernel.context.current_rns)) + else: + processed_kernel.append(interchanged_pisa) else: processed_kernel.append(group.pisa_list) @@ -127,7 +179,10 @@ def main(args): return if args.debug: - print(f"# Reordered targets {args.target} with primary key {args.primary} and secondary key {args.secondary}") + if args.optimal: + print(f"# Using optimal loop order configuration for targets {args.target}") + else: + print(f"# Reordered targets {args.target} with primary key {args.primary} and secondary key {args.secondary}") for kernel in valid_kernels: if should_apply_reordering(kernel, args.target): diff --git a/p-isa_tools/kerngen/pisa_generators/basic.py b/p-isa_tools/kerngen/pisa_generators/basic.py index 77606cd9..54b37257 100644 --- a/p-isa_tools/kerngen/pisa_generators/basic.py +++ b/p-isa_tools/kerngen/pisa_generators/basic.py @@ -247,7 +247,7 @@ def get_pisa_op(num): ls: list[pisa_op] = [] for digit, op in get_pisa_op(self.input1.digits): input0_tmp = Polys.from_polys(self.input0) - input0_tmp.name += f"_{digit}" + input0_tmp.name += f"_tmp{digit}" # mul/mac for 0-current_rns ls.extend( diff --git a/p-isa_tools/kerngen/pisa_generators/decomp.py b/p-isa_tools/kerngen/pisa_generators/decomp.py index 6e984e2a..e11bbb60 100644 --- a/p-isa_tools/kerngen/pisa_generators/decomp.py +++ b/p-isa_tools/kerngen/pisa_generators/decomp.py @@ -7,7 +7,7 @@ import high_parser.pisa_operations as pisa_op from high_parser import HighOp, Immediate, KernelContext, Polys -from high_parser.pisa_operations import PIsaOp +from high_parser.pisa_operations import Comment, PIsaOp from .basic import Muli, mixed_to_pisa_ops from .ntt import INTT, NTT @@ -65,7 +65,7 @@ def to_pisa(self) -> list[PIsaOp]: ) output_tmp = Polys.from_polys(self.output) - output_tmp.name += f"_{input_rns_index}" + output_tmp.name += f"_tmp{input_rns_index}" output_split = Polys.from_polys(self.output) output_split.rns = self.context.current_rns # ntt for 0-current_rns @@ -80,5 +80,7 @@ def to_pisa(self) -> list[PIsaOp]: return mixed_to_pisa_ops( INTT(self.context, rns_poly, self.input0), Muli(self.context, rns_poly, rns_poly, one), + Comment(""), ls, + Comment(""), ) diff --git a/p-isa_tools/kerngen/pisa_generators/mod.py b/p-isa_tools/kerngen/pisa_generators/mod.py index 1f77591a..46ead7ae 100644 --- a/p-isa_tools/kerngen/pisa_generators/mod.py +++ b/p-isa_tools/kerngen/pisa_generators/mod.py @@ -147,6 +147,7 @@ def generate_mod_stages() -> list[Stage]: input_remaining_rns, last_q, ), + Comment(""), Muli( self.context, temp_input_remaining_rns, diff --git a/p-isa_tools/kerngen/pisa_generators/rescale.py b/p-isa_tools/kerngen/pisa_generators/rescale.py index 2d3727ef..39cca28d 100644 --- a/p-isa_tools/kerngen/pisa_generators/rescale.py +++ b/p-isa_tools/kerngen/pisa_generators/rescale.py @@ -79,6 +79,7 @@ def to_pisa(self) -> list[PIsaOp]: input_remaining_rns, last_q, ), + Comment(""), Muli(self.context, temp_input_remaining_rns, temp_input_remaining_rns, r2), NTT(self.context, temp_input_remaining_rns, temp_input_remaining_rns), Sub( @@ -88,6 +89,6 @@ def to_pisa(self) -> list[PIsaOp]: temp_input_remaining_rns, ), Muli(self.context, self.output, temp_input_remaining_rns, iq), - Comment("End of Rescale kernel."), + Comment("End of Rescale kernel "), ] ) diff --git a/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/input.bgv.16k_l2_m3.relin b/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/input.bgv.16k_l2_m3.relin deleted file mode 100644 index 6a902046..00000000 --- a/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/input.bgv.16k_l2_m3.relin +++ /dev/null @@ -1,4 +0,0 @@ -CONTEXT BGV 16384 3 2 -DATA input0 3 -DATA output0 2 -RELIN output0 input0 diff --git a/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/input.bgv.16k_l2_m4.relin b/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/input.bgv.16k_l2_m4.relin deleted file mode 100644 index dc004096..00000000 --- a/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/input.bgv.16k_l2_m4.relin +++ /dev/null @@ -1,4 +0,0 @@ -CONTEXT BGV 16384 4 2 -DATA input0 3 -DATA output0 2 -RELIN output0 input0 diff --git a/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/output.bgv.16k_l2_m3.relin b/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/output.bgv.16k_l2_m3.relin deleted file mode 100644 index 61a63fce..00000000 --- a/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/output.bgv.16k_l2_m3.relin +++ /dev/null @@ -1,320 +0,0 @@ -0, intt, outtmp_2_0_0, outtmp_2_0_1, input0_2_0_0, input0_2_0_1, 0, 0, 0 -0, intt, outtmp_2_1_0, outtmp_2_1_1, input0_2_1_0, input0_2_1_1, 0, 0, 1 -0, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 1, 0, 0 -0, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 1, 0, 1 -0, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, 2, 0, 0 -0, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, 2, 0, 1 -0, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 3, 0, 0 -0, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 3, 0, 1 -0, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, 4, 0, 0 -0, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, 4, 0, 1 -0, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 5, 0, 0 -0, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 5, 0, 1 -0, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, 6, 0, 0 -0, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, 6, 0, 1 -0, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 7, 0, 0 -0, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 7, 0, 1 -0, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, 8, 0, 0 -0, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, 8, 0, 1 -0, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 9, 0, 0 -0, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 9, 0, 1 -0, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, 10, 0, 0 -0, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, 10, 0, 1 -0, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 11, 0, 0 -0, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 11, 0, 1 -0, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, 12, 0, 0 -0, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, 12, 0, 1 -0, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 13, 0, 0 -0, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 13, 0, 1 -0, mul, ct_2_0_0, ct_2_0_0, ipsi_0_0_0, 0 -0, mul, ct_2_1_0, ct_2_1_0, ipsi_0_1_0, 1 -0, mul, ct_2_0_1, ct_2_0_1, ipsi_0_0_1, 0 -0, mul, ct_2_1_1, ct_2_1_1, ipsi_0_1_1, 1 -0, muli, ct_2_0_0, ct_2_0_0, iN, 0 -0, muli, ct_2_1_0, ct_2_1_0, iN, 1 -0, muli, ct_2_0_1, ct_2_0_1, iN, 0 -0, muli, ct_2_1_1, ct_2_1_1, iN, 1 -0, muli, ct_2_0_0, ct_2_0_0, one, 0 -0, muli, ct_2_1_0, ct_2_1_0, one, 1 -0, muli, ct_2_0_1, ct_2_0_1, one, 0 -0, muli, ct_2_1_1, ct_2_1_1, one, 1 -0, muli, coeffs_2_0_0, ct_2_0_0, R2_0, 0 -0, muli, coeffs_2_0_1, ct_2_0_1, R2_0, 0 -0, muli, coeffs_2_1_0, ct_2_0_0, R2_1, 1 -0, muli, coeffs_2_1_1, ct_2_0_1, R2_1, 1 -0, muli, coeffs_2_2_0, ct_2_0_0, R2_2, 2 -0, muli, coeffs_2_2_1, ct_2_0_1, R2_2, 2 -0, mul, coeffs_0_2_0_0, coeffs_2_0_0, psi_0_0_0, 0 -0, mul, coeffs_0_2_1_0, coeffs_2_1_0, psi_0_1_0, 1 -0, mul, coeffs_0_2_0_1, coeffs_2_0_1, psi_0_0_1, 0 -0, mul, coeffs_0_2_1_1, coeffs_2_1_1, psi_0_1_1, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, 0, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, 0, 0, 1 -0, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 1, 0, 0 -0, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 1, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, 2, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, 2, 0, 1 -0, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 3, 0, 0 -0, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 3, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, 4, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, 4, 0, 1 -0, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 5, 0, 0 -0, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 5, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, 6, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, 6, 0, 1 -0, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 7, 0, 0 -0, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 7, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, 8, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, 8, 0, 1 -0, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 9, 0, 0 -0, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 9, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, 10, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, 10, 0, 1 -0, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 11, 0, 0 -0, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 11, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, 12, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, 12, 0, 1 -0, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 13, 0, 0 -0, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 13, 0, 1 -0, mul, coeffs_0_2_2_0, coeffs_2_2_0, psi_0_2_0, 2 -0, mul, coeffs_0_2_2_1, coeffs_2_2_1, psi_0_2_1, 2 -0, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_0_2_2_0, coeffs_0_2_2_1, 0, 0, 2 -0, ntt, coeffs_0_2_2_0, coeffs_0_2_2_1, outtmp_2_2_0, outtmp_2_2_1, 1, 0, 2 -0, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_0_2_2_0, coeffs_0_2_2_1, 2, 0, 2 -0, ntt, coeffs_0_2_2_0, coeffs_0_2_2_1, outtmp_2_2_0, outtmp_2_2_1, 3, 0, 2 -0, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_0_2_2_0, coeffs_0_2_2_1, 4, 0, 2 -0, ntt, coeffs_0_2_2_0, coeffs_0_2_2_1, outtmp_2_2_0, outtmp_2_2_1, 5, 0, 2 -0, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_0_2_2_0, coeffs_0_2_2_1, 6, 0, 2 -0, ntt, coeffs_0_2_2_0, coeffs_0_2_2_1, outtmp_2_2_0, outtmp_2_2_1, 7, 0, 2 -0, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_0_2_2_0, coeffs_0_2_2_1, 8, 0, 2 -0, ntt, coeffs_0_2_2_0, coeffs_0_2_2_1, outtmp_2_2_0, outtmp_2_2_1, 9, 0, 2 -0, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_0_2_2_0, coeffs_0_2_2_1, 10, 0, 2 -0, ntt, coeffs_0_2_2_0, coeffs_0_2_2_1, outtmp_2_2_0, outtmp_2_2_1, 11, 0, 2 -0, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_0_2_2_0, coeffs_0_2_2_1, 12, 0, 2 -0, ntt, coeffs_0_2_2_0, coeffs_0_2_2_1, outtmp_2_2_0, outtmp_2_2_1, 13, 0, 2 -0, muli, coeffs_2_0_0, ct_2_1_0, R2_0, 0 -0, muli, coeffs_2_0_1, ct_2_1_1, R2_0, 0 -0, muli, coeffs_2_1_0, ct_2_1_0, R2_1, 1 -0, muli, coeffs_2_1_1, ct_2_1_1, R2_1, 1 -0, muli, coeffs_2_2_0, ct_2_1_0, R2_2, 2 -0, muli, coeffs_2_2_1, ct_2_1_1, R2_2, 2 -0, mul, coeffs_1_2_0_0, coeffs_2_0_0, psi_0_0_0, 0 -0, mul, coeffs_1_2_1_0, coeffs_2_1_0, psi_0_1_0, 1 -0, mul, coeffs_1_2_0_1, coeffs_2_0_1, psi_0_0_1, 0 -0, mul, coeffs_1_2_1_1, coeffs_2_1_1, psi_0_1_1, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, 0, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, 0, 0, 1 -0, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 1, 0, 0 -0, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 1, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, 2, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, 2, 0, 1 -0, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 3, 0, 0 -0, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 3, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, 4, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, 4, 0, 1 -0, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 5, 0, 0 -0, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 5, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, 6, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, 6, 0, 1 -0, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 7, 0, 0 -0, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 7, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, 8, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, 8, 0, 1 -0, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 9, 0, 0 -0, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 9, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, 10, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, 10, 0, 1 -0, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 11, 0, 0 -0, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 11, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, 12, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, 12, 0, 1 -0, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 13, 0, 0 -0, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 13, 0, 1 -0, mul, coeffs_1_2_2_0, coeffs_2_2_0, psi_0_2_0, 2 -0, mul, coeffs_1_2_2_1, coeffs_2_2_1, psi_0_2_1, 2 -0, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_1_2_2_0, coeffs_1_2_2_1, 0, 0, 2 -0, ntt, coeffs_1_2_2_0, coeffs_1_2_2_1, outtmp_2_2_0, outtmp_2_2_1, 1, 0, 2 -0, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_1_2_2_0, coeffs_1_2_2_1, 2, 0, 2 -0, ntt, coeffs_1_2_2_0, coeffs_1_2_2_1, outtmp_2_2_0, outtmp_2_2_1, 3, 0, 2 -0, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_1_2_2_0, coeffs_1_2_2_1, 4, 0, 2 -0, ntt, coeffs_1_2_2_0, coeffs_1_2_2_1, outtmp_2_2_0, outtmp_2_2_1, 5, 0, 2 -0, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_1_2_2_0, coeffs_1_2_2_1, 6, 0, 2 -0, ntt, coeffs_1_2_2_0, coeffs_1_2_2_1, outtmp_2_2_0, outtmp_2_2_1, 7, 0, 2 -0, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_1_2_2_0, coeffs_1_2_2_1, 8, 0, 2 -0, ntt, coeffs_1_2_2_0, coeffs_1_2_2_1, outtmp_2_2_0, outtmp_2_2_1, 9, 0, 2 -0, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_1_2_2_0, coeffs_1_2_2_1, 10, 0, 2 -0, ntt, coeffs_1_2_2_0, coeffs_1_2_2_1, outtmp_2_2_0, outtmp_2_2_1, 11, 0, 2 -0, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_1_2_2_0, coeffs_1_2_2_1, 12, 0, 2 -0, ntt, coeffs_1_2_2_0, coeffs_1_2_2_1, outtmp_2_2_0, outtmp_2_2_1, 13, 0, 2 -0, mul, c2_rlk_0_0_0, coeffs_0_2_0_0, rlk_0_0_0_0, 0 -0, mul, c2_rlk_0_0_1, coeffs_0_2_0_1, rlk_0_0_0_1, 0 -0, mul, c2_rlk_0_1_0, coeffs_0_2_1_0, rlk_0_0_1_0, 1 -0, mul, c2_rlk_0_1_1, coeffs_0_2_1_1, rlk_0_0_1_1, 1 -0, mul, c2_rlk_1_0_0, coeffs_0_2_0_0, rlk_1_0_0_0, 0 -0, mul, c2_rlk_1_0_1, coeffs_0_2_0_1, rlk_1_0_0_1, 0 -0, mul, c2_rlk_1_1_0, coeffs_0_2_1_0, rlk_1_0_1_0, 1 -0, mul, c2_rlk_1_1_1, coeffs_0_2_1_1, rlk_1_0_1_1, 1 -0, mul, c2_rlk_0_2_0, coeffs_0_2_2_0, rlk_0_0_2_0, 2 -0, mul, c2_rlk_0_2_1, coeffs_0_2_2_1, rlk_0_0_2_1, 2 -0, mul, c2_rlk_1_2_0, coeffs_0_2_2_0, rlk_1_0_2_0, 2 -0, mul, c2_rlk_1_2_1, coeffs_0_2_2_1, rlk_1_0_2_1, 2 -0, mac, c2_rlk_0_0_0, coeffs_1_2_0_0, rlk_0_1_0_0, 0 -0, mac, c2_rlk_0_0_1, coeffs_1_2_0_1, rlk_0_1_0_1, 0 -0, mac, c2_rlk_0_1_0, coeffs_1_2_1_0, rlk_0_1_1_0, 1 -0, mac, c2_rlk_0_1_1, coeffs_1_2_1_1, rlk_0_1_1_1, 1 -0, mac, c2_rlk_1_0_0, coeffs_1_2_0_0, rlk_1_1_0_0, 0 -0, mac, c2_rlk_1_0_1, coeffs_1_2_0_1, rlk_1_1_0_1, 0 -0, mac, c2_rlk_1_1_0, coeffs_1_2_1_0, rlk_1_1_1_0, 1 -0, mac, c2_rlk_1_1_1, coeffs_1_2_1_1, rlk_1_1_1_1, 1 -0, mac, c2_rlk_0_2_0, coeffs_1_2_2_0, rlk_0_1_2_0, 2 -0, mac, c2_rlk_0_2_1, coeffs_1_2_2_1, rlk_0_1_2_1, 2 -0, mac, c2_rlk_1_2_0, coeffs_1_2_2_0, rlk_1_1_2_0, 2 -0, mac, c2_rlk_1_2_1, coeffs_1_2_2_1, rlk_1_1_2_1, 2 -0, intt, outtmp_0_2_0, outtmp_0_2_1, c2_rlk_0_2_0, c2_rlk_0_2_1, 0, 0, 2 -0, intt, y_0_2_0, y_0_2_1, outtmp_0_2_0, outtmp_0_2_1, 1, 0, 2 -0, intt, outtmp_0_2_0, outtmp_0_2_1, y_0_2_0, y_0_2_1, 2, 0, 2 -0, intt, y_0_2_0, y_0_2_1, outtmp_0_2_0, outtmp_0_2_1, 3, 0, 2 -0, intt, outtmp_0_2_0, outtmp_0_2_1, y_0_2_0, y_0_2_1, 4, 0, 2 -0, intt, y_0_2_0, y_0_2_1, outtmp_0_2_0, outtmp_0_2_1, 5, 0, 2 -0, intt, outtmp_0_2_0, outtmp_0_2_1, y_0_2_0, y_0_2_1, 6, 0, 2 -0, intt, y_0_2_0, y_0_2_1, outtmp_0_2_0, outtmp_0_2_1, 7, 0, 2 -0, intt, outtmp_0_2_0, outtmp_0_2_1, y_0_2_0, y_0_2_1, 8, 0, 2 -0, intt, y_0_2_0, y_0_2_1, outtmp_0_2_0, outtmp_0_2_1, 9, 0, 2 -0, intt, outtmp_0_2_0, outtmp_0_2_1, y_0_2_0, y_0_2_1, 10, 0, 2 -0, intt, y_0_2_0, y_0_2_1, outtmp_0_2_0, outtmp_0_2_1, 11, 0, 2 -0, intt, outtmp_0_2_0, outtmp_0_2_1, y_0_2_0, y_0_2_1, 12, 0, 2 -0, intt, y_0_2_0, y_0_2_1, outtmp_0_2_0, outtmp_0_2_1, 13, 0, 2 -0, intt, outtmp_1_2_0, outtmp_1_2_1, c2_rlk_1_2_0, c2_rlk_1_2_1, 0, 0, 2 -0, intt, y_1_2_0, y_1_2_1, outtmp_1_2_0, outtmp_1_2_1, 1, 0, 2 -0, intt, outtmp_1_2_0, outtmp_1_2_1, y_1_2_0, y_1_2_1, 2, 0, 2 -0, intt, y_1_2_0, y_1_2_1, outtmp_1_2_0, outtmp_1_2_1, 3, 0, 2 -0, intt, outtmp_1_2_0, outtmp_1_2_1, y_1_2_0, y_1_2_1, 4, 0, 2 -0, intt, y_1_2_0, y_1_2_1, outtmp_1_2_0, outtmp_1_2_1, 5, 0, 2 -0, intt, outtmp_1_2_0, outtmp_1_2_1, y_1_2_0, y_1_2_1, 6, 0, 2 -0, intt, y_1_2_0, y_1_2_1, outtmp_1_2_0, outtmp_1_2_1, 7, 0, 2 -0, intt, outtmp_1_2_0, outtmp_1_2_1, y_1_2_0, y_1_2_1, 8, 0, 2 -0, intt, y_1_2_0, y_1_2_1, outtmp_1_2_0, outtmp_1_2_1, 9, 0, 2 -0, intt, outtmp_1_2_0, outtmp_1_2_1, y_1_2_0, y_1_2_1, 10, 0, 2 -0, intt, y_1_2_0, y_1_2_1, outtmp_1_2_0, outtmp_1_2_1, 11, 0, 2 -0, intt, outtmp_1_2_0, outtmp_1_2_1, y_1_2_0, y_1_2_1, 12, 0, 2 -0, intt, y_1_2_0, y_1_2_1, outtmp_1_2_0, outtmp_1_2_1, 13, 0, 2 -0, mul, y_0_2_0, y_0_2_0, ipsi_0_2_0, 2 -0, mul, y_1_2_0, y_1_2_0, ipsi_0_2_0, 2 -0, mul, y_0_2_1, y_0_2_1, ipsi_0_2_1, 2 -0, mul, y_1_2_1, y_1_2_1, ipsi_0_2_1, 2 -0, muli, y_0_2_0, y_0_2_0, iN, 2 -0, muli, y_1_2_0, y_1_2_0, iN, 2 -0, muli, y_0_2_1, y_0_2_1, iN, 2 -0, muli, y_1_2_1, y_1_2_1, iN, 2 -0, muli, y_0_2_0, y_0_2_0, it_mod_p_2, 2 -0, muli, y_1_2_0, y_1_2_0, it_mod_p_2, 2 -0, muli, y_0_2_1, y_0_2_1, it_mod_p_2, 2 -0, muli, y_1_2_1, y_1_2_1, it_mod_p_2, 2 -0, muli, y_0_2_0, y_0_2_0, one, 2 -0, muli, y_1_2_0, y_1_2_0, one, 2 -0, muli, y_0_2_1, y_0_2_1, one, 2 -0, muli, y_1_2_1, y_1_2_1, one, 2 -0, muli, x_0_0_0, y_0_2_0, R2_0, 0 -0, muli, x_0_0_1, y_0_2_1, R2_0, 0 -0, muli, x_0_1_0, y_0_2_0, R2_1, 1 -0, muli, x_0_1_1, y_0_2_1, R2_1, 1 -0, muli, x_1_0_0, y_1_2_0, R2_0, 0 -0, muli, x_1_0_1, y_1_2_1, R2_0, 0 -0, muli, x_1_1_0, y_1_2_0, R2_1, 1 -0, muli, x_1_1_1, y_1_2_1, R2_1, 1 -0, mul, x_0_0_0, x_0_0_0, psi_0_0_0, 0 -0, mul, x_1_0_0, x_1_0_0, psi_0_0_0, 0 -0, mul, x_0_1_0, x_0_1_0, psi_0_1_0, 1 -0, mul, x_1_1_0, x_1_1_0, psi_0_1_0, 1 -0, mul, x_0_0_1, x_0_0_1, psi_0_0_1, 0 -0, mul, x_1_0_1, x_1_0_1, psi_0_0_1, 0 -0, mul, x_0_1_1, x_0_1_1, psi_0_1_1, 1 -0, mul, x_1_1_1, x_1_1_1, psi_0_1_1, 1 -0, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, 0, 0, 0 -0, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, 0, 0, 1 -0, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, 1, 0, 0 -0, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, 1, 0, 1 -0, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, 2, 0, 0 -0, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, 2, 0, 1 -0, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, 3, 0, 0 -0, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, 3, 0, 1 -0, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, 4, 0, 0 -0, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, 4, 0, 1 -0, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, 5, 0, 0 -0, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, 5, 0, 1 -0, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, 6, 0, 0 -0, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, 6, 0, 1 -0, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, 7, 0, 0 -0, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, 7, 0, 1 -0, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, 8, 0, 0 -0, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, 8, 0, 1 -0, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, 9, 0, 0 -0, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, 9, 0, 1 -0, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, 10, 0, 0 -0, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, 10, 0, 1 -0, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, 11, 0, 0 -0, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, 11, 0, 1 -0, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, 12, 0, 0 -0, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, 12, 0, 1 -0, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, 13, 0, 0 -0, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, 13, 0, 1 -0, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, 0, 0, 0 -0, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, 0, 0, 1 -0, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, 1, 0, 0 -0, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, 1, 0, 1 -0, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, 2, 0, 0 -0, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, 2, 0, 1 -0, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, 3, 0, 0 -0, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, 3, 0, 1 -0, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, 4, 0, 0 -0, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, 4, 0, 1 -0, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, 5, 0, 0 -0, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, 5, 0, 1 -0, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, 6, 0, 0 -0, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, 6, 0, 1 -0, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, 7, 0, 0 -0, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, 7, 0, 1 -0, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, 8, 0, 0 -0, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, 8, 0, 1 -0, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, 9, 0, 0 -0, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, 9, 0, 1 -0, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, 10, 0, 0 -0, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, 10, 0, 1 -0, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, 11, 0, 0 -0, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, 11, 0, 1 -0, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, 12, 0, 0 -0, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, 12, 0, 1 -0, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, 13, 0, 0 -0, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, 13, 0, 1 -0, muli, x_0_0_0, x_0_0_0, t_0, 0 -0, muli, x_1_0_0, x_1_0_0, t_0, 0 -0, muli, x_0_1_0, x_0_1_0, t_1, 1 -0, muli, x_1_1_0, x_1_1_0, t_1, 1 -0, muli, x_0_0_1, x_0_0_1, t_0, 0 -0, muli, x_1_0_1, x_1_0_1, t_0, 0 -0, muli, x_0_1_1, x_0_1_1, t_1, 1 -0, muli, x_1_1_1, x_1_1_1, t_1, 1 -0, add, x_0_0_0, x_0_0_0, c2_rlk_0_0_0, 0 -0, add, x_0_0_1, x_0_0_1, c2_rlk_0_0_1, 0 -0, add, x_1_0_0, x_1_0_0, c2_rlk_1_0_0, 0 -0, add, x_1_0_1, x_1_0_1, c2_rlk_1_0_1, 0 -0, add, x_0_1_0, x_0_1_0, c2_rlk_0_1_0, 1 -0, add, x_0_1_1, x_0_1_1, c2_rlk_0_1_1, 1 -0, add, x_1_1_0, x_1_1_0, c2_rlk_1_1_0, 1 -0, add, x_1_1_1, x_1_1_1, c2_rlk_1_1_1, 1 -0, muli, c2_rlk_0_0_0, x_0_0_0, iq_mod_p_2_0, 0 -0, muli, c2_rlk_1_0_0, x_1_0_0, iq_mod_p_2_0, 0 -0, muli, c2_rlk_0_1_0, x_0_1_0, iq_mod_p_2_1, 1 -0, muli, c2_rlk_1_1_0, x_1_1_0, iq_mod_p_2_1, 1 -0, muli, c2_rlk_0_0_1, x_0_0_1, iq_mod_p_2_0, 0 -0, muli, c2_rlk_1_0_1, x_1_0_1, iq_mod_p_2_0, 0 -0, muli, c2_rlk_0_1_1, x_0_1_1, iq_mod_p_2_1, 1 -0, muli, c2_rlk_1_1_1, x_1_1_1, iq_mod_p_2_1, 1 -0, add, output0_0_0_0, c2_rlk_0_0_0, input0_0_0_0, 0 -0, add, output0_0_0_1, c2_rlk_0_0_1, input0_0_0_1, 0 -0, add, output0_1_0_0, c2_rlk_1_0_0, input0_1_0_0, 0 -0, add, output0_1_0_1, c2_rlk_1_0_1, input0_1_0_1, 0 -0, add, output0_0_1_0, c2_rlk_0_1_0, input0_0_1_0, 1 -0, add, output0_0_1_1, c2_rlk_0_1_1, input0_0_1_1, 1 -0, add, output0_1_1_0, c2_rlk_1_1_0, input0_1_1_0, 1 -0, add, output0_1_1_1, c2_rlk_1_1_1, input0_1_1_1, 1 diff --git a/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/output.bgv.16k_l2_m3_p-rns_s-part.relin b/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/output.bgv.16k_l2_m3_p-rns_s-part.relin deleted file mode 100644 index 83a2d0ff..00000000 --- a/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/output.bgv.16k_l2_m3_p-rns_s-part.relin +++ /dev/null @@ -1,320 +0,0 @@ -14, intt, outtmp_2_0_0, outtmp_2_0_1, input0_2_0_0, input0_2_0_1, w_0_0_0, 0 -14, intt, outtmp_2_1_0, outtmp_2_1_1, input0_2_1_0, input0_2_1_1, w_1_0_0, 1 -14, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_1_0, 0 -14, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_1_0, 1 -14, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, w_0_2_0, 0 -14, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, w_1_2_0, 1 -14, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_3_0, 0 -14, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_3_0, 1 -14, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, w_0_4_0, 0 -14, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, w_1_4_0, 1 -14, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_5_0, 0 -14, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_5_0, 1 -14, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, w_0_6_0, 0 -14, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, w_1_6_0, 1 -14, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_7_0, 0 -14, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_7_0, 1 -14, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, w_0_8_0, 0 -14, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, w_1_8_0, 1 -14, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_9_0, 0 -14, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_9_0, 1 -14, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, w_0_10_0, 0 -14, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, w_1_10_0, 1 -14, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_11_0, 0 -14, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_11_0, 1 -14, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, w_0_12_0, 0 -14, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, w_1_12_0, 1 -14, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_13_0, 0 -14, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_13_0, 1 -14, mul, ct_2_0_0, ct_2_0_0, ipsi_0_0_0, 0 -14, mul, ct_2_1_0, ct_2_1_0, ipsi_0_1_0, 1 -14, mul, ct_2_0_1, ct_2_0_1, ipsi_0_0_1, 0 -14, mul, ct_2_1_1, ct_2_1_1, ipsi_0_1_1, 1 -14, muli, ct_2_0_0, ct_2_0_0, iN, 0 -14, muli, ct_2_1_0, ct_2_1_0, iN, 1 -14, muli, ct_2_0_1, ct_2_0_1, iN, 0 -14, muli, ct_2_1_1, ct_2_1_1, iN, 1 -14, muli, ct_2_0_0, ct_2_0_0, one, 0 -14, muli, ct_2_1_0, ct_2_1_0, one, 1 -14, muli, ct_2_0_1, ct_2_0_1, one, 0 -14, muli, ct_2_1_1, ct_2_1_1, one, 1 -14, muli, coeffs_2_0_0, ct_2_0_0, R2_0, 0 -14, muli, coeffs_2_0_1, ct_2_0_1, R2_0, 0 -14, muli, coeffs_2_1_0, ct_2_0_0, R2_1, 1 -14, muli, coeffs_2_1_1, ct_2_0_1, R2_1, 1 -14, muli, coeffs_2_2_0, ct_2_0_0, R2_2, 2 -14, muli, coeffs_2_2_1, ct_2_0_1, R2_2, 2 -14, mul, coeffs_0_2_0_0, coeffs_2_0_0, psi_0_0_0, 0 -14, mul, coeffs_0_2_1_0, coeffs_2_1_0, psi_0_1_0, 1 -14, mul, coeffs_0_2_0_1, coeffs_2_0_1, psi_0_0_1, 0 -14, mul, coeffs_0_2_1_1, coeffs_2_1_1, psi_0_1_1, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, w_0_0_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, w_1_0_0, 1 -14, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_1_0, 0 -14, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_1_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, w_0_2_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, w_1_2_0, 1 -14, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_3_0, 0 -14, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_3_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, w_0_4_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, w_1_4_0, 1 -14, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_5_0, 0 -14, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_5_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, w_0_6_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, w_1_6_0, 1 -14, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_7_0, 0 -14, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_7_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, w_0_8_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, w_1_8_0, 1 -14, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_9_0, 0 -14, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_9_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, w_0_10_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, w_1_10_0, 1 -14, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_11_0, 0 -14, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_11_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, w_0_12_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, w_1_12_0, 1 -14, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_13_0, 0 -14, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_13_0, 1 -14, mul, coeffs_0_2_2_0, coeffs_2_2_0, psi_0_2_0, 2 -14, mul, coeffs_0_2_2_1, coeffs_2_2_1, psi_0_2_1, 2 -14, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_0_2_2_0, coeffs_0_2_2_1, w_2_0_0, 2 -14, ntt, coeffs_0_2_2_0, coeffs_0_2_2_1, outtmp_2_2_0, outtmp_2_2_1, w_2_1_0, 2 -14, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_0_2_2_0, coeffs_0_2_2_1, w_2_2_0, 2 -14, ntt, coeffs_0_2_2_0, coeffs_0_2_2_1, outtmp_2_2_0, outtmp_2_2_1, w_2_3_0, 2 -14, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_0_2_2_0, coeffs_0_2_2_1, w_2_4_0, 2 -14, ntt, coeffs_0_2_2_0, coeffs_0_2_2_1, outtmp_2_2_0, outtmp_2_2_1, w_2_5_0, 2 -14, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_0_2_2_0, coeffs_0_2_2_1, w_2_6_0, 2 -14, ntt, coeffs_0_2_2_0, coeffs_0_2_2_1, outtmp_2_2_0, outtmp_2_2_1, w_2_7_0, 2 -14, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_0_2_2_0, coeffs_0_2_2_1, w_2_8_0, 2 -14, ntt, coeffs_0_2_2_0, coeffs_0_2_2_1, outtmp_2_2_0, outtmp_2_2_1, w_2_9_0, 2 -14, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_0_2_2_0, coeffs_0_2_2_1, w_2_10_0, 2 -14, ntt, coeffs_0_2_2_0, coeffs_0_2_2_1, outtmp_2_2_0, outtmp_2_2_1, w_2_11_0, 2 -14, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_0_2_2_0, coeffs_0_2_2_1, w_2_12_0, 2 -14, ntt, coeffs_0_2_2_0, coeffs_0_2_2_1, outtmp_2_2_0, outtmp_2_2_1, w_2_13_0, 2 -14, muli, coeffs_2_0_0, ct_2_1_0, R2_0, 0 -14, muli, coeffs_2_0_1, ct_2_1_1, R2_0, 0 -14, muli, coeffs_2_1_0, ct_2_1_0, R2_1, 1 -14, muli, coeffs_2_1_1, ct_2_1_1, R2_1, 1 -14, muli, coeffs_2_2_0, ct_2_1_0, R2_2, 2 -14, muli, coeffs_2_2_1, ct_2_1_1, R2_2, 2 -14, mul, coeffs_1_2_0_0, coeffs_2_0_0, psi_0_0_0, 0 -14, mul, coeffs_1_2_1_0, coeffs_2_1_0, psi_0_1_0, 1 -14, mul, coeffs_1_2_0_1, coeffs_2_0_1, psi_0_0_1, 0 -14, mul, coeffs_1_2_1_1, coeffs_2_1_1, psi_0_1_1, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, w_0_0_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, w_1_0_0, 1 -14, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_1_0, 0 -14, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_1_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, w_0_2_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, w_1_2_0, 1 -14, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_3_0, 0 -14, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_3_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, w_0_4_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, w_1_4_0, 1 -14, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_5_0, 0 -14, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_5_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, w_0_6_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, w_1_6_0, 1 -14, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_7_0, 0 -14, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_7_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, w_0_8_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, w_1_8_0, 1 -14, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_9_0, 0 -14, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_9_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, w_0_10_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, w_1_10_0, 1 -14, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_11_0, 0 -14, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_11_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, w_0_12_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, w_1_12_0, 1 -14, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_13_0, 0 -14, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_13_0, 1 -14, mul, coeffs_1_2_2_0, coeffs_2_2_0, psi_0_2_0, 2 -14, mul, coeffs_1_2_2_1, coeffs_2_2_1, psi_0_2_1, 2 -14, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_1_2_2_0, coeffs_1_2_2_1, w_2_0_0, 2 -14, ntt, coeffs_1_2_2_0, coeffs_1_2_2_1, outtmp_2_2_0, outtmp_2_2_1, w_2_1_0, 2 -14, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_1_2_2_0, coeffs_1_2_2_1, w_2_2_0, 2 -14, ntt, coeffs_1_2_2_0, coeffs_1_2_2_1, outtmp_2_2_0, outtmp_2_2_1, w_2_3_0, 2 -14, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_1_2_2_0, coeffs_1_2_2_1, w_2_4_0, 2 -14, ntt, coeffs_1_2_2_0, coeffs_1_2_2_1, outtmp_2_2_0, outtmp_2_2_1, w_2_5_0, 2 -14, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_1_2_2_0, coeffs_1_2_2_1, w_2_6_0, 2 -14, ntt, coeffs_1_2_2_0, coeffs_1_2_2_1, outtmp_2_2_0, outtmp_2_2_1, w_2_7_0, 2 -14, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_1_2_2_0, coeffs_1_2_2_1, w_2_8_0, 2 -14, ntt, coeffs_1_2_2_0, coeffs_1_2_2_1, outtmp_2_2_0, outtmp_2_2_1, w_2_9_0, 2 -14, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_1_2_2_0, coeffs_1_2_2_1, w_2_10_0, 2 -14, ntt, coeffs_1_2_2_0, coeffs_1_2_2_1, outtmp_2_2_0, outtmp_2_2_1, w_2_11_0, 2 -14, ntt, outtmp_2_2_0, outtmp_2_2_1, coeffs_1_2_2_0, coeffs_1_2_2_1, w_2_12_0, 2 -14, ntt, coeffs_1_2_2_0, coeffs_1_2_2_1, outtmp_2_2_0, outtmp_2_2_1, w_2_13_0, 2 -14, mul, c2_rlk_0_0_0, coeffs_0_2_0_0, rlk_0_0_0_0, 0 -14, mul, c2_rlk_0_0_1, coeffs_0_2_0_1, rlk_0_0_0_1, 0 -14, mul, c2_rlk_0_1_0, coeffs_0_2_1_0, rlk_0_0_1_0, 1 -14, mul, c2_rlk_0_1_1, coeffs_0_2_1_1, rlk_0_0_1_1, 1 -14, mul, c2_rlk_1_0_0, coeffs_0_2_0_0, rlk_1_0_0_0, 0 -14, mul, c2_rlk_1_0_1, coeffs_0_2_0_1, rlk_1_0_0_1, 0 -14, mul, c2_rlk_1_1_0, coeffs_0_2_1_0, rlk_1_0_1_0, 1 -14, mul, c2_rlk_1_1_1, coeffs_0_2_1_1, rlk_1_0_1_1, 1 -14, mul, c2_rlk_0_2_0, coeffs_0_2_2_0, rlk_0_0_2_0, 2 -14, mul, c2_rlk_0_2_1, coeffs_0_2_2_1, rlk_0_0_2_1, 2 -14, mul, c2_rlk_1_2_0, coeffs_0_2_2_0, rlk_1_0_2_0, 2 -14, mul, c2_rlk_1_2_1, coeffs_0_2_2_1, rlk_1_0_2_1, 2 -14, mac, c2_rlk_0_0_0, coeffs_1_2_0_0, rlk_0_1_0_0, 0 -14, mac, c2_rlk_0_0_1, coeffs_1_2_0_1, rlk_0_1_0_1, 0 -14, mac, c2_rlk_0_1_0, coeffs_1_2_1_0, rlk_0_1_1_0, 1 -14, mac, c2_rlk_0_1_1, coeffs_1_2_1_1, rlk_0_1_1_1, 1 -14, mac, c2_rlk_1_0_0, coeffs_1_2_0_0, rlk_1_1_0_0, 0 -14, mac, c2_rlk_1_0_1, coeffs_1_2_0_1, rlk_1_1_0_1, 0 -14, mac, c2_rlk_1_1_0, coeffs_1_2_1_0, rlk_1_1_1_0, 1 -14, mac, c2_rlk_1_1_1, coeffs_1_2_1_1, rlk_1_1_1_1, 1 -14, mac, c2_rlk_0_2_0, coeffs_1_2_2_0, rlk_0_1_2_0, 2 -14, mac, c2_rlk_0_2_1, coeffs_1_2_2_1, rlk_0_1_2_1, 2 -14, mac, c2_rlk_1_2_0, coeffs_1_2_2_0, rlk_1_1_2_0, 2 -14, mac, c2_rlk_1_2_1, coeffs_1_2_2_1, rlk_1_1_2_1, 2 -14, intt, outtmp_0_2_0, outtmp_0_2_1, c2_rlk_0_2_0, c2_rlk_0_2_1, w_2_0_0, 2 -14, intt, y_0_2_0, y_0_2_1, outtmp_0_2_0, outtmp_0_2_1, w_2_1_0, 2 -14, intt, outtmp_0_2_0, outtmp_0_2_1, y_0_2_0, y_0_2_1, w_2_2_0, 2 -14, intt, y_0_2_0, y_0_2_1, outtmp_0_2_0, outtmp_0_2_1, w_2_3_0, 2 -14, intt, outtmp_0_2_0, outtmp_0_2_1, y_0_2_0, y_0_2_1, w_2_4_0, 2 -14, intt, y_0_2_0, y_0_2_1, outtmp_0_2_0, outtmp_0_2_1, w_2_5_0, 2 -14, intt, outtmp_0_2_0, outtmp_0_2_1, y_0_2_0, y_0_2_1, w_2_6_0, 2 -14, intt, y_0_2_0, y_0_2_1, outtmp_0_2_0, outtmp_0_2_1, w_2_7_0, 2 -14, intt, outtmp_0_2_0, outtmp_0_2_1, y_0_2_0, y_0_2_1, w_2_8_0, 2 -14, intt, y_0_2_0, y_0_2_1, outtmp_0_2_0, outtmp_0_2_1, w_2_9_0, 2 -14, intt, outtmp_0_2_0, outtmp_0_2_1, y_0_2_0, y_0_2_1, w_2_10_0, 2 -14, intt, y_0_2_0, y_0_2_1, outtmp_0_2_0, outtmp_0_2_1, w_2_11_0, 2 -14, intt, outtmp_0_2_0, outtmp_0_2_1, y_0_2_0, y_0_2_1, w_2_12_0, 2 -14, intt, y_0_2_0, y_0_2_1, outtmp_0_2_0, outtmp_0_2_1, w_2_13_0, 2 -14, intt, outtmp_1_2_0, outtmp_1_2_1, c2_rlk_1_2_0, c2_rlk_1_2_1, w_2_0_0, 2 -14, intt, y_1_2_0, y_1_2_1, outtmp_1_2_0, outtmp_1_2_1, w_2_1_0, 2 -14, intt, outtmp_1_2_0, outtmp_1_2_1, y_1_2_0, y_1_2_1, w_2_2_0, 2 -14, intt, y_1_2_0, y_1_2_1, outtmp_1_2_0, outtmp_1_2_1, w_2_3_0, 2 -14, intt, outtmp_1_2_0, outtmp_1_2_1, y_1_2_0, y_1_2_1, w_2_4_0, 2 -14, intt, y_1_2_0, y_1_2_1, outtmp_1_2_0, outtmp_1_2_1, w_2_5_0, 2 -14, intt, outtmp_1_2_0, outtmp_1_2_1, y_1_2_0, y_1_2_1, w_2_6_0, 2 -14, intt, y_1_2_0, y_1_2_1, outtmp_1_2_0, outtmp_1_2_1, w_2_7_0, 2 -14, intt, outtmp_1_2_0, outtmp_1_2_1, y_1_2_0, y_1_2_1, w_2_8_0, 2 -14, intt, y_1_2_0, y_1_2_1, outtmp_1_2_0, outtmp_1_2_1, w_2_9_0, 2 -14, intt, outtmp_1_2_0, outtmp_1_2_1, y_1_2_0, y_1_2_1, w_2_10_0, 2 -14, intt, y_1_2_0, y_1_2_1, outtmp_1_2_0, outtmp_1_2_1, w_2_11_0, 2 -14, intt, outtmp_1_2_0, outtmp_1_2_1, y_1_2_0, y_1_2_1, w_2_12_0, 2 -14, intt, y_1_2_0, y_1_2_1, outtmp_1_2_0, outtmp_1_2_1, w_2_13_0, 2 -14, mul, y_0_2_0, y_0_2_0, ipsi_0_2_0, 2 -14, mul, y_1_2_0, y_1_2_0, ipsi_0_2_0, 2 -14, mul, y_0_2_1, y_0_2_1, ipsi_0_2_1, 2 -14, mul, y_1_2_1, y_1_2_1, ipsi_0_2_1, 2 -14, muli, y_0_2_0, y_0_2_0, iN, 2 -14, muli, y_1_2_0, y_1_2_0, iN, 2 -14, muli, y_0_2_1, y_0_2_1, iN, 2 -14, muli, y_1_2_1, y_1_2_1, iN, 2 -14, muli, y_0_2_0, y_0_2_0, it_mod_p_2, 2 -14, muli, y_1_2_0, y_1_2_0, it_mod_p_2, 2 -14, muli, y_0_2_1, y_0_2_1, it_mod_p_2, 2 -14, muli, y_1_2_1, y_1_2_1, it_mod_p_2, 2 -14, muli, y_0_2_0, y_0_2_0, one, 2 -14, muli, y_1_2_0, y_1_2_0, one, 2 -14, muli, y_0_2_1, y_0_2_1, one, 2 -14, muli, y_1_2_1, y_1_2_1, one, 2 -14, muli, x_0_0_0, y_0_2_0, R2_0, 0 -14, muli, x_0_0_1, y_0_2_1, R2_0, 0 -14, mul, x_0_0_0, x_0_0_0, psi_0_0_0, 0 -14, mul, x_0_0_1, x_0_0_1, psi_0_0_1, 0 -14, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, w_0_0_0, 0 -14, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, w_0_1_0, 0 -14, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, w_0_2_0, 0 -14, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, w_0_3_0, 0 -14, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, w_0_4_0, 0 -14, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, w_0_5_0, 0 -14, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, w_0_6_0, 0 -14, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, w_0_7_0, 0 -14, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, w_0_8_0, 0 -14, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, w_0_9_0, 0 -14, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, w_0_10_0, 0 -14, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, w_0_11_0, 0 -14, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, w_0_12_0, 0 -14, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, w_0_13_0, 0 -14, muli, x_0_0_0, x_0_0_0, t_0, 0 -14, muli, x_0_0_1, x_0_0_1, t_0, 0 -14, add, x_0_0_0, x_0_0_0, c2_rlk_0_0_0, 0 -14, add, x_0_0_1, x_0_0_1, c2_rlk_0_0_1, 0 -14, muli, c2_rlk_0_0_0, x_0_0_0, iq_mod_p_2_0, 0 -14, muli, c2_rlk_0_0_1, x_0_0_1, iq_mod_p_2_0, 0 -14, muli, x_1_0_0, y_1_2_0, R2_0, 0 -14, muli, x_1_0_1, y_1_2_1, R2_0, 0 -14, mul, x_1_0_0, x_1_0_0, psi_0_0_0, 0 -14, mul, x_1_0_1, x_1_0_1, psi_0_0_1, 0 -14, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, w_0_0_0, 0 -14, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, w_0_1_0, 0 -14, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, w_0_2_0, 0 -14, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, w_0_3_0, 0 -14, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, w_0_4_0, 0 -14, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, w_0_5_0, 0 -14, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, w_0_6_0, 0 -14, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, w_0_7_0, 0 -14, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, w_0_8_0, 0 -14, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, w_0_9_0, 0 -14, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, w_0_10_0, 0 -14, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, w_0_11_0, 0 -14, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, w_0_12_0, 0 -14, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, w_0_13_0, 0 -14, muli, x_1_0_0, x_1_0_0, t_0, 0 -14, muli, x_1_0_1, x_1_0_1, t_0, 0 -14, add, x_1_0_0, x_1_0_0, c2_rlk_1_0_0, 0 -14, add, x_1_0_1, x_1_0_1, c2_rlk_1_0_1, 0 -14, muli, c2_rlk_1_0_0, x_1_0_0, iq_mod_p_2_0, 0 -14, muli, c2_rlk_1_0_1, x_1_0_1, iq_mod_p_2_0, 0 -14, muli, x_0_1_0, y_0_2_0, R2_1, 1 -14, muli, x_0_1_1, y_0_2_1, R2_1, 1 -14, mul, x_0_1_0, x_0_1_0, psi_0_1_0, 1 -14, mul, x_0_1_1, x_0_1_1, psi_0_1_1, 1 -14, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, w_1_0_0, 1 -14, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, w_1_1_0, 1 -14, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, w_1_2_0, 1 -14, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, w_1_3_0, 1 -14, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, w_1_4_0, 1 -14, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, w_1_5_0, 1 -14, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, w_1_6_0, 1 -14, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, w_1_7_0, 1 -14, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, w_1_8_0, 1 -14, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, w_1_9_0, 1 -14, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, w_1_10_0, 1 -14, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, w_1_11_0, 1 -14, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, w_1_12_0, 1 -14, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, w_1_13_0, 1 -14, muli, x_0_1_0, x_0_1_0, t_1, 1 -14, muli, x_0_1_1, x_0_1_1, t_1, 1 -14, add, x_0_1_0, x_0_1_0, c2_rlk_0_1_0, 1 -14, add, x_0_1_1, x_0_1_1, c2_rlk_0_1_1, 1 -14, muli, c2_rlk_0_1_0, x_0_1_0, iq_mod_p_2_1, 1 -14, muli, c2_rlk_0_1_1, x_0_1_1, iq_mod_p_2_1, 1 -14, muli, x_1_1_0, y_1_2_0, R2_1, 1 -14, muli, x_1_1_1, y_1_2_1, R2_1, 1 -14, mul, x_1_1_0, x_1_1_0, psi_0_1_0, 1 -14, mul, x_1_1_1, x_1_1_1, psi_0_1_1, 1 -14, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, w_1_0_0, 1 -14, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, w_1_1_0, 1 -14, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, w_1_2_0, 1 -14, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, w_1_3_0, 1 -14, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, w_1_4_0, 1 -14, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, w_1_5_0, 1 -14, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, w_1_6_0, 1 -14, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, w_1_7_0, 1 -14, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, w_1_8_0, 1 -14, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, w_1_9_0, 1 -14, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, w_1_10_0, 1 -14, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, w_1_11_0, 1 -14, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, w_1_12_0, 1 -14, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, w_1_13_0, 1 -14, muli, x_1_1_0, x_1_1_0, t_1, 1 -14, muli, x_1_1_1, x_1_1_1, t_1, 1 -14, add, x_1_1_0, x_1_1_0, c2_rlk_1_1_0, 1 -14, add, x_1_1_1, x_1_1_1, c2_rlk_1_1_1, 1 -14, muli, c2_rlk_1_1_0, x_1_1_0, iq_mod_p_2_1, 1 -14, muli, c2_rlk_1_1_1, x_1_1_1, iq_mod_p_2_1, 1 -14, add, output0_0_0_0, c2_rlk_0_0_0, input0_0_0_0, 0 -14, add, output0_0_0_1, c2_rlk_0_0_1, input0_0_0_1, 0 -14, add, output0_1_0_0, c2_rlk_1_0_0, input0_1_0_0, 0 -14, add, output0_1_0_1, c2_rlk_1_0_1, input0_1_0_1, 0 -14, add, output0_0_1_0, c2_rlk_0_1_0, input0_0_1_0, 1 -14, add, output0_0_1_1, c2_rlk_0_1_1, input0_0_1_1, 1 -14, add, output0_1_1_0, c2_rlk_1_1_0, input0_1_1_0, 1 -14, add, output0_1_1_1, c2_rlk_1_1_1, input0_1_1_1, 1 diff --git a/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/output.bgv.16k_l2_m4.relin b/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/output.bgv.16k_l2_m4.relin deleted file mode 100644 index fe1ae068..00000000 --- a/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/output.bgv.16k_l2_m4.relin +++ /dev/null @@ -1,320 +0,0 @@ -0, intt, outtmp_2_0_0, outtmp_2_0_1, input0_2_0_0, input0_2_0_1, 0, 0, 0 -0, intt, outtmp_2_1_0, outtmp_2_1_1, input0_2_1_0, input0_2_1_1, 0, 0, 1 -0, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 1, 0, 0 -0, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 1, 0, 1 -0, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, 2, 0, 0 -0, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, 2, 0, 1 -0, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 3, 0, 0 -0, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 3, 0, 1 -0, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, 4, 0, 0 -0, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, 4, 0, 1 -0, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 5, 0, 0 -0, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 5, 0, 1 -0, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, 6, 0, 0 -0, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, 6, 0, 1 -0, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 7, 0, 0 -0, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 7, 0, 1 -0, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, 8, 0, 0 -0, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, 8, 0, 1 -0, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 9, 0, 0 -0, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 9, 0, 1 -0, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, 10, 0, 0 -0, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, 10, 0, 1 -0, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 11, 0, 0 -0, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 11, 0, 1 -0, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, 12, 0, 0 -0, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, 12, 0, 1 -0, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 13, 0, 0 -0, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 13, 0, 1 -0, mul, ct_2_0_0, ct_2_0_0, ipsi_0_0_0, 0 -0, mul, ct_2_1_0, ct_2_1_0, ipsi_0_1_0, 1 -0, mul, ct_2_0_1, ct_2_0_1, ipsi_0_0_1, 0 -0, mul, ct_2_1_1, ct_2_1_1, ipsi_0_1_1, 1 -0, muli, ct_2_0_0, ct_2_0_0, iN, 0 -0, muli, ct_2_1_0, ct_2_1_0, iN, 1 -0, muli, ct_2_0_1, ct_2_0_1, iN, 0 -0, muli, ct_2_1_1, ct_2_1_1, iN, 1 -0, muli, ct_2_0_0, ct_2_0_0, one, 0 -0, muli, ct_2_1_0, ct_2_1_0, one, 1 -0, muli, ct_2_0_1, ct_2_0_1, one, 0 -0, muli, ct_2_1_1, ct_2_1_1, one, 1 -0, muli, coeffs_2_0_0, ct_2_0_0, R2_0, 0 -0, muli, coeffs_2_0_1, ct_2_0_1, R2_0, 0 -0, muli, coeffs_2_1_0, ct_2_0_0, R2_1, 1 -0, muli, coeffs_2_1_1, ct_2_0_1, R2_1, 1 -0, muli, coeffs_2_3_0, ct_2_0_0, R2_3, 3 -0, muli, coeffs_2_3_1, ct_2_0_1, R2_3, 3 -0, mul, coeffs_0_2_0_0, coeffs_2_0_0, psi_0_0_0, 0 -0, mul, coeffs_0_2_1_0, coeffs_2_1_0, psi_0_1_0, 1 -0, mul, coeffs_0_2_0_1, coeffs_2_0_1, psi_0_0_1, 0 -0, mul, coeffs_0_2_1_1, coeffs_2_1_1, psi_0_1_1, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, 0, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, 0, 0, 1 -0, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 1, 0, 0 -0, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 1, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, 2, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, 2, 0, 1 -0, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 3, 0, 0 -0, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 3, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, 4, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, 4, 0, 1 -0, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 5, 0, 0 -0, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 5, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, 6, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, 6, 0, 1 -0, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 7, 0, 0 -0, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 7, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, 8, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, 8, 0, 1 -0, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 9, 0, 0 -0, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 9, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, 10, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, 10, 0, 1 -0, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 11, 0, 0 -0, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 11, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, 12, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, 12, 0, 1 -0, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 13, 0, 0 -0, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 13, 0, 1 -0, mul, coeffs_0_2_3_0, coeffs_2_3_0, psi_0_3_0, 3 -0, mul, coeffs_0_2_3_1, coeffs_2_3_1, psi_0_3_1, 3 -0, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_0_2_3_0, coeffs_0_2_3_1, 0, 0, 3 -0, ntt, coeffs_0_2_3_0, coeffs_0_2_3_1, outtmp_2_3_0, outtmp_2_3_1, 1, 0, 3 -0, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_0_2_3_0, coeffs_0_2_3_1, 2, 0, 3 -0, ntt, coeffs_0_2_3_0, coeffs_0_2_3_1, outtmp_2_3_0, outtmp_2_3_1, 3, 0, 3 -0, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_0_2_3_0, coeffs_0_2_3_1, 4, 0, 3 -0, ntt, coeffs_0_2_3_0, coeffs_0_2_3_1, outtmp_2_3_0, outtmp_2_3_1, 5, 0, 3 -0, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_0_2_3_0, coeffs_0_2_3_1, 6, 0, 3 -0, ntt, coeffs_0_2_3_0, coeffs_0_2_3_1, outtmp_2_3_0, outtmp_2_3_1, 7, 0, 3 -0, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_0_2_3_0, coeffs_0_2_3_1, 8, 0, 3 -0, ntt, coeffs_0_2_3_0, coeffs_0_2_3_1, outtmp_2_3_0, outtmp_2_3_1, 9, 0, 3 -0, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_0_2_3_0, coeffs_0_2_3_1, 10, 0, 3 -0, ntt, coeffs_0_2_3_0, coeffs_0_2_3_1, outtmp_2_3_0, outtmp_2_3_1, 11, 0, 3 -0, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_0_2_3_0, coeffs_0_2_3_1, 12, 0, 3 -0, ntt, coeffs_0_2_3_0, coeffs_0_2_3_1, outtmp_2_3_0, outtmp_2_3_1, 13, 0, 3 -0, muli, coeffs_2_0_0, ct_2_1_0, R2_0, 0 -0, muli, coeffs_2_0_1, ct_2_1_1, R2_0, 0 -0, muli, coeffs_2_1_0, ct_2_1_0, R2_1, 1 -0, muli, coeffs_2_1_1, ct_2_1_1, R2_1, 1 -0, muli, coeffs_2_3_0, ct_2_1_0, R2_3, 3 -0, muli, coeffs_2_3_1, ct_2_1_1, R2_3, 3 -0, mul, coeffs_1_2_0_0, coeffs_2_0_0, psi_0_0_0, 0 -0, mul, coeffs_1_2_1_0, coeffs_2_1_0, psi_0_1_0, 1 -0, mul, coeffs_1_2_0_1, coeffs_2_0_1, psi_0_0_1, 0 -0, mul, coeffs_1_2_1_1, coeffs_2_1_1, psi_0_1_1, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, 0, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, 0, 0, 1 -0, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 1, 0, 0 -0, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 1, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, 2, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, 2, 0, 1 -0, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 3, 0, 0 -0, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 3, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, 4, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, 4, 0, 1 -0, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 5, 0, 0 -0, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 5, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, 6, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, 6, 0, 1 -0, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 7, 0, 0 -0, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 7, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, 8, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, 8, 0, 1 -0, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 9, 0, 0 -0, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 9, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, 10, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, 10, 0, 1 -0, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 11, 0, 0 -0, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 11, 0, 1 -0, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, 12, 0, 0 -0, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, 12, 0, 1 -0, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, 13, 0, 0 -0, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, 13, 0, 1 -0, mul, coeffs_1_2_3_0, coeffs_2_3_0, psi_0_3_0, 3 -0, mul, coeffs_1_2_3_1, coeffs_2_3_1, psi_0_3_1, 3 -0, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_1_2_3_0, coeffs_1_2_3_1, 0, 0, 3 -0, ntt, coeffs_1_2_3_0, coeffs_1_2_3_1, outtmp_2_3_0, outtmp_2_3_1, 1, 0, 3 -0, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_1_2_3_0, coeffs_1_2_3_1, 2, 0, 3 -0, ntt, coeffs_1_2_3_0, coeffs_1_2_3_1, outtmp_2_3_0, outtmp_2_3_1, 3, 0, 3 -0, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_1_2_3_0, coeffs_1_2_3_1, 4, 0, 3 -0, ntt, coeffs_1_2_3_0, coeffs_1_2_3_1, outtmp_2_3_0, outtmp_2_3_1, 5, 0, 3 -0, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_1_2_3_0, coeffs_1_2_3_1, 6, 0, 3 -0, ntt, coeffs_1_2_3_0, coeffs_1_2_3_1, outtmp_2_3_0, outtmp_2_3_1, 7, 0, 3 -0, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_1_2_3_0, coeffs_1_2_3_1, 8, 0, 3 -0, ntt, coeffs_1_2_3_0, coeffs_1_2_3_1, outtmp_2_3_0, outtmp_2_3_1, 9, 0, 3 -0, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_1_2_3_0, coeffs_1_2_3_1, 10, 0, 3 -0, ntt, coeffs_1_2_3_0, coeffs_1_2_3_1, outtmp_2_3_0, outtmp_2_3_1, 11, 0, 3 -0, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_1_2_3_0, coeffs_1_2_3_1, 12, 0, 3 -0, ntt, coeffs_1_2_3_0, coeffs_1_2_3_1, outtmp_2_3_0, outtmp_2_3_1, 13, 0, 3 -0, mul, c2_rlk_0_0_0, coeffs_0_2_0_0, rlk_0_0_0_0, 0 -0, mul, c2_rlk_0_0_1, coeffs_0_2_0_1, rlk_0_0_0_1, 0 -0, mul, c2_rlk_0_1_0, coeffs_0_2_1_0, rlk_0_0_1_0, 1 -0, mul, c2_rlk_0_1_1, coeffs_0_2_1_1, rlk_0_0_1_1, 1 -0, mul, c2_rlk_1_0_0, coeffs_0_2_0_0, rlk_1_0_0_0, 0 -0, mul, c2_rlk_1_0_1, coeffs_0_2_0_1, rlk_1_0_0_1, 0 -0, mul, c2_rlk_1_1_0, coeffs_0_2_1_0, rlk_1_0_1_0, 1 -0, mul, c2_rlk_1_1_1, coeffs_0_2_1_1, rlk_1_0_1_1, 1 -0, mul, c2_rlk_0_3_0, coeffs_0_2_3_0, rlk_0_0_3_0, 3 -0, mul, c2_rlk_0_3_1, coeffs_0_2_3_1, rlk_0_0_3_1, 3 -0, mul, c2_rlk_1_3_0, coeffs_0_2_3_0, rlk_1_0_3_0, 3 -0, mul, c2_rlk_1_3_1, coeffs_0_2_3_1, rlk_1_0_3_1, 3 -0, mac, c2_rlk_0_0_0, coeffs_1_2_0_0, rlk_0_1_0_0, 0 -0, mac, c2_rlk_0_0_1, coeffs_1_2_0_1, rlk_0_1_0_1, 0 -0, mac, c2_rlk_0_1_0, coeffs_1_2_1_0, rlk_0_1_1_0, 1 -0, mac, c2_rlk_0_1_1, coeffs_1_2_1_1, rlk_0_1_1_1, 1 -0, mac, c2_rlk_1_0_0, coeffs_1_2_0_0, rlk_1_1_0_0, 0 -0, mac, c2_rlk_1_0_1, coeffs_1_2_0_1, rlk_1_1_0_1, 0 -0, mac, c2_rlk_1_1_0, coeffs_1_2_1_0, rlk_1_1_1_0, 1 -0, mac, c2_rlk_1_1_1, coeffs_1_2_1_1, rlk_1_1_1_1, 1 -0, mac, c2_rlk_0_3_0, coeffs_1_2_3_0, rlk_0_1_3_0, 3 -0, mac, c2_rlk_0_3_1, coeffs_1_2_3_1, rlk_0_1_3_1, 3 -0, mac, c2_rlk_1_3_0, coeffs_1_2_3_0, rlk_1_1_3_0, 3 -0, mac, c2_rlk_1_3_1, coeffs_1_2_3_1, rlk_1_1_3_1, 3 -0, intt, outtmp_0_3_0, outtmp_0_3_1, c2_rlk_0_3_0, c2_rlk_0_3_1, 0, 0, 3 -0, intt, y_0_3_0, y_0_3_1, outtmp_0_3_0, outtmp_0_3_1, 1, 0, 3 -0, intt, outtmp_0_3_0, outtmp_0_3_1, y_0_3_0, y_0_3_1, 2, 0, 3 -0, intt, y_0_3_0, y_0_3_1, outtmp_0_3_0, outtmp_0_3_1, 3, 0, 3 -0, intt, outtmp_0_3_0, outtmp_0_3_1, y_0_3_0, y_0_3_1, 4, 0, 3 -0, intt, y_0_3_0, y_0_3_1, outtmp_0_3_0, outtmp_0_3_1, 5, 0, 3 -0, intt, outtmp_0_3_0, outtmp_0_3_1, y_0_3_0, y_0_3_1, 6, 0, 3 -0, intt, y_0_3_0, y_0_3_1, outtmp_0_3_0, outtmp_0_3_1, 7, 0, 3 -0, intt, outtmp_0_3_0, outtmp_0_3_1, y_0_3_0, y_0_3_1, 8, 0, 3 -0, intt, y_0_3_0, y_0_3_1, outtmp_0_3_0, outtmp_0_3_1, 9, 0, 3 -0, intt, outtmp_0_3_0, outtmp_0_3_1, y_0_3_0, y_0_3_1, 10, 0, 3 -0, intt, y_0_3_0, y_0_3_1, outtmp_0_3_0, outtmp_0_3_1, 11, 0, 3 -0, intt, outtmp_0_3_0, outtmp_0_3_1, y_0_3_0, y_0_3_1, 12, 0, 3 -0, intt, y_0_3_0, y_0_3_1, outtmp_0_3_0, outtmp_0_3_1, 13, 0, 3 -0, intt, outtmp_1_3_0, outtmp_1_3_1, c2_rlk_1_3_0, c2_rlk_1_3_1, 0, 0, 3 -0, intt, y_1_3_0, y_1_3_1, outtmp_1_3_0, outtmp_1_3_1, 1, 0, 3 -0, intt, outtmp_1_3_0, outtmp_1_3_1, y_1_3_0, y_1_3_1, 2, 0, 3 -0, intt, y_1_3_0, y_1_3_1, outtmp_1_3_0, outtmp_1_3_1, 3, 0, 3 -0, intt, outtmp_1_3_0, outtmp_1_3_1, y_1_3_0, y_1_3_1, 4, 0, 3 -0, intt, y_1_3_0, y_1_3_1, outtmp_1_3_0, outtmp_1_3_1, 5, 0, 3 -0, intt, outtmp_1_3_0, outtmp_1_3_1, y_1_3_0, y_1_3_1, 6, 0, 3 -0, intt, y_1_3_0, y_1_3_1, outtmp_1_3_0, outtmp_1_3_1, 7, 0, 3 -0, intt, outtmp_1_3_0, outtmp_1_3_1, y_1_3_0, y_1_3_1, 8, 0, 3 -0, intt, y_1_3_0, y_1_3_1, outtmp_1_3_0, outtmp_1_3_1, 9, 0, 3 -0, intt, outtmp_1_3_0, outtmp_1_3_1, y_1_3_0, y_1_3_1, 10, 0, 3 -0, intt, y_1_3_0, y_1_3_1, outtmp_1_3_0, outtmp_1_3_1, 11, 0, 3 -0, intt, outtmp_1_3_0, outtmp_1_3_1, y_1_3_0, y_1_3_1, 12, 0, 3 -0, intt, y_1_3_0, y_1_3_1, outtmp_1_3_0, outtmp_1_3_1, 13, 0, 3 -0, mul, y_0_3_0, y_0_3_0, ipsi_0_3_0, 3 -0, mul, y_1_3_0, y_1_3_0, ipsi_0_3_0, 3 -0, mul, y_0_3_1, y_0_3_1, ipsi_0_3_1, 3 -0, mul, y_1_3_1, y_1_3_1, ipsi_0_3_1, 3 -0, muli, y_0_3_0, y_0_3_0, iN, 3 -0, muli, y_1_3_0, y_1_3_0, iN, 3 -0, muli, y_0_3_1, y_0_3_1, iN, 3 -0, muli, y_1_3_1, y_1_3_1, iN, 3 -0, muli, y_0_3_0, y_0_3_0, it_mod_p_2, 3 -0, muli, y_1_3_0, y_1_3_0, it_mod_p_2, 3 -0, muli, y_0_3_1, y_0_3_1, it_mod_p_2, 3 -0, muli, y_1_3_1, y_1_3_1, it_mod_p_2, 3 -0, muli, y_0_3_0, y_0_3_0, one, 3 -0, muli, y_1_3_0, y_1_3_0, one, 3 -0, muli, y_0_3_1, y_0_3_1, one, 3 -0, muli, y_1_3_1, y_1_3_1, one, 3 -0, muli, x_0_0_0, y_0_3_0, R2_0, 0 -0, muli, x_0_0_1, y_0_3_1, R2_0, 0 -0, muli, x_0_1_0, y_0_3_0, R2_1, 1 -0, muli, x_0_1_1, y_0_3_1, R2_1, 1 -0, muli, x_1_0_0, y_1_3_0, R2_0, 0 -0, muli, x_1_0_1, y_1_3_1, R2_0, 0 -0, muli, x_1_1_0, y_1_3_0, R2_1, 1 -0, muli, x_1_1_1, y_1_3_1, R2_1, 1 -0, mul, x_0_0_0, x_0_0_0, psi_0_0_0, 0 -0, mul, x_1_0_0, x_1_0_0, psi_0_0_0, 0 -0, mul, x_0_1_0, x_0_1_0, psi_0_1_0, 1 -0, mul, x_1_1_0, x_1_1_0, psi_0_1_0, 1 -0, mul, x_0_0_1, x_0_0_1, psi_0_0_1, 0 -0, mul, x_1_0_1, x_1_0_1, psi_0_0_1, 0 -0, mul, x_0_1_1, x_0_1_1, psi_0_1_1, 1 -0, mul, x_1_1_1, x_1_1_1, psi_0_1_1, 1 -0, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, 0, 0, 0 -0, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, 0, 0, 1 -0, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, 1, 0, 0 -0, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, 1, 0, 1 -0, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, 2, 0, 0 -0, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, 2, 0, 1 -0, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, 3, 0, 0 -0, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, 3, 0, 1 -0, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, 4, 0, 0 -0, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, 4, 0, 1 -0, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, 5, 0, 0 -0, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, 5, 0, 1 -0, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, 6, 0, 0 -0, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, 6, 0, 1 -0, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, 7, 0, 0 -0, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, 7, 0, 1 -0, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, 8, 0, 0 -0, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, 8, 0, 1 -0, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, 9, 0, 0 -0, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, 9, 0, 1 -0, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, 10, 0, 0 -0, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, 10, 0, 1 -0, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, 11, 0, 0 -0, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, 11, 0, 1 -0, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, 12, 0, 0 -0, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, 12, 0, 1 -0, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, 13, 0, 0 -0, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, 13, 0, 1 -0, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, 0, 0, 0 -0, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, 0, 0, 1 -0, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, 1, 0, 0 -0, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, 1, 0, 1 -0, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, 2, 0, 0 -0, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, 2, 0, 1 -0, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, 3, 0, 0 -0, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, 3, 0, 1 -0, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, 4, 0, 0 -0, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, 4, 0, 1 -0, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, 5, 0, 0 -0, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, 5, 0, 1 -0, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, 6, 0, 0 -0, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, 6, 0, 1 -0, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, 7, 0, 0 -0, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, 7, 0, 1 -0, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, 8, 0, 0 -0, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, 8, 0, 1 -0, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, 9, 0, 0 -0, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, 9, 0, 1 -0, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, 10, 0, 0 -0, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, 10, 0, 1 -0, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, 11, 0, 0 -0, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, 11, 0, 1 -0, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, 12, 0, 0 -0, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, 12, 0, 1 -0, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, 13, 0, 0 -0, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, 13, 0, 1 -0, muli, x_0_0_0, x_0_0_0, t_0, 0 -0, muli, x_1_0_0, x_1_0_0, t_0, 0 -0, muli, x_0_1_0, x_0_1_0, t_1, 1 -0, muli, x_1_1_0, x_1_1_0, t_1, 1 -0, muli, x_0_0_1, x_0_0_1, t_0, 0 -0, muli, x_1_0_1, x_1_0_1, t_0, 0 -0, muli, x_0_1_1, x_0_1_1, t_1, 1 -0, muli, x_1_1_1, x_1_1_1, t_1, 1 -0, add, x_0_0_0, x_0_0_0, c2_rlk_0_0_0, 0 -0, add, x_0_0_1, x_0_0_1, c2_rlk_0_0_1, 0 -0, add, x_1_0_0, x_1_0_0, c2_rlk_1_0_0, 0 -0, add, x_1_0_1, x_1_0_1, c2_rlk_1_0_1, 0 -0, add, x_0_1_0, x_0_1_0, c2_rlk_0_1_0, 1 -0, add, x_0_1_1, x_0_1_1, c2_rlk_0_1_1, 1 -0, add, x_1_1_0, x_1_1_0, c2_rlk_1_1_0, 1 -0, add, x_1_1_1, x_1_1_1, c2_rlk_1_1_1, 1 -0, muli, c2_rlk_0_0_0, x_0_0_0, iq_mod_p_2_0, 0 -0, muli, c2_rlk_1_0_0, x_1_0_0, iq_mod_p_2_0, 0 -0, muli, c2_rlk_0_1_0, x_0_1_0, iq_mod_p_2_1, 1 -0, muli, c2_rlk_1_1_0, x_1_1_0, iq_mod_p_2_1, 1 -0, muli, c2_rlk_0_0_1, x_0_0_1, iq_mod_p_2_0, 0 -0, muli, c2_rlk_1_0_1, x_1_0_1, iq_mod_p_2_0, 0 -0, muli, c2_rlk_0_1_1, x_0_1_1, iq_mod_p_2_1, 1 -0, muli, c2_rlk_1_1_1, x_1_1_1, iq_mod_p_2_1, 1 -0, add, output0_0_0_0, c2_rlk_0_0_0, input0_0_0_0, 0 -0, add, output0_0_0_1, c2_rlk_0_0_1, input0_0_0_1, 0 -0, add, output0_1_0_0, c2_rlk_1_0_0, input0_1_0_0, 0 -0, add, output0_1_0_1, c2_rlk_1_0_1, input0_1_0_1, 0 -0, add, output0_0_1_0, c2_rlk_0_1_0, input0_0_1_0, 1 -0, add, output0_0_1_1, c2_rlk_0_1_1, input0_0_1_1, 1 -0, add, output0_1_1_0, c2_rlk_1_1_0, input0_1_1_0, 1 -0, add, output0_1_1_1, c2_rlk_1_1_1, input0_1_1_1, 1 diff --git a/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/output.bgv.16k_l2_m4_p-rns_s-part.relin b/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/output.bgv.16k_l2_m4_p-rns_s-part.relin deleted file mode 100644 index e8649cb5..00000000 --- a/p-isa_tools/kerngen/tests/kernel_examples/relin_kernel/output.bgv.16k_l2_m4_p-rns_s-part.relin +++ /dev/null @@ -1,320 +0,0 @@ -14, intt, outtmp_2_0_0, outtmp_2_0_1, input0_2_0_0, input0_2_0_1, w_0_0_0, 0 -14, intt, outtmp_2_1_0, outtmp_2_1_1, input0_2_1_0, input0_2_1_1, w_1_0_0, 1 -14, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_1_0, 0 -14, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_1_0, 1 -14, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, w_0_2_0, 0 -14, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, w_1_2_0, 1 -14, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_3_0, 0 -14, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_3_0, 1 -14, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, w_0_4_0, 0 -14, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, w_1_4_0, 1 -14, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_5_0, 0 -14, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_5_0, 1 -14, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, w_0_6_0, 0 -14, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, w_1_6_0, 1 -14, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_7_0, 0 -14, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_7_0, 1 -14, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, w_0_8_0, 0 -14, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, w_1_8_0, 1 -14, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_9_0, 0 -14, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_9_0, 1 -14, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, w_0_10_0, 0 -14, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, w_1_10_0, 1 -14, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_11_0, 0 -14, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_11_0, 1 -14, intt, outtmp_2_0_0, outtmp_2_0_1, ct_2_0_0, ct_2_0_1, w_0_12_0, 0 -14, intt, outtmp_2_1_0, outtmp_2_1_1, ct_2_1_0, ct_2_1_1, w_1_12_0, 1 -14, intt, ct_2_0_0, ct_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_13_0, 0 -14, intt, ct_2_1_0, ct_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_13_0, 1 -14, mul, ct_2_0_0, ct_2_0_0, ipsi_0_0_0, 0 -14, mul, ct_2_1_0, ct_2_1_0, ipsi_0_1_0, 1 -14, mul, ct_2_0_1, ct_2_0_1, ipsi_0_0_1, 0 -14, mul, ct_2_1_1, ct_2_1_1, ipsi_0_1_1, 1 -14, muli, ct_2_0_0, ct_2_0_0, iN, 0 -14, muli, ct_2_1_0, ct_2_1_0, iN, 1 -14, muli, ct_2_0_1, ct_2_0_1, iN, 0 -14, muli, ct_2_1_1, ct_2_1_1, iN, 1 -14, muli, ct_2_0_0, ct_2_0_0, one, 0 -14, muli, ct_2_1_0, ct_2_1_0, one, 1 -14, muli, ct_2_0_1, ct_2_0_1, one, 0 -14, muli, ct_2_1_1, ct_2_1_1, one, 1 -14, muli, coeffs_2_0_0, ct_2_0_0, R2_0, 0 -14, muli, coeffs_2_0_1, ct_2_0_1, R2_0, 0 -14, muli, coeffs_2_1_0, ct_2_0_0, R2_1, 1 -14, muli, coeffs_2_1_1, ct_2_0_1, R2_1, 1 -14, muli, coeffs_2_3_0, ct_2_0_0, R2_3, 3 -14, muli, coeffs_2_3_1, ct_2_0_1, R2_3, 3 -14, mul, coeffs_0_2_0_0, coeffs_2_0_0, psi_0_0_0, 0 -14, mul, coeffs_0_2_1_0, coeffs_2_1_0, psi_0_1_0, 1 -14, mul, coeffs_0_2_0_1, coeffs_2_0_1, psi_0_0_1, 0 -14, mul, coeffs_0_2_1_1, coeffs_2_1_1, psi_0_1_1, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, w_0_0_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, w_1_0_0, 1 -14, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_1_0, 0 -14, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_1_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, w_0_2_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, w_1_2_0, 1 -14, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_3_0, 0 -14, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_3_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, w_0_4_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, w_1_4_0, 1 -14, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_5_0, 0 -14, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_5_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, w_0_6_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, w_1_6_0, 1 -14, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_7_0, 0 -14, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_7_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, w_0_8_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, w_1_8_0, 1 -14, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_9_0, 0 -14, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_9_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, w_0_10_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, w_1_10_0, 1 -14, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_11_0, 0 -14, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_11_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_0_2_0_0, coeffs_0_2_0_1, w_0_12_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_0_2_1_0, coeffs_0_2_1_1, w_1_12_0, 1 -14, ntt, coeffs_0_2_0_0, coeffs_0_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_13_0, 0 -14, ntt, coeffs_0_2_1_0, coeffs_0_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_13_0, 1 -14, mul, coeffs_0_2_3_0, coeffs_2_3_0, psi_0_3_0, 3 -14, mul, coeffs_0_2_3_1, coeffs_2_3_1, psi_0_3_1, 3 -14, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_0_2_3_0, coeffs_0_2_3_1, w_3_0_0, 3 -14, ntt, coeffs_0_2_3_0, coeffs_0_2_3_1, outtmp_2_3_0, outtmp_2_3_1, w_3_1_0, 3 -14, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_0_2_3_0, coeffs_0_2_3_1, w_3_2_0, 3 -14, ntt, coeffs_0_2_3_0, coeffs_0_2_3_1, outtmp_2_3_0, outtmp_2_3_1, w_3_3_0, 3 -14, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_0_2_3_0, coeffs_0_2_3_1, w_3_4_0, 3 -14, ntt, coeffs_0_2_3_0, coeffs_0_2_3_1, outtmp_2_3_0, outtmp_2_3_1, w_3_5_0, 3 -14, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_0_2_3_0, coeffs_0_2_3_1, w_3_6_0, 3 -14, ntt, coeffs_0_2_3_0, coeffs_0_2_3_1, outtmp_2_3_0, outtmp_2_3_1, w_3_7_0, 3 -14, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_0_2_3_0, coeffs_0_2_3_1, w_3_8_0, 3 -14, ntt, coeffs_0_2_3_0, coeffs_0_2_3_1, outtmp_2_3_0, outtmp_2_3_1, w_3_9_0, 3 -14, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_0_2_3_0, coeffs_0_2_3_1, w_3_10_0, 3 -14, ntt, coeffs_0_2_3_0, coeffs_0_2_3_1, outtmp_2_3_0, outtmp_2_3_1, w_3_11_0, 3 -14, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_0_2_3_0, coeffs_0_2_3_1, w_3_12_0, 3 -14, ntt, coeffs_0_2_3_0, coeffs_0_2_3_1, outtmp_2_3_0, outtmp_2_3_1, w_3_13_0, 3 -14, muli, coeffs_2_0_0, ct_2_1_0, R2_0, 0 -14, muli, coeffs_2_0_1, ct_2_1_1, R2_0, 0 -14, muli, coeffs_2_1_0, ct_2_1_0, R2_1, 1 -14, muli, coeffs_2_1_1, ct_2_1_1, R2_1, 1 -14, muli, coeffs_2_3_0, ct_2_1_0, R2_3, 3 -14, muli, coeffs_2_3_1, ct_2_1_1, R2_3, 3 -14, mul, coeffs_1_2_0_0, coeffs_2_0_0, psi_0_0_0, 0 -14, mul, coeffs_1_2_1_0, coeffs_2_1_0, psi_0_1_0, 1 -14, mul, coeffs_1_2_0_1, coeffs_2_0_1, psi_0_0_1, 0 -14, mul, coeffs_1_2_1_1, coeffs_2_1_1, psi_0_1_1, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, w_0_0_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, w_1_0_0, 1 -14, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_1_0, 0 -14, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_1_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, w_0_2_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, w_1_2_0, 1 -14, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_3_0, 0 -14, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_3_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, w_0_4_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, w_1_4_0, 1 -14, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_5_0, 0 -14, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_5_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, w_0_6_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, w_1_6_0, 1 -14, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_7_0, 0 -14, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_7_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, w_0_8_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, w_1_8_0, 1 -14, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_9_0, 0 -14, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_9_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, w_0_10_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, w_1_10_0, 1 -14, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_11_0, 0 -14, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_11_0, 1 -14, ntt, outtmp_2_0_0, outtmp_2_0_1, coeffs_1_2_0_0, coeffs_1_2_0_1, w_0_12_0, 0 -14, ntt, outtmp_2_1_0, outtmp_2_1_1, coeffs_1_2_1_0, coeffs_1_2_1_1, w_1_12_0, 1 -14, ntt, coeffs_1_2_0_0, coeffs_1_2_0_1, outtmp_2_0_0, outtmp_2_0_1, w_0_13_0, 0 -14, ntt, coeffs_1_2_1_0, coeffs_1_2_1_1, outtmp_2_1_0, outtmp_2_1_1, w_1_13_0, 1 -14, mul, coeffs_1_2_3_0, coeffs_2_3_0, psi_0_3_0, 3 -14, mul, coeffs_1_2_3_1, coeffs_2_3_1, psi_0_3_1, 3 -14, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_1_2_3_0, coeffs_1_2_3_1, w_3_0_0, 3 -14, ntt, coeffs_1_2_3_0, coeffs_1_2_3_1, outtmp_2_3_0, outtmp_2_3_1, w_3_1_0, 3 -14, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_1_2_3_0, coeffs_1_2_3_1, w_3_2_0, 3 -14, ntt, coeffs_1_2_3_0, coeffs_1_2_3_1, outtmp_2_3_0, outtmp_2_3_1, w_3_3_0, 3 -14, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_1_2_3_0, coeffs_1_2_3_1, w_3_4_0, 3 -14, ntt, coeffs_1_2_3_0, coeffs_1_2_3_1, outtmp_2_3_0, outtmp_2_3_1, w_3_5_0, 3 -14, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_1_2_3_0, coeffs_1_2_3_1, w_3_6_0, 3 -14, ntt, coeffs_1_2_3_0, coeffs_1_2_3_1, outtmp_2_3_0, outtmp_2_3_1, w_3_7_0, 3 -14, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_1_2_3_0, coeffs_1_2_3_1, w_3_8_0, 3 -14, ntt, coeffs_1_2_3_0, coeffs_1_2_3_1, outtmp_2_3_0, outtmp_2_3_1, w_3_9_0, 3 -14, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_1_2_3_0, coeffs_1_2_3_1, w_3_10_0, 3 -14, ntt, coeffs_1_2_3_0, coeffs_1_2_3_1, outtmp_2_3_0, outtmp_2_3_1, w_3_11_0, 3 -14, ntt, outtmp_2_3_0, outtmp_2_3_1, coeffs_1_2_3_0, coeffs_1_2_3_1, w_3_12_0, 3 -14, ntt, coeffs_1_2_3_0, coeffs_1_2_3_1, outtmp_2_3_0, outtmp_2_3_1, w_3_13_0, 3 -14, mul, c2_rlk_0_0_0, coeffs_0_2_0_0, rlk_0_0_0_0, 0 -14, mul, c2_rlk_0_0_1, coeffs_0_2_0_1, rlk_0_0_0_1, 0 -14, mul, c2_rlk_0_1_0, coeffs_0_2_1_0, rlk_0_0_1_0, 1 -14, mul, c2_rlk_0_1_1, coeffs_0_2_1_1, rlk_0_0_1_1, 1 -14, mul, c2_rlk_1_0_0, coeffs_0_2_0_0, rlk_1_0_0_0, 0 -14, mul, c2_rlk_1_0_1, coeffs_0_2_0_1, rlk_1_0_0_1, 0 -14, mul, c2_rlk_1_1_0, coeffs_0_2_1_0, rlk_1_0_1_0, 1 -14, mul, c2_rlk_1_1_1, coeffs_0_2_1_1, rlk_1_0_1_1, 1 -14, mul, c2_rlk_0_3_0, coeffs_0_2_3_0, rlk_0_0_3_0, 3 -14, mul, c2_rlk_0_3_1, coeffs_0_2_3_1, rlk_0_0_3_1, 3 -14, mul, c2_rlk_1_3_0, coeffs_0_2_3_0, rlk_1_0_3_0, 3 -14, mul, c2_rlk_1_3_1, coeffs_0_2_3_1, rlk_1_0_3_1, 3 -14, mac, c2_rlk_0_0_0, coeffs_1_2_0_0, rlk_0_1_0_0, 0 -14, mac, c2_rlk_0_0_1, coeffs_1_2_0_1, rlk_0_1_0_1, 0 -14, mac, c2_rlk_0_1_0, coeffs_1_2_1_0, rlk_0_1_1_0, 1 -14, mac, c2_rlk_0_1_1, coeffs_1_2_1_1, rlk_0_1_1_1, 1 -14, mac, c2_rlk_1_0_0, coeffs_1_2_0_0, rlk_1_1_0_0, 0 -14, mac, c2_rlk_1_0_1, coeffs_1_2_0_1, rlk_1_1_0_1, 0 -14, mac, c2_rlk_1_1_0, coeffs_1_2_1_0, rlk_1_1_1_0, 1 -14, mac, c2_rlk_1_1_1, coeffs_1_2_1_1, rlk_1_1_1_1, 1 -14, mac, c2_rlk_0_3_0, coeffs_1_2_3_0, rlk_0_1_3_0, 3 -14, mac, c2_rlk_0_3_1, coeffs_1_2_3_1, rlk_0_1_3_1, 3 -14, mac, c2_rlk_1_3_0, coeffs_1_2_3_0, rlk_1_1_3_0, 3 -14, mac, c2_rlk_1_3_1, coeffs_1_2_3_1, rlk_1_1_3_1, 3 -14, intt, outtmp_0_3_0, outtmp_0_3_1, c2_rlk_0_3_0, c2_rlk_0_3_1, w_3_0_0, 3 -14, intt, y_0_3_0, y_0_3_1, outtmp_0_3_0, outtmp_0_3_1, w_3_1_0, 3 -14, intt, outtmp_0_3_0, outtmp_0_3_1, y_0_3_0, y_0_3_1, w_3_2_0, 3 -14, intt, y_0_3_0, y_0_3_1, outtmp_0_3_0, outtmp_0_3_1, w_3_3_0, 3 -14, intt, outtmp_0_3_0, outtmp_0_3_1, y_0_3_0, y_0_3_1, w_3_4_0, 3 -14, intt, y_0_3_0, y_0_3_1, outtmp_0_3_0, outtmp_0_3_1, w_3_5_0, 3 -14, intt, outtmp_0_3_0, outtmp_0_3_1, y_0_3_0, y_0_3_1, w_3_6_0, 3 -14, intt, y_0_3_0, y_0_3_1, outtmp_0_3_0, outtmp_0_3_1, w_3_7_0, 3 -14, intt, outtmp_0_3_0, outtmp_0_3_1, y_0_3_0, y_0_3_1, w_3_8_0, 3 -14, intt, y_0_3_0, y_0_3_1, outtmp_0_3_0, outtmp_0_3_1, w_3_9_0, 3 -14, intt, outtmp_0_3_0, outtmp_0_3_1, y_0_3_0, y_0_3_1, w_3_10_0, 3 -14, intt, y_0_3_0, y_0_3_1, outtmp_0_3_0, outtmp_0_3_1, w_3_11_0, 3 -14, intt, outtmp_0_3_0, outtmp_0_3_1, y_0_3_0, y_0_3_1, w_3_12_0, 3 -14, intt, y_0_3_0, y_0_3_1, outtmp_0_3_0, outtmp_0_3_1, w_3_13_0, 3 -14, intt, outtmp_1_3_0, outtmp_1_3_1, c2_rlk_1_3_0, c2_rlk_1_3_1, w_3_0_0, 3 -14, intt, y_1_3_0, y_1_3_1, outtmp_1_3_0, outtmp_1_3_1, w_3_1_0, 3 -14, intt, outtmp_1_3_0, outtmp_1_3_1, y_1_3_0, y_1_3_1, w_3_2_0, 3 -14, intt, y_1_3_0, y_1_3_1, outtmp_1_3_0, outtmp_1_3_1, w_3_3_0, 3 -14, intt, outtmp_1_3_0, outtmp_1_3_1, y_1_3_0, y_1_3_1, w_3_4_0, 3 -14, intt, y_1_3_0, y_1_3_1, outtmp_1_3_0, outtmp_1_3_1, w_3_5_0, 3 -14, intt, outtmp_1_3_0, outtmp_1_3_1, y_1_3_0, y_1_3_1, w_3_6_0, 3 -14, intt, y_1_3_0, y_1_3_1, outtmp_1_3_0, outtmp_1_3_1, w_3_7_0, 3 -14, intt, outtmp_1_3_0, outtmp_1_3_1, y_1_3_0, y_1_3_1, w_3_8_0, 3 -14, intt, y_1_3_0, y_1_3_1, outtmp_1_3_0, outtmp_1_3_1, w_3_9_0, 3 -14, intt, outtmp_1_3_0, outtmp_1_3_1, y_1_3_0, y_1_3_1, w_3_10_0, 3 -14, intt, y_1_3_0, y_1_3_1, outtmp_1_3_0, outtmp_1_3_1, w_3_11_0, 3 -14, intt, outtmp_1_3_0, outtmp_1_3_1, y_1_3_0, y_1_3_1, w_3_12_0, 3 -14, intt, y_1_3_0, y_1_3_1, outtmp_1_3_0, outtmp_1_3_1, w_3_13_0, 3 -14, mul, y_0_3_0, y_0_3_0, ipsi_0_3_0, 3 -14, mul, y_1_3_0, y_1_3_0, ipsi_0_3_0, 3 -14, mul, y_0_3_1, y_0_3_1, ipsi_0_3_1, 3 -14, mul, y_1_3_1, y_1_3_1, ipsi_0_3_1, 3 -14, muli, y_0_3_0, y_0_3_0, iN, 3 -14, muli, y_1_3_0, y_1_3_0, iN, 3 -14, muli, y_0_3_1, y_0_3_1, iN, 3 -14, muli, y_1_3_1, y_1_3_1, iN, 3 -14, muli, y_0_3_0, y_0_3_0, it_mod_p_2, 3 -14, muli, y_1_3_0, y_1_3_0, it_mod_p_2, 3 -14, muli, y_0_3_1, y_0_3_1, it_mod_p_2, 3 -14, muli, y_1_3_1, y_1_3_1, it_mod_p_2, 3 -14, muli, y_0_3_0, y_0_3_0, one, 3 -14, muli, y_1_3_0, y_1_3_0, one, 3 -14, muli, y_0_3_1, y_0_3_1, one, 3 -14, muli, y_1_3_1, y_1_3_1, one, 3 -14, muli, x_0_0_0, y_0_3_0, R2_0, 0 -14, muli, x_0_0_1, y_0_3_1, R2_0, 0 -14, mul, x_0_0_0, x_0_0_0, psi_0_0_0, 0 -14, mul, x_0_0_1, x_0_0_1, psi_0_0_1, 0 -14, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, w_0_0_0, 0 -14, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, w_0_1_0, 0 -14, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, w_0_2_0, 0 -14, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, w_0_3_0, 0 -14, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, w_0_4_0, 0 -14, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, w_0_5_0, 0 -14, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, w_0_6_0, 0 -14, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, w_0_7_0, 0 -14, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, w_0_8_0, 0 -14, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, w_0_9_0, 0 -14, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, w_0_10_0, 0 -14, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, w_0_11_0, 0 -14, ntt, outtmp_0_0_0, outtmp_0_0_1, x_0_0_0, x_0_0_1, w_0_12_0, 0 -14, ntt, x_0_0_0, x_0_0_1, outtmp_0_0_0, outtmp_0_0_1, w_0_13_0, 0 -14, muli, x_0_0_0, x_0_0_0, t_0, 0 -14, muli, x_0_0_1, x_0_0_1, t_0, 0 -14, add, x_0_0_0, x_0_0_0, c2_rlk_0_0_0, 0 -14, add, x_0_0_1, x_0_0_1, c2_rlk_0_0_1, 0 -14, muli, c2_rlk_0_0_0, x_0_0_0, iq_mod_p_2_0, 0 -14, muli, c2_rlk_0_0_1, x_0_0_1, iq_mod_p_2_0, 0 -14, muli, x_1_0_0, y_1_3_0, R2_0, 0 -14, muli, x_1_0_1, y_1_3_1, R2_0, 0 -14, mul, x_1_0_0, x_1_0_0, psi_0_0_0, 0 -14, mul, x_1_0_1, x_1_0_1, psi_0_0_1, 0 -14, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, w_0_0_0, 0 -14, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, w_0_1_0, 0 -14, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, w_0_2_0, 0 -14, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, w_0_3_0, 0 -14, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, w_0_4_0, 0 -14, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, w_0_5_0, 0 -14, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, w_0_6_0, 0 -14, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, w_0_7_0, 0 -14, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, w_0_8_0, 0 -14, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, w_0_9_0, 0 -14, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, w_0_10_0, 0 -14, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, w_0_11_0, 0 -14, ntt, outtmp_1_0_0, outtmp_1_0_1, x_1_0_0, x_1_0_1, w_0_12_0, 0 -14, ntt, x_1_0_0, x_1_0_1, outtmp_1_0_0, outtmp_1_0_1, w_0_13_0, 0 -14, muli, x_1_0_0, x_1_0_0, t_0, 0 -14, muli, x_1_0_1, x_1_0_1, t_0, 0 -14, add, x_1_0_0, x_1_0_0, c2_rlk_1_0_0, 0 -14, add, x_1_0_1, x_1_0_1, c2_rlk_1_0_1, 0 -14, muli, c2_rlk_1_0_0, x_1_0_0, iq_mod_p_2_0, 0 -14, muli, c2_rlk_1_0_1, x_1_0_1, iq_mod_p_2_0, 0 -14, muli, x_0_1_0, y_0_3_0, R2_1, 1 -14, muli, x_0_1_1, y_0_3_1, R2_1, 1 -14, mul, x_0_1_0, x_0_1_0, psi_0_1_0, 1 -14, mul, x_0_1_1, x_0_1_1, psi_0_1_1, 1 -14, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, w_1_0_0, 1 -14, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, w_1_1_0, 1 -14, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, w_1_2_0, 1 -14, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, w_1_3_0, 1 -14, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, w_1_4_0, 1 -14, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, w_1_5_0, 1 -14, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, w_1_6_0, 1 -14, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, w_1_7_0, 1 -14, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, w_1_8_0, 1 -14, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, w_1_9_0, 1 -14, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, w_1_10_0, 1 -14, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, w_1_11_0, 1 -14, ntt, outtmp_0_1_0, outtmp_0_1_1, x_0_1_0, x_0_1_1, w_1_12_0, 1 -14, ntt, x_0_1_0, x_0_1_1, outtmp_0_1_0, outtmp_0_1_1, w_1_13_0, 1 -14, muli, x_0_1_0, x_0_1_0, t_1, 1 -14, muli, x_0_1_1, x_0_1_1, t_1, 1 -14, add, x_0_1_0, x_0_1_0, c2_rlk_0_1_0, 1 -14, add, x_0_1_1, x_0_1_1, c2_rlk_0_1_1, 1 -14, muli, c2_rlk_0_1_0, x_0_1_0, iq_mod_p_2_1, 1 -14, muli, c2_rlk_0_1_1, x_0_1_1, iq_mod_p_2_1, 1 -14, muli, x_1_1_0, y_1_3_0, R2_1, 1 -14, muli, x_1_1_1, y_1_3_1, R2_1, 1 -14, mul, x_1_1_0, x_1_1_0, psi_0_1_0, 1 -14, mul, x_1_1_1, x_1_1_1, psi_0_1_1, 1 -14, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, w_1_0_0, 1 -14, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, w_1_1_0, 1 -14, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, w_1_2_0, 1 -14, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, w_1_3_0, 1 -14, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, w_1_4_0, 1 -14, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, w_1_5_0, 1 -14, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, w_1_6_0, 1 -14, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, w_1_7_0, 1 -14, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, w_1_8_0, 1 -14, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, w_1_9_0, 1 -14, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, w_1_10_0, 1 -14, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, w_1_11_0, 1 -14, ntt, outtmp_1_1_0, outtmp_1_1_1, x_1_1_0, x_1_1_1, w_1_12_0, 1 -14, ntt, x_1_1_0, x_1_1_1, outtmp_1_1_0, outtmp_1_1_1, w_1_13_0, 1 -14, muli, x_1_1_0, x_1_1_0, t_1, 1 -14, muli, x_1_1_1, x_1_1_1, t_1, 1 -14, add, x_1_1_0, x_1_1_0, c2_rlk_1_1_0, 1 -14, add, x_1_1_1, x_1_1_1, c2_rlk_1_1_1, 1 -14, muli, c2_rlk_1_1_0, x_1_1_0, iq_mod_p_2_1, 1 -14, muli, c2_rlk_1_1_1, x_1_1_1, iq_mod_p_2_1, 1 -14, add, output0_0_0_0, c2_rlk_0_0_0, input0_0_0_0, 0 -14, add, output0_0_0_1, c2_rlk_0_0_1, input0_0_0_1, 0 -14, add, output0_1_0_0, c2_rlk_1_0_0, input0_1_0_0, 0 -14, add, output0_1_0_1, c2_rlk_1_0_1, input0_1_0_1, 0 -14, add, output0_0_1_0, c2_rlk_0_1_0, input0_0_1_0, 1 -14, add, output0_0_1_1, c2_rlk_0_1_1, input0_0_1_1, 1 -14, add, output0_1_1_0, c2_rlk_1_1_0, input0_1_1_0, 1 -14, add, output0_1_1_1, c2_rlk_1_1_1, input0_1_1_1, 1 diff --git a/p-isa_tools/kerngen/tests/test_kerngen_regression.py b/p-isa_tools/kerngen/tests/test_kerngen_regression.py deleted file mode 100644 index bfe8ff3b..00000000 --- a/p-isa_tools/kerngen/tests/test_kerngen_regression.py +++ /dev/null @@ -1,151 +0,0 @@ -# Copyright (C) 2025 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 -# These contents may have been developed with support from one or more Intel-operated -# generative artificial intelligence solutions. -"""Test the expected behaviour of the kerngen script""" - -import pathlib -import subprocess -import sys - -import pytest - -KERNGEN_PATH = pathlib.Path(__file__).parent.parent / "kerngen.py" -KERNGRAPH_PATH = pathlib.Path(__file__).parent.parent / "kerngraph.py" -KERNEL_EXAMPLES_PATH = pathlib.Path(__file__).parent / "kernel_examples" - - -@pytest.mark.parametrize( - "input_file,output_file", - [ - ( - "relin_kernel/input.bgv.16k_l2_m3.relin", - "relin_kernel/output.bgv.16k_l2_m3.relin", - ), - ( - "relin_kernel/input.bgv.16k_l2_m4.relin", - "relin_kernel/output.bgv.16k_l2_m4.relin", - ), - ], -) -def test_kerngen_relin_regression(input_file, output_file): - """Test kerngen.py with known good kernel input and output files. - - Args: - input_file: Path to input file relative to kernel_examples directory - output_file: Path to output file relative to kernel_examples directory - """ - - # Construct full paths - input_path = KERNEL_EXAMPLES_PATH / input_file - output_path = KERNEL_EXAMPLES_PATH / output_file - - # Read the input file - input_content = input_path.read_text().strip() - - # Read the expected output file - expected_output = output_path.read_text().strip() - - # Run kerngen.py with -q flag (quiet mode) - result = subprocess.run( # noqa: S603 (allows running potentially untrusted code) - [sys.executable, str(KERNGEN_PATH), "-q"], - input=input_content.encode(), - capture_output=True, - check=True, - ) - - # Get actual output and normalize line endings - actual_output = result.stdout.decode().strip().replace("\r\n", "\n") - expected_output = expected_output.replace("\r\n", "\n") - - # Compare the outputs - assert actual_output == expected_output, ( - f"Kerngen output did not match expected output for {input_file}.\n\n" - f"Input file: {input_file}\n" - f"Output file: {output_file}\n\n" - f"Input content:\n{input_content}\n\n" - f"Expected output lines: {len(expected_output.splitlines())}\n" - f"Actual output lines: {len(actual_output.splitlines())}\n\n" - f"First 5 lines of expected:\n" - f"{''.join(expected_output.splitlines()[:5])}\n\n" - f"First 5 lines of actual:\n" - f"{''.join(actual_output.splitlines()[:5])}\n" - ) - - -@pytest.mark.parametrize( - "input_file,output_file", - [ - ( - "relin_kernel/input.bgv.16k_l2_m3.relin", - "relin_kernel/output.bgv.16k_l2_m3_p-rns_s-part.relin", - ), - ( - "relin_kernel/input.bgv.16k_l2_m4.relin", - "relin_kernel/output.bgv.16k_l2_m4_p-rns_s-part.relin", - ), - ], -) -def test_kerngraph_relin_regression(input_file, output_file): - """Test kerngraph.py with known good kernel input and output files. - - Uses the pipeline: input -> kerngen.py -l -> kerngraph.py -l -t relin -p rns -s part - - Args: - input_file: Path to input file relative to kernel_examples directory - output_file: Path to output file relative to kernel_examples directory - """ - - # Construct full paths - input_path = KERNEL_EXAMPLES_PATH / input_file - output_path = KERNEL_EXAMPLES_PATH / output_file - - # Read the input file - input_content = input_path.read_text().strip() - - # Read the expected output file - expected_output = output_path.read_text().strip() - - # Step 1: Run kerngen.py with -l flag (legacy mode) - kerngen_result = subprocess.run( # noqa: S603 (allows running potentially untrusted code) - [sys.executable, str(KERNGEN_PATH), "-l"], - input=input_content.encode(), - capture_output=True, - check=True, - ) - - # Step 2: Run kerngraph.py with kerngen output as input - kerngraph_result = subprocess.run( # noqa: S603 (allows running potentially untrusted code) - [ - sys.executable, - str(KERNGRAPH_PATH), - "-l", - "-t", - "relin", - "-p", - "rns", - "-s", - "part", - ], - input=kerngen_result.stdout, - capture_output=True, - check=True, - ) - - # Get actual output and normalize line endings - actual_output = kerngraph_result.stdout.decode().strip().replace("\r\n", "\n") - expected_output = expected_output.replace("\r\n", "\n") - - # Compare the outputs - assert actual_output == expected_output, ( - f"Kerngraph output did not match expected output for {input_file}.\n\n" - f"Input file: {input_file}\n" - f"Output file: {output_file}\n\n" - f"Input content:\n{input_content}\n\n" - f"Expected output lines: {len(expected_output.splitlines())}\n" - f"Actual output lines: {len(actual_output.splitlines())}\n\n" - f"First 5 lines of expected:\n" - f"{''.join(expected_output.splitlines()[:5])}\n\n" - f"First 5 lines of actual:\n" - f"{''.join(actual_output.splitlines()[:5])}\n" - )