diff --git a/softrvv/include/softrvv.h b/softrvv/include/softrvv.h
index f9b2ea5..887769d 100644
--- a/softrvv/include/softrvv.h
+++ b/softrvv/include/softrvv.h
@@ -15,6 +15,7 @@
 #include "softrvv_vfmin.h"
 #include "softrvv_vfmul.h"
 #include "softrvv_vfsub.h"
+#include "softrvv_vmacc.h"
 #include "softrvv_vmax.h"
 #include "softrvv_vmfeq.h"
 #include "softrvv_vmfge.h"
diff --git a/softrvv/include/softrvv_vmacc.h b/softrvv/include/softrvv_vmacc.h
new file mode 100644
index 0000000..f87aec6
--- /dev/null
+++ b/softrvv/include/softrvv_vmacc.h
@@ -0,0 +1,40 @@
+#ifndef SOFTRVV_VMACC_H
+#define SOFTRVV_VMACC_H
+
+#include <stddef.h>
+#include <stdint.h>
+
+namespace softrvv {
+
+template <typename T1, typename T2>
+void vmacc_vx(T1 *vd, const T2 *rs1, const T2 *vs2, int32_t avl) {
+  for (int32_t idx = 0; idx < avl; idx++) {
+     vd[idx] = (*rs1 * vs2[idx]) + vd[idx];
+  }
+}
+
+template <typename T1, typename T2>
+void vmacc_vv(T1 *vd, T2 *vs1, const T2 *vs2, int32_t avl) {
+  for (int32_t idx = 0; idx < avl; idx++) {
+     vd[idx] = (vs1[idx] * vs2[idx]) + vd[idx];
+  }
+}
+
+template <typename T1, typename T2>
+void vnmsac_vv(T1 *vd, T2 *vs1, const T2 *vs2, int32_t avl) {
+  for (int32_t idx = 0; idx < avl; idx++) {
+     vd[idx] = -(vs1[idx] * vs2[idx]) + vd[idx];
+  }
+}
+
+template <typename T1, typename T2>
+void vnmsac_vx(T1 *vd, const T2 *rs1, const T2 *vs2, int32_t avl) {
+  for (int32_t idx = 0; idx < avl; idx++) {
+     vd[idx] = -(*rs1 * vs2[idx]) + vd[idx];
+  }
+}
+
+
+}  // namespace softrvv
+
+#endif  // SOFTRVV_VMACC_H
diff --git a/softrvv/tests/CMakeLists.txt b/softrvv/tests/CMakeLists.txt
index 6d3d482..9441381 100644
--- a/softrvv/tests/CMakeLists.txt
+++ b/softrvv/tests/CMakeLists.txt
@@ -331,3 +331,14 @@
    -Xlinker --defsym=__itcm_length__=128K
 )
 
