Mark vl and vtype as clobbered in inline asm A few missed ones affected by compiler bug is fixed too. Change-Id: I1101aea7261f54a1a1fc1749c4a639441fcabdc6
diff --git a/tests/cocotb/rvv/load_store/load16_index8.cc b/tests/cocotb/rvv/load_store/load16_index8.cc index 2c299ba..fb85212 100644 --- a/tests/cocotb/rvv/load_store/load16_index8.cc +++ b/tests/cocotb/rvv/load_store/load16_index8.cc
@@ -36,7 +36,8 @@ 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] "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 data = __riscv_vluxei8_v_u16mf2(in_buf, indices, vl); @@ -48,7 +49,8 @@ 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] "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 data = __riscv_vluxei8_v_u16m1(in_buf, indices, vl); @@ -60,7 +62,8 @@ 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] "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 data = __riscv_vluxei8_v_u16m2(in_buf, indices, vl); @@ -72,7 +75,8 @@ 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] "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 data = __riscv_vluxei8_v_u16m4(in_buf, indices, vl); @@ -84,7 +88,8 @@ 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] "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 data = __riscv_vluxei8_v_u16m8(in_buf, indices, vl); @@ -97,7 +102,8 @@ 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] "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 data = __riscv_vloxei8_v_u16mf2(in_buf, indices, vl); @@ -109,7 +115,8 @@ 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] "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 data = __riscv_vloxei8_v_u16m1(in_buf, indices, vl); @@ -121,7 +128,8 @@ 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] "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 data = __riscv_vloxei8_v_u16m2(in_buf, indices, vl); @@ -133,7 +141,8 @@ 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] "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 data = __riscv_vloxei8_v_u16m4(in_buf, indices, vl); @@ -145,7 +154,8 @@ 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] "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 data = __riscv_vloxei8_v_u16m8(in_buf, indices, vl);
diff --git a/tests/cocotb/rvv/load_store/load32_index8.cc b/tests/cocotb/rvv/load_store/load32_index8.cc index 069c6d5..5af0fd0 100644 --- a/tests/cocotb/rvv/load_store/load32_index8.cc +++ b/tests/cocotb/rvv/load_store/load32_index8.cc
@@ -36,7 +36,8 @@ 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] "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 data = __riscv_vluxei8_v_u32m1(in_buf, indices, vl); @@ -48,7 +49,8 @@ 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] "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 data = __riscv_vluxei8_v_u32m2(in_buf, indices, vl); @@ -60,7 +62,8 @@ 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] "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 data = __riscv_vluxei8_v_u32m4(in_buf, indices, vl); @@ -72,7 +75,8 @@ 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] "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 data = __riscv_vluxei8_v_u32m8(in_buf, indices, vl); @@ -85,7 +89,8 @@ 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] "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 data = __riscv_vloxei8_v_u32m1(in_buf, indices, vl); @@ -97,7 +102,8 @@ 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] "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 data = __riscv_vloxei8_v_u32m2(in_buf, indices, vl); @@ -109,7 +115,8 @@ 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] "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 data = __riscv_vloxei8_v_u32m4(in_buf, indices, vl); @@ -121,7 +128,8 @@ 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] "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 data = __riscv_vloxei8_v_u32m8(in_buf, indices, vl);
diff --git a/tests/cocotb/rvv/load_store/load8_index16.cc b/tests/cocotb/rvv/load_store/load8_index16.cc index 25b1e2c..8a9a34d 100644 --- a/tests/cocotb/rvv/load_store/load8_index16.cc +++ b/tests/cocotb/rvv/load_store/load8_index16.cc
@@ -36,7 +36,8 @@ 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] "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 data = __riscv_vluxei16_v_u8mf4(in_buf, indices, vl); @@ -48,7 +49,8 @@ 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] "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 data = __riscv_vluxei16_v_u8mf2(in_buf, indices, vl); @@ -60,7 +62,8 @@ 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] "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 data = __riscv_vluxei16_v_u8m1(in_buf, indices, vl); @@ -72,7 +75,8 @@ 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] "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 data = __riscv_vluxei16_v_u8m2(in_buf, indices, vl); @@ -84,7 +88,8 @@ 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] "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 data = __riscv_vluxei16_v_u8m4(in_buf, indices, vl); @@ -97,7 +102,8 @@ 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] "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 data = __riscv_vloxei16_v_u8mf4(in_buf, indices, vl); @@ -109,7 +115,8 @@ 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] "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 data = __riscv_vloxei16_v_u8mf2(in_buf, indices, vl); @@ -121,7 +128,8 @@ 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] "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 data = __riscv_vloxei16_v_u8m1(in_buf, indices, vl); @@ -133,7 +141,8 @@ 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] "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 data = __riscv_vloxei16_v_u8m2(in_buf, indices, vl); @@ -145,7 +154,8 @@ 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] "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 data = __riscv_vloxei16_v_u8m4(in_buf, indices, vl);
diff --git a/tests/cocotb/rvv/load_store/load8_index16_seg.cc b/tests/cocotb/rvv/load_store/load8_index16_seg.cc index 596404c..7c29cd0 100644 --- a/tests/cocotb/rvv/load_store/load8_index16_seg.cc +++ b/tests/cocotb/rvv/load_store/load8_index16_seg.cc
@@ -36,7 +36,8 @@ 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] "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 data = __riscv_vluxseg2ei16_v_u8mf4x2(in_buf, indices, vl); @@ -49,7 +50,8 @@ 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] "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 data = __riscv_vluxseg2ei16_v_u8mf2x2(in_buf, indices, vl); @@ -62,7 +64,8 @@ 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] "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 data = __riscv_vluxseg2ei16_v_u8m1x2(in_buf, indices, vl); @@ -75,7 +78,8 @@ 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] "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 data = __riscv_vluxseg2ei16_v_u8m2x2(in_buf, indices, vl); @@ -88,7 +92,8 @@ 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] "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 data = __riscv_vluxseg2ei16_v_u8m4x2(in_buf, indices, vl); @@ -102,7 +107,8 @@ 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] "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 data = __riscv_vluxseg3ei16_v_u8mf4x3(in_buf, indices, vl); @@ -117,7 +123,8 @@ 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] "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 data = __riscv_vluxseg3ei16_v_u8mf2x3(in_buf, indices, vl); @@ -132,7 +139,8 @@ 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] "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 data = __riscv_vluxseg3ei16_v_u8m1x3(in_buf, indices, vl); @@ -147,7 +155,8 @@ 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] "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 data = __riscv_vluxseg3ei16_v_u8m2x3(in_buf, indices, vl); @@ -163,7 +172,8 @@ 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] "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 data = __riscv_vluxseg4ei16_v_u8mf4x4(in_buf, indices, vl); @@ -180,7 +190,8 @@ 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] "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 data = __riscv_vluxseg4ei16_v_u8mf2x4(in_buf, indices, vl); @@ -197,7 +208,8 @@ 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] "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 data = __riscv_vluxseg4ei16_v_u8m1x4(in_buf, indices, vl); @@ -214,7 +226,8 @@ 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] "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 data = __riscv_vluxseg4ei16_v_u8m2x4(in_buf, indices, vl); @@ -232,7 +245,8 @@ 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] "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 data = __riscv_vluxseg5ei16_v_u8mf4x5(in_buf, indices, vl); @@ -251,7 +265,8 @@ 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] "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 data = __riscv_vluxseg5ei16_v_u8mf2x5(in_buf, indices, vl); @@ -270,7 +285,8 @@ 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] "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 data = __riscv_vluxseg5ei16_v_u8m1x5(in_buf, indices, vl); @@ -290,7 +306,8 @@ 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] "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 data = __riscv_vluxseg6ei16_v_u8mf4x6(in_buf, indices, vl); @@ -311,7 +328,8 @@ 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] "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 data = __riscv_vluxseg6ei16_v_u8mf2x6(in_buf, indices, vl); @@ -332,7 +350,8 @@ 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] "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 data = __riscv_vluxseg6ei16_v_u8m1x6(in_buf, indices, vl); @@ -354,7 +373,8 @@ 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] "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 data = __riscv_vluxseg7ei16_v_u8mf4x7(in_buf, indices, vl); @@ -377,7 +397,8 @@ 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] "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 data = __riscv_vluxseg7ei16_v_u8mf2x7(in_buf, indices, vl); @@ -400,7 +421,8 @@ 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] "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 data = __riscv_vluxseg7ei16_v_u8m1x7(in_buf, indices, vl); @@ -424,7 +446,8 @@ 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] "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 data = __riscv_vluxseg8ei16_v_u8mf4x8(in_buf, indices, vl); @@ -449,7 +472,8 @@ 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] "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 data = __riscv_vluxseg8ei16_v_u8mf2x8(in_buf, indices, vl); @@ -474,7 +498,8 @@ 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] "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 data = __riscv_vluxseg8ei16_v_u8m1x8(in_buf, indices, vl); @@ -500,7 +525,8 @@ 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] "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 data = __riscv_vloxseg2ei16_v_u8mf4x2(in_buf, indices, vl); @@ -513,7 +539,8 @@ 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] "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 data = __riscv_vloxseg2ei16_v_u8mf2x2(in_buf, indices, vl); @@ -526,7 +553,8 @@ 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] "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 data = __riscv_vloxseg2ei16_v_u8m1x2(in_buf, indices, vl); @@ -539,7 +567,8 @@ 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] "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 data = __riscv_vloxseg2ei16_v_u8m2x2(in_buf, indices, vl); @@ -552,7 +581,8 @@ 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] "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 data = __riscv_vloxseg2ei16_v_u8m4x2(in_buf, indices, vl); @@ -566,7 +596,8 @@ 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] "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 data = __riscv_vloxseg3ei16_v_u8mf4x3(in_buf, indices, vl); @@ -581,7 +612,8 @@ 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] "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 data = __riscv_vloxseg3ei16_v_u8mf2x3(in_buf, indices, vl); @@ -596,7 +628,8 @@ 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] "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 data = __riscv_vloxseg3ei16_v_u8m1x3(in_buf, indices, vl); @@ -611,7 +644,8 @@ 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] "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 data = __riscv_vloxseg3ei16_v_u8m2x3(in_buf, indices, vl); @@ -627,7 +661,8 @@ 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] "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 data = __riscv_vloxseg4ei16_v_u8mf4x4(in_buf, indices, vl); @@ -644,7 +679,8 @@ 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] "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 data = __riscv_vloxseg4ei16_v_u8mf2x4(in_buf, indices, vl); @@ -661,7 +697,8 @@ 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] "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 data = __riscv_vloxseg4ei16_v_u8m1x4(in_buf, indices, vl); @@ -678,7 +715,8 @@ 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] "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 data = __riscv_vloxseg4ei16_v_u8m2x4(in_buf, indices, vl); @@ -696,7 +734,8 @@ 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] "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 data = __riscv_vloxseg5ei16_v_u8mf4x5(in_buf, indices, vl); @@ -715,7 +754,8 @@ 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] "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 data = __riscv_vloxseg5ei16_v_u8mf2x5(in_buf, indices, vl); @@ -734,7 +774,8 @@ 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] "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 data = __riscv_vloxseg5ei16_v_u8m1x5(in_buf, indices, vl); @@ -754,7 +795,8 @@ 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] "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 data = __riscv_vloxseg6ei16_v_u8mf4x6(in_buf, indices, vl); @@ -775,7 +817,8 @@ 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] "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 data = __riscv_vloxseg6ei16_v_u8mf2x6(in_buf, indices, vl); @@ -796,7 +839,8 @@ 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] "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 data = __riscv_vloxseg6ei16_v_u8m1x6(in_buf, indices, vl); @@ -818,7 +862,8 @@ 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] "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 data = __riscv_vloxseg7ei16_v_u8mf4x7(in_buf, indices, vl); @@ -841,7 +886,8 @@ 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] "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 data = __riscv_vloxseg7ei16_v_u8mf2x7(in_buf, indices, vl); @@ -864,7 +910,8 @@ 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] "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 data = __riscv_vloxseg7ei16_v_u8m1x7(in_buf, indices, vl); @@ -888,7 +935,8 @@ 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] "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 data = __riscv_vloxseg8ei16_v_u8mf4x8(in_buf, indices, vl); @@ -913,7 +961,8 @@ 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] "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 data = __riscv_vloxseg8ei16_v_u8mf2x8(in_buf, indices, vl); @@ -938,7 +987,8 @@ 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] "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 data = __riscv_vloxseg8ei16_v_u8m1x8(in_buf, indices, vl);
diff --git a/tests/cocotb/rvv/load_store/load8_index32.cc b/tests/cocotb/rvv/load_store/load8_index32.cc index d28cf38..ca4113c 100644 --- a/tests/cocotb/rvv/load_store/load8_index32.cc +++ b/tests/cocotb/rvv/load_store/load8_index32.cc
@@ -36,7 +36,8 @@ 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] "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 data = __riscv_vluxei32_v_u8mf4(in_buf, indices, vl); @@ -48,7 +49,8 @@ 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] "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 data = __riscv_vluxei32_v_u8mf2(in_buf, indices, vl); @@ -60,7 +62,8 @@ 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] "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 data = __riscv_vluxei32_v_u8m1(in_buf, indices, vl); @@ -72,7 +75,8 @@ 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] "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 data = __riscv_vluxei32_v_u8m2(in_buf, indices, vl); @@ -85,7 +89,8 @@ 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] "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 data = __riscv_vloxei32_v_u8mf4(in_buf, indices, vl); @@ -97,7 +102,8 @@ 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] "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 data = __riscv_vloxei32_v_u8mf2(in_buf, indices, vl); @@ -109,7 +115,8 @@ 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] "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 data = __riscv_vloxei32_v_u8m1(in_buf, indices, vl); @@ -121,7 +128,8 @@ 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] "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 data = __riscv_vloxei32_v_u8m2(in_buf, indices, vl);
diff --git a/tests/cocotb/rvv/load_store/store16_index8.cc b/tests/cocotb/rvv/load_store/store16_index8.cc index 1a9b19c..bca9dac 100644 --- a/tests/cocotb/rvv/load_store/store16_index8.cc +++ b/tests/cocotb/rvv/load_store/store16_index8.cc
@@ -31,13 +31,27 @@ extern "C" { // Unordered __attribute__((used, retain)) void vsuxei8_v_u16mf2() { - auto indices = __riscv_vle8_v_u8mf4(index_buf, vl); + 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 data = __riscv_vle16_v_u16mf2(in_buf, vl); __riscv_vsuxei8_v_u16mf2(out_buf, indices, data, vl); } __attribute__((used, retain)) void vsuxei8_v_u16m1() { - auto indices = __riscv_vle8_v_u8mf2(index_buf, vl); + 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 data = __riscv_vle16_v_u16m1(in_buf, vl); __riscv_vsuxei8_v_u16m1(out_buf, indices, data, vl); } @@ -47,7 +61,8 @@ 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] "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 data = __riscv_vle16_v_u16m2(in_buf, vl); @@ -59,7 +74,8 @@ 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] "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 data = __riscv_vle16_v_u16m4(in_buf, vl); @@ -71,7 +87,8 @@ 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] "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 data = __riscv_vle16_v_u16m8(in_buf, vl); @@ -80,13 +97,27 @@ // Ordered __attribute__((used, retain)) void vsoxei8_v_u16mf2() { - auto indices = __riscv_vle8_v_u8mf4(index_buf, vl); + 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 data = __riscv_vle16_v_u16mf2(in_buf, vl); __riscv_vsoxei8_v_u16mf2(out_buf, indices, data, vl); } __attribute__((used, retain)) void vsoxei8_v_u16m1() { - auto indices = __riscv_vle8_v_u8mf2(index_buf, vl); + 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 data = __riscv_vle16_v_u16m1(in_buf, vl); __riscv_vsoxei8_v_u16m1(out_buf, indices, data, vl); } @@ -96,7 +127,8 @@ 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] "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 data = __riscv_vle16_v_u16m2(in_buf, vl); @@ -108,7 +140,8 @@ 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] "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 data = __riscv_vle16_v_u16m4(in_buf, vl); @@ -120,7 +153,8 @@ 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] "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 data = __riscv_vle16_v_u16m8(in_buf, vl);
diff --git a/tests/cocotb/rvv/load_store/store32_index16.cc b/tests/cocotb/rvv/load_store/store32_index16.cc index 65cbc5d..0a1df6a 100644 --- a/tests/cocotb/rvv/load_store/store32_index16.cc +++ b/tests/cocotb/rvv/load_store/store32_index16.cc
@@ -35,7 +35,8 @@ 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] "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 data = __riscv_vle32_v_u32m1(in_buf, vl); @@ -47,7 +48,8 @@ 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] "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 data = __riscv_vle32_v_u32m2(in_buf, vl); @@ -59,7 +61,8 @@ 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] "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 data = __riscv_vle32_v_u32m4(in_buf, vl); @@ -71,7 +74,8 @@ 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] "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 data = __riscv_vle32_v_u32m8(in_buf, vl); @@ -84,7 +88,8 @@ 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] "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 data = __riscv_vle32_v_u32m1(in_buf, vl); @@ -96,7 +101,8 @@ 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] "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 data = __riscv_vle32_v_u32m2(in_buf, vl); @@ -108,7 +114,8 @@ 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] "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 data = __riscv_vle32_v_u32m4(in_buf, vl); @@ -120,7 +127,8 @@ 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] "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 data = __riscv_vle32_v_u32m8(in_buf, vl);
diff --git a/tests/cocotb/rvv/load_store/store32_index8.cc b/tests/cocotb/rvv/load_store/store32_index8.cc index e79ff9f..45caadb 100644 --- a/tests/cocotb/rvv/load_store/store32_index8.cc +++ b/tests/cocotb/rvv/load_store/store32_index8.cc
@@ -35,7 +35,8 @@ 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] "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 data = __riscv_vle32_v_u32m1(in_buf, vl); @@ -47,7 +48,8 @@ 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] "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 data = __riscv_vle32_v_u32m2(in_buf, vl); @@ -59,7 +61,8 @@ 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] "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 data = __riscv_vle32_v_u32m4(in_buf, vl); @@ -71,7 +74,8 @@ 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] "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 data = __riscv_vle32_v_u32m8(in_buf, vl); @@ -84,7 +88,8 @@ 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] "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 data = __riscv_vle32_v_u32m1(in_buf, vl); @@ -96,7 +101,8 @@ 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] "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 data = __riscv_vle32_v_u32m2(in_buf, vl); @@ -108,7 +114,8 @@ 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] "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 data = __riscv_vle32_v_u32m4(in_buf, vl); @@ -120,7 +127,8 @@ 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] "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 data = __riscv_vle32_v_u32m8(in_buf, vl);