D.gnu - Changing "target" parameter via attribute
- Manu (18/18) May 27 2013 So we talked about this at DConf.
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)(); }
May 27 2013