如何使用NEON比较(大于或等于)指令?

时间:2010-09-24 15:06:33

标签: arm simd intrinsics neon cortex-a8

一般如何使用NEON比较指令?

这是一个案例,我想使用,大于或等于指令?

目前我有一个,

int x;
...
...
...
if(x >= 0)
{
....

}

在NEON中,我想以相同的方式使用x,只是x这次是一个向量。

int32x4_t x;

...
...
...

if(vcgeq_s32(x, vdupq_n_s32(0))) // Whats the best way to achieve this effect?
{
....

}

1 个答案:

答案 0 :(得分:3)

使用SIMD从单个标量if / then再到多个元素的测试并不简单。通常你想测试任何元素是否大于或者所有元素都大于,并且每个情况通常会有不同的SIMD谓词,你可以把它放在一个if (...)。我在NEON看不到这样的事情,所以你可能运气不好。

通常,您希望采用不同的方法,因为在优化的代码中通常不需要分支。理想情况下,您需要使用SIMD比较的结果作为后续操作的掩码(例如,使用按位操作选择基于掩码的不同值)。