Merge "Move test_runner.py so it can be used for softrvv."
diff --git a/cmake/riscv_baremetal.cmake b/cmake/riscv_baremetal.cmake
index 006cb3d..4b290e2 100644
--- a/cmake/riscv_baremetal.cmake
+++ b/cmake/riscv_baremetal.cmake
@@ -14,7 +14,6 @@
      "-ffreestanding"
      "-ffunction-sections"
      "-fstack-usage"
-     "-mstrict-align"
 )
 
 set(VEC_DEFAULT_LINKOPTS
@@ -40,8 +39,6 @@
      set(CMAKE_STRIP "${RISCV_TOOLCHAIN_ROOT}/llvm-strip")
 
      set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -menable-experimental-extensions -march=${CMAKE_SYSTEM_PROCESSOR}  -mabi=${CMAKE_SYSTEM_ABI}")
-     set(VEC_DEFAULT_COPTS "${VEC_DEFAULT_COPTS}"
-          "-Wno-unused-command-line-argument")
 else()
      set(CMAKE_SYSTEM_PROCESSOR rv32imv)
 
diff --git a/vector_vset_tests/vector_vset_tests.c b/vector_vset_tests/vector_vset_tests.c
index a1c84d5..8ca47c7 100644
--- a/vector_vset_tests/vector_vset_tests.c
+++ b/vector_vset_tests/vector_vset_tests.c
@@ -90,7 +90,6 @@
   };
 
   struct subtest_s subtests[] = {
-      /*
       {.vtypei = "e8",
        .lmul = "1/8",
        .avl = 0,
@@ -106,11 +105,11 @@
        .avl = 0,
        .expected_vl = 0,
        .line = __LINE__},
-      {.vtypei = "e64",
-       .lmul = "1/8",
-       .avl = 0,
-       .expected_vl = 0,
-       .line = __LINE__},
+      // {.vtypei = "e64",
+      //  .lmul = "1/8",
+      //  .avl = 0,
+      //  .expected_vl = 0,
+      //  .line = __LINE__},
       {.vtypei = "e8",
        .lmul = "1/8",
        .avl = 1,
@@ -126,11 +125,11 @@
        .avl = 1,
        .expected_vl = 0,
        .line = __LINE__},
-      {.vtypei = "e64",
-       .lmul = "1/8",
-       .avl = 1,
-       .expected_vl = 0,
-       .line = __LINE__},
+      // {.vtypei = "e64",
+      //  .lmul = "1/8",
+      //  .avl = 1,
+      //  .expected_vl = 0,
+      //  .line = __LINE__},
       {.vtypei = "e8",
        .lmul = "1/8",
        .avl = (_TEST_VLENB >> 3) - 1,
@@ -146,11 +145,11 @@
        .avl = (_TEST_VLENB >> 5) - 1,
        .expected_vl = 0,
        .line = __LINE__},
-      {.vtypei = "e64",
-       .lmul = "1/8",
-       .avl = (_TEST_VLENB >> 6) - 1,
-       .expected_vl = 0,
-       .line = __LINE__},
+      // {.vtypei = "e64",
+      //  .lmul = "1/8",
+      //  .avl = (_TEST_VLENB >> 6) - 1,
+      //  .expected_vl = 0,
+      //  .line = __LINE__},
       {.vtypei = "e8",
        .lmul = "1/8",
        .avl = (_TEST_VLENB >> 3),
@@ -166,11 +165,11 @@
        .avl = (_TEST_VLENB >> 5),
        .expected_vl = 0,
        .line = __LINE__},
-      {.vtypei = "e64",
-       .lmul = "1/8",
-       .avl = (_TEST_VLENB >> 6),
-       .expected_vl = 0,
-       .line = __LINE__},
+      // {.vtypei = "e64",
+      //  .lmul = "1/8",
+      //  .avl = (_TEST_VLENB >> 6),
+      //  .expected_vl = 0,
+      //  .line = __LINE__},
       {.vtypei = "e8",
        .lmul = "1/8",
        .avl = (_TEST_VLENB >> 3) + 1,
@@ -186,11 +185,11 @@
        .avl = (_TEST_VLENB >> 5) + 1,
        .expected_vl = 0,
        .line = __LINE__},
-      {.vtypei = "e64",
-       .lmul = "1/8",
-       .avl = (_TEST_VLENB >> 6) + 1,
-       .expected_vl = 0,
-       .line = __LINE__},
+      // {.vtypei = "e64",
+      //  .lmul = "1/8",
+      //  .avl = (_TEST_VLENB >> 6) + 1,
+      //  .expected_vl = 0,
+      //  .line = __LINE__},
 
       {.vtypei = "e8",
        .lmul = "1/4",
@@ -207,11 +206,11 @@
        .avl = 0,
        .expected_vl = 0,
        .line = __LINE__},
-      {.vtypei = "e64",
-       .lmul = "1/4",
-       .avl = 0,
-       .expected_vl = 0,
-       .line = __LINE__},
+      // {.vtypei = "e64",
+      //  .lmul = "1/4",
+      //  .avl = 0,
+      //  .expected_vl = 0,
+      //  .line = __LINE__},
       {.vtypei = "e8",
        .lmul = "1/4",
        .avl = 1,
@@ -227,11 +226,11 @@
        .avl = 1,
        .expected_vl = 0,
        .line = __LINE__},
-      {.vtypei = "e64",
-       .lmul = "1/4",
-       .avl = 1,
-       .expected_vl = 0,
-       .line = __LINE__},
+      // {.vtypei = "e64",
+      //  .lmul = "1/4",
+      //  .avl = 1,
+      //  .expected_vl = 0,
+      //  .line = __LINE__},
       {.vtypei = "e8",
        .lmul = "1/4",
        .avl = (_TEST_VLENB >> 2) - 1,
@@ -247,11 +246,11 @@
        .avl = (_TEST_VLENB >> 4) - 1,
        .expected_vl = 0,
        .line = __LINE__},
-      {.vtypei = "e64",
-       .lmul = "1/4",
-       .avl = (_TEST_VLENB >> 5) - 1,
-       .expected_vl = 0,
-       .line = __LINE__},
+      // {.vtypei = "e64",
+      //  .lmul = "1/4",
+      //  .avl = (_TEST_VLENB >> 5) - 1,
+      //  .expected_vl = 0,
+      //  .line = __LINE__},
       {.vtypei = "e8",
        .lmul = "1/4",
        .avl = (_TEST_VLENB >> 2),
@@ -267,11 +266,11 @@
        .avl = (_TEST_VLENB >> 4),
        .expected_vl = 0,
        .line = __LINE__},
-      {.vtypei = "e64",
-       .lmul = "1/4",
-       .avl = (_TEST_VLENB >> 5),
-       .expected_vl = 0,
-       .line = __LINE__},
+      // {.vtypei = "e64",
+      //  .lmul = "1/4",
+      //  .avl = (_TEST_VLENB >> 5),
+      //  .expected_vl = 0,
+      //  .line = __LINE__},
       {.vtypei = "e8",
        .lmul = "1/4",
        .avl = (_TEST_VLENB >> 2) + 1,
@@ -287,11 +286,11 @@
        .avl = (_TEST_VLENB >> 4) + 1,
        .expected_vl = 0,
        .line = __LINE__},
-      {.vtypei = "e64",
-       .lmul = "1/4",
-       .avl = (_TEST_VLENB >> 5) + 1,
-       .expected_vl = 0,
-       .line = __LINE__},
+      // {.vtypei = "e64",
+      //  .lmul = "1/4",
+      //  .avl = (_TEST_VLENB >> 5) + 1,
+      //  .expected_vl = 0,
+      //  .line = __LINE__},
 
       {.vtypei = "e8",
        .lmul = "1/2",
@@ -308,11 +307,11 @@
        .avl = 0,
        .expected_vl = 0,
        .line = __LINE__},
-      {.vtypei = "e64",
-       .lmul = "1/2",
-       .avl = 0,
-       .expected_vl = 0,
-       .line = __LINE__},
+      // {.vtypei = "e64",
+      //  .lmul = "1/2",
+      //  .avl = 0,
+      //  .expected_vl = 0,
+      //  .line = __LINE__},
       {.vtypei = "e8",
        .lmul = "1/2",
        .avl = 1,
@@ -328,11 +327,11 @@
        .avl = 1,
        .expected_vl = 1,
        .line = __LINE__},
-      {.vtypei = "e64",
-       .lmul = "1/2",
-       .avl = 1,
-       .expected_vl = 0,
-       .line = __LINE__},
+      // {.vtypei = "e64",
+      //  .lmul = "1/2",
+      //  .avl = 1,
+      //  .expected_vl = 0,
+      //  .line = __LINE__},
       {.vtypei = "e8",
        .lmul = "1/2",
        .avl = (_TEST_VLENB >> 1) - 1,
@@ -348,11 +347,11 @@
        .avl = (_TEST_VLENB >> 3) - 1,
        .expected_vl = (_TEST_VLENB >> 3) - 1,
        .line = __LINE__},
-      {.vtypei = "e64",
-       .lmul = "1/2",
-       .avl = (_TEST_VLENB >> 4) - 1,
-       .expected_vl = 0,
-       .line = __LINE__},
+      // {.vtypei = "e64",
+      //  .lmul = "1/2",
+      //  .avl = (_TEST_VLENB >> 4) - 1,
+      //  .expected_vl = 0,
+      //  .line = __LINE__},
       {.vtypei = "e8",
        .lmul = "1/2",
        .avl = (_TEST_VLENB >> 1),
@@ -388,12 +387,11 @@
        .avl = (_TEST_VLENB >> 3) + 1,
        .expected_vl = (_TEST_VLENB >> 3),
        .line = __LINE__},
-      {.vtypei = "e64",
-       .lmul = "1/2",
-       .avl = (_TEST_VLENB >> 4) + 1,
-       .expected_vl = 0,
-       .line = __LINE__},
-      */
+      // {.vtypei = "e64",
+      //  .lmul = "1/2",
+      //  .avl = (_TEST_VLENB >> 4) + 1,
+      //  .expected_vl = 0,
+      //  .line = __LINE__},
 
       {.vtypei = "e8",
        .lmul = "1",
@@ -804,10 +802,13 @@
   for (uint32_t i = 0; i < len; i++) {
     LOG_INFO("Subtest %u", i);
     struct subtest_s subtest = subtests[i];
-    subtest_vsetvl(subtest.vtypei, subtest.lmul, subtest.avl, false, false,
-                   subtest.expected_vl, subtest.line);
-    subtest_vsetvl(subtest.vtypei, subtest.lmul, subtest.avl, false, true,
-                   subtest.expected_vl, subtest.line);
+    uint8_t lmul = lmul_string_to_vlmul(subtest.lmul);
+    if (lmul <= 4) {  // non-fractional LMUL, vtu is supported.
+      subtest_vsetvl(subtest.vtypei, subtest.lmul, subtest.avl, false, false,
+                     subtest.expected_vl, subtest.line);
+      subtest_vsetvl(subtest.vtypei, subtest.lmul, subtest.avl, false, true,
+                     subtest.expected_vl, subtest.line);
+    }
     subtest_vsetvl(subtest.vtypei, subtest.lmul, subtest.avl, true, false,
                    subtest.expected_vl, subtest.line);
     subtest_vsetvl(subtest.vtypei, subtest.lmul, subtest.avl, true, true,
@@ -846,67 +847,43 @@
   VSETVLI_TEST_HELPER(vtypei, "e64,m1,tu,ma", avl);
   VSETVLI_TEST_HELPER(vtypei, "e64,m1,ta,mu", avl);
   VSETVLI_TEST_HELPER(vtypei, "e64,m1,ta,ma", avl);
-
-  VSETVLI_TEST_HELPER(vtypei, "e8,mf8,tu,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e8,mf8,tu,ma", avl);
+  */
   VSETVLI_TEST_HELPER(vtypei, "e8,mf8,ta,mu", avl);
   VSETVLI_TEST_HELPER(vtypei, "e8,mf8,ta,ma", avl);
 
-  VSETVLI_TEST_HELPER(vtypei, "e16,mf8,tu,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e16,mf8,tu,ma", avl);
   VSETVLI_TEST_HELPER(vtypei, "e16,mf8,ta,mu", avl);
   VSETVLI_TEST_HELPER(vtypei, "e16,mf8,ta,ma", avl);
 
-  VSETVLI_TEST_HELPER(vtypei, "e32,mf8,tu,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e32,mf8,tu,ma", avl);
   VSETVLI_TEST_HELPER(vtypei, "e32,mf8,ta,mu", avl);
   VSETVLI_TEST_HELPER(vtypei, "e32,mf8,ta,ma", avl);
 
-  VSETVLI_TEST_HELPER(vtypei, "e64,mf8,tu,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e64,mf8,tu,ma", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e64,mf8,ta,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e64,mf8,ta,ma", avl);
+  // VSETVLI_TEST_HELPER(vtypei, "e64,mf8,ta,mu", avl);
+  // VSETVLI_TEST_HELPER(vtypei, "e64,mf8,ta,ma", avl);
 
-  VSETVLI_TEST_HELPER(vtypei, "e8,mf4,tu,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e8,mf4,tu,ma", avl);
   VSETVLI_TEST_HELPER(vtypei, "e8,mf4,ta,mu", avl);
   VSETVLI_TEST_HELPER(vtypei, "e8,mf4,ta,ma", avl);
 
-  VSETVLI_TEST_HELPER(vtypei, "e16,mf4,tu,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e16,mf4,tu,ma", avl);
   VSETVLI_TEST_HELPER(vtypei, "e16,mf4,ta,mu", avl);
   VSETVLI_TEST_HELPER(vtypei, "e16,mf4,ta,ma", avl);
 
-  VSETVLI_TEST_HELPER(vtypei, "e32,mf4,tu,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e32,mf4,tu,ma", avl);
   VSETVLI_TEST_HELPER(vtypei, "e32,mf4,ta,mu", avl);
   VSETVLI_TEST_HELPER(vtypei, "e32,mf4,ta,ma", avl);
 
-  VSETVLI_TEST_HELPER(vtypei, "e64,mf4,tu,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e64,mf4,tu,ma", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e64,mf4,ta,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e64,mf4,ta,ma", avl);
+  // VSETVLI_TEST_HELPER(vtypei, "e64,mf4,ta,mu", avl);
+  // VSETVLI_TEST_HELPER(vtypei, "e64,mf4,ta,ma", avl);
 
-  VSETVLI_TEST_HELPER(vtypei, "e8,mf2,tu,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e8,mf2,tu,ma", avl);
   VSETVLI_TEST_HELPER(vtypei, "e8,mf2,ta,mu", avl);
   VSETVLI_TEST_HELPER(vtypei, "e8,mf2,ta,ma", avl);
 
-  VSETVLI_TEST_HELPER(vtypei, "e16,mf2,tu,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e16,mf2,tu,ma", avl);
   VSETVLI_TEST_HELPER(vtypei, "e16,mf2,ta,mu", avl);
   VSETVLI_TEST_HELPER(vtypei, "e16,mf2,ta,ma", avl);
 
-  VSETVLI_TEST_HELPER(vtypei, "e32,mf2,tu,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e32,mf2,tu,ma", avl);
   VSETVLI_TEST_HELPER(vtypei, "e32,mf2,ta,mu", avl);
   VSETVLI_TEST_HELPER(vtypei, "e32,mf2,ta,ma", avl);
 
-  VSETVLI_TEST_HELPER(vtypei, "e64,mf2,tu,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e64,mf2,tu,ma", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e64,mf2,ta,mu", avl);
-  VSETVLI_TEST_HELPER(vtypei, "e64,mf2,ta,ma", avl);
-  */
+  // VSETVLI_TEST_HELPER(vtypei, "e64,mf2,ta,mu", avl);
+  // VSETVLI_TEST_HELPER(vtypei, "e64,mf2,ta,ma", avl);
+
 
   VSETVLI_TEST_HELPER(vtypei, "e8,m1,tu,mu", avl);
   VSETVLI_TEST_HELPER(vtypei, "e8,m1,tu,ma", avl);
@@ -1005,42 +982,42 @@
   };
 
   struct subtest_s subtests[] = {
-      /*
+
       {.vtypei = "e8,mf8", .avl = 0, .expected_vl = 0},
       {.vtypei = "e16,mf8", .avl = 0, .expected_vl = 0},
       {.vtypei = "e32,mf8", .avl = 0, .expected_vl = 0},
-      {.vtypei = "e64,mf8", .avl = 0, .expected_vl = 0},
+      // {.vtypei = "e64,mf8", .avl = 0, .expected_vl = 0},
       {.vtypei = "e8,mf8", .avl = 1, .expected_vl = 1},
       {.vtypei = "e16,mf8", .avl = 1, .expected_vl = 0},
       {.vtypei = "e32,mf8", .avl = 1, .expected_vl = 0},
-      {.vtypei = "e64,mf8", .avl = 1, .expected_vl = 0},
+      // {.vtypei = "e64,mf8", .avl = 1, .expected_vl = 0},
       {.vtypei = "e8,mf8",
        .avl = (_TEST_VLENB >> 3) - 1,
        .expected_vl = (_TEST_VLENB >> 3) - 1},
       {.vtypei = "e16,mf8", .avl = (_TEST_VLENB >> 4) - 1, .expected_vl = 0},
       {.vtypei = "e32,mf8", .avl = (_TEST_VLENB >> 5) - 1, .expected_vl = 0},
-      {.vtypei = "e64,mf8", .avl = (_TEST_VLENB >> 6) - 1, .expected_vl = 0},
+      // {.vtypei = "e64,mf8", .avl = (_TEST_VLENB >> 6) - 1, .expected_vl = 0},
       {.vtypei = "e8,mf8",
        .avl = (_TEST_VLENB >> 3),
        .expected_vl = (_TEST_VLENB >> 3)},
       {.vtypei = "e16,mf8", .avl = (_TEST_VLENB >> 4), .expected_vl = 0},
       {.vtypei = "e32,mf8", .avl = (_TEST_VLENB >> 5), .expected_vl = 0},
-      {.vtypei = "e64,mf8", .avl = (_TEST_VLENB >> 6), .expected_vl = 0},
+      // {.vtypei = "e64,mf8", .avl = (_TEST_VLENB >> 6), .expected_vl = 0},
       {.vtypei = "e8,mf8",
        .avl = (_TEST_VLENB >> 3) + 1,
        .expected_vl = (_TEST_VLENB >> 3)},
       {.vtypei = "e16,mf8", .avl = (_TEST_VLENB >> 4) + 1, .expected_vl = 0},
       {.vtypei = "e32,mf8", .avl = (_TEST_VLENB >> 5) + 1, .expected_vl = 0},
-      {.vtypei = "e64,mf8", .avl = (_TEST_VLENB >> 6) + 1, .expected_vl = 0},
+      // {.vtypei = "e64,mf8", .avl = (_TEST_VLENB >> 6) + 1, .expected_vl = 0},
 
       {.vtypei = "e8,mf4", .avl = 0, .expected_vl = 0},
       {.vtypei = "e16,mf4", .avl = 0, .expected_vl = 0},
       {.vtypei = "e32,mf4", .avl = 0, .expected_vl = 0},
-      {.vtypei = "e64,mf4", .avl = 0, .expected_vl = 0},
+      // {.vtypei = "e64,mf4", .avl = 0, .expected_vl = 0},
       {.vtypei = "e8,mf4", .avl = 1, .expected_vl = 1},
       {.vtypei = "e16,mf4", .avl = 1, .expected_vl = 1},
       {.vtypei = "e32,mf4", .avl = 1, .expected_vl = 0},
-      {.vtypei = "e64,mf4", .avl = 1, .expected_vl = 0},
+      // {.vtypei = "e64,mf4", .avl = 1, .expected_vl = 0},
       {.vtypei = "e8,mf4",
        .avl = (_TEST_VLENB >> 2) - 1,
        .expected_vl = (_TEST_VLENB >> 2) - 1},
@@ -1048,7 +1025,7 @@
        .avl = (_TEST_VLENB >> 3) - 1,
        .expected_vl = (_TEST_VLENB >> 3) - 1},
       {.vtypei = "e32,mf4", .avl = (_TEST_VLENB >> 4) - 1, .expected_vl = 0},
-      {.vtypei = "e64,mf4", .avl = (_TEST_VLENB >> 5) - 1, .expected_vl = 0},
+      // {.vtypei = "e64,mf4", .avl = (_TEST_VLENB >> 5) - 1, .expected_vl = 0},
       {.vtypei = "e8,mf4",
        .avl = (_TEST_VLENB >> 2),
        .expected_vl = (_TEST_VLENB >> 2)},
@@ -1056,7 +1033,7 @@
        .avl = (_TEST_VLENB >> 3),
        .expected_vl = (_TEST_VLENB >> 3)},
       {.vtypei = "e32,mf4", .avl = (_TEST_VLENB >> 4), .expected_vl = 0},
-      {.vtypei = "e64,mf4", .avl = (_TEST_VLENB >> 5), .expected_vl = 0},
+      // {.vtypei = "e64,mf4", .avl = (_TEST_VLENB >> 5), .expected_vl = 0},
       {.vtypei = "e8,mf4",
        .avl = (_TEST_VLENB >> 2) + 1,
        .expected_vl = (_TEST_VLENB >> 2)},
@@ -1064,16 +1041,16 @@
        .avl = (_TEST_VLENB >> 3) + 1,
        .expected_vl = (_TEST_VLENB >> 3)},
       {.vtypei = "e32,mf4", .avl = (_TEST_VLENB >> 4) + 1, .expected_vl = 0},
-      {.vtypei = "e64,mf4", .avl = (_TEST_VLENB >> 5) + 1, .expected_vl = 0},
+      // {.vtypei = "e64,mf4", .avl = (_TEST_VLENB >> 5) + 1, .expected_vl = 0},
 
       {.vtypei = "e8,mf2", .avl = 0, .expected_vl = 0},
       {.vtypei = "e16,mf2", .avl = 0, .expected_vl = 0},
       {.vtypei = "e32,mf2", .avl = 0, .expected_vl = 0},
-      {.vtypei = "e64,mf2", .avl = 0, .expected_vl = 0},
+      // {.vtypei = "e64,mf2", .avl = 0, .expected_vl = 0},
       {.vtypei = "e8,mf2", .avl = 1, .expected_vl = 1},
       {.vtypei = "e16,mf2", .avl = 1, .expected_vl = 1},
       {.vtypei = "e32,mf2", .avl = 1, .expected_vl = 1},
-      {.vtypei = "e64,mf2", .avl = 1, .expected_vl = 0},
+      // {.vtypei = "e64,mf2", .avl = 1, .expected_vl = 0},
       {.vtypei = "e8,mf2",
        .avl = (_TEST_VLENB >> 1) - 1,
        .expected_vl = (_TEST_VLENB >> 1) - 1},
@@ -1083,7 +1060,7 @@
       {.vtypei = "e32,mf2",
        .avl = (_TEST_VLENB >> 3) - 1,
        .expected_vl = (_TEST_VLENB >> 3) - 1},
-      {.vtypei = "e64,mf2", .avl = (_TEST_VLENB >> 4) - 1, .expected_vl = 0},
+      // {.vtypei = "e64,mf2", .avl = (_TEST_VLENB >> 4) - 1, .expected_vl = 0},
       {.vtypei = "e8,mf2",
        .avl = (_TEST_VLENB >> 1),
        .expected_vl = (_TEST_VLENB >> 1)},
@@ -1093,7 +1070,7 @@
       {.vtypei = "e32,mf2",
        .avl = (_TEST_VLENB >> 3),
        .expected_vl = (_TEST_VLENB >> 3)},
-      {.vtypei = "e64,mf2", .avl = (_TEST_VLENB >> 4), .expected_vl = 0},
+      // {.vtypei = "e64,mf2", .avl = (_TEST_VLENB >> 4), .expected_vl = 0},
       {.vtypei = "e8,mf2",
        .avl = (_TEST_VLENB >> 1) + 1,
        .expected_vl = (_TEST_VLENB >> 1)},
@@ -1103,8 +1080,8 @@
       {.vtypei = "e32,mf2",
        .avl = (_TEST_VLENB >> 3) + 1,
        .expected_vl = (_TEST_VLENB >> 3)},
-      {.vtypei = "e64,mf2", .avl = (_TEST_VLENB >> 4) + 1, .expected_vl = 0},
-      */
+      // {.vtypei = "e64,mf2", .avl = (_TEST_VLENB >> 4) + 1, .expected_vl = 0},
+
 
       {.vtypei = "e8,m1", .avl = 0, .expected_vl = 0},
       {.vtypei = "e16,m1", .avl = 0, .expected_vl = 0},
@@ -1295,11 +1272,12 @@
     char new_vtypei[32];
     uint32_t vtypei_len = strlength(subtest.vtypei);
     memcpy(new_vtypei, subtest.vtypei, vtypei_len);
-
-    memcpy(new_vtypei + vtypei_len, ",tu,mu\0", (size_t)7);
-    subtest_vsetvli(new_vtypei, subtest.avl, subtest.expected_vl);
-    memcpy(new_vtypei + vtypei_len, ",tu,ma\0", (size_t)7);
-    subtest_vsetvli(new_vtypei, subtest.avl, subtest.expected_vl);
+    if (strstr(subtest.vtypei, "mf") == NULL) {  // non-fractional LMUL.
+      memcpy(new_vtypei + vtypei_len, ",tu,mu\0", (size_t)7);
+      subtest_vsetvli(new_vtypei, subtest.avl, subtest.expected_vl);
+      memcpy(new_vtypei + vtypei_len, ",tu,ma\0", (size_t)7);
+      subtest_vsetvli(new_vtypei, subtest.avl, subtest.expected_vl);
+    }
     memcpy(new_vtypei + vtypei_len, ",ta,mu\0", (size_t)7);
     subtest_vsetvli(new_vtypei, subtest.avl, subtest.expected_vl);
     memcpy(new_vtypei + vtypei_len, ",ta,ma\0", (size_t)7);
@@ -1312,42 +1290,44 @@
 
 // vsetivli rd, uimm, vtypei # rd = new vl, uimm = AVL, vtypei = new vtype
 // setting
-#define VSETIVLI_SUBTEST(AVL, VTYPEI, EXPECTED_VL)                        \
-  do {                                                                    \
-    LOG_INFO("Subtest %u", subtest_count++);                              \
-    uint32_t observed_vl = 0;                                             \
-    __asm__ volatile("vsetivli t0, " STRING_LITERAL(AVL) ", " VTYPEI      \
-                     ", tu, mu");                                         \
-    COPY_SCALAR_REG(observed_vl);                                         \
-    if (observed_vl != EXPECTED_VL) {                                     \
-      LOG_INFO("Subtest observed_vl = %u, expected_vl = %d", observed_vl, \
-               EXPECTED_VL);                                              \
-    }                                                                     \
-    assert(observed_vl == EXPECTED_VL);                                   \
-    __asm__ volatile("vsetivli t0, " STRING_LITERAL(AVL) ", " VTYPEI      \
-                     ", tu, ma");                                         \
-    COPY_SCALAR_REG(observed_vl);                                         \
-    if (observed_vl != EXPECTED_VL) {                                     \
-      LOG_INFO("Subtest observed_vl = %u, expected_vl = %d", observed_vl, \
-               EXPECTED_VL);                                              \
-    }                                                                     \
-    assert(observed_vl == EXPECTED_VL);                                   \
-    __asm__ volatile("vsetivli t0, " STRING_LITERAL(AVL) ", " VTYPEI      \
-                     ", ta, mu");                                         \
-    COPY_SCALAR_REG(observed_vl);                                         \
-    if (observed_vl != EXPECTED_VL) {                                     \
-      LOG_INFO("Subtest observed_vl = %u, expected_vl = %d", observed_vl, \
-               EXPECTED_VL);                                              \
-    }                                                                     \
-    assert(observed_vl == EXPECTED_VL);                                   \
-    __asm__ volatile("vsetivli t0, " STRING_LITERAL(AVL) ", " VTYPEI      \
-                     ", ta, ma");                                         \
-    COPY_SCALAR_REG(observed_vl);                                         \
-    if (observed_vl != EXPECTED_VL) {                                     \
-      LOG_INFO("Subtest observed_vl = %u, expected_vl = %d", observed_vl, \
-               EXPECTED_VL);                                              \
-    }                                                                     \
-    assert(observed_vl == EXPECTED_VL);                                   \
+#define VSETIVLI_SUBTEST(AVL, VTYPEI, EXPECTED_VL)                          \
+  do {                                                                      \
+    LOG_INFO("Subtest %u", subtest_count++);                                \
+    uint32_t observed_vl = 0;                                               \
+    if (strstr(VTYPEI, "mf") == NULL) {                                     \
+      __asm__ volatile("vsetivli t0, " STRING_LITERAL(AVL) ", " VTYPEI      \
+                                                           ", tu, mu");     \
+      COPY_SCALAR_REG(observed_vl);                                         \
+      if (observed_vl != EXPECTED_VL) {                                     \
+        LOG_INFO("Subtest observed_vl = %u, expected_vl = %d", observed_vl, \
+                 EXPECTED_VL);                                              \
+      }                                                                     \
+      assert(observed_vl == EXPECTED_VL);                                   \
+      __asm__ volatile("vsetivli t0, " STRING_LITERAL(AVL) ", " VTYPEI      \
+                                                           ", tu, ma");     \
+      COPY_SCALAR_REG(observed_vl);                                         \
+      if (observed_vl != EXPECTED_VL) {                                     \
+        LOG_INFO("Subtest observed_vl = %u, expected_vl = %d", observed_vl, \
+                 EXPECTED_VL);                                              \
+      }                                                                     \
+      assert(observed_vl == EXPECTED_VL);                                   \
+    }                                                                       \
+    __asm__ volatile("vsetivli t0, " STRING_LITERAL(AVL) ", " VTYPEI        \
+                                                         ", ta, mu");       \
+    COPY_SCALAR_REG(observed_vl);                                           \
+    if (observed_vl != EXPECTED_VL) {                                       \
+      LOG_INFO("Subtest observed_vl = %u, expected_vl = %d", observed_vl,   \
+               EXPECTED_VL);                                                \
+    }                                                                       \
+    assert(observed_vl == EXPECTED_VL);                                     \
+    __asm__ volatile("vsetivli t0, " STRING_LITERAL(AVL) ", " VTYPEI        \
+                                                         ", ta, ma");       \
+    COPY_SCALAR_REG(observed_vl);                                           \
+    if (observed_vl != EXPECTED_VL) {                                       \
+      LOG_INFO("Subtest observed_vl = %u, expected_vl = %d", observed_vl,   \
+               EXPECTED_VL);                                                \
+    }                                                                       \
+    assert(observed_vl == EXPECTED_VL);                                     \
   } while (0)
 
 #if _TEST_VLEN == 256
@@ -1414,32 +1394,31 @@
   // AVL immediate is 5 bits -> 31 is the max
   uint32_t subtest_count = 0;
 
-  /*
   VSETIVLI_SUBTEST(0, "e8,mf8", 0);
   VSETIVLI_SUBTEST(0, "e16,mf8", 0);
   VSETIVLI_SUBTEST(0, "e32,mf8", 0);
-  VSETIVLI_SUBTEST(0, "e64,mf8", 0);
+  // VSETIVLI_SUBTEST(0, "e64,mf8", 0);
   VSETIVLI_SUBTEST(1, "e8,mf8", 1);
   VSETIVLI_SUBTEST(1, "e16,mf8", 0);
   VSETIVLI_SUBTEST(1, "e32,mf8", 0);
-  VSETIVLI_SUBTEST(1, "e64,mf8", 0);
+  // VSETIVLI_SUBTEST(1, "e64,mf8", 0);
   VSETIVLI_SUBTEST(0, "e8,mf4", 0);
   VSETIVLI_SUBTEST(0, "e16,mf4", 0);
   VSETIVLI_SUBTEST(0, "e32,mf4", 0);
-  VSETIVLI_SUBTEST(0, "e64,mf4", 0);
+  // VSETIVLI_SUBTEST(0, "e64,mf4", 0);
   VSETIVLI_SUBTEST(1, "e8,mf4", 1);
   VSETIVLI_SUBTEST(1, "e16,mf4", 1);
   VSETIVLI_SUBTEST(1, "e32,mf4", 0);
-  VSETIVLI_SUBTEST(1, "e64,mf4", 0);
+  // VSETIVLI_SUBTEST(1, "e64,mf4", 0);
   VSETIVLI_SUBTEST(0, "e8,mf2", 0);
   VSETIVLI_SUBTEST(0, "e16,mf2", 0);
   VSETIVLI_SUBTEST(0, "e32,mf2", 0);
-  VSETIVLI_SUBTEST(0, "e64,mf2", 0);
+  // VSETIVLI_SUBTEST(0, "e64,mf2", 0);
   VSETIVLI_SUBTEST(1, "e8,mf2", 1);
   VSETIVLI_SUBTEST(1, "e16,mf2", 1);
   VSETIVLI_SUBTEST(1, "e32,mf2", 1);
-  VSETIVLI_SUBTEST(1, "e64,mf2", 0);
-  */
+  // VSETIVLI_SUBTEST(1, "e64,mf2", 0);
+
   VSETIVLI_SUBTEST(0, "e8,m1", 0);
   VSETIVLI_SUBTEST(0, "e16,m1", 0);
   VSETIVLI_SUBTEST(0, "e32,m1", 0);
@@ -1474,70 +1453,70 @@
   // VSETIVLI_SUBTEST(1, "e64,m8", 1);
 
 #if VLENB_DIV8_SUB1 < 32
-  // VSETIVLI_SUBTEST(VLENB_DIV8_SUB1, "e8,mf8", VLENB_DIV8_SUB1);
-  // VSETIVLI_SUBTEST(VLENB_DIV8_SUB1, "e16,mf4", VLENB_DIV8_SUB1);
-  // VSETIVLI_SUBTEST(VLENB_DIV8_SUB1, "e32,mf2", VLENB_DIV8_SUB1);
+  VSETIVLI_SUBTEST(VLENB_DIV8_SUB1, "e8,mf8", VLENB_DIV8_SUB1);
+  VSETIVLI_SUBTEST(VLENB_DIV8_SUB1, "e16,mf4", VLENB_DIV8_SUB1);
+  VSETIVLI_SUBTEST(VLENB_DIV8_SUB1, "e32,mf2", VLENB_DIV8_SUB1);
   // VSETIVLI_SUBTEST(VLENB_DIV8_SUB1, "e64,m1", VLENB_DIV8_SUB1);
 #endif
 
 #if VLENB_DIV8 < 32
-  // VSETIVLI_SUBTEST(VLENB_DIV8, "e8,mf8", VLENB_DIV8);
-  // VSETIVLI_SUBTEST(VLENB_DIV8, "e16,mf4", VLENB_DIV8);
-  // VSETIVLI_SUBTEST(VLENB_DIV8, "e32,mf2", VLENB_DIV8);
+  VSETIVLI_SUBTEST(VLENB_DIV8, "e8,mf8", VLENB_DIV8);
+  VSETIVLI_SUBTEST(VLENB_DIV8, "e16,mf4", VLENB_DIV8);
+  VSETIVLI_SUBTEST(VLENB_DIV8, "e32,mf2", VLENB_DIV8);
   // VSETIVLI_SUBTEST(VLENB_DIV8, "e64,m1", VLENB_DIV8);
 #endif
 
 #if VLENB_DIV8_ADD1 < 32
-  // VSETIVLI_SUBTEST(VLENB_DIV8_ADD1, "e8,mf8", VLENB_DIV8);
-  // VSETIVLI_SUBTEST(VLENB_DIV8_ADD1, "e16,mf4", VLENB_DIV8);
-  // VSETIVLI_SUBTEST(VLENB_DIV8_ADD1, "e32,mf2", VLENB_DIV8);
+  VSETIVLI_SUBTEST(VLENB_DIV8_ADD1, "e8,mf8", VLENB_DIV8);
+  VSETIVLI_SUBTEST(VLENB_DIV8_ADD1, "e16,mf4", VLENB_DIV8);
+  VSETIVLI_SUBTEST(VLENB_DIV8_ADD1, "e32,mf2", VLENB_DIV8);
   // VSETIVLI_SUBTEST(VLENB_DIV8_ADD1, "e64,m1", VLENB_DIV8);
 #endif
 
 #if VLENB_DIV4_SUB1 < 32
-  // VSETIVLI_SUBTEST(VLENB_DIV4_SUB1, "e8,mf4", VLENB_DIV4_SUB1);
-  // VSETIVLI_SUBTEST(VLENB_DIV4_SUB1, "e16,mf2", VLENB_DIV4_SUB1);
+  VSETIVLI_SUBTEST(VLENB_DIV4_SUB1, "e8,mf4", VLENB_DIV4_SUB1);
+  VSETIVLI_SUBTEST(VLENB_DIV4_SUB1, "e16,mf2", VLENB_DIV4_SUB1);
   VSETIVLI_SUBTEST(VLENB_DIV4_SUB1, "e32,m1", VLENB_DIV4_SUB1);
   // VSETIVLI_SUBTEST(VLENB_DIV4_SUB1, "e64,m2", VLENB_DIV4_SUB1);
 #endif
 
 #if VLENB_DIV4 < 32
-  // VSETIVLI_SUBTEST(VLENB_DIV4, "e8,mf4", VLENB_DIV4);
-  // VSETIVLI_SUBTEST(VLENB_DIV4, "e16,mf2", VLENB_DIV4);
+  VSETIVLI_SUBTEST(VLENB_DIV4, "e8,mf4", VLENB_DIV4);
+  VSETIVLI_SUBTEST(VLENB_DIV4, "e16,mf2", VLENB_DIV4);
   VSETIVLI_SUBTEST(VLENB_DIV4, "e32,m1", VLENB_DIV4);
   // VSETIVLI_SUBTEST(VLENB_DIV4, "e64,m2", VLENB_DIV4);
 #endif
 
 #if VLENB_DIV4_ADD1 < 32
-  // VSETIVLI_SUBTEST(VLENB_DIV4_ADD1, "e8,mf4", VLENB_DIV4);
-  // VSETIVLI_SUBTEST(VLENB_DIV4_ADD1, "e16,mf2", VLENB_DIV4);
+  VSETIVLI_SUBTEST(VLENB_DIV4_ADD1, "e8,mf4", VLENB_DIV4);
+  VSETIVLI_SUBTEST(VLENB_DIV4_ADD1, "e16,mf2", VLENB_DIV4);
   VSETIVLI_SUBTEST(VLENB_DIV4_ADD1, "e32,m1", VLENB_DIV4);
   // VSETIVLI_SUBTEST(VLENB_DIV4_ADD1, "e64,m2", VLENB_DIV4);
 #endif
 
 #if VLENB_DIV2_SUB1 < 32
-  // VSETIVLI_SUBTEST(VLENB_DIV2_SUB1, "e8,mf2", VLENB_DIV2_SUB1);
+  VSETIVLI_SUBTEST(VLENB_DIV2_SUB1, "e8,mf2", VLENB_DIV2_SUB1);
   VSETIVLI_SUBTEST(VLENB_DIV2_SUB1, "e16,m1", VLENB_DIV2_SUB1);
   VSETIVLI_SUBTEST(VLENB_DIV2_SUB1, "e32,m2", VLENB_DIV2_SUB1);
   // VSETIVLI_SUBTEST(VLENB_DIV2_SUB1, "e64,m4", VLENB_DIV2_SUB1);
 #endif
 
 #if VLENB_DIV2 < 32
-  // VSETIVLI_SUBTEST(VLENB_DIV2, "e8,mf2", VLENB_DIV2);
+  VSETIVLI_SUBTEST(VLENB_DIV2, "e8,mf2", VLENB_DIV2);
   VSETIVLI_SUBTEST(VLENB_DIV2, "e16,m1", VLENB_DIV2);
   VSETIVLI_SUBTEST(VLENB_DIV2, "e32,m2", VLENB_DIV2);
   // VSETIVLI_SUBTEST(VLENB_DIV2, "e64,m4", VLENB_DIV2);
 #endif
 
 #if VLENB_DIV2_ADD1 < 32
-  // VSETIVLI_SUBTEST(VLENB_DIV2_ADD1, "e8,mf2", VLENB_DIV2);
+  VSETIVLI_SUBTEST(VLENB_DIV2_ADD1, "e8,mf2", VLENB_DIV2);
   VSETIVLI_SUBTEST(VLENB_DIV2_ADD1, "e16,m1", VLENB_DIV2);
   VSETIVLI_SUBTEST(VLENB_DIV2_ADD1, "e32,m2", VLENB_DIV2);
   // VSETIVLI_SUBTEST(VLENB_DIV2_ADD1, "e64,m4", VLENB_DIV2);
 #endif
 
 #if VLENB_SUB1 < 32
-  /*
+
   VSETIVLI_SUBTEST(VLENB_SUB1, "e16,mf8", 0);
   VSETIVLI_SUBTEST(VLENB_SUB1, "e32,mf8", 0);
   VSETIVLI_SUBTEST(VLENB_SUB1, "e64,mf8", 0);
@@ -1552,11 +1531,11 @@
   VSETIVLI_SUBTEST(VLENB_SUB1, "e32,mf4", 0);
   VSETIVLI_SUBTEST(VLENB_SUB1, "e64,mf4", 0);
   VSETIVLI_SUBTEST(VLENB_SUB1, "e32,mf4", 0);
-  VSETIVLI_SUBTEST(VLENB_SUB1, "e64,mf4", 0);
-  VSETIVLI_SUBTEST(VLENB_SUB1, "e64,mf2", 0);
-  VSETIVLI_SUBTEST(VLENB_SUB1, "e64,mf2", 0);
-  VSETIVLI_SUBTEST(VLENB_SUB1, "e64,mf2", 0);
-  */
+  // VSETIVLI_SUBTEST(VLENB_SUB1, "e64,mf4", 0);
+  // VSETIVLI_SUBTEST(VLENB_SUB1, "e64,mf2", 0);
+  // VSETIVLI_SUBTEST(VLENB_SUB1, "e64,mf2", 0);
+  // VSETIVLI_SUBTEST(VLENB_SUB1, "e64,mf2", 0);
+
   VSETIVLI_SUBTEST(VLENB_SUB1, "e8,m1", VLENB_SUB1);
   VSETIVLI_SUBTEST(VLENB_SUB1, "e16,m2", VLENB_SUB1);
   VSETIVLI_SUBTEST(VLENB_SUB1, "e32,m4", VLENB_SUB1);