如果阅读此问题的人有一两分钟,可能会测试以下代码的构建:
#include <cstdint>
#include <x86intrin.h>
// some compiler feature tests used by makefile
typedef uint8_t vector_8_16 __attribute__ ((vector_size(16)));
static const vector_8_16 key16 = { 7, 6, 5, 4, 3, 2, 1, 0,
15, 14, 13, 12, 11, 10, 9, 8};
int main() {
vector_8_16 a = key16;
vector_8_16 b, c;
b = reinterpret_cast<vector_8_16>(_mm_shuffle_pd(a, a, 1));
c = _mm_xor_si128(b, a);
c = _mm_cmpeq_epi8(b, a);
c = _mm_andnot_si128(c, a);
return c[2] & 0;
}
使用以下调用:
gcc -std=c++11 -march=corei7-avx -flax-vector-conversions test.cc
目前,我尝试使用此网站上的gcc5:http://hpc.sourceforge.net/但它不起作用:
/var/folders/d8/m9xrbkrs2tj3x6xw_h0nmkn40000gn/T//ccXbpcH7.s:10:no such instruction: `vmovdqa LC0(%rip), %xmm0'
/var/folders/d8/m9xrbkrs2tj3x6xw_h0nmkn40000gn/T//ccXbpcH7.s:11:no such instruction: `vmovaps %xmm0, -16(%rbp)'
/var/folders/d8/m9xrbkrs2tj3x6xw_h0nmkn40000gn/T//ccXbpcH7.s:12:no such instruction: `vmovapd -16(%rbp), %xmm1'
/var/folders/d8/m9xrbkrs2tj3x6xw_h0nmkn40000gn/T//ccXbpcH7.s:13:no such instruction: `vmovapd -16(%rbp), %xmm0'
/var/folders/d8/m9xrbkrs2tj3x6xw_h0nmkn40000gn/T//ccXbpcH7.s:14:no such instruction: `vshufpd $1, %xmm1,%xmm0,%xmm0'
几年前,我从源代码构建完成后,设法让gcc 4.7正常工作,并将/usr/bin/as
中的汇编程序替换为gcc中的汇编程序。但是这种努力需要几天时间,而且我不确定它是否适用于当前的OSX和Xcode工具版本。我怀疑这个有类似的问题,要么尝试使用与Xcode一样的汇编程序,并且对它有误解,要么试图使用它自己的汇编程序,它不知道AVX。我不确定究竟是什么问题,我的下一个希望(在花几天时间使用有用的汇编程序之前)是试用brew GCC包。
或者,如果有人知道在Mac OS X上将GCC与AVX结合使用的简单方法,我很高兴听到它。
注意:clang我已经可以使用了,这个问题具体是关于GCC的
== EDIT ==
经过大量搜索后,我发现这里的问题得到了解答,并提供了适合我的解决方案: How to use AVX/pclmulqdq on Mac OS X
很抱歉有另一个重复的问题。 很高兴和自己说话。 出