关于整数格式转换

时间:2012-06-21 06:21:52

标签: c sse

来自英特尔的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

有人能告诉我一个完整的例子吗?非常感谢!

1 个答案:

答案 0 :(得分:2)

因为pmovzxbd仅适用于32位存储器操作数或128位sse寄存器,而不适用于通用寄存器,因此需要插入一些类型转换或从GPR到SSE的显式加载。

__m128 convert_RGBA_to_float(float* rgba) {
    return  _mm_cvtepi32_ps( _mm_cvtepu8_epi32 ( *(__m128i*)rgba) );
}