我目前有以下代码:
float a[4] = { 10, 20, 30, 40 };
float b[4] = { 0.1, 0.1, 0.1, 0.1 };
asm volatile("movups (%0), %%xmm0\n\t"
"mulps (%1), %%xmm0\n\t"
"movups %%xmm0, (%1)"
:: "r" (a), "r" (b));
我首先有几个问题:
(1) 如果我要在 16 字节边界上对齐数组,它甚至可以工作吗?由于数组是在堆栈上分配的,对齐它们几乎是不可能的吗?
请参阅此帖子的选定答案:堆栈变量是否由 GCC __attribute__((aligned(x))) 对齐?
(2) 可以重构代码以提高效率吗?如果我将两个浮点数组都放入寄存器而不是一个呢?
谢谢