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"
- )