问题描述
我试图编译使用pclmulqdq指令present在新的英特尔处理器的计划。我已经安装了GCC 4.6使用MacPorts的,但是当我编译我的程序(它使用固有_mm_clmulepi64_si128),我得到
I am trying to compile a program that uses the pclmulqdq instruction present in new Intel processors. I've installed GCC 4.6 using macports but when I compile my program (which uses the intrinsic _mm_clmulepi64_si128), I get
/var/folders/ps/sfjmtgx5771_qbqnh4c9xclr0000gn/T//ccEAWWhd.s:16:no such
instruction: `pclmulqdq $0, %xmm0,%xmm1'
看来,GCC能够产生从禀正确的程序集code,但汇编器无法识别的指令。
It seems that GCC is able to generate the correct assembly code from the instrinsic, but the assembler does not recognize the instruction.
我已经使用的MacPorts安装binutils的,但问题仍然存在。我怎么知道哪个汇编gcc的使用?在X code和汇编可能不支持它,但binutils的汇编应该。
I've installed binutils using macports, but the problem persists. How do I know which assembler gcc is using? The XCode assembler probably does not support it, but the binutils assembler should.
推荐答案
一个简单的解决方案,解决了这个问题对我来说是添加 -Wa,-q
来的编译器标志。从手册页为
(1.38版):
A simpler solution that fixed this problem for me was adding -Wa,-q
to the compiler flags. From the man pages for as
(version 1.38):
-q搜索结果
    使用铛(1)综合汇编程序,而不是基于GNU系统汇编。
的 -Wa
部分从编译器驱动程序来汇编通过它,就像 -Wl
将参数传递给连接器。
The -Wa
part passes it from the compiler driver to the assembler, much like -Wl
passes arguments to the linker.
这篇关于如何使用AVX / pclmulqdq在Mac OS X的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!