gpt4 book ai didi

c++ - 没有 AVX2 的 32 位整数的 SSE 整数 2^n 次幂

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:15 28 4
gpt4 key购买 nike

我找不到用于计算 2^n 的 SSE 指令对于 vector __m128i 32 位整数。

是否有执行以下伪代码的指令或函数?

__m128i power_of_two(__m128i b) {
__m128 r;
for (int i = 0; i < 4; i++)
r[i] = 1 << b[i];
return r;
}

_mm_sll_epi32指令只计算 r[i] = a[i] << b[0] .

最佳答案

AVX2 之前没有单一指令,但即使只有 SSE2,也有一个技巧可以滥用浮点格式来生成 2 的幂,方法是使用整数算法生成指数字段,然后将其从 float 转换为整数.可能有更快的选择。

__m128i power_of_two(__m128i b) {
__m128i exp = _mm_add_epi32(b, _mm_set1_epi32(127));
__m128 f = _mm_castsi128_ps(_mm_slli_epi32(exp, 23));
return _mm_cvtps_epi32(f);
}

关于c++ - 没有 AVX2 的 32 位整数的 SSE 整数 2^n 次幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57454416/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com