SIMD中的索引向量

时间:2014-11-18 08:21:34

标签: c optimization sse simd

我正在使用SIMD并尝试对循环进行矢量化。在这里,我试图向指针添加一个索引向量,左边,以便在该指标处获得指针的值,然后继续执行SIMD操作。

例如,如果我在没有SIMD的情况下这样做,它将如下所示:

x1 = left[a]

x2 = left[b]

x3 = left[c]

x4 = left[d]

其中[a,b,c,d]存储在索引向量中(index_left_float)

float* left_Array[] = {left, left, left, left};

__m128 left_Array_simd = _mm_load_ps((float *) left_Array);

__m128 nleft = _mm_add_ps(index_left_float, left_Array_simd);

我还尝试加载nleft 到一个新的向量中,以便将指针内存储的值保留在nleft的索引处,但它不会让我。

我唯一能想到的就是从向量中提取索引,正常进行计算,然后将其重新加载到向量,但这看起来非常昂贵,我试图尽可能地优化我的代码。任何建议表示赞赏!我发现SIMD / SSE网站很难理解。  谢谢!

0 个答案:

没有答案