diff --git a/scripts/vec_test_helpers/__init__.py b/scripts/vec_test_helpers/__init__.py
index 77cb7ff..58bf125 100644
--- a/scripts/vec_test_helpers/__init__.py
+++ b/scripts/vec_test_helpers/__init__.py
@@ -2,6 +2,7 @@
 
 This module is for reusable helper functions used by the templates.
 """
+import numpy as np
 
 def is_widening(op_code):
     """Check if a particular op_code is a widening type."""
@@ -35,3 +36,13 @@
 def get_ref_opcode(op_code):
     """Return the name of the reference code in the softrvv library."""
     return op_code[:-1] if is_unsigned(op_code) else op_code
+
+def get_imms(op_code):
+    """Return a list of valid immediate values for a op code."""
+    if op_code in ['vsll', 'vsrl']:
+        # Left and right shift immediates must be [0,31]
+        return np.linspace(0, 31, 8, dtype=np.int32)
+    else:
+        # Immediate values must be [-16, 15]
+        return np.linspace(-16, 15, 7, dtype=np.int32)
+
diff --git a/softrvv/include/softrvv.h b/softrvv/include/softrvv.h
index e532f94..7d952bc 100644
--- a/softrvv/include/softrvv.h
+++ b/softrvv/include/softrvv.h
@@ -13,6 +13,7 @@
 #include "softrvv_vor.h"
 #include "softrvv_vrem.h"
 #include "softrvv_vsext_vzext.h"
+#include "softrvv_vsll.h"
 #include "softrvv_vsub.h"
 #include "softrvv_vwadd.h"
 #include "softrvv_vwsub.h"
diff --git a/softrvv/include/softrvv_vsll.h b/softrvv/include/softrvv_vsll.h
new file mode 100644
index 0000000..a4809a9
--- /dev/null
+++ b/softrvv/include/softrvv_vsll.h
@@ -0,0 +1,34 @@
+#ifndef SOFTRVV_VSLL_H
+#define SOFTRVV_VSLL_H
+
+#include <stddef.h>
+
+#include <type_traits>
+
+namespace softrvv {
+
+template <typename T>
+void vsll_vx(T *dest, T *src1, const T *src2, int32_t avl) {
+  // Only low lg2(SEW) bits are used for shift
+  const T low_bits_mask = sizeof(T) * 8 - 1;
+  const T shift = *src2 & low_bits_mask;
+  for (int32_t idx = 0; idx < avl; idx++) {
+    dest[idx] = static_cast<T>(
+        static_cast<typename std::make_unsigned<T>::type>(src1[idx]) << shift);
+  }
+}
+
+template <typename T>
+void vsll_vv(T *dest, T *src1, T *src2, int32_t avl) {
+  // Only low lg2(SEW) bits are used for shift
+  const T low_bits_mask = sizeof(T) * 8 - 1;
+  for (int32_t idx = 0; idx < avl; idx++) {
+    dest[idx] = static_cast<T>(
+        static_cast<typename std::make_unsigned<T>::type>(src1[idx])
+        << (src2[idx] & low_bits_mask));
+  }
+}
+
+}  // namespace softrvv
+
+#endif  // SOFTRVV_VSLL_H
diff --git a/softrvv/tests/CMakeLists.txt b/softrvv/tests/CMakeLists.txt
index 3807827..b893673 100644
--- a/softrvv/tests/CMakeLists.txt
+++ b/softrvv/tests/CMakeLists.txt
@@ -161,6 +161,15 @@
    -Xlinker --defsym=__itcm_length__=128K
 )
 
+softrvv_vec_cc_generated_test(
+  NAME
+    vsll
+  TEMPLATE
+    softrvv_vsll_test.tpl.cpp
+  LINKOPTS
+   -Xlinker --defsym=__itcm_length__=128K
+)
+
 vec_cc_test(
   NAME
     softrvv_vmax
diff --git a/softrvv/tests/templates/softrvv_vsll_test.tpl.cpp b/softrvv/tests/templates/softrvv_vsll_test.tpl.cpp
new file mode 100644
index 0000000..5c6b102
--- /dev/null
+++ b/softrvv/tests/templates/softrvv_vsll_test.tpl.cpp
@@ -0,0 +1,11 @@
+<%inherit file="base.tpl.cpp"/>\
+<%namespace name="tests" file="opivv_opivx_test.tpl.cpp"/>
+<%
+import numpy as np
+src1, src2, rs1 = parent.module.get_test_inputs(np.int32, N=5)
+tmp_src2 = src2 & (np.int32(0).itemsize * 8 -1)
+ref_vv = np.left_shift(src1, tmp_src2)
+tmp_rs1 = rs1 & (np.int32(0).itemsize * 8 - 1)
+ref_vx = np.left_shift(src1, tmp_rs1)
+%>\
+${tests.test_opivv_opivx("int32_t", op, src1, src2, rs1, ref_vv, ref_vx)}
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 02a410c..b2d3d40 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -219,6 +219,15 @@
    -Xlinker --defsym=__itcm_length__=128K
 )
 
+vec_cc_generated_test(
+  NAME
+    vsll
+  TEMPLATE
+    opivv_opivx_opivi_test.tpl.cpp
+  LINKOPTS
+   -Xlinker --defsym=__itcm_length__=192K
+)
+
 vec_cc_test(
   NAME
     vsetvl_test
diff --git a/tests/templates/base_opivi_test.tpl.cpp b/tests/templates/base_opivi_test.tpl.cpp
index 39343cb..a3df734 100644
--- a/tests/templates/base_opivi_test.tpl.cpp
+++ b/tests/templates/base_opivi_test.tpl.cpp
@@ -13,9 +13,15 @@
   void SetUp() override { zero_vector_registers(); }
   void TearDown() override { zero_vector_registers(); }
 };
-% for test_val in [-16, -15, -4, 1, 5, 12, 15]:
-% for sew in [8, 16, 32]:
-% for lmul in [1, 2, 4, 8]:
+<%
+import vec_test_helpers
+sews = vec_test_helpers.get_sews(op_code)
+lmuls = vec_test_helpers.get_lmuls(op_code)
+imms = vec_test_helpers.get_imms(op_code)
+%>\
+% for test_val in imms:
+% for sew in sews:
+% for lmul in lmuls:
 <%
 var_type = "int%d_t" % sew
 %>\
