<div dir="ltr">Actually, I think the C counterpart is actually __attribute__((__target__("targetstring"))), with bonus underscores ;)</div><div class="gmail_extra"><br><br><div class="gmail_quote">On 27 May 2013 18:15, Manu <span dir="ltr"><<a href="mailto:turkeyman@gmail.com" target="_blank">turkeyman@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">So we talked about this at DConf.<div><br></div><div>Working on std.simd, I need to be able to change the target parameter on a per-function basis.</div>
<div>GCC supports this via: __attribute__((target("sse2"))) for instance.</div>
<div><br></div><div>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.</div><div><br></div><div>Eg:</div><div>  enum Targets { SSE2, SSE3 };</div>

<div>  enum targets[] = [ "sse2", "sse3" ];<br></div><div><br></div><div>  @attribute("target", targets[T]) // <- attribute needs to refer to the template arg T</div><div>
  void func(Targets T)();</div><div><br></div><div><br></div><div>  {</div><div>    // 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++)</div>

<div>    func!(Targets.SSE2)();</div><div>  }</div><div><br></div></div>
</blockquote></div><br></div>