diff --git a/sim/test/BUILD b/sim/test/BUILD
index b634ef2..e5d1b57 100644
--- a/sim/test/BUILD
+++ b/sim/test/BUILD
@@ -136,6 +136,7 @@
         "//sim:kelvin_instructions",
         "@com_google_absl//absl/functional:bind_front",
         "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/types:span",
         "@com_google_googletest//:gtest_main",
         "@com_google_mpact-sim//mpact/sim/generic:instruction",
     ],
diff --git a/sim/test/kelvin_vector_instructions_test.cc b/sim/test/kelvin_vector_instructions_test.cc
index 957187d..55c58a3 100644
--- a/sim/test/kelvin_vector_instructions_test.cc
+++ b/sim/test/kelvin_vector_instructions_test.cc
@@ -29,6 +29,7 @@
 #include "absl/functional/bind_front.h"
 #include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
+#include "absl/types/span.h"
 #include "mpact/sim/generic/instruction.h"
 
 // This file contains the tests for testing kelvin vector binary instructions.
@@ -1517,8 +1518,8 @@
 static std::pair<T, T> SlidepArgsGetter(
     bool horizontal, int index, int num_ops, int op_num, int dest_reg_sub_index,
     int element_index, int vd_size, bool widen_dst, int src1_widen_factor,
-    int vs1_size, const std::vector<T> &vs1_value, int vs2_size, bool s2_scalar,
-    const std::vector<T> &vs2_value, T rs2_value, bool halftype_op,
+    int vs1_size, absl::Span<const T> vs1_value, int vs2_size, bool s2_scalar,
+    absl::Span<const T> vs2_value, T rs2_value, bool halftype_op,
     bool vmvp_op) {
   assert(!s2_scalar && !halftype_op && !vmvp_op && dest_reg_sub_index == 0);
 
diff --git a/sim/test/kelvin_vector_instructions_test_base.h b/sim/test/kelvin_vector_instructions_test_base.h
index 5e90c8c..1e874c3 100644
--- a/sim/test/kelvin_vector_instructions_test_base.h
+++ b/sim/test/kelvin_vector_instructions_test_base.h
@@ -406,7 +406,7 @@
   // value.
   template <typename T>
   void SetVectorRegisterValues(
-      const std::vector<std::tuple<std::string, Span<const T>>> &values) {
+      absl::Span<const std::tuple<std::string, Span<const T>>> values) {
     for (auto &[vreg_name, span] : values) {
       auto *vreg = state_->GetRegister<RVVectorRegister>(vreg_name).first;
       auto *db = state_->db_factory()->MakeCopyOf(vreg->data_buffer());
@@ -419,7 +419,7 @@
   // Set the named registers to their corresponding value.
   template <typename T, typename RegisterType = RV32Register>
   void SetRegisterValues(
-      const std::vector<std::tuple<std::string, const T>> &values) {
+      absl::Span<const std::tuple<std::string, const T>> values) {
     for (auto &[reg_name, value] : values) {
       auto *reg = state_->GetRegister<RegisterType>(reg_name).first;
       auto *db =
@@ -449,9 +449,9 @@
   // named in the two vectors and appends them to the given instruction.
   void AppendVectorRegisterOperands(Instruction *inst, const uint32_t num_ops,
                                     int src1_widen_factor, int src1_reg,
-                                    const std::vector<int> &other_sources,
+                                    absl::Span<const int> other_sources,
                                     bool widen_dst,
-                                    const std::vector<int> &destinations) {
+                                    absl::Span<const int> destinations) {
     {
       std::vector<RegisterBase *> reg_vec;
       auto regs_count = src1_widen_factor * num_ops;
