如果我在内存中有以下双打(按顺序),我希望能够执行以下操作:
A-> a1| b1| a2| b2
__m256d r1,im1;
/*Perform operation here*/
r1-> |a2|a2|a1|a1|
im1-> |b2|b2|b1|b1|
我能想到的一种方法是:
t1 = _mm256_load_pd(&A);t1->|b2|a2|b1|a1|
r1 = _mm256_movedup_pd(t1);
t1 = _mm256_permute_pd(&A,0x0101);
im1 = _mm256_movedup_pd(t1);
AVX 没有 _mm_loaddup_pd() 或 _mm_load1_pd()。那么我可以执行此操作的最快方式是什么(就延迟而言,不一定是指令数量)?