如何使用霓虹灯比较说明?

这是我想使用的案例,大于或平等的说明?

目前我有一个

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

}

在霓虹灯中,我想以相同的方式使用x,只是这次x是向量。

int32x4_t x;

...
...
...

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

}
有帮助吗?

解决方案

使用SIMD,如果/然后在多个元素上从单个标量进行测试并不是一件直接的。通常您要测试是否 任何 元素大于或 全部 元素大于大的元素,通常会在每种情况下都有不同的SIMD谓词 if (...). 。我在霓虹灯中看不到这样的东西,所以您可能会不幸。

尽管您想采用不同的方法,但由于优化的代码通常不希望分支。理想情况下,您将需要将SIMD比较的结果用作后续操作的掩码(例如,使用位置操作根据掩码选择不同的值)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top