Hi Richi,
Friendly ping on this. I'm going away for two weeks end of this week, so
I won't be here for end of stage-1, but I'd still very much like to get
this done for GCC 14.
I don't know if you had a chance to look at this yet when you reviewed
the other patches or if you maybe just missed it? A quick td;lr this
moves around the TARGET_SIMD_CLONE_ADJUST call after we've vectorized
the types in simdclones to avoid having to add the extra target hooks to
change the types. This required some moving around of the code that
constructed the adjustments and the code that constructed the array for
the return value.
Kind regards,
Andre
On 18/10/2023 15:41, 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?
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 :(