.macro KERNEL8x4_M1 fmla v16.2d, v0.2d, v8.d[0] fmla v20.2d, v0.2d, v9.d[0] ldp q4, q5, [pA], #32 fmla v24.2d, v0.2d, v10.d[0] fmla v28.2d, v0.2d, v11.d[0] ldp d12, d13, [pB], #16 fmla v17.2d, v1.2d, v8.d[0] fmla v25.2d, v1.2d, v10.d[0] prfm PLDL1KEEP, [pA, #A_PRE_SIZE+64] fmla v21.2d, v1.2d, v9.d[0] fmla v29.2d, v1.2d, v11.d[0] ldp d14, d15, [pB], #16 fmla v18.2d, v2.2d, v8.d[0] fmla v22.2d, v2.2d, v9.d[0] prfm PLDL1KEEP, [pA, #A_PRE_SIZE] fmla v26.2d, v2.2d, v10.d[0] fmla v30.2d, v2.2d, v11.d[0] fmla v19.2d, v3.2d, v8.d[0] fmla v23.2d, v3.2d, v9.d[0] ldp q6, q7, [pA], #32 fmla v27.2d, v3.2d, v10.d[0] fmla v31.2d, v3.2d, v11.d[0] .endm
时间: 2024-04-18 21:32:06 浏览: 89
这段代码是一个宏定义,名为KERNEL8x4_M1。它是基于前面的宏定义KERNEL8x4_I进行了一些修改和补充。在这个宏中,与之前相比,多了一些fmla指令,用于累加之前计算的结果。这样可以实现矩阵乘法的累加操作。其他部分与之前的宏定义类似,加载数据、进行乘法操作和存储结果。整个过程中使用的寄存器和内存地址根据具体的处理器架构可能会有所不同。
阅读全文