On Wed, 18 Oct 2023, Andre Vieira (lists) wrote: > This patch moves the call to TARGET_SIMD_CLONE_ADJUST until after the > arguments and return types have been transformed into vector types. It also > constructs the adjuments and retval modifications after this call, allowing > targets to alter the types of the arguments and return of the clone prior to > the modifications to the function definition. > > Is this OK?
OK (I was hoping for Jakub to have a look). Thanks, Richard. > gcc/ChangeLog: > > * omp-simd-clone.cc (simd_clone_adjust_return_type): Hoist out > code to create return array and don't return new type. > (simd_clone_adjust_argument_types): Hoist out code that creates > ipa_param_body_adjustments and don't return them. > (simd_clone_adjust): Call TARGET_SIMD_CLONE_ADJUST after return > and argument types have been vectorized, create adjustments and > return array after the hook. > (expand_simd_clones): Call TARGET_SIMD_CLONE_ADJUST after return > and argument types have been vectorized. > > On 04/10/2023 13:40, Andre Vieira (lists) wrote: > > > > > > On 04/10/2023 11:41, Richard Biener wrote: > >> On Wed, 4 Oct 2023, Andre Vieira (lists) wrote: > >> > >>> > >>> > >>> On 30/08/2023 14:04, Richard Biener wrote: > >>>> On Wed, 30 Aug 2023, Andre Vieira (lists) wrote: > >>>> > >>>>> This patch adds a new target hook to enable us to adapt the types of > >>>>> return > >>>>> and parameters of simd clones. We use this in two ways, the first one > >>>>> is > >>>>> to > >>>>> make sure we can create valid SVE types, including the SVE type > >>>>> attribute, > >>>>> when creating a SVE simd clone, even when the target options do not > >>>>> support > >>>>> SVE. We are following the same behaviour seen with x86 that creates > >>>>> simd > >>>>> clones according to the ABI rules when no simdlen is provided, even if > >>>>> that > >>>>> simdlen is not supported by the current target options. Note that this > >>>>> doesn't mean the simd clone will be used in auto-vectorization. > >>>> > >>>> You are not documenting the bool parameter of the new hook. > >>>> > >>>> What's wrong with doing the adjustment in TARGET_SIMD_CLONE_ADJUST? > >>> > >>> simd_clone_adjust_argument_types is called after that hook, so by the time > >>> we > >>> call TARGET_SIMD_CLONE_ADJUST the types are still in scalar, not vector. > >>> The > >>> same is true for the return type one. > >>> > >>> Also the changes to the types need to be taken into consideration in > >>> 'adjustments' I think. > >> > >> Nothing in the three existing implementations of TARGET_SIMD_CLONE_ADJUST > >> relies on this ordering I think, how about moving the hook invocation > >> after simd_clone_adjust_argument_types? > >> > > > > But that wouldn't change the 'ipa_param_body_adjustments' for when we have a > > function definition and we need to redo the body. > >> Richard. > >> > >>> PS: I hope the subject line survived, my email client is having a bit of a > >>> wobble this morning... it's what you get for updating software :( > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)