* Martin Sebor: > On 10/25/18 7:13 AM, Martin Reinecke wrote: >> >>>> This creates a nasty asymmetry in the sense that gcc's own optimizations >>>> will be able to use all target features (because the compiler knows that >>>> it is OK to use specific features like AVX instructions) whereas the >>>> user has no way to hand-optimize where this becomes necessary. At least >>>> not using this nice mechanism. >>> >>> They can, just not based on preprocessor macros. >> >> I was thinking about decisions at compile time (along the lines of "ah, >> I'm in the AVX-specific version of the function, therefore I will call >> AVX intrinsics"), and I don't see a way to make them without access to >> macros. >> At runtime this is of course possible. > > Since each of the clones has a target attribute attached to it there > should be a way to query that attribute at compile time. GCC 9 > provides a __builtin_has_attribute intrinsic for simple attribute > introspection so in principle it could be used for this. Another option: __builtin_cpu_supports could be constant-folded according to the configured architecture baseline. Thanks, Florian