我有一段使用 SSE 指令编写的内联 ASM 代码,我需要将其移植到 NEON。我想自己学习基础知识,看看我能不能一步一步地完成,而不是把整个东西批量转换。
因此,第一步是学习负载和存储。考虑 ...
float input[4] = { 1.0f, 2.0f, 3.0f, 4.0f };
float output[4] = { 0 };
asm volatile
(
"movups %[I], %%xmm0 \n\t"
"movups %%xmm0, %[O] \n\t"
: [O] "=m" (output[0])
: [I] "m" (input[0])
: "memory", "xmm0"
);
我知道(我认为)我应该使用 vld1.32 指令,但我对将它与我之前使用过的其他一些 GCC ASM 构造(如命名变量等)结合起来有点含糊。