对于浮点数,是否有等效的_mm_slli_si128(__ m128i a,int num)?

时间:2016-11-06 00:44:20

标签: c++ c vectorization intel intrinsics

让我们说我有一个4个花车的载体:

__m128 vector = |f0|f1|f2|f3| (pseudocode)

我的意图是将该变量转换为:

|0.0|f0|f1|f2|

做一个向右移动似乎是最简单的选择,但我还没有能够找到这样的内在可用于浮动。

实现这一目标的最快方法是什么?

1 个答案:

答案 0 :(得分:0)

这是我的解决方案:

__m128 const mask = _mm_castsi128_ps(_mm_set_epi32(0, -1, -1, -1));

vector = _mm_shuffle_ps(vector, vector, _MM_SHUFFLE(0,3,2,1))
vector = _mm_and_ps(vector, mask);