0

我有一个 8x8 的数据。处理后,我想暂时保留生成的 8x8 数据以供进一步处理。我的问题是是否可以对 4 个 Q 寄存器进行编程以循环存储它们。但是下面的代码不能编译,我也想将 d12 的 12 增加到 d13

mov r4, #7

1:
.
.
vmul.i16 d12, d12, d1[r4] 
subs r4, r4, #1
bge 1b

有没有办法或有效的方法来处理这些?

4

1 回答 1

0

我不相信您可以间接引用寄存器。您可能想为此使用宏。请参阅我发送的矩阵乘法页面以获取您将使用的宏类型的示例。您会为每次计算调用一次,而不是使用循环。这还具有首先避免循环的优点。如果您使用寄存器而不是内存,我假设您担心性能,并且分支对性能不利。

请注意该页面中的“调度”部分。如果你非常关心性能,即使是宏也会引入一些问题。如果您快速读取和写入同一个寄存器(在本例中为 d12),您可能会停止流水线。您经常希望交错迭代,以便避免这种情况。(...,从 d3 读取,写入 d2,使用 d3 计算,从 d4 读取,写入 d3,使用 d4 计算,...)这意味着更多的手写代码,但速度要快得多。

于 2013-02-27T18:08:29.433 回答