看来您想要获得一定长度的数组的总和,而不仅仅是四个浮点值。
在这种情况下,您的代码可以工作,但远未优化:
许多管道联锁
每次迭代不必要的 32 位添加
假设数组的长度是 8 的倍数且至少为 16 :
vldmia {q0-q1}, [pSrc]!
sub count, count, #8
loop:
pld [pSrc, #32]
vldmia {q3-q4}, [pSrc]!
subs count, count, #8
vadd.f32 q0, q0, q3
vadd.f32 q1, q1, q4
bgt loop
vadd.f32 q0, q0, q1
vpadd.f32 d0, d0, d1
vadd.f32 s0, s0, s1
Run Code Online (Sandbox Code Playgroud)
我希望上面的其余代码是不言自明的。
您会注意到这个版本比您最初的版本快很多倍。