【发布时间】:2013-09-26 02:15:58
【问题描述】:
我目前正在试验GCC vector extensions。但是,我想知道如何让sqrt(vec) 按预期工作。
如:
typedef double v4d __attribute__ ((vector_size (16)));
v4d myfunc(v4d in)
{
return some_sqrt(in);
}
至少在最近的 x86 系统上,它会发出对相关固有 sqrtpd 的调用。是否有适用于矢量类型的 sqrt 内置 GCC,或者是否需要降级到内在级别才能完成此操作?
【问题讨论】:
-
就像处理数组一样。
-
考虑到有一条 ISA 指令专门设计用于对根向量进行平方运算,其速度可能是两个标量平方根的两倍,所以这有点不理想。
-
看起来这是一个错误:gcc.gnu.org/bugzilla/show_bug.cgi?id=54408 除了按组件进行之外,我不知道任何解决方法。无论如何,向量扩展从来都不是要替换特定于平台的内在函数。
-
作为答案发布,我非常乐意接受它作为解决方案。
标签: gcc vectorization