请考虑以下说明:
mpyf3 *ar0+, *ar1+, r0 || addf3 r0, r1, r1
第一条指令等于 ,r0 = *ar0++ * *ar1++
第二条指令等于r1 = r0 + r1
。但是,r0
第二条指令的价值是什么?有两种选择:
r0
r0
是并行指令之前的值r0
是第一条指令的结果
什么是正确的?
此外,我将如何并行化一个简单的过滤器,例如以下过滤器
void emg_filter(int const* a0, int* a1)
{
int const N = ...;
int result = 0;
for (; N > 0; --N)
result += *a0++;
*a1 = result/N;
}