自制的GCC,或任何其他方式让Mac上的GCC与AVX一起开箱即用?

时间:2015-02-07 09:50:39

标签: homebrew gcc

如果阅读此问题的人有一两分钟,可能会测试以下代码的构建:

#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

很抱歉有另一个重复的问题。 很高兴和自己说话。 出

0 个答案:

没有答案