+vec_cc_test(
+  NAME
+    softrvv_vmacc
+  SRCS
+    softrvv_vmacc_test.cpp
+  DEPS
+    softrvv
+  LINKOPTS
+   -Xlinker --defsym=__itcm_length__=128K
+)
+
diff --git a/softrvv/tests/softrvv_vmacc_test.cpp b/softrvv/tests/softrvv_vmacc_test.cpp
new file mode 100644
index 0000000..ed784d5
--- /dev/null
+++ b/softrvv/tests/softrvv_vmacc_test.cpp
@@ -0,0 +1,71 @@
+#include <riscv_vector.h>
+#include <springbok.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "pw_unit_test/framework.h"
+#include "softrvv.h"
+
+namespace softrvv_vmacc_test {
+namespace {
+
+class SoftRvvVmaccTest : public ::testing::Test {
+ protected:
+  void SetUp() override { }
+};
+
+class SoftRvvVnmsacTest : public ::testing::Test {
+ protected:
+  void SetUp() override { }
+};
+
+// Integer multiply-add, overwrite addend
+// vmacc.vv vd, vs1, vs2, vm    # vd[i] = +(vs1[i] * vs2[i]) + vd[i]
+uint32_t vmacvv_vs1[] = {1, 1, 128,  64,  0};
+uint32_t vmacvv_vs2[] = {0, 1,   1,   2, 32};
+const uint32_t vmacvv_kAVL = sizeof(vmacvv_vs2) / sizeof(vmacvv_vs2[0]);
+uint32_t vmacvv_vd[] =  {0, 1,   2,   4,  8};
+int32_t vmacvv_ref[] =  {0, 2, 130, 132,  8};
+TEST_F(SoftRvvVmaccTest, VV) {
+  softrvv::vmacc_vv<uint32_t>(vmacvv_vd, vmacvv_vs1, vmacvv_vs2, vmacvv_kAVL);
+  ASSERT_EQ(memcmp(vmacvv_vd, vmacvv_ref, sizeof(vmacvv_vd)), 0);
+}
+
+// Integer multiply-add, overwrite addend
+// vmacc.vx vd, rs1, vs2, vm    # vd[i] = +(x[rs1] * src2[i]) + vd[i]
+uint32_t vmaccvx_rs1[] = {170};
+uint32_t vmaccvx_vs2[] = {0, 1,   1,   2, 32};
+const uint32_t vmaccvx_kAVL = sizeof(vmaccvx_vs2) / sizeof(vmaccvx_vs2[0]);
+uint32_t vmaccvx_vd[] =  {0, 1,   2,   4,  8};
+int32_t vmaccvx_ref[] =  {0, 171, 172, 344,  5448};
+TEST_F(SoftRvvVmaccTest, VX) {
+    softrvv::vmacc_vx<uint32_t>(vmaccvx_vd, vmaccvx_rs1, vmaccvx_vs2, vmaccvx_kAVL);
+    ASSERT_EQ(memcmp(vmaccvx_vd, vmaccvx_ref, sizeof(vmaccvx_vd)), 0);
+}
+
+// Integer multiply-sub, overwrite minuend
+// vnmsac.vv vd, vs1, vs2, vm    # vd[i] = -(vs1[i] * vs2[i]) + vd[i]
+uint32_t vnmsacvv_vs1[] = {220,  24,  1234,   150,     1386};
+uint32_t vnmsacvv_vs2[] = {  1,   2,     2,    10,     1000};
+const uint32_t vnmsacvv_kAVL = sizeof(vnmsacvv_vs2) / sizeof(vnmsacvv_vs2[0]);
+uint32_t vnmsacvv_vd[] =  {  0,  10,    10,  1000,        1};
+int32_t vnmsacvv_ref[] = {-220, -38, -2458,  -500, -1385999};
+TEST_F(SoftRvvVnmsacTest, VV) {
+  softrvv::vnmsac_vv<uint32_t>(vnmsacvv_vd, vnmsacvv_vs1, vnmsacvv_vs2, vnmsacvv_kAVL);
+  ASSERT_EQ(memcmp(vnmsacvv_vd, vnmsacvv_ref, sizeof(vnmsacvv_ref)), 0);
+}
+
+// Integer multiply-sub, overwrite minuend
+// vnmsac.vx vd, rs1, vs2, vm    # vd[i] = -(x[rs1] * vs2[i]) + vd[i]
+uint32_t vnmsacvx_rs1[] = {170};
+uint32_t vnmsacvx_vs2[] = {  1, 2, 2, 10, 1000};
+const uint32_t vnmsacvx_kAVL = sizeof(vnmsacvx_vs2) / sizeof(vnmsacvx_vs2[0]);
+uint32_t vnmsacvx_vd[] = {170, 350, 10, 0, 0};
+int32_t vnmsacvx_ref[] = {0, 10, -330, -1700, -170000};
+TEST_F(SoftRvvVnmsacTest, VX) {
+    softrvv::vnmsac_vx<uint32_t>(vnmsacvx_vd, vnmsacvx_rs1, vnmsacvx_vs2, vnmsacvx_kAVL);
+    ASSERT_EQ(memcmp(vnmsacvx_vd, vnmsacvx_ref, sizeof(vnmsacvx_ref)), 0);
+}
+
+}  // namespace
+}  // namespace softrvv_vmacc_test
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 4214281..e51930f 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,4 +1,3 @@
-
 vec_cc_generated_test(
   NAME
     vfadd
