开发者

How to use NEON comparison (greater than or equal to) instruction?

How to use the NEON comparison instructions in general?

Here is a case, I want to use, Greater-than-or-equal-to instruction?

Currently I have a,

开发者_如何学Goint x;
...
...
...
if(x >= 0)
{
....

}

In NEON, I would like to use x in the same way, just that x this time is a vector.

int32x4_t x;

...
...
...

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

}


With SIMD it's not straightforward to go from a single scalar if/then to a test on multiple elements. Usually you want to test if any element is greater than or if all elements are greater than, and there will usually be different SIMD predicates for each case which you can put inside an if (...). I don't see anything like this in NEON though, so you may be out of luck.

Often though you want to take a different approach, since branches are usually not desirable in optimised code. Ideally you will want to use the result of a SIMD comparison as a mask for subsequent operations (e.g. select different values based on mask using bitwise operations).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