View mode: basic / threaded / horizontal-split · Log in · Help
May 27, 2013
Changing "target" parameter via attribute
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)();
 }
Top | Discussion index | About this forum | D home