On Tue, 11 Jun 2024, Richard Sandiford wrote:
> Don't think it makes any difference, but:
>
> Richard Biener <[email protected]> writes:
> > @@ -2151,7 +2151,16 @@ get_group_load_store_type (vec_info *vinfo,
> > stmt_vec_info stmt_info,
> > access excess elements.
> > ??? Enhancements include peeling multiple iterations
> > or using masked loads with a static mask. */
> > - || (group_size * cvf) % cnunits + group_size - gap < cnunits))
> > + || ((group_size * cvf) % cnunits + group_size - gap < cnunits
> > + /* But peeling a single scalar iteration is enough if
> > + we can use the next power-of-two sized partial
> > + access. */
> > + && ((cremain = (group_size * cvf - gap) % cnunits), true
>
> ...this might be less surprising as:
>
> && ((cremain = (group_size * cvf - gap) % cnunits, true)
>
> in terms of how the &&s line up.
Yeah - I'll fix before pushing.
Thanks,
Richard.
> Thanks,
> Richard
>
> > + && ((cpart_size = (1 << ceil_log2 (cremain)))
> > + != cnunits)
> > + && vector_vector_composition_type
> > + (vectype, cnunits / cpart_size,
> > + &half_vtype) == NULL_TREE))))
> > {
> > if (dump_enabled_p ())
> > dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
> > @@ -11599,6 +11608,27 @@ vectorizable_load (vec_info *vinfo,
> > gcc_assert (new_vtype
> > || LOOP_VINFO_PEELING_FOR_GAPS
> > (loop_vinfo));
> > + /* But still reduce the access size to the next
> > + required power-of-two so peeling a single
> > + scalar iteration is sufficient. */
> > + unsigned HOST_WIDE_INT cremain;
> > + if (remain.is_constant (&cremain))
> > + {
> > + unsigned HOST_WIDE_INT cpart_size
> > + = 1 << ceil_log2 (cremain);
> > + if (known_gt (nunits, cpart_size)
> > + && constant_multiple_p (nunits, cpart_size,
> > + &num))
> > + {
> > + tree ptype;
> > + new_vtype
> > + = vector_vector_composition_type (vectype,
> > + num,
> > + &ptype);
> > + if (new_vtype)
> > + ltype = ptype;
> > + }
> > + }
> > }
> > }
> > tree offset
>
--
Richard Biener <[email protected]>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)