On Thu, Apr 11, 2013 at 12:43 PM, Xinliang David Li <davi...@google.com> wrote: > What is the compile time impact for turning it on? Code not including > the intrinsic headers should not be affected too much. If the impact > is small, why not turning on this option by default -- which seems to > be the behavior of ICC.
I will get back with data on this. > > With this option, all functions without the appropriate target options > will be allowed to reference not supported builtins, without warnings > or errors. Is it possible to delay the check till the builtin > expansion time? Right now, an error is generated if a function accesses an unsupported builtin. Since the intrinsic functions are marked inline and call some target builtin, this will always be caught. Sri > > thanks, > > David > > On Thu, Apr 11, 2013 at 12:05 PM, Sriraman Tallam <tmsri...@google.com> wrote: >> Hi, >> >> *mmintrin headers does not work with function specific opts. >> >> Example 1: >> >> >> #include <smmintrin.h> >> >> __attribute__((target("sse4.1"))) >> __m128i foo(__m128i *V) >> { >> return _mm_stream_load_si128(V); >> } >> >> >> $ g++ test.cc >> smmintrin.h:31:3: error: #error "SSE4.1 instruction set not enabled" >> # error "SSE4.1 instruction set not enabled" >> >> This error happens even though foo is marked "sse4.1" >> >> There are multiple issues at play here. One, the headers are guarded >> by macros that are switched on only when the target specific options, >> like -msse4.1 in this case, are present in the command line. Also, the >> target specific builtins, like __builtin_ia32_movntdqa called by >> _mm_stream_load_si128, are exposed only in the presence of the >> appropriate target ISA option. >> >> >> I have attached a patch that fixes this. I have added an option >> "-mgenerate-builtins" that will do two things. It will define a macro >> "__ALL_ISA__" which will expose the *intrin.h functions. It will also >> expose all the target specific builtins. -mgenerate-builtins will not >> affect code generation. >> >> This feature will greatly benefit the function multiversioning usability too. >> >> Comments? >> >> Thanks >> Sri