用GCC向量内在函数计算x ^ y

假设我有一个2元素向量定义如下(使用GCC语法打包向量)

// packed vector of 2-elements
typedef double v2d __attribute__((vector_size(sizeof(double)*2)));

v2d x = ...;
double y = ...;

x[0] = pow(x[0], y)
x[1] = pow(x[1], y)

我想知道是否有更快的方法使用向量运算进行两次幂计算.该架构是x86-64上的GCC,平台特定代码是可以的.

最佳答案
是的,如果您没有特殊情况(负数,0,1,NaN等等),这应该是可能的,以便代码路径是线性的.

Here是IEEE754双精度的pow函数的通用代码,它没有循环结构,所以如果你充实所有特殊情况,矢量化似乎很简单.玩得开心.

相关文章

    转载注明原文:用GCC向量内在函数计算x ^ y - 代码日志