如何在霓虹灯中添加标量?

时间:2018-02-06 02:12:05

标签: arm simd neon

我想用标量做加法。这是我尝试过的:

ex) uint32x4_t result, result2, op, one;

// op + 1

result = vaddq_u32(op, 1); //error, 1 is not vector

one = vdupq_n_u32(1);

result2 = vaddq_u32(op, one); // ok

执行此操作时节省内存空间的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

没有关于矢量标量alu类型操作的指令,只有NEON上的> = 16bit宽度的乘法。

没有关于立即值的add / sub指令。

你已经做的是它应该完成的方式。

您可以尝试提升性能的一件事是将1的向量声明为循环外的常量,希望编译器足够聪明,不要在循环内的每次迭代中反复加载相同的值。 / p>

不幸的是,在使用NEON时,可用的ARM编译器并不可靠。检查反汇编是一个必要条件,它首先打破了内在函数的写作点。