如何使用霓虹灯比较(大于或等于)指令?
-
05-10-2019 - |
题
如何使用霓虹灯比较说明?
这是我想使用的案例,大于或平等的说明?
目前我有一个
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比较的结果用作后续操作的掩码(例如,使用位置操作根据掩码选择不同的值)。
不隶属于 StackOverflow