Thread overview
Conditional compilation to detect AVX2
May 22
Jeff
May 22
Jeff
May 22
Hello,
Here is a little code exemple where I try to do some conditional compilation (https://dlang.org/spec/version.html) :
https://run.dlang.io/is/i8ML91

Is seems 'D_AVX2' is not defined when I pass the '-mattr=+avx2 -O3' options: is there something wrong in my code ?
May 22
On Tuesday, 22 May 2018 at 18:27:20 UTC, Jeff wrote:
> Hello,
> Here is a little code exemple where I try to do some conditional compilation (https://dlang.org/spec/version.html) :
> https://run.dlang.io/is/i8ML91
>
> Is seems 'D_AVX2' is not defined when I pass the '-mattr=+avx2 -O3' options: is there something wrong in my code ?

No, this is a bug in LDC.
Because LDC doesn't support the core.simd functions (we do support the types), we don't define D_SIMD.
But looking at the definition of D_AVX and D_AVX2, we should indeed define them if the compile target supports them.

For your purpose, the workaround is:
`__traits(targetHasFeature, "avx2")`
https://wiki.dlang.org/LDC-specific_language_changes#targetHasFeature

(Note: the run.dlang.io machine appears to have a sandybridge CPU, which does not have AVX2; but you can test with AVX (one) instead)

-Johan

May 22
On Tuesday, 22 May 2018 at 19:07:47 UTC, Johan Engelen wrote:
> On Tuesday, 22 May 2018 at 18:27:20 UTC, Jeff wrote:
>> Hello,
>> Here is a little code exemple where I try to do some conditional compilation (https://dlang.org/spec/version.html) :
>> https://run.dlang.io/is/i8ML91
>>
>> Is seems 'D_AVX2' is not defined when I pass the '-mattr=+avx2 -O3' options: is there something wrong in my code ?
>
> No, this is a bug in LDC.

https://github.com/ldc-developers/ldc/pull/2711
May 22
On Tuesday, 22 May 2018 at 19:25:06 UTC, Johan Engelen wrote:
> On Tuesday, 22 May 2018 at 19:07:47 UTC, Johan Engelen wrote:
>> On Tuesday, 22 May 2018 at 18:27:20 UTC, Jeff wrote:
>>> Hello,
>>> Here is a little code exemple where I try to do some conditional compilation (https://dlang.org/spec/version.html) :
>>> https://run.dlang.io/is/i8ML91
>>>
>>> Is seems 'D_AVX2' is not defined when I pass the '-mattr=+avx2 -O3' options: is there something wrong in my code ?
>>
>> No, this is a bug in LDC.
>
> https://github.com/ldc-developers/ldc/pull/2711

Thanks, that was fast !