
Which is why what I suggest is just part of Boost.SIMD. It is geared towards one thing and one thing only: detecting whether a particular SIMD extension is supported or not, and works across all architectures. There is also cache detection that we could optionally add, the code is already there.
For reference, on other platforms you usually need to ask the operating system about the hardware capabilities, since detecting the capabilities can only be done by the kernel. Vector programming is one of its applications, true. But hardly the only one. Consider also atomic ops and things like AES and RDRAND. Cache information can be useful for custom allocators. I'd rather have a separate library that is used by Boost.SIMD or at least a highly independent public component of Boost.SIMD (but then again, why is it not a first class library?).
+1 run-time dispatching for cmpxchg8b on ia32 or cmpxchg16b on x86_64 all require access to CPUID and have absolutely nothing to do with SIMD programming. so i'd very much appreciate a separate lightweight library ... cheers, tim