ネオンの比較(等しい)命令を使用する方法は?
-
05-10-2019 - |
質問
ネオンの比較手順を一般的に使用する方法は?
これがケースです、私が使用したい、より大きい、または平等な指示?
現在私は持っています、
int x;
...
...
...
if(x >= 0)
{
....
}
ネオンでは、同じ方法で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