https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116463

--- Comment #23 from rguenther at suse dot de <rguenther at suse dot de> ---
> Am 23.11.2024 um 13:20 schrieb tnfchris at gcc dot gnu.org 
> <gcc-bugzi...@gcc.gnu.org>:
> 
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116463
> 
> --- Comment #22 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
> Ok, so the problem with the ones on trunk isn't necessarily the
> canonicalization itself but that our externals handling is a bit shallow.
> 
> On externals we determine that we have no information on the DF and return 
> TOP.
> This is because DR analysis doesn't try to handle externals since they're not
> part of the loop.
> 
> However all we need to know for complex numbers is whether the externals are
> loaded from the same place and the order of them.
> 
> concretely the loop pre-header is:
> 
>  <bb 2> [local count: 10737416]:
>  b$real_11 = REALPART_EXPR <b_15(D)>;
>  b$imag_10 = IMAGPART_EXPR <b_15(D)>;
>  _53 = -b$imag_10;
> 
> and the loop body:
> 
>  <bb 3> [local count: 1063004408]:
>  ...
> 
>  _23 = REALPART_EXPR <*_5>;
>  _24 = IMAGPART_EXPR <*_5>;
>  _27 = _24 * _53;
>  _28 = _23 * _53;
> 
> codegen before after:
> 
> {_24, _23} * { _53, _53 }
> 
> and after
> 
> { _24, _24 } * { _53, b$real_11 }
> 
> Before we were able to easily tell that the order for the multiply would be
> IMAG, REAL.
> In the after (GCC 15) case that information is there, but requires us to 
> follow
> the externals.
> 
> Richi what do you think about extending externals handling in linear_loads_p 
> to
> follow all external ops and if they load from the same memref to figure out 
> the
> "virtual lane permute"?

Externs do not have a permute as we build them from scalars.  So any permute
can be trivially imposed on them - rather than TOP they should be BOTTOM.  Of
course there’s also no advantage of imposing a permute on them.

> We can store the info in a new externals cache (to avoid re-walking externals
> we already walked, as perm_cache stores slp nodes)  and the permute for the
> node in the perm_cache as we do for any cached lookups today?
> 
> This would also fix the other tests Andrew added in
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116463#c4
> 
> --
> You are receiving this mail because:
> You are on the CC list for the bug.

Reply via email to