3

いくつかの int 値を含む配列があります ([position%2=0] の値は負で、[position%2=1] の値は正です)。

これらの値を 4 ステップで配列からレジスタにロードしたいのですが、それらを反転させたい (正を負に、またはその逆に変換する)

__m128i v1;
for (int k = 0; k < limit; k += 4) {
        v1 = _mm_load_si128((__m128i *) & myArray[position + k]);
}

上記の SSE コードは、値をそのままレジスターにロードします。 v1 を取得して反転させるコマンドはありますか? ワンステップ/コマンドで実行できますか? 元の配列から直接反転した値をロードすることさえ可能ですか?

どんな助けでも大歓迎です。前もって感謝します。

4

2 に答える 2

4

整数要素が 32 ビットであると仮定すると、0 から減算できます。

v1 = _mm_load_si128(...);                   // load data
v1 = _mm_sub_epi32(_mm_set1_epi32(0), v1);  // negate all elements
于 2013-08-30T15:21:10.703 に答える