2
私はxmm0
の0 .. 12の範囲内の8つの符号なし8ビット数のベクトルを持っています。私は、ベクトルの各要素e
で次の変換を実行します:値を変更しないでSSEで範囲を反転するにはどうすればよいですか?
if (e != 12)
e = 11 - e;
、番号0、1、...、11は、10、11に変更されていることを...、0〜12のに対し、変更されません。他の値は発生しません、私はそれらに何が起こるか気にしません。
この操作をSSE4命令セットで効率的に実装するにはどうすればよいですか?
SSE2のために
のように見えますテスト)
すごいああ、私は完全に忘れてしまいましたpshufbについて最初は、(((12 - v)+ 243) - 243)を考えました。ここで、加算は飽和加算であり、結果は正しい場所に移動します。しかし、そのためのすべてのマスクがロードされると、あなたのアプローチはおそらくより速くなります。 – fuz