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