将3D矢量加载到AVX寄存器的低三个值的有效方法

时间:2017-01-08 08:46:46

标签: c++ c sse avx

假设正确对齐,将3D矢量加载到AVX寄存器__m256d的最有效方法是什么。例如,对于SSE,我们可以做这样的事情

float __attribute__((aligned(0x20))) vector[3] = {1.f,2.f,3.f};
__m128i xy = _mm_loadl_epi64((const __m128i*)value);
__m128 z = _mm_load_ss(&value[2]);
__m128 vec = _mm_movelh_ps(_mm_castsi128_ps(xy), z); // gives [1.f,2.f,3.f,0.f]

现在我想知道给定double vector[3]__m256d寄存器的等效版本是什么。

0 个答案:

没有答案