假设正确对齐,将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
寄存器的等效版本是什么。