SSE4を使用して、1つの命令で複数の数値を比較することは可能ですか?
Intel Referenceは、PCMPGTQについて次のように述べています
PCMPGTQ —パックされたデータを比較して
デスティネーションオペランド(第1オペランド)とソースオペランド(第2オペランド)のパックされたクアドワードに対してSIMD比較を実行します。最初の(宛先)オペランドのデータ要素が2番目の(ソース)オペランドの対応する要素よりも大きい場合、宛先の対応するデータ要素はすべて1に設定されます。それ以外の場合は、0に設定されます。
ベクトル内でどの整数が大きいか、どれが小さいかを判断できるようにしたいので、これは実際には私が望んでいることではありません。
たとえば、比較する必要がある場合
32 with 45
13 with 78
44 with 12
99 with 66
[32, 13, 44, 99]
あるベクトルと別のベクトルを入れて、 [45, 78, 12, 66]
1つの命令でSSE4を使用してそれらを比較し、[0, 0, 1, 1]
結果として(0-少ない、1-大きい)にすることを計画していました。
しかし、これはPCMPGTQが行うことではないようです。この比較を高速化するために、このレベルで並列処理を使用する方法に関する提案はありますか?