SIMD support...

Manu turkeyman at gmail.com
Fri Jan 6 16:15:51 PST 2012


On 7 January 2012 02:06, Walter Bright <newshound2 at digitalmars.com> wrote:

> On 1/6/2012 1:43 PM, Manu wrote:
>
>> There is actually. To the compiler, the intrinsic is a normal function,
>> with
>> some hook in the code generator to produce the appropriate opcode when
>> it's
>> performing actual code generation.
>> On most compilers, the inline asm on the other hand, is unknown to the
>> compiler,
>> the optimiser can't do much anymore, because it doesn't know what the
>> inline asm
>> has done, and the code generator just goes and pastes your asm code
>> inline where
>> you told it to. It doesn't know if you've written to aliased variables,
>> called
>> functions, etc.. it can no longer safely rearrange code around the inline
>> asm
>> block.. which means it's not free to pipeline the code efficiently.
>>
>
> And, in fact, the compiler should not try to optimize inline assembler.
> The IA is there so that the programmer can hand tweak things without the
> compiler defeating his attempts.
>
> For example, suppose the compiler schedules instructions for processor X.
> The programmer writes inline asm to schedule for Y, because the compiler
> doesn't specifically support Y. The compiler goes ahead and reschedules it
> for X.
>
> Arggh!
>
> What dmd does do with the inline assembler is it keeps track of which
> registers are read/written, so that effective register allocation can be
> done for the non-asm code.
>

And I agree this is exactly correct for the IA... and also why intrinsics
must be used to do this work, not IA.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20120107/97b3fa95/attachment-0001.html>


More information about the Digitalmars-d mailing list