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

--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
That said, I'm afraid I don't really understand what wrong happens with the
patch I've attached.
Trying something like:
long double
foo (void)
{
  register long double f0 asm ("f0");
  f0 = 1.0L;
  f0 += 127.L;
  f0 *= 32.L;
  return f0;
}
with -O0 -march=z14 -mlong-double-128 so that it is not all folded immediately
shows in the end the computations are done in vector registers.
And another thing to try is intermix that with inline asm expecting those in
"+f" so that intermediate results are pushed to the floating point register
pair.

Reply via email to