您好,
我正在尝试访问非连续的内存位置并将数据存储在C中的该位置。它工作正常
但是当我做同样的事情时,我无法获得正确的输出:
PFB -
这是C代码:
unsigned char Src_data[8] = {251,193,214,254,232,192,208,191};
float temp[256] = {0.0};
float *out_data;
memset(out_data,0.0f,sizeof(temp));
for(i=0;i<8;i++)
{
unsigned char d= Src_data[i];
out_data[d] = out_data[d] + 0.2;
}
这是SSE CODE:
uchar *image_0 = Src_data;
__m128 scale_fact = _mm_set1_ps(0.2);
for(int i=0; i<8; i+=4)
{
__m128i index= _mm_cvtepu8_epi32(_mm_loadu_si128((__m128i*)(image_0+i)));
__m128 output = _mm_loadu_ps(((out_data+index.m128i_u32[0])));
output = _mm_add_ps(output,scale_fact);
_mm_storeu_ps((out_data+index.m128i_u32[0]),output);
}
使用_mm_storeu_ps将输出存储在SSE中时,连续的内存位置将被填充而不是索引值。
谁能告诉我如何填写输出的特定索引位置。