On 22.05.19 13:09, Richard Henderson wrote: > On 5/22/19 7:01 AM, David Hildenbrand wrote: >> >>> I also think that, if we create a bunch more of these wrappers: >>> >>>> +DEF_VFAE_HELPER(8) >>>> +DEF_VFAE_HELPER(16) >>>> +DEF_VFAE_HELPER(32) >>> >>> then RT and ZS can be passed in as constant parameters to the above, and >>> then >>> the compiler will fold away all of the stuff that's not needed for each >>> different case. Which, I think, is significant. These are practically >>> different instructions with the different modifiers. >>> >> >> So, we have 4 flags, resulting in 16 variants. Times 3 element sizes ... >> 48 helpers in total. Do we really want to go down that path? > > Maybe?
Hope my fingers won't bleed from all the copy-pasting ;) > >> I can also go ahead any try to identify the most frequent users (in >> Linux) and only specialize that one. > > Also plausible. I guess it would be good to know, anyway. I'll dump the parameters when booting Linux. My gut feeling is that the cc option is basically never used ... > > I think RT probably makes the largest difference to the layout of the > function, Yes. I think the RT and ZS make the biggest difference. IN - not really that heavy. Maybe use different variants for RT and ZS for the !CC casen only. > so maybe that's the one we pick. We could also leave our options open and > make > the 3 non-CC flags be parameters to the inline function, just extract them > from > the M4 parameter at the one higher level. That one, I have already done :) -- Thanks, David / dhildenb