<%!

def is_widening(op_code):
    return op_code[1] == 'w'

def is_unsigned(op_code):
    return op_code[-1] == 'u'

def get_sews(op_code):
    return [8, 16] if is_widening(op_code) else [8, 16, 32]

def get_lmuls(op_code):
    return [1, 2, 4] if is_widening(op_code) else [1, 2, 4, 8]

def get_dest_type(op_code, sew):
    type_fmt = "%sint%d_t"
    sign_type  = "u" if is_unsigned(op_code) else ""
    dest_sew = sew * 2 if is_widening(op_code) else sew
    return type_fmt % (sign_type, dest_sew)

def get_src_type(op_code, sew):
    type_fmt = "%sint%d_t"
    sign_type = "u" if is_unsigned(op_code) else ""
    return type_fmt % (sign_type, sew)

def get_ref_opcode(op_code):
    return op_code[:-1] if is_unsigned(op_code) else op_code

%>
/* Automatically generated file */
#include <limits.h>
#include <riscv_vector.h>
#include <softrvv.h>
#include <springbok.h>
#include <stdio.h>
#include <stdlib.h>

#include <bit>
#include <tuple>

#include "pw_unit_test/framework.h"
#include "test_v_helpers.h"
${self.body()}
