Changing "target" parameter via attribute

Manu turkeyman at gmail.com
Mon May 27 01:21:56 PDT 2013


Actually, I think the C counterpart is actually
__attribute__((__target__("targetstring"))), with bonus underscores ;)


On 27 May 2013 18:15, Manu <turkeyman at gmail.com> wrote:

> So we talked about this at DConf.
>
> Working on std.simd, I need to be able to change the target parameter on a
> per-function basis.
> GCC supports this via: __attribute__((target("sse2"))) for instance.
>
> I need the ability to set this from D, but the trick is, I need to be able
> to set the target string according to a template arg.
>
> Eg:
>   enum Targets { SSE2, SSE3 };
>   enum targets[] = [ "sse2", "sse3" ];
>
>   @attribute("target", targets[T]) // <- attribute needs to refer to the
> template arg T
>   void func(Targets T)();
>
>
>   {
>     // this way, it is possibly to produce dynamic selection of code paths
> optimised for different CPU features (a task which is usually very tedious
> in C/C++)
>     func!(Targets.SSE2)();
>   }
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/d.gnu/attachments/20130527/9abc7812/attachment.html>


More information about the D.gnu mailing list