David Hildenbrand <da...@redhat.com> writes:
> 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 ;) An alternative is to generalise the code into a helper and then just use macros to instantiate a series of calls to it (c.f. softfloat). The idea is you can use flatten/inline to keep it efficient but you don't have a bunch of logic obscured by macro stuff. -- Alex Bennée