【发布时间】:2018-04-30 21:21:56
【问题描述】:
我想将 __m128i 寄存器的每个元素右移不同的量。我知道如果我们想像下面这样左移,可以通过乘法来实现:
__m128i mul_constant = _mm_set_epi32(8, 4, 2, 1);
__m128i left_vshift = _mm_mullo_epi32(R, mul_constant);
但是,如果我们想右移,有什么办法呢?
【问题讨论】:
-
他们在 AVX2 中添加了可变长度移位。但我猜你需要这个旧处理器?
-
@Mysticial 是的。我需要一个 SSE3-4 指令。
-
@PaulR:嘿,我很高兴地发现我已经回答了你找到的所有 3 个重复项:P 其中两个彼此非常相似,大多只是留下 4 个元素之一未使用。