Simplify compiler bug workaround

To prevent the compiler from combining the vset instructions,
we could simply clobber the vtype. This workaround has been
tested with gcc and clang.

Change-Id: Id1b62efe5941f2508d6d99a2020329013f0dd0b4
diff --git a/tests/cocotb/rvv/load_store/load16_index8.cc b/tests/cocotb/rvv/load_store/load16_index8.cc
index fb85212..c74aa77 100644
--- a/tests/cocotb/rvv/load_store/load16_index8.cc
+++ b/tests/cocotb/rvv/load_store/load16_index8.cc
@@ -32,132 +32,82 @@
 extern "C" {
 // Unordered
 __attribute__((used, retain)) void vluxei8_v_u16mf2() {
-  vuint8mf4_t indices;
-  asm("vsetvli zero, %[vl], e8, mf4, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei8_v_u16mf2(in_buf, indices, vl);
   __riscv_vse16_v_u16mf2(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vluxei8_v_u16m1() {
-  vuint8mf2_t indices;
-  asm("vsetvli zero, %[vl], e8, mf2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei8_v_u16m1(in_buf, indices, vl);
   __riscv_vse16_v_u16m1(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vluxei8_v_u16m2() {
-  vuint8m1_t indices;
-  asm("vsetvli zero, %[vl], e8, m1, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei8_v_u16m2(in_buf, indices, vl);
   __riscv_vse16_v_u16m2(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vluxei8_v_u16m4() {
-  vuint8m2_t indices;
-  asm("vsetvli zero, %[vl], e8, m2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei8_v_u16m4(in_buf, indices, vl);
   __riscv_vse16_v_u16m4(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vluxei8_v_u16m8() {
-  vuint8m4_t indices;
-  asm("vsetvli zero, %[vl], e8, m4, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m4(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei8_v_u16m8(in_buf, indices, vl);
   __riscv_vse16_v_u16m8(out_buf, data, vl);
 }
 
 // Ordered
 __attribute__((used, retain)) void vloxei8_v_u16mf2() {
-  vuint8mf4_t indices;
-  asm("vsetvli zero, %[vl], e8, mf4, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei8_v_u16mf2(in_buf, indices, vl);
   __riscv_vse16_v_u16mf2(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vloxei8_v_u16m1() {
-  vuint8mf2_t indices;
-  asm("vsetvli zero, %[vl], e8, mf2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei8_v_u16m1(in_buf, indices, vl);
   __riscv_vse16_v_u16m1(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vloxei8_v_u16m2() {
-  vuint8m1_t indices;
-  asm("vsetvli zero, %[vl], e8, m1, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei8_v_u16m2(in_buf, indices, vl);
   __riscv_vse16_v_u16m2(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vloxei8_v_u16m4() {
-  vuint8m2_t indices;
-  asm("vsetvli zero, %[vl], e8, m2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei8_v_u16m4(in_buf, indices, vl);
   __riscv_vse16_v_u16m4(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vloxei8_v_u16m8() {
-  vuint8m4_t indices;
-  asm("vsetvli zero, %[vl], e8, m4, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m4(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei8_v_u16m8(in_buf, indices, vl);
   __riscv_vse16_v_u16m8(out_buf, data, vl);
 }
diff --git a/tests/cocotb/rvv/load_store/load32_index8.cc b/tests/cocotb/rvv/load_store/load32_index8.cc
index 5af0fd0..315bd39 100644
--- a/tests/cocotb/rvv/load_store/load32_index8.cc
+++ b/tests/cocotb/rvv/load_store/load32_index8.cc
@@ -32,106 +32,66 @@
 extern "C" {
 // Unordered
 __attribute__((used, retain)) void vluxei8_v_u32m1() {
-  vuint8mf4_t indices;
-  asm("vsetvli zero, %[vl], e8, mf4, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei8_v_u32m1(in_buf, indices, vl);
   __riscv_vse32_v_u32m1(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vluxei8_v_u32m2() {
-  vuint8mf2_t indices;
-  asm("vsetvli zero, %[vl], e8, mf2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei8_v_u32m2(in_buf, indices, vl);
   __riscv_vse32_v_u32m2(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vluxei8_v_u32m4() {
-  vuint8m1_t indices;
-  asm("vsetvli zero, %[vl], e8, m1, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei8_v_u32m4(in_buf, indices, vl);
   __riscv_vse32_v_u32m4(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vluxei8_v_u32m8() {
-  vuint8m2_t indices;
-  asm("vsetvli zero, %[vl], e8, m2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei8_v_u32m8(in_buf, indices, vl);
   __riscv_vse32_v_u32m8(out_buf, data, vl);
 }
 
 // Ordered
 __attribute__((used, retain)) void vloxei8_v_u32m1() {
-  vuint8mf4_t indices;
-  asm("vsetvli zero, %[vl], e8, mf4, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei8_v_u32m1(in_buf, indices, vl);
   __riscv_vse32_v_u32m1(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vloxei8_v_u32m2() {
-  vuint8mf2_t indices;
-  asm("vsetvli zero, %[vl], e8, mf2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei8_v_u32m2(in_buf, indices, vl);
   __riscv_vse32_v_u32m2(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vloxei8_v_u32m4() {
-  vuint8m1_t indices;
-  asm("vsetvli zero, %[vl], e8, m1, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei8_v_u32m4(in_buf, indices, vl);
   __riscv_vse32_v_u32m4(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vloxei8_v_u32m8() {
-  vuint8m2_t indices;
-  asm("vsetvli zero, %[vl], e8, m2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei8_v_u32m8(in_buf, indices, vl);
   __riscv_vse32_v_u32m8(out_buf, data, vl);
 }
diff --git a/tests/cocotb/rvv/load_store/load8_index16.cc b/tests/cocotb/rvv/load_store/load8_index16.cc
index 8a9a34d..8e873fd 100644
--- a/tests/cocotb/rvv/load_store/load8_index16.cc
+++ b/tests/cocotb/rvv/load_store/load8_index16.cc
@@ -32,132 +32,82 @@
 extern "C" {
 // Unordered
 __attribute__((used, retain)) void vluxei16_v_u8mf4() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei16_v_u8mf4(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vluxei16_v_u8mf2() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei16_v_u8mf2(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vluxei16_v_u8m1() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei16_v_u8m1(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vluxei16_v_u8m2() {
-  vuint16m4_t indices;
-  asm("vsetvli zero, %[vl], e16, m4, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei16_v_u8m2(in_buf, indices, vl);
   __riscv_vse8_v_u8m2(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vluxei16_v_u8m4() {
-  vuint16m8_t indices;
-  asm("vsetvli zero, %[vl], e16, m8, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m8(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m8(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei16_v_u8m4(in_buf, indices, vl);
   __riscv_vse8_v_u8m4(out_buf, data, vl);
 }
 
 // Ordered
 __attribute__((used, retain)) void vloxei16_v_u8mf4() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei16_v_u8mf4(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vloxei16_v_u8mf2() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei16_v_u8mf2(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vloxei16_v_u8m1() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei16_v_u8m1(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vloxei16_v_u8m2() {
-  vuint16m4_t indices;
-  asm("vsetvli zero, %[vl], e16, m4, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei16_v_u8m2(in_buf, indices, vl);
   __riscv_vse8_v_u8m2(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vloxei16_v_u8m4() {
-  vuint16m8_t indices;
-  asm("vsetvli zero, %[vl], e16, m8, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m8(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m8(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei16_v_u8m4(in_buf, indices, vl);
   __riscv_vse8_v_u8m4(out_buf, data, vl);
 }
diff --git a/tests/cocotb/rvv/load_store/load8_index16_seg.cc b/tests/cocotb/rvv/load_store/load8_index16_seg.cc
index 7c29cd0..61ad8c0 100644
--- a/tests/cocotb/rvv/load_store/load8_index16_seg.cc
+++ b/tests/cocotb/rvv/load_store/load8_index16_seg.cc
@@ -32,70 +32,45 @@
 extern "C" {
 // Unordered, segment 2
 __attribute__((used, retain)) void vluxseg2ei16_v_u8mf4x2() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg2ei16_v_u8mf4x2(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, __riscv_vget_v_u8mf4x2_u8mf4(data, 0), vl);
   __riscv_vse8_v_u8mf4(out_buf + vl, __riscv_vget_v_u8mf4x2_u8mf4(data, 1), vl);
 }
 
 __attribute__((used, retain)) void vluxseg2ei16_v_u8mf2x2() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg2ei16_v_u8mf2x2(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, __riscv_vget_v_u8mf2x2_u8mf2(data, 0), vl);
   __riscv_vse8_v_u8mf2(out_buf + vl, __riscv_vget_v_u8mf2x2_u8mf2(data, 1), vl);
 }
 
 __attribute__((used, retain)) void vluxseg2ei16_v_u8m1x2() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg2ei16_v_u8m1x2(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, __riscv_vget_v_u8m1x2_u8m1(data, 0), vl);
   __riscv_vse8_v_u8m1(out_buf + vl, __riscv_vget_v_u8m1x2_u8m1(data, 1), vl);
 }
 
 __attribute__((used, retain)) void vluxseg2ei16_v_u8m2x2() {
-  vuint16m4_t indices;
-  asm("vsetvli zero, %[vl], e16, m4, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg2ei16_v_u8m2x2(in_buf, indices, vl);
   __riscv_vse8_v_u8m2(out_buf, __riscv_vget_v_u8m2x2_u8m2(data, 0), vl);
   __riscv_vse8_v_u8m2(out_buf + vl, __riscv_vget_v_u8m2x2_u8m2(data, 1), vl);
 }
 
 __attribute__((used, retain)) void vluxseg2ei16_v_u8m4x2() {
-  vuint16m8_t indices;
-  asm("vsetvli zero, %[vl], e16, m8, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m8(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m8(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg2ei16_v_u8m4x2(in_buf, indices, vl);
   __riscv_vse8_v_u8m4(out_buf, __riscv_vget_v_u8m4x2_u8m4(data, 0), vl);
   __riscv_vse8_v_u8m4(out_buf + vl, __riscv_vget_v_u8m4x2_u8m4(data, 1), vl);
@@ -103,14 +78,9 @@
 
 // // Unordered, segment 3
 __attribute__((used, retain)) void vluxseg3ei16_v_u8mf4x3() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg3ei16_v_u8mf4x3(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, __riscv_vget_v_u8mf4x3_u8mf4(data, 0), vl);
   __riscv_vse8_v_u8mf4(out_buf + vl, __riscv_vget_v_u8mf4x3_u8mf4(data, 1), vl);
@@ -119,14 +89,9 @@
 }
 
 __attribute__((used, retain)) void vluxseg3ei16_v_u8mf2x3() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg3ei16_v_u8mf2x3(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, __riscv_vget_v_u8mf2x3_u8mf2(data, 0), vl);
   __riscv_vse8_v_u8mf2(out_buf + vl, __riscv_vget_v_u8mf2x3_u8mf2(data, 1), vl);
@@ -135,14 +100,9 @@
 }
 
 __attribute__((used, retain)) void vluxseg3ei16_v_u8m1x3() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg3ei16_v_u8m1x3(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, __riscv_vget_v_u8m1x3_u8m1(data, 0), vl);
   __riscv_vse8_v_u8m1(out_buf + vl, __riscv_vget_v_u8m1x3_u8m1(data, 1), vl);
@@ -151,14 +111,9 @@
 }
 
 __attribute__((used, retain)) void vluxseg3ei16_v_u8m2x3() {
-  vuint16m4_t indices;
-  asm("vsetvli zero, %[vl], e16, m4, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg3ei16_v_u8m2x3(in_buf, indices, vl);
   __riscv_vse8_v_u8m2(out_buf, __riscv_vget_v_u8m2x3_u8m2(data, 0), vl);
   __riscv_vse8_v_u8m2(out_buf + vl, __riscv_vget_v_u8m2x3_u8m2(data, 1), vl);
@@ -168,14 +123,9 @@
 
 // Unordered, segment 4
 __attribute__((used, retain)) void vluxseg4ei16_v_u8mf4x4() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg4ei16_v_u8mf4x4(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, __riscv_vget_v_u8mf4x4_u8mf4(data, 0), vl);
   __riscv_vse8_v_u8mf4(out_buf + vl, __riscv_vget_v_u8mf4x4_u8mf4(data, 1), vl);
@@ -186,14 +136,9 @@
 }
 
 __attribute__((used, retain)) void vluxseg4ei16_v_u8mf2x4() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg4ei16_v_u8mf2x4(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, __riscv_vget_v_u8mf2x4_u8mf2(data, 0), vl);
   __riscv_vse8_v_u8mf2(out_buf + vl, __riscv_vget_v_u8mf2x4_u8mf2(data, 1), vl);
@@ -204,14 +149,9 @@
 }
 
 __attribute__((used, retain)) void vluxseg4ei16_v_u8m1x4() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg4ei16_v_u8m1x4(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, __riscv_vget_v_u8m1x4_u8m1(data, 0), vl);
   __riscv_vse8_v_u8m1(out_buf + vl, __riscv_vget_v_u8m1x4_u8m1(data, 1), vl);
@@ -222,14 +162,9 @@
 }
 
 __attribute__((used, retain)) void vluxseg4ei16_v_u8m2x4() {
-  vuint16m4_t indices;
-  asm("vsetvli zero, %[vl], e16, m4, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg4ei16_v_u8m2x4(in_buf, indices, vl);
   __riscv_vse8_v_u8m2(out_buf, __riscv_vget_v_u8m2x4_u8m2(data, 0), vl);
   __riscv_vse8_v_u8m2(out_buf + vl, __riscv_vget_v_u8m2x4_u8m2(data, 1), vl);
@@ -241,14 +176,9 @@
 
 // Unordered, segment 5
 __attribute__((used, retain)) void vluxseg5ei16_v_u8mf4x5() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg5ei16_v_u8mf4x5(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, __riscv_vget_v_u8mf4x5_u8mf4(data, 0), vl);
   __riscv_vse8_v_u8mf4(out_buf + vl, __riscv_vget_v_u8mf4x5_u8mf4(data, 1), vl);
@@ -261,14 +191,9 @@
 }
 
 __attribute__((used, retain)) void vluxseg5ei16_v_u8mf2x5() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg5ei16_v_u8mf2x5(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, __riscv_vget_v_u8mf2x5_u8mf2(data, 0), vl);
   __riscv_vse8_v_u8mf2(out_buf + vl, __riscv_vget_v_u8mf2x5_u8mf2(data, 1), vl);
@@ -281,14 +206,9 @@
 }
 
 __attribute__((used, retain)) void vluxseg5ei16_v_u8m1x5() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg5ei16_v_u8m1x5(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, __riscv_vget_v_u8m1x5_u8m1(data, 0), vl);
   __riscv_vse8_v_u8m1(out_buf + vl, __riscv_vget_v_u8m1x5_u8m1(data, 1), vl);
@@ -302,14 +222,9 @@
 
 // Unordered, segment 6
 __attribute__((used, retain)) void vluxseg6ei16_v_u8mf4x6() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg6ei16_v_u8mf4x6(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, __riscv_vget_v_u8mf4x6_u8mf4(data, 0), vl);
   __riscv_vse8_v_u8mf4(out_buf + vl, __riscv_vget_v_u8mf4x6_u8mf4(data, 1), vl);
@@ -324,14 +239,9 @@
 }
 
 __attribute__((used, retain)) void vluxseg6ei16_v_u8mf2x6() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg6ei16_v_u8mf2x6(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, __riscv_vget_v_u8mf2x6_u8mf2(data, 0), vl);
   __riscv_vse8_v_u8mf2(out_buf + vl, __riscv_vget_v_u8mf2x6_u8mf2(data, 1), vl);
@@ -346,14 +256,9 @@
 }
 
 __attribute__((used, retain)) void vluxseg6ei16_v_u8m1x6() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg6ei16_v_u8m1x6(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, __riscv_vget_v_u8m1x6_u8m1(data, 0), vl);
   __riscv_vse8_v_u8m1(out_buf + vl, __riscv_vget_v_u8m1x6_u8m1(data, 1), vl);
@@ -369,14 +274,9 @@
 
 // Unordered, segment 7
 __attribute__((used, retain)) void vluxseg7ei16_v_u8mf4x7() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg7ei16_v_u8mf4x7(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, __riscv_vget_v_u8mf4x7_u8mf4(data, 0), vl);
   __riscv_vse8_v_u8mf4(out_buf + vl, __riscv_vget_v_u8mf4x7_u8mf4(data, 1), vl);
@@ -393,14 +293,9 @@
 }
 
 __attribute__((used, retain)) void vluxseg7ei16_v_u8mf2x7() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg7ei16_v_u8mf2x7(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, __riscv_vget_v_u8mf2x7_u8mf2(data, 0), vl);
   __riscv_vse8_v_u8mf2(out_buf + vl, __riscv_vget_v_u8mf2x7_u8mf2(data, 1), vl);
@@ -417,14 +312,9 @@
 }
 
 __attribute__((used, retain)) void vluxseg7ei16_v_u8m1x7() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg7ei16_v_u8m1x7(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, __riscv_vget_v_u8m1x7_u8m1(data, 0), vl);
   __riscv_vse8_v_u8m1(out_buf + vl, __riscv_vget_v_u8m1x7_u8m1(data, 1), vl);
@@ -442,14 +332,9 @@
 
 // Unordered, segment 8
 __attribute__((used, retain)) void vluxseg8ei16_v_u8mf4x8() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg8ei16_v_u8mf4x8(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, __riscv_vget_v_u8mf4x8_u8mf4(data, 0), vl);
   __riscv_vse8_v_u8mf4(out_buf + vl, __riscv_vget_v_u8mf4x8_u8mf4(data, 1), vl);
@@ -468,14 +353,9 @@
 }
 
 __attribute__((used, retain)) void vluxseg8ei16_v_u8mf2x8() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg8ei16_v_u8mf2x8(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, __riscv_vget_v_u8mf2x8_u8mf2(data, 0), vl);
   __riscv_vse8_v_u8mf2(out_buf + vl, __riscv_vget_v_u8mf2x8_u8mf2(data, 1), vl);
@@ -494,14 +374,9 @@
 }
 
 __attribute__((used, retain)) void vluxseg8ei16_v_u8m1x8() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxseg8ei16_v_u8m1x8(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, __riscv_vget_v_u8m1x8_u8m1(data, 0), vl);
   __riscv_vse8_v_u8m1(out_buf + vl, __riscv_vget_v_u8m1x8_u8m1(data, 1), vl);
@@ -521,70 +396,45 @@
 
 // Ordered, segment 2
 __attribute__((used, retain)) void vloxseg2ei16_v_u8mf4x2() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg2ei16_v_u8mf4x2(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, __riscv_vget_v_u8mf4x2_u8mf4(data, 0), vl);
   __riscv_vse8_v_u8mf4(out_buf + vl, __riscv_vget_v_u8mf4x2_u8mf4(data, 1), vl);
 }
 
 __attribute__((used, retain)) void vloxseg2ei16_v_u8mf2x2() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg2ei16_v_u8mf2x2(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, __riscv_vget_v_u8mf2x2_u8mf2(data, 0), vl);
   __riscv_vse8_v_u8mf2(out_buf + vl, __riscv_vget_v_u8mf2x2_u8mf2(data, 1), vl);
 }
 
 __attribute__((used, retain)) void vloxseg2ei16_v_u8m1x2() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg2ei16_v_u8m1x2(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, __riscv_vget_v_u8m1x2_u8m1(data, 0), vl);
   __riscv_vse8_v_u8m1(out_buf + vl, __riscv_vget_v_u8m1x2_u8m1(data, 1), vl);
 }
 
 __attribute__((used, retain)) void vloxseg2ei16_v_u8m2x2() {
-  vuint16m4_t indices;
-  asm("vsetvli zero, %[vl], e16, m4, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg2ei16_v_u8m2x2(in_buf, indices, vl);
   __riscv_vse8_v_u8m2(out_buf, __riscv_vget_v_u8m2x2_u8m2(data, 0), vl);
   __riscv_vse8_v_u8m2(out_buf + vl, __riscv_vget_v_u8m2x2_u8m2(data, 1), vl);
 }
 
 __attribute__((used, retain)) void vloxseg2ei16_v_u8m4x2() {
-  vuint16m8_t indices;
-  asm("vsetvli zero, %[vl], e16, m8, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m8(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m8(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg2ei16_v_u8m4x2(in_buf, indices, vl);
   __riscv_vse8_v_u8m4(out_buf, __riscv_vget_v_u8m4x2_u8m4(data, 0), vl);
   __riscv_vse8_v_u8m4(out_buf + vl, __riscv_vget_v_u8m4x2_u8m4(data, 1), vl);
@@ -592,14 +442,9 @@
 
 // // Ordered, segment 3
 __attribute__((used, retain)) void vloxseg3ei16_v_u8mf4x3() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg3ei16_v_u8mf4x3(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, __riscv_vget_v_u8mf4x3_u8mf4(data, 0), vl);
   __riscv_vse8_v_u8mf4(out_buf + vl, __riscv_vget_v_u8mf4x3_u8mf4(data, 1), vl);
@@ -608,14 +453,9 @@
 }
 
 __attribute__((used, retain)) void vloxseg3ei16_v_u8mf2x3() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg3ei16_v_u8mf2x3(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, __riscv_vget_v_u8mf2x3_u8mf2(data, 0), vl);
   __riscv_vse8_v_u8mf2(out_buf + vl, __riscv_vget_v_u8mf2x3_u8mf2(data, 1), vl);
@@ -624,14 +464,9 @@
 }
 
 __attribute__((used, retain)) void vloxseg3ei16_v_u8m1x3() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg3ei16_v_u8m1x3(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, __riscv_vget_v_u8m1x3_u8m1(data, 0), vl);
   __riscv_vse8_v_u8m1(out_buf + vl, __riscv_vget_v_u8m1x3_u8m1(data, 1), vl);
@@ -640,14 +475,9 @@
 }
 
 __attribute__((used, retain)) void vloxseg3ei16_v_u8m2x3() {
-  vuint16m4_t indices;
-  asm("vsetvli zero, %[vl], e16, m4, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg3ei16_v_u8m2x3(in_buf, indices, vl);
   __riscv_vse8_v_u8m2(out_buf, __riscv_vget_v_u8m2x3_u8m2(data, 0), vl);
   __riscv_vse8_v_u8m2(out_buf + vl, __riscv_vget_v_u8m2x3_u8m2(data, 1), vl);
@@ -657,14 +487,9 @@
 
 // Ordered, segment 4
 __attribute__((used, retain)) void vloxseg4ei16_v_u8mf4x4() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg4ei16_v_u8mf4x4(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, __riscv_vget_v_u8mf4x4_u8mf4(data, 0), vl);
   __riscv_vse8_v_u8mf4(out_buf + vl, __riscv_vget_v_u8mf4x4_u8mf4(data, 1), vl);
@@ -675,14 +500,9 @@
 }
 
 __attribute__((used, retain)) void vloxseg4ei16_v_u8mf2x4() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg4ei16_v_u8mf2x4(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, __riscv_vget_v_u8mf2x4_u8mf2(data, 0), vl);
   __riscv_vse8_v_u8mf2(out_buf + vl, __riscv_vget_v_u8mf2x4_u8mf2(data, 1), vl);
@@ -693,14 +513,9 @@
 }
 
 __attribute__((used, retain)) void vloxseg4ei16_v_u8m1x4() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg4ei16_v_u8m1x4(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, __riscv_vget_v_u8m1x4_u8m1(data, 0), vl);
   __riscv_vse8_v_u8m1(out_buf + vl, __riscv_vget_v_u8m1x4_u8m1(data, 1), vl);
@@ -711,14 +526,9 @@
 }
 
 __attribute__((used, retain)) void vloxseg4ei16_v_u8m2x4() {
-  vuint16m4_t indices;
-  asm("vsetvli zero, %[vl], e16, m4, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg4ei16_v_u8m2x4(in_buf, indices, vl);
   __riscv_vse8_v_u8m2(out_buf, __riscv_vget_v_u8m2x4_u8m2(data, 0), vl);
   __riscv_vse8_v_u8m2(out_buf + vl, __riscv_vget_v_u8m2x4_u8m2(data, 1), vl);
@@ -730,14 +540,9 @@
 
 // Ordered, segment 5
 __attribute__((used, retain)) void vloxseg5ei16_v_u8mf4x5() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg5ei16_v_u8mf4x5(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, __riscv_vget_v_u8mf4x5_u8mf4(data, 0), vl);
   __riscv_vse8_v_u8mf4(out_buf + vl, __riscv_vget_v_u8mf4x5_u8mf4(data, 1), vl);
@@ -750,14 +555,9 @@
 }
 
 __attribute__((used, retain)) void vloxseg5ei16_v_u8mf2x5() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg5ei16_v_u8mf2x5(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, __riscv_vget_v_u8mf2x5_u8mf2(data, 0), vl);
   __riscv_vse8_v_u8mf2(out_buf + vl, __riscv_vget_v_u8mf2x5_u8mf2(data, 1), vl);
@@ -770,14 +570,9 @@
 }
 
 __attribute__((used, retain)) void vloxseg5ei16_v_u8m1x5() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg5ei16_v_u8m1x5(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, __riscv_vget_v_u8m1x5_u8m1(data, 0), vl);
   __riscv_vse8_v_u8m1(out_buf + vl, __riscv_vget_v_u8m1x5_u8m1(data, 1), vl);
@@ -791,14 +586,9 @@
 
 // Ordered, segment 6
 __attribute__((used, retain)) void vloxseg6ei16_v_u8mf4x6() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg6ei16_v_u8mf4x6(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, __riscv_vget_v_u8mf4x6_u8mf4(data, 0), vl);
   __riscv_vse8_v_u8mf4(out_buf + vl, __riscv_vget_v_u8mf4x6_u8mf4(data, 1), vl);
@@ -813,14 +603,9 @@
 }
 
 __attribute__((used, retain)) void vloxseg6ei16_v_u8mf2x6() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg6ei16_v_u8mf2x6(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, __riscv_vget_v_u8mf2x6_u8mf2(data, 0), vl);
   __riscv_vse8_v_u8mf2(out_buf + vl, __riscv_vget_v_u8mf2x6_u8mf2(data, 1), vl);
@@ -835,14 +620,9 @@
 }
 
 __attribute__((used, retain)) void vloxseg6ei16_v_u8m1x6() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg6ei16_v_u8m1x6(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, __riscv_vget_v_u8m1x6_u8m1(data, 0), vl);
   __riscv_vse8_v_u8m1(out_buf + vl, __riscv_vget_v_u8m1x6_u8m1(data, 1), vl);
@@ -858,14 +638,9 @@
 
 // Ordered, segment 7
 __attribute__((used, retain)) void vloxseg7ei16_v_u8mf4x7() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg7ei16_v_u8mf4x7(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, __riscv_vget_v_u8mf4x7_u8mf4(data, 0), vl);
   __riscv_vse8_v_u8mf4(out_buf + vl, __riscv_vget_v_u8mf4x7_u8mf4(data, 1), vl);
@@ -882,14 +657,9 @@
 }
 
 __attribute__((used, retain)) void vloxseg7ei16_v_u8mf2x7() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg7ei16_v_u8mf2x7(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, __riscv_vget_v_u8mf2x7_u8mf2(data, 0), vl);
   __riscv_vse8_v_u8mf2(out_buf + vl, __riscv_vget_v_u8mf2x7_u8mf2(data, 1), vl);
@@ -906,14 +676,9 @@
 }
 
 __attribute__((used, retain)) void vloxseg7ei16_v_u8m1x7() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg7ei16_v_u8m1x7(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, __riscv_vget_v_u8m1x7_u8m1(data, 0), vl);
   __riscv_vse8_v_u8m1(out_buf + vl, __riscv_vget_v_u8m1x7_u8m1(data, 1), vl);
@@ -931,14 +696,9 @@
 
 // Ordered, segment 8
 __attribute__((used, retain)) void vloxseg8ei16_v_u8mf4x8() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg8ei16_v_u8mf4x8(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, __riscv_vget_v_u8mf4x8_u8mf4(data, 0), vl);
   __riscv_vse8_v_u8mf4(out_buf + vl, __riscv_vget_v_u8mf4x8_u8mf4(data, 1), vl);
@@ -957,14 +717,9 @@
 }
 
 __attribute__((used, retain)) void vloxseg8ei16_v_u8mf2x8() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg8ei16_v_u8mf2x8(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, __riscv_vget_v_u8mf2x8_u8mf2(data, 0), vl);
   __riscv_vse8_v_u8mf2(out_buf + vl, __riscv_vget_v_u8mf2x8_u8mf2(data, 1), vl);
@@ -983,14 +738,9 @@
 }
 
 __attribute__((used, retain)) void vloxseg8ei16_v_u8m1x8() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxseg8ei16_v_u8m1x8(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, __riscv_vget_v_u8m1x8_u8m1(data, 0), vl);
   __riscv_vse8_v_u8m1(out_buf + vl, __riscv_vget_v_u8m1x8_u8m1(data, 1), vl);
diff --git a/tests/cocotb/rvv/load_store/load8_index32.cc b/tests/cocotb/rvv/load_store/load8_index32.cc
index ca4113c..72a089d 100644
--- a/tests/cocotb/rvv/load_store/load8_index32.cc
+++ b/tests/cocotb/rvv/load_store/load8_index32.cc
@@ -32,106 +32,66 @@
 extern "C" {
 // Unordered
 __attribute__((used, retain)) void vluxei32_v_u8mf4() {
-  vuint32m1_t indices;
-  asm("vsetvli zero, %[vl], e32, m1, ta, ma;"
-      "vle32.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle32_v_u32m1(index_buf, vl);
+  auto indices = __riscv_vle32_v_u32m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei32_v_u8mf4(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vluxei32_v_u8mf2() {
-  vuint32m2_t indices;
-  asm("vsetvli zero, %[vl], e32, m2, ta, ma;"
-      "vle32.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle32_v_u32m2(index_buf, vl);
+  auto indices = __riscv_vle32_v_u32m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei32_v_u8mf2(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vluxei32_v_u8m1() {
-  vuint32m4_t indices;
-  asm("vsetvli zero, %[vl], e32, m4, ta, ma;"
-      "vle32.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle32_v_u32m4(index_buf, vl);
+  auto indices = __riscv_vle32_v_u32m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei32_v_u8m1(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vluxei32_v_u8m2() {
-  vuint32m8_t indices;
-  asm("vsetvli zero, %[vl], e32, m8, ta, ma;"
-      "vle32.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle32_v_u32m8(index_buf, vl);
+  auto indices = __riscv_vle32_v_u32m8(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vluxei32_v_u8m2(in_buf, indices, vl);
   __riscv_vse8_v_u8m2(out_buf, data, vl);
 }
 
 // Ordered
 __attribute__((used, retain)) void vloxei32_v_u8mf4() {
-  vuint32m1_t indices;
-  asm("vsetvli zero, %[vl], e32, m1, ta, ma;"
-      "vle32.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle32_v_u32m1(index_buf, vl);
+  auto indices = __riscv_vle32_v_u32m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei32_v_u8mf4(in_buf, indices, vl);
   __riscv_vse8_v_u8mf4(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vloxei32_v_u8mf2() {
-  vuint32m2_t indices;
-  asm("vsetvli zero, %[vl], e32, m2, ta, ma;"
-      "vle32.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle32_v_u32m2(index_buf, vl);
+  auto indices = __riscv_vle32_v_u32m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei32_v_u8mf2(in_buf, indices, vl);
   __riscv_vse8_v_u8mf2(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vloxei32_v_u8m1() {
-  vuint32m4_t indices;
-  asm("vsetvli zero, %[vl], e32, m4, ta, ma;"
-      "vle32.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle32_v_u32m4(index_buf, vl);
+  auto indices = __riscv_vle32_v_u32m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei32_v_u8m1(in_buf, indices, vl);
   __riscv_vse8_v_u8m1(out_buf, data, vl);
 }
 
 __attribute__((used, retain)) void vloxei32_v_u8m2() {
-  vuint32m8_t indices;
-  asm("vsetvli zero, %[vl], e32, m8, ta, ma;"
-      "vle32.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle32_v_u32m8(index_buf, vl);
+  auto indices = __riscv_vle32_v_u32m8(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vloxei32_v_u8m2(in_buf, indices, vl);
   __riscv_vse8_v_u8m2(out_buf, data, vl);
 }
diff --git a/tests/cocotb/rvv/load_store/store16_index8.cc b/tests/cocotb/rvv/load_store/store16_index8.cc
index bca9dac..f59cd83 100644
--- a/tests/cocotb/rvv/load_store/store16_index8.cc
+++ b/tests/cocotb/rvv/load_store/store16_index8.cc
@@ -31,132 +31,82 @@
 extern "C" {
 // Unordered
 __attribute__((used, retain)) void vsuxei8_v_u16mf2() {
-  vuint8mf4_t indices;
-  asm("vsetvli zero, %[vl], e8, mf4, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle16_v_u16mf2(in_buf, vl);
   __riscv_vsuxei8_v_u16mf2(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsuxei8_v_u16m1() {
-  vuint8mf2_t indices;
-  asm("vsetvli zero, %[vl], e8, mf2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle16_v_u16m1(in_buf, vl);
   __riscv_vsuxei8_v_u16m1(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsuxei8_v_u16m2() {
-  vuint8m1_t indices;
-  asm("vsetvli zero, %[vl], e8, m1, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle16_v_u16m2(in_buf, vl);
   __riscv_vsuxei8_v_u16m2(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsuxei8_v_u16m4() {
-  vuint8m2_t indices;
-  asm("vsetvli zero, %[vl], e8, m2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle16_v_u16m4(in_buf, vl);
   __riscv_vsuxei8_v_u16m4(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsuxei8_v_u16m8() {
-  vuint8m4_t indices;
-  asm("vsetvli zero, %[vl], e8, m4, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m4(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle16_v_u16m8(in_buf, vl);
   __riscv_vsuxei8_v_u16m8(out_buf, indices, data, vl);
 }
 
 // Ordered
 __attribute__((used, retain)) void vsoxei8_v_u16mf2() {
-  vuint8mf4_t indices;
-  asm("vsetvli zero, %[vl], e8, mf4, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle16_v_u16mf2(in_buf, vl);
   __riscv_vsoxei8_v_u16mf2(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsoxei8_v_u16m1() {
-  vuint8mf2_t indices;
-  asm("vsetvli zero, %[vl], e8, mf2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle16_v_u16m1(in_buf, vl);
   __riscv_vsoxei8_v_u16m1(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsoxei8_v_u16m2() {
-  vuint8m1_t indices;
-  asm("vsetvli zero, %[vl], e8, m1, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle16_v_u16m2(in_buf, vl);
   __riscv_vsoxei8_v_u16m2(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsoxei8_v_u16m4() {
-  vuint8m2_t indices;
-  asm("vsetvli zero, %[vl], e8, m2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle16_v_u16m4(in_buf, vl);
   __riscv_vsoxei8_v_u16m4(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsoxei8_v_u16m8() {
-  vuint8m4_t indices;
-  asm("vsetvli zero, %[vl], e8, m4, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m4(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle16_v_u16m8(in_buf, vl);
   __riscv_vsoxei8_v_u16m8(out_buf, indices, data, vl);
 }
diff --git a/tests/cocotb/rvv/load_store/store32_index16.cc b/tests/cocotb/rvv/load_store/store32_index16.cc
index 0a1df6a..4c081f3 100644
--- a/tests/cocotb/rvv/load_store/store32_index16.cc
+++ b/tests/cocotb/rvv/load_store/store32_index16.cc
@@ -31,106 +31,66 @@
 extern "C" {
 // Unordered
 __attribute__((used, retain)) void vsuxei16_v_u32m1() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m1(in_buf, vl);
   __riscv_vsuxei16_v_u32m1(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsuxei16_v_u32m2() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m2(in_buf, vl);
   __riscv_vsuxei16_v_u32m2(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsuxei16_v_u32m4() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m4(in_buf, vl);
   __riscv_vsuxei16_v_u32m4(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsuxei16_v_u32m8() {
-  vuint16m4_t indices;
-  asm("vsetvli zero, %[vl], e16, m4, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m8(in_buf, vl);
   __riscv_vsuxei16_v_u32m8(out_buf, indices, data, vl);
 }
 
 // Ordered
 __attribute__((used, retain)) void vsoxei16_v_u32m1() {
-  vuint16mf2_t indices;
-  asm("vsetvli zero, %[vl], e16, mf2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m1(in_buf, vl);
   __riscv_vsoxei16_v_u32m1(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsoxei16_v_u32m2() {
-  vuint16m1_t indices;
-  asm("vsetvli zero, %[vl], e16, m1, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u8mf2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m2(in_buf, vl);
   __riscv_vsoxei16_v_u32m2(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsoxei16_v_u32m4() {
-  vuint16m2_t indices;
-  asm("vsetvli zero, %[vl], e16, m2, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u8m1(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m4(in_buf, vl);
   __riscv_vsoxei16_v_u32m4(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsoxei16_v_u32m8() {
-  vuint16m4_t indices;
-  asm("vsetvli zero, %[vl], e16, m4, ta, ma;"
-      "vle16.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle16_v_u8m2(index_buf, vl);
+  auto indices = __riscv_vle16_v_u16m4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m8(in_buf, vl);
   __riscv_vsoxei16_v_u32m8(out_buf, indices, data, vl);
 }
diff --git a/tests/cocotb/rvv/load_store/store32_index8.cc b/tests/cocotb/rvv/load_store/store32_index8.cc
index 45caadb..465994f 100644
--- a/tests/cocotb/rvv/load_store/store32_index8.cc
+++ b/tests/cocotb/rvv/load_store/store32_index8.cc
@@ -31,106 +31,66 @@
 extern "C" {
 // Unordered
 __attribute__((used, retain)) void vsuxei8_v_u32m1() {
-  vuint8mf4_t indices;
-  asm("vsetvli zero, %[vl], e8, mf4, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m1(in_buf, vl);
   __riscv_vsuxei8_v_u32m1(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsuxei8_v_u32m2() {
-  vuint8mf2_t indices;
-  asm("vsetvli zero, %[vl], e8, mf2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m2(in_buf, vl);
   __riscv_vsuxei8_v_u32m2(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsuxei8_v_u32m4() {
-  vuint8m1_t indices;
-  asm("vsetvli zero, %[vl], e8, m1, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m4(in_buf, vl);
   __riscv_vsuxei8_v_u32m4(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsuxei8_v_u32m8() {
-  vuint8m2_t indices;
-  asm("vsetvli zero, %[vl], e8, m2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m8(in_buf, vl);
   __riscv_vsuxei8_v_u32m8(out_buf, indices, data, vl);
 }
 
 // Ordered
 __attribute__((used, retain)) void vsoxei8_v_u32m1() {
-  vuint8mf4_t indices;
-  asm("vsetvli zero, %[vl], e8, mf4, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf4(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m1(in_buf, vl);
   __riscv_vsoxei8_v_u32m1(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsoxei8_v_u32m2() {
-  vuint8mf2_t indices;
-  asm("vsetvli zero, %[vl], e8, mf2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8mf2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m2(in_buf, vl);
   __riscv_vsoxei8_v_u32m2(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsoxei8_v_u32m4() {
-  vuint8m1_t indices;
-  asm("vsetvli zero, %[vl], e8, m1, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m1(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m4(in_buf, vl);
   __riscv_vsoxei8_v_u32m4(out_buf, indices, data, vl);
 }
 
 __attribute__((used, retain)) void vsoxei8_v_u32m8() {
-  vuint8m2_t indices;
-  asm("vsetvli zero, %[vl], e8, m2, ta, ma;"
-      "vle8.v %[index], %[index_buf];"
-      : [index] "=vr"(indices)
-      : [vl] "r"(vl), [index_buf] "m"(index_buf)
-      : "vl", "vtype");
-  // TODO: Revert once compiler bug is eliminated
-  // auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  auto indices = __riscv_vle8_v_u8m2(index_buf, vl);
+  // TODO(davidgao): Remove once compiler bug is eliminated
+  asm volatile("" ::: "vtype");
   auto data = __riscv_vle32_v_u32m8(in_buf, vl);
   __riscv_vsoxei8_v_u32m8(out_buf, indices, data, vl);
 }