[D-runtime] Need support in core.cpuid for AVX detection

Martin Nowak dawg at dawgfoto.de
Sun Jan 15 16:37:54 PST 2012


On Sun, 15 Jan 2012 23:52:01 +0100, Walter Bright <walter at digitalmars.com>  
wrote:

> That's bit 25, but you mentioned bit 28?
>
> On 1/15/2012 2:11 PM, Alex wrote:
>> There seems to be commented out support for detecting AVX already:
>> https://github.com/D-Programming-Language/druntime/blob/master/src/core/cpuid.d#L275
>>
>> Any reason this isn't enabled?
>>
>> Regards,
>> Alex
>>
>> On Sun, Jan 15, 2012 at 11:08 PM, Alex<xtzgzorex at gmail.com>  wrote:
>>> For what it's worth, bit 28 of ECX indicates whether the CPU has AVX
>>> (for the cpuid instruction).
>>>
>>> Regards,
>>> Alex
>>>
>>> On Sun, Jan 15, 2012 at 11:04 PM, Walter  
>>> Bright<walter at digitalmars.com>  wrote:
>>>> http://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX
>>>> _______________________________________________
>>>> D-runtime mailing list
>>>> D-runtime at puremagic.com
>>>> http://lists.puremagic.com/mailman/listinfo/d-runtime
>> _______________________________________________
>> D-runtime mailing list
>> D-runtime at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/d-runtime
>>
>>
> _______________________________________________
> D-runtime mailing list
> D-runtime at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/d-runtime

https://github.com/dawgfoto/druntime/tree/DetectAVX

You need to check cpuid first for miscfeatures & OS_XSAVE (1 << 27).
Must be set or executing xgetbv will cause #GP.
Then xgetbv with index 0 will return the XFEATURES_ENABLED_MASK,
which shows you whether your OS does save YMM registers.
Currently this should work for linux, OSX > 10.6.8, Windows7 SP1.


More information about the D-runtime mailing list