DMD Backend: Deciding instructions to use/avoid?

Nick Sabalausky a at a.a
Thu Jun 9 17:55:45 PDT 2011


"Nick Sabalausky" <a at a.a> wrote in message 
news:isoltk$1ehd$1 at digitalmars.com...
> "Don" <nospam at nospam.com> wrote in message 
> news:isoh6c$15jb$1 at digitalmars.com...
>> Nick Sabalausky wrote:
>>> So my main question: Does DMD do anything like, say, detecting the CPU 
>>> at compile time and then enabling instructions only available on that 
>>> CPU and up? Or does it do anything like always assuming the target CPU 
>>> has SSE2? Anything like that that could cause differences between our 
>>> CPUs to result in object code that will work on one of the CPUs, but not 
>>> the other? FWIW, the CPU on my linux box is i686, so it's not like I'm 
>>> on some super-ultra-old i586, or anything like that.
>>
>> DMD itself doesn't, but the array operations do. The DMD backend is 
>> ancient, and generates code for original Pentiums (+ 64 bit equivalents 
>> of the same instructions).
>
> Is there any way to force the array operations down to a certain level? Or 
> even better yet, have them detect the CPU at startup and then use the 
> appropriate version?
>

It would be a bad thing if we can't use an SSE2 CPU to compile a binary 
that'll work on a non-SSE2 machine.




More information about the Digitalmars-d-learn mailing list