|
|
1
11
我建议您花一点时间来了解SIMD是如何在ARM上工作的。请看: 请看一下:
让你开始。然后可以使用内联汇编程序或domen推荐的相应ARM内部函数来实现SIMD代码。 |
|
|
2
5
例如,对于GCC来说,这可能是一个起点: http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html |
|
|
3
3
如果您需要总计480个8位值,那么技术上需要17位中间存储。但是,如果您分两个阶段执行加法,即前240行然后后240行,则可以每个阶段16位执行加法。然后你可以把两半的结果相加得到最终的答案。 实际上,有一条霓虹灯指令适合您的算法,称为vaddw。它将向qword向量添加一个dword向量,qword向量包含的元素宽度是前者的两倍。在您的例子中,vaddw.u8可用于向8个16位累加器添加8个像素。然后,可以使用vaddw.u16将两组8个16位累加器添加到一组8个32位累加器中—请注意,必须使用两次指令才能得到两个半累加器。
|
|
|
4
2
没有指令可以将4 8位值加载到4 32位寄存器中。
您只能使用16位寄存器。应该够了。。。 |
|
|
5
0
使用单通道加载指令加载4个字节(
如果你能保证的话
嗯,我刚刚意识到你想要使用的是内部函数,而不是汇编,所以这和内部函数是一样的。
|