1
我想要做的是加载四个char值并将它们添加到4个浮点数的向量中。起初我所做的就是这样的事情:是否有与char *的_mm_loadu_ps等价的?
// char b[1024] is defined somewhere else
__declspec(align(16)) float d[3];
__declspec(align(16)) float a[4];
__m128* pSrcDst1 = (__m128*) d;
__m128* pSrc2 = (__m128*) a;
a[0] = b[i ];
a[1] = b[i+1];
a[2] = b[i+2];
a[3] = b[i+3];
*pSrcDst1 = _mm_add_ps(*pSrcDst1, *pSrc2);
我想采取的类似_mm_loadu_ps
为char*
的优势,所以我可以做的:
// char b[1024] is defined somewhere else
__declspec(align(16)) float d[3];
__declspec(align(16)) float a[4];
__declspec(align(16)) char c[4];
__m128* pSrcDst1 = (__m128*) d;
__m128* pSrc2 = (__m128*) a;
__m64* pSrc3 = (__m64*) c;
*pSrc3 = _mm_loadu_ps(&b[i]);
*pSrc2 = _mm_cvtpu8_ps(*pSrc3);
*pSrcDst1 = _mm_add_ps(*pSrcDst1, *pSrc2);
什么是这样做的正确的&优化的方式?
为您添加一个字符到一个浮点数意味着什么? –
@JohnZwinck - 对不起,没有说清楚 - 它的8位无符号int – zenpoy