首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xeon Phi上的loaddup_pd/unpacklo_pd

Xeon Phi上的loaddup_pd/unpacklo_pd
EN

Stack Overflow用户
提问于 2013-03-12 13:09:54
回答 1查看 248关注 0票数 3

如果我在一个512宽的SIMD矢量中有以下双精度值,如在Xeon Phi寄存器中:

代码语言:javascript
复制
m0 = |b4|a4|b3|a3|b2|a2|b1|a1|

有没有可能把它变成:

代码语言:javascript
复制
m0_d = |a4|a4|a3|a3|a2|a2|a1|a1| 

使用一条指令?另外,由于没有针对doubles的按位内部函数,这仍然是实现上述目标的有效方法吗?

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-12 23:38:15

可以通过以下方式实现:

代码语言:javascript
复制
m0_d = _mm512_mask_swizzle_pd(m0,0xAA,m0,_MM_SWIZ_REG_CDAB);

swizzle操作似乎是有限的,但使用掩码变体,我们也可以实现其他排列。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15353754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档