diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5fb669e..3dbdb92 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,6 +40,7 @@
 add_subdirectory(pw_unit_test_demo)
 
 enable_testing()
+add_subdirectory(test_v_helpers)
 add_subdirectory(softrvv)
 add_subdirectory(tests)
 
diff --git a/softrvv/tests/templates/base.tpl.cpp b/softrvv/tests/templates/base.tpl.cpp
index bf3e1db..586cfff 100644
--- a/softrvv/tests/templates/base.tpl.cpp
+++ b/softrvv/tests/templates/base.tpl.cpp
@@ -19,4 +19,8 @@
 
 #include "pw_unit_test/framework.h"
 #include "softrvv.h"
+#include "test_v_helpers.h"
+
+using namespace test_v_helpers;
+
 ${self.body()}
diff --git a/softrvv/tests/templates/opivv_opivx_test.tpl.cpp b/softrvv/tests/templates/opivv_opivx_test.tpl.cpp
index 1586eb6..4625ebc 100644
--- a/softrvv/tests/templates/opivv_opivx_test.tpl.cpp
+++ b/softrvv/tests/templates/opivv_opivx_test.tpl.cpp
@@ -11,28 +11,6 @@
 namespace softrvv_${template_helper.op_code}_test {
 namespace {
 ${insert_variable_init(template_helper, src2, src1, rs1, ref_vv, ref_vx)}
-template <typename T>
-void assert_vec_elem_eq(int avl, void *test_vector_1, void *test_vector_2) {
-  T *ptr_vec_1 = reinterpret_cast<T *>(test_vector_1);
-  T *ptr_vec_2 = reinterpret_cast<T *>(test_vector_2);
-  for (int idx = 0; idx < avl; idx++) {
-    ASSERT_EQ(ptr_vec_1[idx], ptr_vec_2[idx]);
-  }
-}
-
-template <typename T>
-void assert_vec_mask_eq(int avl, void *test_vector_1, void *test_vector_2) {
-  uint32_t *ptr_vec_1 = reinterpret_cast<uint32_t *>(test_vector_1);
-  uint32_t *ptr_vec_2 = reinterpret_cast<uint32_t *>(test_vector_2);
-  for (int idx = 0; idx < avl; idx++) {
-    const int bits_in_element = sizeof(uint32_t) * 8;
-    int eidx = idx / bits_in_element;
-    int epos = idx % bits_in_element;
-    uint32_t *e1 = ptr_vec_1 + eidx;
-    uint32_t *e2 = ptr_vec_2 + eidx;
-    ASSERT_EQ(*e1 & (1 << epos), *e2 & (1 << epos));
-  }
-}
 
 class SoftRvv${template_helper.op_code.capitalize()}Test : public ::testing::Test {
  protected:
diff --git a/test_v_helpers/CMakeLists.txt b/test_v_helpers/CMakeLists.txt
new file mode 100644
index 0000000..62f7e65
--- /dev/null
+++ b/test_v_helpers/CMakeLists.txt
@@ -0,0 +1,12 @@
+cmake_minimum_required(VERSION 3.10)
+enable_language(ASM)
+
+add_library(test_v_helpers
+	test_v_helpers.cpp)
+
+target_include_directories(test_v_helpers PUBLIC include)
+target_link_libraries(test_v_helpers PUBLIC pw_unit_test)
+
+target_compile_options(test_v_helpers PUBLIC
+      ${VEC_DEFAULT_COPTS}
+)
diff --git a/tests/include/test_v_helpers.h b/test_v_helpers/include/test_v_helpers.h
similarity index 79%
rename from tests/include/test_v_helpers.h
rename to test_v_helpers/include/test_v_helpers.h
index 7189b72..ba28e43 100644
--- a/tests/include/test_v_helpers.h
+++ b/test_v_helpers/include/test_v_helpers.h
@@ -72,6 +72,21 @@
 }
 
 template <typename T>
+void assert_vec_mask_eq(int avl, void *test_vector_1, void *test_vector_2) {
+  const unsigned int bw_required = std::__bit_width(sizeof(T)* 8);
+  const unsigned int shift = bw_required - 1;
+  T *ptr_vec_1 = reinterpret_cast<T *>(test_vector_1);
+  T *ptr_vec_2 = reinterpret_cast<T *>(test_vector_2);
+  for (int idx = 0; idx < avl; idx++) {
+    unsigned int element_idx = idx >> shift;  // Eqivalent to idx / (sizeof(T) * 8)
+    unsigned int element_pos = idx & ~(element_idx << shift); // Equivalent to idx % (sizeof(T) * 8)
+    T *e1 = ptr_vec_1 + element_idx;
+    T *e2 = ptr_vec_2 + element_idx;
+    ASSERT_EQ(*e1 & (1 << element_pos), *e2 & (1 << element_pos));
+  }
+}
+
+template <typename T>
 static std::tuple<int, int> vector_test_setup(
     VLMUL lmul, int32_t avl, const std::initializer_list<void *> &vec_list) {
   // Clear all vector registers
diff --git a/tests/test_v_helpers.cpp b/test_v_helpers/test_v_helpers.cpp
similarity index 100%
rename from tests/test_v_helpers.cpp
rename to test_v_helpers/test_v_helpers.cpp
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index fc3db8d..2230dd1 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,16 +1,3 @@
-cmake_minimum_required(VERSION 3.10)
-enable_language(ASM)
-
-add_library(test_v_helpers
-	test_v_helpers.cpp)
-
-target_include_directories(test_v_helpers PUBLIC include)
-target_link_libraries(test_v_helpers PUBLIC pw_unit_test)
-
-target_compile_options(test_v_helpers PUBLIC
-      ${VEC_DEFAULT_COPTS}
-)
-
 vec_cc_generated_test(
   NAME
     vsub
