加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – C:x86 Intel内在函数使用_mm_log2_ps() – >错误:不兼

发布时间:2020-12-16 07:06:40 所属栏目:百科 来源:网络整理
导读:我正在尝试将log2应用到__m128变量上.像这样: #include immintrin.hint main (void) { __m128 two_v = {2.0,2.0,2.0}; __m128 log2_v = _mm_log2_ps(two_v); // log_2 := log(2) return 0;} 尝试编译它会返回此错误: error: initializing '__m128' with an
我正在尝试将log2应用到__m128变量上.像这样:

#include <immintrin.h>
int main (void) {
    __m128 two_v = {2.0,2.0,2.0};
    __m128 log2_v = _mm_log2_ps(two_v); // log_2 := log(2)

    return 0;
}

尝试编译它会返回此错误:

error: initializing '__m128' with an expression of
      incompatible type 'int'
                __m128 log2_v = _mm_log2_ps(two_v); // log_2 := log(2)
                       ^        ~~~~~~~~~~~~~~~~~~

我该如何解决?

解决方法

您查看的immintrin.h和用于编译的immintrin.h是不同的.
可能,您正在研究特定于Intel的标头(在/opt/intel/include/immintrin.h之类的地方),而您的编译器使用默认的immintrin.h

正如所说,extern __m128 _mm_log2_ps(__ m128 v1)是SVML routine,所以
我看到的第一个解决方案是使用Intel Compiler.对于非商业开发,它可以免费用于Linux.

虽然您可以使用不同的编译器在编译期间将自定义immintrin.h文件的包含路径指定为第一个参数,但我认为您会得到太多错误 – 只是因为此标头是特定于Intel的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读