Revert "reflects reviews"

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: I76c2cae9629c14f97fb7f3e1517be77c7811765b
diff --git a/scripts/vec_test_helpers/__init__.py b/scripts/vec_test_helpers/__init__.py
index 8f000eb..4aa284e 100644
--- a/scripts/vec_test_helpers/__init__.py
+++ b/scripts/vec_test_helpers/__init__.py
@@ -129,9 +129,8 @@
         return [8, 16, 32]
 
     def get_sew_sizes(self):
-        """Return size of types.
-        imm is not used for floating point op codes.
-        """
+        """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
@@ -143,44 +142,37 @@
         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.
-        """
+        """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'))
-        if self.is_floating():
-            var_types = VarTypes("float", "float", "float", "float")
-        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)
-            src2_type = type_fmt % (sign_type, src2_sew)
-            imm_type = type_fmt % (sign_type, imm_sew)
-            var_types = 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 ""
+        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)
+        src2_type = type_fmt % (sign_type, src2_sew)
+        imm_type = type_fmt % (sign_type, imm_sew)
+        var_types = VarTypes(dest_type, src2_type, src1_type, imm_type)
         return var_types
 
     def get_mnemonic(self, operand_type):
         """Generate the correct mnemonic given a opcode and operand type."""
         operand_width = self.OperandWidth.STANDARD
-        if self.is_floating():
-            if operand_type == self.OperandType.SCALAR:
-                operand_type = self.OperandType.FLOATSCALAR
-        else:
-            if self.is_narrowing():
-                operand_width = self.OperandWidth.NARROWING
-            elif self.is_widening():
-                operand_width = self.OperandWidth.WIDENING
+        if (not self.is_floating()) and self.is_narrowing():
+            operand_width = self.OperandWidth.NARROWING
+        elif (not self.is_floating()) and 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():
-            if self.is_widening() or self.is_narrowing():
-                return [1, 2, 4]
+        if (not self.is_floating()) and (self.is_widening() or self.is_narrowing()):
+            return [1, 2, 4]
         return [1, 2, 4, 8]
 
     @staticmethod
@@ -192,9 +184,8 @@
     def get_softrvv_template_data_type(self):
         """Return types """
         var_types = self.get_var_types()
-        if not self.is_floating():
-            if self.is_narrowing() or self.is_widening():
-                return "%s, %s" % (var_types.dest_type, var_types.src2_type)
+        if (not self.is_floating()) and (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):
@@ -252,7 +243,7 @@
         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.
+        """Return test inputs for floating points."""
         if self.is_floating():
           type_info = np.finfo(src1_np_type)
           src1_data = np.random.uniform(
@@ -267,7 +258,7 @@
               rs1 = 1.0 if rs1 == 0.0 else rs1
           return src2_data, src1_data, rs1
 
-        # Return test inputs for integers.
+        """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)
@@ -287,9 +278,8 @@
         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.
-    """
+    """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 76f1313..1046aba 100644
--- a/softrvv/include/softrvv.h
+++ b/softrvv/include/softrvv.h
@@ -2,7 +2,6 @@
 #define SOFTRVV_H
 
 #include <stddef.h>
-#include <stdint.h>
 
 #include "encoding.h"
 #include "softrvv_internal.h"
@@ -32,8 +31,8 @@
 #include "softrvv_vwsub.h"
 #include "softrvv_vxor.h"
 
-#include "softrvv_vfsub.h"
 #include "softrvv_vfadd.h"
+#include "softrvv_vfsub.h"
 
 namespace softrvv {
 
diff --git a/softrvv/include/softrvv_vfadd.h b/softrvv/include/softrvv_vfadd.h
index 0a6633d..86009c8 100644
--- a/softrvv/include/softrvv_vfadd.h
+++ b/softrvv/include/softrvv_vfadd.h
@@ -5,13 +5,15 @@
 
 namespace softrvv {
 
-void vfadd_vf(float *dest, float *src1, const float *src2, int32_t avl) {
+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;
   }
 }
 
-void vfadd_vv(float *dest, float *src1, float *src2, int32_t avl) {
+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];
   }
