[Bug tree-optimization/88828] Inefficient update of the first element of vector registers

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jan 14 06:54:00 GMT 2019


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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Target|                            |x86_64
          Component|target                      |tree-optimization

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I think there are two issues here (maybe only one since I have not tested one
of them).

The first is not recognizing:
typedef float __v4sf __attribute__ ((__vector_size__ (16)));

__v4sf 
foo (__v4sf x, float f)
{
  __v4sf y =  __extension__ (__v4sf)
  { f, x[1], x[2], x[3] };
  return y;
}

is the same as:
__v4sf 
foo1 (__v4sf x, float f)
{
  __v4sf y =  x;
  y[0] = f;
  return y;
}

This is a generic tree optimization issue.
The second is if foo1 is not optimized to what you want it to be.  That would
be a target issue.


More information about the Gcc-bugs mailing list