我有8x8数据。处理完毕后,我想继续生成8x8数据 处理。我的问题是,是否可以编程4个Q寄存器来循环存储它们。但是下面的代码没有编译,我也想将d12的12增加到d13
mov r4, #7
1:
.
.
vmul.i16 d12, d12, d1[r4]
subs r4, r4, #1
bge 1b
有没有办法或有效的方法来处理这些?
答案 0 :(得分:0)
我不相信你可以间接参考寄存器。您可能想要使用宏。请参阅我发送的矩阵乘法页面,以获取您要使用的宏类型的示例。您为每次计算调用一次而不是使用循环。这也具有首先避免循环的优点。如果你使用寄存器而不是内存,我认为你关注性能,而分支对性能有害。
请注意该页面中的“计划”部分。如果你非常关心性能,即使宏也会引入一些问题。如果您快速读取和写入同一寄存器(在本例中为d12),则可以使管道停止。您经常希望交错迭代,以避免这种情况。 (...,从d3读取,写入d2,使用d3计算,从d4读取,写入d3,使用d4计算,...)这意味着更多的手写代码,但速度要快得多。