Revert "1. Modify template files for vector tests with floating ..."

Revert submission 11560

Reason for revert: Revert this and all related CLs to review the changes again. I will create a new CL by cherry-picking the CL that contains the up-to-date version. 
Reverted Changes:
Id487b5bd4:1. Modify template files for vector tests with flo...
I13979c48c:Merge branch 'master' of https://spacebeaker.googl...
I7b24a230b:reflects reviews

Change-Id: I22e593ff379b2467ac6d9dd48e0415cf87f720c5
diff --git a/scripts/vec_test_helpers/__init__.py b/scripts/vec_test_helpers/__init__.py
index 4aa284e..87f457e 100644
--- a/scripts/vec_test_helpers/__init__.py
+++ b/scripts/vec_test_helpers/__init__.py
@@ -14,7 +14,6 @@
         VECTOR = enum.auto()
         SCALAR = enum.auto()
         IMMEDIATE = enum.auto()
-        FLOATSCALAR = enum.auto()
 
     class OperandWidth(enum.Enum):
         """RISC-V V operand width type option."""
@@ -38,11 +37,6 @@
             OperandWidth.WIDENING: "vi",
             OperandWidth.NARROWING: "wi",
         },
-        OperandType.FLOATSCALAR : {
-            OperandWidth.STANDARD: "vf",
-            OperandWidth.WIDENING: "vf",
-            OperandWidth.NARROWING: "wf",
-        },
     }
 
     """Helper class for providing params for use in templates"""
@@ -58,14 +52,12 @@
             8:np.uint8,
             16:np.uint16,
             32:np.uint32}
-        self.float_np_types = {
-            32:np.float32}
 
     @property
     def op_code(self):
         """Return the op_code."""
         if self._op_code is None:
-            raise ValueError("OP CODE was not set.")
+            raise ValueError("SEW was not set.")
         return self._op_code
 
     @op_code.setter
@@ -73,10 +65,6 @@
         """Set the op_code"""
         self._op_code = value
 
-    def is_floating(self):
-        """check if a particular op_code is a floating type."""
-        return self.op_code[1] == 'f'
-
     @property
     def sew(self):
         """Return the selected element width."""
@@ -87,68 +75,52 @@
     @sew.setter
     def sew(self, value):
         """Set the selected element width."""
-        if self.is_floating():
-            if not (value == 32):
-                raise ValueError("Invalid SEW")
         if not value in (8, 16, 32):
             raise ValueError("Invalid SEW")
         self._sew = value
 
     def is_widening(self):
         """Check if a particular op_code is a widening type."""
-        if self.is_floating():
-            raise ValueError("Widening is not supported with this template for floating point values")
         return self.op_code[1] == 'w'
 
     def is_narrowing(self):
         """Check if a particular op_code is a narrowing type."""
-        if self.is_floating():
-            raise ValueError("Narrowing is not supported with this template for floating point values")
         return self.op_code[1] == 'n'
 
     def is_destination_mask_register(self):
         """Check if a particular op_code has a mask output."""
-        if self.is_floating():
-            return False
         int_comparison_ops = ('vmseq', 'vmsne', 'vmsltu', 'vmsleu', 'vmsle', 'vmsgtu', 'vmsgt')
         return self.op_code in int_comparison_ops
 
     def is_unsigned(self):
         """Check if a particular op_code is a unsigned type."""
-        if self.is_floating():
-            raise ValueError("Invalid unsigned type op code")
         return self.op_code[-1] == 'u'
 
     def get_sews(self):
         """Given an op_code return a list of valid element widths."""
-        if self.is_floating():
-            return [32]
-
         if self.is_widening() or self.is_narrowing():
             return [8, 16]
         return [8, 16, 32]
 
     def get_sew_sizes(self):
         """Return size of types."""
-        """imm is not used for floating point op codes."""
         dest_sew = self.sew
         src2_sew = self.sew
         src1_sew = self.sew
         imm_sew = self.sew
-        if (not self.is_floating()) and self.is_narrowing():
+        if self.is_narrowing():
             src2_sew = self.sew * 2
-        elif (not self.is_floating()) and self.is_widening():
+        elif self.is_widening():
             dest_sew = self.sew * 2
         return dest_sew, src2_sew, src1_sew, imm_sew
 
     def get_var_types(self):
         """Return types for an op_code and element width."""
