来自英特尔的article:
整数格式转换通常用于成像和视频应用程序。例如,在计算像素之前将RGBA从四个字节转换为四个浮点数时可以使用它们。一条SSE4转换指令可以执行与之前的四条SIMD指令相同的操作,如图所示。
SSE2:
pmovd xmm0, m32
pxor xmm7, xmm7
punpcklbw xmm0, xmm7
punpcklwd xmm0, xmm7
cvtdq2ps xmm0, xmm0
SSE4:
pmovzxbd xmm0, m32
cvtdq2ps xmm0, xmm0
有人能告诉我一个完整的例子吗?非常感谢!
答案 0 :(得分:2)
因为pmovzxbd
仅适用于32位存储器操作数或128位sse寄存器,而不适用于通用寄存器,因此需要插入一些类型转换或从GPR到SSE的显式加载。
__m128 convert_RGBA_to_float(float* rgba) {
return _mm_cvtepi32_ps( _mm_cvtepu8_epi32 ( *(__m128i*)rgba) );
}