用于SSE类型的战俘

Wal*_*ter 7 c c++ sse pow

我使用SSE类型进行了一些明确的矢量化计算,例如__m128(在xmmintrin.hetc中定义),但是现在我需要将向量的所有元素提升到某个(相同的)幂,即理想情况下我会想要类似的东西__m128 _mm_pow_ps(__m128, float),遗憾的是它不存在.

围绕这个最好的方法是什么?我可以存储向量,调用std::pow每个元素,然后重新加载它.这是我能做的最好的吗?编译器如何std::pow在自动矢量化代码时实现调用,否则代码可以很好地实现矢量化?有没有提供有用功能的库?

(请注意,这个问题与重复有关,当然也没有一个有用的答案.)

Jas*_*ers 7

用公式exp(y*log(x))pow(x, y)与exp和日志SSE实现.