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);