On Fri, Apr 12, 2013 at 1:58 AM, Jakub Jelinek <[email protected]> wrote:
> On Thu, Apr 11, 2013 at 12:05:41PM -0700, Sriraman Tallam wrote:
>> 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.
>
> 1) this shouldn't be an option, either it can be made to work reliably,
> then it should be done always, or it can't, then it shouldn't be done
Except that if there is compile time/memory consumption concerns,
users can use the option to turn it off.
> 2) have you verified that if you always generate all builtins, that the
> builtins not supported by the ISA selected from the command line are
> created with the right vector modes?
> 3) the *intrin.h headers in the case where the guarding macro isn't defined
> should be surrounded by something like
> #ifndef __FMA4__
> #pragma GCC push options
> #pragma GCC target("fma4")
> #endif
> ...
> #ifndef __FMA4__
> #pragma GCC pop options
> #endif
> so that everything that is in the headers is compiled with the ISA
> in question
For the inline functions? (The caller functions should have the target
option), or FE needs the target option properly set?
> 4) what happens if you use the various vector types typedefed in the
> *intrin.h headers in code that doesn't support those ISAs? As TYPE_MODE
> for VECTOR_TYPE is a function call, perhaps it will just be handled as
> generic BLKmode vectors, which is desirable I think
Will the veclower pass deal with it (lowered into scalar operations)?
> 5) what happens if you use a target builtin in a function not supporting
> the corresponding ISA, do you get proper error explaining what you are
> doing wrong?
Yes, in ix86_expand_builtin there is a check -- that is what Sri
mentioned in a previous email.
> 6) what happens if you use some intrinsics in a function not supporting
> the corresponding ISA? Dunno if the inliner chooses not to inline it
> and error out because it is always_inline, or what exactly will happen
> then
I think it may end up with errors about unsupported builtins as above
thanks,
David
>
> For all this you certainly need testcases.
>
> Jakub