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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org
            Summary|Unoptimal code for __negdi2 |[11/12 Regression]
                   |(and others) from libgcc2   |Unoptimal code for __negdi2
                   |due to unwanted             |(and others) from libgcc2
                   |vectorization               |due to unwanted
                   |                            |vectorization
           Priority|P3                          |P2
   Target Milestone|---                         |11.3

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
With -O3 started with
r11-3204-gc9de716a59c873859df3b3e1fbb993200fce5a73
With -O2 most likely with
r12-4240-g2b8453c401b699ed93c085d0413ab4b5030bcdb8
Not sure if it is better not to vectorize it or be able to undo the
vectorization.
In particular in this case, *.optimized dump has:
  _14 = {_1, _5};
  _8 = VIEW_CONVERT_EXPR<__int128>(_14);
where
  vector(2) long int _14;
I guess it depends on how _8 is then used, if it is going to be used in some
vector context, perhaps the above can be a win, but when the __int128 is
returned as __int128, on targets that return in a pair of registers that is
never beneficial, I bet if it is stored into memory, it will be hardly ever
beneficial etc.

Reply via email to