On 12/09/2015 01:32 AM, Li, Liang Z wrote:
I think you means the ' __attribute__((target("avx2")))', I have tried this 
way, the issue here is:
  without the ' -mavx2' option for gcc, there are compiling error:  '__m256i undeclared', 
the __attribute__((target("avx2")))
can't solve this issue.  Any idea?

You're right that you can't use the normal __m256i, as it doesn't get declared. But you can define the same type within the function itself.

Which is a simple matter of

  typedef long long __m256i __attribute__((vector_size(32)));

From there, you might as well rely on other gcc extensions to instead write

   __m256i tmp0 = p[i + 0] | p[i + 1];

rather than obfuscating the code with AVX2_VEC_OR.



r~

Reply via email to