public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/97887] New: Failure to optimize neg plus div to avoid using x87 floating point stack
@ 2020-11-18  9:35 gabravier at gmail dot com
  2020-11-18 10:33 ` [Bug target/97887] [10/11 Regression] " rguenth at gcc dot gnu.org
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: gabravier at gmail dot com @ 2020-11-18  9:35 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 97887
           Summary: Failure to optimize neg plus div to avoid using x87
                    floating point stack
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gabravier at gmail dot com
  Target Milestone: ---

float f(float a)
{
    return -a / a;
}

On x86 -O3, LLVM outputs this:

.LCPI0_0:
  .long 0x80000000 # float -0
  .long 0x80000000 # float -0
  .long 0x80000000 # float -0
  .long 0x80000000 # float -0
f(float):
  movaps xmm1, xmmword ptr [rip + .LCPI0_0] # xmm1 =
[-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0]
  xorps xmm1, xmm0
  divss xmm1, xmm0
  movaps xmm0, xmm1
  ret

GCC outputs this:

f(float):
  movss DWORD PTR [rsp-4], xmm0
  fld DWORD PTR [rsp-4]
  movaps xmm1, xmm0
  fchs
  fstp DWORD PTR [rsp-4]
  movss xmm0, DWORD PTR [rsp-4]
  divss xmm0, xmm1
  ret

I'm *pretty sure* that loading the value into the x87 stack (especially mixed
with SSE instructions) is much slower than using SSE instructions for this.

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-11-19  9:00 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-18  9:35 [Bug target/97887] New: Failure to optimize neg plus div to avoid using x87 floating point stack gabravier at gmail dot com
2020-11-18 10:33 ` [Bug target/97887] [10/11 Regression] " rguenth at gcc dot gnu.org
2020-11-18 10:33 ` rguenth at gcc dot gnu.org
2020-11-18 10:42 ` rguenth at gcc dot gnu.org
2020-11-18 12:11 ` ubizjak at gmail dot com
2020-11-18 13:54 ` rguenth at gcc dot gnu.org
2020-11-18 13:56 ` ubizjak at gmail dot com
2020-11-18 13:58 ` rguenth at gcc dot gnu.org
2020-11-18 15:09 ` ubizjak at gmail dot com
2020-11-19  9:00 ` rguenth at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).