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

--- Comment #18 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #17)
> Btw, I think that
> 
> (int) ((long unsigned int) q + D.2078)
> 
> to
> 
> (int) ((unsigned int) q + (unsigned int) D.2078)
> 
> doesn't look like an always profitable pattern on GIMPLE (more stmts).  Also
> take into consideration what targets PROMOTE_MODE (mode-of-q/D.2078) do
> and prefer types according to that.
> 
> The vectorizer prefers single type sizes throughout computations to avoid
> re-packing.

Which is why the proposal was to do demotion early and promote back depending
on machine description (and, perhaps on separate IL copy, in between ifcvt and
vectorizer also promote to decrease re-packing).  The demotion would help with
avoiding unnecessary computations (e.g. those affecting just the high bits),
canonicalizing the IL and in some cases allowing bigger parts of computations
with the same type bitsizes, and promotion would be an attempt to help with
sub-word arithmetics on word only arithmetics targets, etc.
Dunno why Kai has stopped working on that :(.

Reply via email to