diff --git a/softrvv/include/softrvv_vfsub.h b/softrvv/include/softrvv_vfsub.h
index aff1f52..eea2f26 100644
--- a/softrvv/include/softrvv_vfsub.h
+++ b/softrvv/include/softrvv_vfsub.h
@@ -5,19 +5,22 @@
 
 namespace softrvv {
 
-void vfsub_vf(float *dest, float *src1, const float *src2, int32_t avl) {
+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;
   }
 }
 
-void vfsub_vv(float *dest, float *src1, float *src2, int32_t avl) {
+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];
   }
 }
 
-void vfrsub_vx(float *dest, float *src1, const float *src2, int32_t avl) {
+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];
   }
diff --git a/softrvv/tests/templates/opivf_test.tpl.cpp b/softrvv/tests/templates/opivf_test.tpl.cpp
index a32bc0d..87c04c1 100644
--- a/softrvv/tests/templates/opivf_test.tpl.cpp
+++ b/softrvv/tests/templates/opivf_test.tpl.cpp
@@ -38,7 +38,7 @@
 %>\
 
 TEST_F(SoftRvv${template_helper.op_code.capitalize()}Test, VF) {
-  softrvv::${template_helper.op_code}_vf(dest, src2, &rs1, kAVL);\
+  softrvv::${template_helper.op_code}_vf<${datatypes}>(dest, src2, &rs1, kAVL);\
 ${insert_check(template_helper, var_types.dest_type, "ref_vf")}\
 }
 </%def>\
diff --git a/softrvv/tests/templates/opivv_test.tpl.cpp b/softrvv/tests/templates/opivv_test.tpl.cpp
index ab54161..08bd2e7 100644
--- a/softrvv/tests/templates/opivv_test.tpl.cpp
+++ b/softrvv/tests/templates/opivv_test.tpl.cpp
@@ -38,11 +38,7 @@
 datatypes = template_helper.get_softrvv_template_data_type()
 %>\
 TEST_F(SoftRvv${template_helper.op_code.capitalize()}Test, VV) {
-  % if template_helper.is_floating():
-    softrvv::${template_helper.op_code}_vv(dest, src2, src1, kAVL);\
-  % else:
-    softrvv::${template_helper.op_code}_vv<${datatypes}>(dest, src2, src1, kAVL);\
-  % endif
+  softrvv::${template_helper.op_code}_vv<${datatypes}>(dest, src2, src1, kAVL);\
 ${insert_check(template_helper, var_types.dest_type, "ref_vv")}\
 }
 
diff --git a/test_v_helpers/include/test_v_helpers.h b/test_v_helpers/include/test_v_helpers.h
index ba28e43..66760c0 100644
--- a/test_v_helpers/include/test_v_helpers.h
+++ b/test_v_helpers/include/test_v_helpers.h
@@ -8,6 +8,20 @@
 
 #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 5acd28c..e2f55ff 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,3 +1,12 @@
+# vec_cc_generated_test(
+#   NAME
+#     vfadd
+#   TEMPLATE
+#     opivv_test.tpl.cpp
+#   LINKOPTS
+#    -Xlinker --defsym=__itcm_length__=128K
+# )
+
 vec_cc_generated_test(
   NAME
     vsub
@@ -399,5 +408,4 @@
     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
index a6abfa1..9ec1eac 100644
--- a/tests/vector_vfadd_test.cpp
+++ b/tests/vector_vfadd_test.cpp
@@ -1,29 +1,48 @@
+#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];
@@ -33,12 +52,12 @@
                 /* 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, src_vector_2});
-
+                    {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);
@@ -47,9 +66,11 @@
                 // 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(ptr_ref_dest_vec, ptr_vec_2, ptr_vec_1, avl);
+                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));