MS Visual Studio で SSE2 命令セットを使用しています。16ビットデータでいくつかの計算を行うために使用しています。
SSEレジスタに8つの値がロードされているとします。42
それらすべてに定数(例:)を追加したい。これが私のコードをどのように見せたいかです。
__m128i values; // 8 values, 16 bits each
const __m128i my_const_42 = ???; // What should i write here?
values = _mm_add_epi16(values, my_const_2); // Add 42 to the 8 values
さて、どうすれば定数を定義できますか?次の 2 つの方法が機能しますが、1 つは非効率的で、もう 1 つは醜いです。
my_const_42 = _mm_set_epi16(42, 42, 42, 42, 42, 42, 42, 42)
- コンパイラは、定数を「構築」するための 8 つのコマンドを生成しますmy_const_42 = {42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0}
- 何が起こっているのか理解するのが難しい;42
eg への変更-42
は簡単ではありません
128 ビット定数をより便利に表現する方法はありますか?