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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|rtl-optimization            |target
             Target|                            |powerpc

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
There is targetm.sched.reassociation_width which specifies how re-assocation
should make such sequence "wide".  Andrew is correct that we don't do this
for any types that are TYPE_OVERFLOW_UNDEFINED.

And powerpc has

static int
rs6000_reassociation_width (unsigned int opc ATTRIBUTE_UNUSED,
                            machine_mode mode)
{
  switch (rs6000_tune)
    {
    case PROCESSOR_POWER8:
    case PROCESSOR_POWER9:
    case PROCESSOR_POWER10:
      if (DECIMAL_FLOAT_MODE_P (mode))
        return 1;
      if (VECTOR_MODE_P (mode))
        return 4;
      if (INTEGRAL_MODE_P (mode))
        return 1;

thus you get width 1 which means a linear chain (even if the user wrote
a tree).

Note RTL doesn't do any such thing like re-assocation (I guess in principle
scheduling could, and that's the only place where it would make sense
on RTL).

Reply via email to