Xeon Phi上的loaddup_pd / unpacklo_pd

时间:2013-03-12 05:09:54

标签: vectorization sse avx intel-mic xeon-phi

如果我在512宽SIMD矢量中有以下双打,就像在Xeon Phi寄存器中一样:

m0 = |b4|a4|b3|a3|b2|a2|b1|a1|

是否有可能进入:

m0_d = |a4|a4|a3|a3|a2|a2|a1|a1| 

使用单一指令? 此外,由于双打没有按位内在函数,这仍然是实现上述目标的有效方法吗?

m0_t = _mm512_swizzle_pd(m9,_MM_SWIZ_REG_CDAB);//m0_t->|a4|b4|a3|b3|a2|b2|a1|b1|
__m512d res = _mm512_mask_or_epi64(m0,k1,zero,m0_t);//k1 is 0xAA

1 个答案:

答案 0 :(得分:3)

可以实现如下:

m0_d = _mm512_mask_swizzle_pd(m0,0xAA,m0,_MM_SWIZ_REG_CDAB);

似乎混合操作有限,但使用屏蔽变体我们也可以实现其他排列。