c – SSE类型的战俘

我使用SSE类型进行了一些显式向量化计算,例如__m128(在xmmintrin.h等中定义),但现在我需要将向量的所有元素提升到某个(相同)幂,即理想情况下我想要像__m128 _mm_pow_ps( __m128,浮动),遗憾的是不存在.

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

(请注意,this question与重复无关,当然没有有用的答案.)

最佳答案
对于pow(x,y)使用公式exp(y * log(x)),使用exp和log的SSE实现使用a library.

转载注明原文:c – SSE类型的战俘 - 代码日志