> 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.
>
>
Comparing this way to putting the related code to a separate file, I think the
latter is more simple.
Thanks
Liang