_mm_shuffle_ps可以复制从a
2辆花车和2从b
,对不对?有没有简单的方法来从b
得到a
和1 3辆花车?我也注意到_mm_move_ss
可以完成这项工作的一部分,但它不会转移。更好_mm_shuffle_ps可以从一个来源获取3个元素?
编号:
__m128 _mm_shuffle_ps(__m128 a, __m128 b, unsigned int imm8)
_mm_shuffle_ps可以复制从a
2辆花车和2从b
,对不对?有没有简单的方法来从b
得到a
和1 3辆花车?我也注意到_mm_move_ss
可以完成这项工作的一部分,但它不会转移。更好_mm_shuffle_ps可以从一个来源获取3个元素?
编号:
__m128 _mm_shuffle_ps(__m128 a, __m128 b, unsigned int imm8)
不幸的是,只有2源洗牌是movss
,movsd
,shufps
,unpckl/hps/d
, movhlps
以及类似的非灵活指令。
palignr
might be useful,即使使用FP指令之间的int洗牌,如果你的数据移动需求,符合其模式旁路延迟。
AVX512添加2-源充分混洗(泳道交叉,与矢量选择器),用于各种元件的尺寸。东西如vpermi2w
和vpermt2b
正如Paul指出的,混合是组合数据的灵活方式,无需混洗。
查看Agner Fog's Optimizing Assembly guide了解按数据移动类型组织的指令表。另请参阅sse标记wiki。
这取决于你是否能承担最小的SSE版本,例如SSSE3或SSE4? – 2011-05-02 20:10:51
我可以使用SSE3和SSE4。 – echo 2011-05-03 18:20:12