2

単一の __m128i に格納されている 4 x 32 ビットの符号付き整数を「符号なし」の対応する整数に変換する方法がわかりません。変換は、値の切り捨てを使用して行う必要があります。負の数は 0 にクランプしますが、負でない数は変更しません。

例: -100 は 0 に変わりますが、100 は 100 のままです。

#include <stdio.h>
#include <cstdint>
#include <emmintrin.h>

int main()
{    
    alignas(16) uint32_t out32u[4];
    __m128i my = _mm_setr_epi32 (100, -200, 0, -500);
    <....missing code....>
    _mm_store_si128(reinterpret_cast<__m128i *>(out32u), my);
    printf("%u %u %u %u\n", out32u[0], out32u[1], out32u[2], out32u[3]);
}

したがって、 <....missing code....>追加を考えると、上記のコードの結果は次のようになります。

100 0 0 0

4

1 に答える 1