【问题标题】:g++: No Such Instruction with AVXg++:AVX 没有这样的指令
【发布时间】:2012-08-18 06:04:19
【问题描述】:

当我编译一个我用 C++ 编写的程序时(对于最新的 Macbook pro,它当然支持 AVX 指令集),我得到了以下错误。我正在使用从 Macports 获得的最新版本的 g++。您对我可以做些什么来修复错误而不限制编译器可用的指令集有任何想法吗?有什么特别值得我尝试更新的软件包吗?

g++-mp-4.7 -std=c++11 -Wall -Ofast -march=native -fno-rtti src/raw_to_json.cpp -o bin/raw_to_json.bin
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1831:no such instruction: `vpxor %xmm0, %xmm0,%xmm0'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1847:no such instruction: `vmovdqa %xmm0, 96(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1848:no such instruction: `vmovdqa %xmm0, 112(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1849:no such instruction: `vmovdqa %xmm0, 128(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1850:no such instruction: `vmovdqa %xmm0, 144(%rsp)'
/var/folders/83/tjczqmxn1y9166m642_rxdlw0000gn/T//cc0hIx0w.s:1851:no such instruction: `vmovdqa %xmm0, 160(%rsp)'

感谢您的帮助!

【问题讨论】:

标签: macos g++ macports avx


【解决方案1】:

为我解决此问题的更简单的解决方案是将-Wa,-q 添加到编译器标志中。来自as(1.38 版)的手册页:

-q 使用 clang(1) 集成汇编器而不是基于 GNU 的系统汇编器。

【讨论】:

    【解决方案2】:

    感谢 Conrado PLG 对他自己的问题 here 的回答。简而言之,我必须做到以下几点:

    1. 移动或删除旧的as,位于/opt/local/bin/../local/libexec/as/x86_64/as
    2. 将发现 here 的 Vincent Habchi 的脚本复制到 /opt/local/bin/../local/libexec/as/x86_64/as
    3. sudo chmod +x 脚本。

    请注意,由于调用汇编程序需要先通过 shell 脚本,因此性能可能会有所下降。

    【讨论】:

    • 还要注意Xcode自带的clang编译器也支持AVX。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    相关资源
    最近更新 更多