-        """imm_type won't be used for floating point values."""
         VarTypes = collections.namedtuple(
             "VarTypes",
             ('dest_type', 'src2_type', 'src1_type', 'imm_type'))
-        type_fmt = "%sfloat%d_t" if self.is_floating() else "%sint%d_t"
-        sign_type  = "u" if (not self.is_floating()) and (self.is_unsigned() or self.force_unsigned) else ""
+        type_fmt = "%sint%d_t"
+        sign_type  = "u" if self.is_unsigned() or self.force_unsigned  else ""
         dest_sew, src2_sew, src1_sew, imm_sew = self.get_sew_sizes()
         dest_type = type_fmt % (sign_type, dest_sew)
         src1_type = type_fmt % (sign_type, src1_sew)
@@ -160,18 +132,16 @@
     def get_mnemonic(self, operand_type):
         """Generate the correct mnemonic given a opcode and operand type."""
         operand_width = self.OperandWidth.STANDARD
-        if (not self.is_floating()) and self.is_narrowing():
+        if self.is_narrowing():
             operand_width = self.OperandWidth.NARROWING
-        elif (not self.is_floating()) and self.is_widening():
+        elif self.is_widening():
             operand_width = self.OperandWidth.WIDENING
-        if self.is_floating() and operand_type == self.OperandType.SCALAR:
-            operand_type = self.OperandType.FLOATSCALAR
         op_suffix = self.mnemonic_suffix[operand_type][operand_width]
         return "%s.%s" % (self.op_code, op_suffix)
 
     def get_lmuls(self):
         """Given an op_code return an iterable of valid lmuls."""
-        if (not self.is_floating()) and (self.is_widening() or self.is_narrowing()):
+        if self.is_widening() or self.is_narrowing():
             return [1, 2, 4]
         return [1, 2, 4, 8]
 
@@ -184,20 +154,16 @@
     def get_softrvv_template_data_type(self):
         """Return types """
         var_types = self.get_var_types()
-        if (not self.is_floating()) and (self.is_narrowing() or self.is_widening()):
+        if self.is_narrowing() or self.is_widening():
             return "%s, %s" % (var_types.dest_type, var_types.src2_type)
         return var_types.src1_type
 
     def get_ref_opcode(self):
         """Return the name of the reference code in the softrvv library."""
-        if self.is_floating():
-            return self.op_code
         return self.op_code[:-1] if self.is_unsigned() else self.op_code
 
     def get_imms(self):
         """Return a list of valid immediate values for a op code."""
-        if self.is_floating():
-            raise ValueError("imm is not available.")
         if self.op_code in ['vsll', 'vsrl', 'vsra', 'vnsrl', 'vnsra']:
             # Left and right shift immediates must be [0,31]
             return np.linspace(0, 31, 8, dtype=np.int32)
@@ -206,8 +172,6 @@
 
     def get_np_dest_type(self):
         """Return numpy type for destination."""
-        if self.is_floating():
-            return self.float_np_types[self.sew]
         if self.force_unsigned:
             types = self.unsigned_np_types
         else:
@@ -218,8 +182,6 @@
 
     def get_np_src1_type(self):
         """Return numpy type for src1."""
-        if self.is_floating():
-            return self.float_np_types[self.sew]
         if self.force_unsigned:
             types = self.unsigned_np_types
         else:
@@ -228,8 +190,6 @@
 
     def get_np_src2_type(self):
         """Return numpy type for src2."""
-        if self.is_floating():
-            return self.float_np_types[self.sew]
         if self.force_unsigned:
             types = self.unsigned_np_types
         else:
@@ -242,28 +202,12 @@
         """Return test inputs."""
         src1_np_type = self.get_np_src1_type()
         src2_np_type = self.get_np_src2_type()
-        src2_np_type = self.get_np_src2_type()
-        """Return test inputs for floating points."""
-        if self.is_floating():
-          type_info = np.finfo(src1_np_type)
-          src1_data = np.random.uniform(
-              type_info.min/2.0, type_info.max/2.0, n).astype(src1_np_type)
-          rs1 = self.get_np_src1_type()(np.random.uniform(
-              type_info.min/2.0, type_info.max/2.0))
-          type_info = np.finfo(src2_np_type)
-          src2_data = np.random.uniform(
-              type_info.min/2.0, type_info.max/2.0, n).astype(src2_np_type)
-          if not allow_zero:
-              src2_data[src2_data==0] = 1
-              rs1 = 1.0 if rs1 == 0.0 else rs1
-          return src2_data, src1_data, rs1
-
-        """Return test inputs for integers."""
         type_info = np.iinfo(src1_np_type)
         src1_data =  np.random.randint(
             type_info.min, type_info.max, n).astype(src1_np_type)
         rs1 = self.get_np_src1_type()(np.random.randint(
             type_info.min, type_info.max))
