spacemit k1上的IME矩阵扩展该如何调用?

我该怎样才能调用到图中的2x2x4[x2]的MAC单元?有没有代码示例?求大佬解答

看看这个:https://github.com/spacemit-com/riscv-ime-extension-spec/tree/master/example

感谢您的回答,我根据链接中的文档写了如下代码:

size_t vmadot_gemm_2x2x4x2_avl128(const int8_t* A_copies, const int8_t* packedB, int32_t* raw_c) {
    size_t configured_vl;
    __asm__ volatile(
        "vsetvli      t0, zero, e32, m2       \n\t"
        "vxor.vv      v28, v28, v28           \n\t"
        "vsetvli      t0, zero, e8, m1        \n\t"
        "vxor.vv      v0, v0, v0              \n\t"
        "vxor.vv      v1, v1, v1              \n\t"
        "vle8.v       v0, (%[SRC_A])          \n\t"
        "vle8.v       v1, (%[SRC_B])          \n\t"
        "li           t0, 128                 \n\t"
        "vsetvli      t0, t0, e8, m1, ta, ma          \n\t"
        "vmadot       v28, v0, v1             \n\t"
        "mv           %[VL], t0               \n\t"
        "vsetvli      t0, zero, e32, m2       \n\t"
        "vse32.v      v28, (%[DST_C])         \n\t"
        : [VL] "=&r"(configured_vl)
        : [SRC_A] "r"(A_copies), [SRC_B] "r"(packedB),
          [DST_C] "r"(raw_c)
        : "cc", "t0", "v0", "v1", "v28", "v29", "memory"
    );
    return configured_vl;
}

但是得到的结果于文档中描述的不同,可能是没有调度到2x2x4[x2]的MAC单元,而是调用了4x4x8的MAC单元。