単一の __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