+        src2_np_type = self.get_np_src2_type()
         type_info = np.iinfo(src2_np_type)
         src2_data = np.random.randint(
             type_info.min, type_info.max, n).astype(src2_np_type)
@@ -273,13 +217,12 @@
         return src2_data, src1_data, rs1
 
     def pack_dest_mask(self, values):
-        """Pack values into a single destination register."""
-        dest_type = self.get_np_dest_type()
-        return np.packbits(dest_type(values), bitorder='little')
+            """Pack values into a single destination register."""
+            dest_type = self.get_np_dest_type()
+            return np.packbits(dest_type(values), bitorder='little')
 
 def cast_to_unsigned(arr):
     """Cast a signed array to an unsigned array."""
-    """This should not be called with floating point values."""
     udtypes = {np.int8:np.uint8,
                np.int16:np.uint16,
                np.int32:np.uint32,
diff --git a/softrvv/include/softrvv.h b/softrvv/include/softrvv.h
index 1046aba..d82e7a0 100644
--- a/softrvv/include/softrvv.h
+++ b/softrvv/include/softrvv.h
@@ -31,9 +31,6 @@
 #include "softrvv_vwsub.h"
 #include "softrvv_vxor.h"
 
-#include "softrvv_vfadd.h"
-#include "softrvv_vfsub.h"
-
 namespace softrvv {
 
 const uint32_t MSTATUS_VS_FS_ENABLE_BIT =
diff --git a/softrvv/include/softrvv_vfadd.h b/softrvv/include/softrvv_vfadd.h
deleted file mode 100644
index 86009c8..0000000
--- a/softrvv/include/softrvv_vfadd.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef SOFTRVV_VFADD_H
-#define SOFTRVV_VFADD_H
-
-#include <stddef.h>
-
-namespace softrvv {
-
-template <typename T>
-void vfadd_vf(T *dest, T *src1, const T *src2, int32_t avl) {
-  for (int32_t idx = 0; idx < avl; idx++) {
-    dest[idx] = src1[idx] + *src2;
-  }
-}
-
-template <typename T>
-void vfadd_vv(T *dest, T *src1, T *src2, int32_t avl) {
-  for (int32_t idx = 0; idx < avl; idx++) {
-    dest[idx] = src1[idx] + src2[idx];
-  }
-}
-
-}  // namespace softrvv
-
-#endif  // SOFTRVV_VFADD_H
diff --git a/softrvv/include/softrvv_vfsub.h b/softrvv/include/softrvv_vfsub.h
deleted file mode 100644
index eea2f26..0000000
--- a/softrvv/include/softrvv_vfsub.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef SOFTRVV_VFSUB_H
-#define SOFTRVV_VFSUB_H
-
-#include <stddef.h>
-
-namespace softrvv {
-
-template <typename T>
-void vfsub_vf(T *dest, T *src1, const T *src2, int32_t avl) {
-  for (int idx = 0; idx < avl; idx++) {
-    dest[idx] = src1[idx] - *src2;
-  }
-}
-
-template <typename T>
-void vfsub_vv(T *dest, T *src1, T *src2, int32_t avl) {
-  for (int32_t idx = 0; idx < avl; idx++) {
-    dest[idx] = src1[idx] - src2[idx];
-  }
-}
-
-template <typename T>
-void vfrsub_vx(T *dest, T *src1, const T *src2, int32_t avl) {
-  for (int32_t idx = 0; idx < avl; idx++) {
-    dest[idx] = *src2 - src1[idx];
-  }
-}
-
-}  // namespace softrvv
-
-#endif  // SOFTRVV_VFSUB_H
diff --git a/softrvv/tests/CMakeLists.txt b/softrvv/tests/CMakeLists.txt
index 289f74e..62cbc9a 100644
--- a/softrvv/tests/CMakeLists.txt
+++ b/softrvv/tests/CMakeLists.txt
@@ -100,24 +100,6 @@
 
 softrvv_vec_cc_generated_test(
   NAME
-    vfadd
-  TEMPLATE
-    softrvv_vfadd_test.tpl.cpp
-  LINKOPTS
-   -Xlinker --defsym=__itcm_length__=128K
-)
-
-softrvv_vec_cc_generated_test(
-  NAME
-    vfsub
-  TEMPLATE
-    softrvv_vfsub_test.tpl.cpp
-  LINKOPTS
-   -Xlinker --defsym=__itcm_length__=128K
-)
-
-softrvv_vec_cc_generated_test(
-  NAME
     vadd
   TEMPLATE
     softrvv_vadd_test.tpl.cpp
diff --git a/softrvv/tests/templates/base.tpl.cpp b/softrvv/tests/templates/base.tpl.cpp
index 9fc3bfa..586cfff 100644
--- a/softrvv/tests/templates/base.tpl.cpp
+++ b/softrvv/tests/templates/base.tpl.cpp
@@ -1,3 +1,16 @@
+<%!
+import numpy  as np
+
+def get_test_inputs(dtype, N, allow_zero=True):
+    ii32 = np.iinfo(dtype)
+    src1_data =  np.random.randint(ii32.min, ii32.max, N).astype(dtype)
+    src2_data = np.random.randint(ii32.min, ii32.max, N).astype(dtype)
+    rs1 = dtype(np.random.randint(ii32.min, ii32.max))
+    if not allow_zero:
+        src2_data[src2_data==0] = 1
+        rs1 = 1 if rs1 == 0 else rs1
+    return src1_data, src2_data, rs1
+%>
 /* File is auto-generated. */
 #include <riscv_vector.h>
 #include <springbok.h>
diff --git a/softrvv/tests/templates/opivf_test.tpl.cpp b/softrvv/tests/templates/opivf_test.tpl.cpp
deleted file mode 100644
index 87c04c1..0000000
--- a/softrvv/tests/templates/opivf_test.tpl.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-<%!
-import vec_test_helpers
-%>\
-<%def name="test_opivf(template_helper, src2, rs1, ref_vf)">
-<%
-src2 = vec_test_helpers.to_carr_str(src2)
-ref_vf = vec_test_helpers.to_carr_str(ref_vf)
-%>\
-namespace softrvv_${template_helper.op_code}_vf_test {
-namespace {
-${insert_variable_init(template_helper, src2, rs1, ref_vf)}
-
-class SoftRvv${template_helper.op_code.capitalize()}Test : public ::testing::Test {
- protected:
-  void SetUp() override { memset(dest, 0, sizeof(dest)); }
-};
-${insert_test(template_helper)}\
-}  // namespace
-}  // namespace softrvv_${op}_vf_test\
-</%def>\
-
-<%def name="insert_variable_init(template_helper, src2, rs1, ref_vf)">
-<%
-  var_types = template_helper.get_var_types()
-%>\
-${var_types.src2_type} src2[] = {${src2}};
-${var_types.imm_type} rs1 = ${rs1};
-const int kAVL = sizeof(src2)/sizeof(src2[0]);
-${var_types.dest_type} dest[kAVL];
-
-${var_types.dest_type} ref_vf[kAVL] = {${ref_vf}};
-</%def>\
-
-<%def name="insert_test(template_helper)">
-<%
-var_types = template_helper.get_var_types()
-datatypes = template_helper.get_softrvv_template_data_type()
-%>\
-
-TEST_F(SoftRvv${template_helper.op_code.capitalize()}Test, VF) {
-  softrvv::${template_helper.op_code}_vf<${datatypes}>(dest, src2, &rs1, kAVL);\
-${insert_check(template_helper, var_types.dest_type, "ref_vf")}\
-}
-</%def>\
-
-<%def name="insert_check(template_helper, dest_type, ref_var)">
-% if template_helper.is_destination_mask_register():
-  assert_vec_mask_eq<${dest_type}>(kAVL, dest, ${ref_var});
-% else:
-  assert_vec_elem_eq<${dest_type}>(kAVL, dest, ${ref_var});
-% endif
-</%def>\
diff --git a/softrvv/tests/templates/opivv_test.tpl.cpp b/softrvv/tests/templates/opivv_test.tpl.cpp
deleted file mode 100644
index 08bd2e7..0000000
--- a/softrvv/tests/templates/opivv_test.tpl.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-<%!
-import vec_test_helpers
-%>\
-<%def name="test_opivv(template_helper, src2, src1,  ref_vv)">
-<%
-src1 = vec_test_helpers.to_carr_str(src1)
-src2 = vec_test_helpers.to_carr_str(src2)
-ref_vv = vec_test_helpers.to_carr_str(ref_vv)
-%>\
-namespace softrvv_${template_helper.op_code}_vv_test {
-namespace {
-${insert_variable_init(template_helper, src2, src1, ref_vv)}
-
-class SoftRvv${template_helper.op_code.capitalize()}Test : public ::testing::Test {
- protected:
-  void SetUp() override { memset(dest, 0, sizeof(dest)); }
-};
-${insert_test(template_helper)}\
-}  // namespace
-}  // namespace softrvv_${op}_vv_test\
-</%def>\
-
-<%def name="insert_variable_init(template_helper, src2, src1, ref_vv)">
-<%
-  var_types = template_helper.get_var_types()
-%>\
-${var_types.src1_type} src1[] = {${src1}};
-${var_types.src2_type} src2[] = {${src2}};
-const int kAVL = sizeof(src1)/sizeof(src1[0]);
-${var_types.dest_type} dest[kAVL];
-
-${var_types.dest_type} ref_vv[kAVL] = {${ref_vv}};
-</%def>\
-
-<%def name="insert_test(template_helper)">
-<%
-var_types = template_helper.get_var_types()
-datatypes = template_helper.get_softrvv_template_data_type()
-%>\
-TEST_F(SoftRvv${template_helper.op_code.capitalize()}Test, VV) {
-  softrvv::${template_helper.op_code}_vv<${datatypes}>(dest, src2, src1, kAVL);\
-${insert_check(template_helper, var_types.dest_type, "ref_vv")}\
-}
-
-</%def>\
-
-<%def name="insert_check(template_helper, dest_type, ref_var)">
-% if template_helper.is_destination_mask_register():
-  assert_vec_mask_eq<${dest_type}>(kAVL, dest, ${ref_var});
-% else:
-  assert_vec_elem_eq<${dest_type}>(kAVL, dest, ${ref_var});
-% endif
-</%def>\
diff --git a/softrvv/tests/templates/softrvv_vfadd_test.tpl.cpp b/softrvv/tests/templates/softrvv_vfadd_test.tpl.cpp
deleted file mode 100644
index ec8695b..0000000
--- a/softrvv/tests/templates/softrvv_vfadd_test.tpl.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-<%inherit file="base.tpl.cpp"/>\
-<%namespace name="tests_vv" file="opivv_test.tpl.cpp"/>\
-<%namespace name="tests_vf" file="opivf_test.tpl.cpp"/>\
-<%
-import numpy as np
-import vec_test_helpers
-template_helper = vec_test_helpers.VecTemplateHelper(op, 32)
-src2, src1, rs1 = template_helper.get_test_inputs(n=5)
-ref_vv = src2 + src1
-ref_vf = src2 + rs1
-%>\
-${tests_vv.test_opivv(template_helper, src2, src1, ref_vv)}
-${tests_vf.test_opivf(template_helper, src2, rs1, ref_vf)}
-
diff --git a/softrvv/tests/templates/softrvv_vfsub_test.tpl.cpp b/softrvv/tests/templates/softrvv_vfsub_test.tpl.cpp
deleted file mode 100644
index f27fd3a..0000000
--- a/softrvv/tests/templates/softrvv_vfsub_test.tpl.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-<%inherit file="base.tpl.cpp"/>\
-<%namespace name="tests_vv" file="opivv_test.tpl.cpp"/>
-<%namespace name="tests_vf" file="opivf_test.tpl.cpp"/>
-<%
-import numpy as np
-import vec_test_helpers
-template_helper = vec_test_helpers.VecTemplateHelper(op, 32)
-src2, src1, rs1 = template_helper.get_test_inputs(n=5)
-ref_vv = src2 - src1
-ref_vf = src2 - rs1
-%>\
-${tests_vv.test_opivv(template_helper, src2, src1, ref_vv)}
-${tests_vf.test_opivf(template_helper, src2, rs1, ref_vf)}
diff --git a/test_v_helpers/include/test_v_helpers.h b/test_v_helpers/include/test_v_helpers.h
index 66760c0..ba28e43 100644
--- a/test_v_helpers/include/test_v_helpers.h
+++ b/test_v_helpers/include/test_v_helpers.h
@@ -8,20 +8,6 @@
 
 #include "pw_unit_test/framework.h"
 
-#ifdef __cplusplus
-
-using float32_t = float;
-using float64_t = double;
-using float128_t = long double;
-
-#else
-
-typedef float  float32_t;
-typedef double float64_t;
-typedef long double float128_t;
-
-#endif // __cplusplus
-
 namespace test_v_helpers {
 
 const int LMUL_MAX = 8;
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index e2f55ff..2230dd1 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,12 +1,3 @@
-# vec_cc_generated_test(
-#   NAME
-#     vfadd
-#   TEMPLATE
-#     opivv_test.tpl.cpp
-#   LINKOPTS
-#    -Xlinker --defsym=__itcm_length__=128K
-# )
-
 vec_cc_generated_test(
   NAME
     vsub
@@ -400,12 +391,3 @@
   LINKOPTS
     -Xlinker --defsym=__itcm_length__=128K
 )
-
-vec_cc_test(
-  NAME
-    vfadd_test
-  SRCS
-    vector_vfadd_test.cpp
-  LINKOPTS
-   -Xlinker --defsym=__itcm_length__=128K
-)
\ No newline at end of file
diff --git a/tests/vector_vfadd_test.cpp b/tests/vector_vfadd_test.cpp
deleted file mode 100644
index 9ec1eac..0000000
--- a/tests/vector_vfadd_test.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-#include <limits.h>
-#include <riscv_vector.h>
-#include <softrvv.h>
-#include <springbok.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <stdint.h> 
-#include <bit>
-#include <tuple>
-
-#include "pw_unit_test/framework.h"
-#include "test_v_helpers.h"
-
-#ifdef __cplusplus
-
-using float32_t = float;
-using float64_t = double;
-using float128_t = long double;
-
-#else
-
-typedef float  float32_t;
-typedef double float64_t;
-typedef long double float128_t;
-
-#endif // __cplusplus
-
-namespace vfadd_vv_test
-{
-    namespace
-    {
-        using namespace test_v_helpers;
-        
-        float src_vector_1[MAXVL_BYTES];
-        float src_vector_2[MAXVL_BYTES];
-        float dest_vector[MAXVL_BYTES];
-        float ref_dest_vector[MAXVL_BYTES];
-        
-        class VfaddTest : public ::testing::Test {
-            protected:
-                void SetUp() override { zero_vector_registers(); }
-                void TearDown() override { zero_vector_registers(); }
-        };
-        
-        TEST_F(VfaddTest, vfadd_vv32m1) {
-            for (int i = 0; i < AVL_COUNT; i++) {
-                int32_t avl = AVLS[i];
-                int vlmax;
-                int vl;
-
-                /* For non narrowing instructions all vectors have same type*/
-                std::tie(vlmax, vl) = vector_test_setup<int32_t>(
-                    VLMUL::LMUL_M1, avl,
-                    {dest_vector, ref_dest_vector, src_vector_1});
-                    
-                if (avl > vlmax) {
-                     continue;
-                }
-    
-                float *ptr_vec_1 = reinterpret_cast<float *>(src_vector_1);
-                float *ptr_vec_2 = reinterpret_cast<float *>(src_vector_2);
-                float *ptr_dest_vec = reinterpret_cast<float *>(dest_vector);
-                float *ptr_ref_dest_vec = reinterpret_cast<float *>(ref_dest_vector);
-
-                // set up values to test up to index of the AVL
-                fill_random_vector<float>(ptr_vec_1, avl);
-                fill_random_vector<float>(ptr_vec_2, avl);
-                memset(dest_vector, 0, MAXVL_BYTES);
-                memset(ref_dest_vector, 0, MAXVL_BYTES);
-
-                // Generate reference vector
-                softrvv::vfadd_vv<float>(ptr_ref_dest_vec, ptr_vec_2, ptr_vec_1, avl);
-                // Load vector registers
-                __asm__ volatile("vle32.v v8, (%0)" : : "r"(ptr_vec_1));
-                __asm__ volatile("vle32.v v16, (%0)" : : "r"(ptr_vec_2));
-
-                // Run target instruction
-                __asm__ volatile("vfadd.vv v24, v16, v8");
-
-                // Store result vector register
-                __asm__ volatile("vse32.v v24, (%0)" : : "r"(ptr_dest_vec));
-                // Check vector elements
-                assert_vec_elem_eq<float>(vlmax, dest_vector, ref_dest_vector);
-            }
-        }
-    }
-}