diff --git a/softrvv/include/softrvv.h b/softrvv/include/softrvv.h
index 18c2c21..bfc0f54 100644
--- a/softrvv/include/softrvv.h
+++ b/softrvv/include/softrvv.h
@@ -24,6 +24,7 @@
 #include "softrvv_vnsra.h"
 #include "softrvv_vnsrl.h"
 #include "softrvv_vor.h"
+#include "softrvv_vredsum.h"
 #include "softrvv_vrem.h"
 #include "softrvv_vsext_vzext.h"
 #include "softrvv_vsll.h"
diff --git a/softrvv/include/softrvv_vredsum.h b/softrvv/include/softrvv_vredsum.h
new file mode 100644
index 0000000..7f96886
--- /dev/null
+++ b/softrvv/include/softrvv_vredsum.h
@@ -0,0 +1,18 @@
+#ifndef SOFTRVV_VREDSUM_H
+#define SOFTRVV_VREDSUM_H
+
+#include <stddef.h>
+
+namespace softrvv {
+
+template <typename T>
+void vredsum_vs(T *dest, T *src2, T *src1, int32_t avl) {
+  dest[0] = src1[0];
+  for (int32_t idx = 0; idx < avl; idx++) {
+    dest[0] += src2[idx];
+  }
+}
+
+}  // namespace softrvv
+
+#endif  // SOFTRVV_VREDSUM_H
diff --git a/softrvv/tests/CMakeLists.txt b/softrvv/tests/CMakeLists.txt
index 62cbc9a..9614eb4 100644
--- a/softrvv/tests/CMakeLists.txt
+++ b/softrvv/tests/CMakeLists.txt
@@ -260,6 +260,15 @@
    -Xlinker --defsym=__itcm_length__=128K
 )
 
+softrvv_vec_cc_generated_test(
+  NAME
+    vredsum
+  TEMPLATE
+    softrvv_vredsum_test.tpl.cpp
+  LINKOPTS
+   -Xlinker --defsym=__itcm_length__=128K
+)
+
 vec_cc_test(
   NAME
     softrvv_vmax
diff --git a/softrvv/tests/templates/opmvv_vred_test.tpl.cpp b/softrvv/tests/templates/opmvv_vred_test.tpl.cpp
new file mode 100644
index 0000000..c40f1c1
--- /dev/null
+++ b/softrvv/tests/templates/opmvv_vred_test.tpl.cpp
@@ -0,0 +1,44 @@
+<%!
+import vec_test_helpers
+%>\
+<%def name="test_opmvv_vred(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}_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}_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, VS) {
+  softrvv::${template_helper.op_code}_vs<${datatypes}>(dest, src2, src1, kAVL);\
+  assert_vec_elem_eq<${var_types.dest_type}>(kAVL, dest, ref_vv);
+}
+</%def>\
diff --git a/softrvv/tests/templates/softrvv_vredsum_test.tpl.cpp b/softrvv/tests/templates/softrvv_vredsum_test.tpl.cpp
new file mode 100644
index 0000000..7eced1a
--- /dev/null
+++ b/softrvv/tests/templates/softrvv_vredsum_test.tpl.cpp
@@ -0,0 +1,12 @@
+<%inherit file="base.tpl.cpp"/>\
+<%namespace name="tests" file="opmvv_vred_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)
+dest_type = template_helper.get_np_dest_type()
+ref_vv = np.zeros(src2.shape, dtype=dest_type)
+ref_vv[0] = src2.sum() + src1[0]
+%>\
+${tests.test_opmvv_vred(template_helper, src2, src1, ref_vv)}
