public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug translation/109132] New: Apple M1 floating point bug when optimizing
@ 2023-03-14 20:07 muecker at gwdg dot de
  2023-03-14 20:10 ` [Bug target/109132] " pinskia at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: muecker at gwdg dot de @ 2023-03-14 20:07 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 109132
           Summary: Apple M1 floating point bug when optimizing
           Product: gcc
           Version: 12.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: translation
          Assignee: unassigned at gcc dot gnu.org
          Reporter: muecker at gwdg dot de
  Target Milestone: ---

There seems to be a floating point error when optimizing on Apple M1. When
taking the conjugate of a complex number and multiplying with itself, then the
imaginary part should be zero.

% cat bug.c         

#include <stdio.h>
#include <complex.h>

__attribute__((noinline))
complex float f(complex float a, complex float b)
{
        return a * conjf(b);
}

int main()
{
        complex float x = -0x1.f5cf72p-3 + 0x1.f0f84ap-2i;
        complex float y = f(x, x);
        printf("%a %a\n", crealf(y), cimagf(y));
        return (0. != cimagf(y));
}

% gcc-12 bug.c      
% ./a.out && echo ok
0x1.2eab1ep-2 0x0p+0
ok
% gcc-12 -O1 bug.c  
% ./a.out && echo ok
0x1.2eab1ep-2 0x0p+0
ok
% gcc-12 -O2 bug.c  
% ./a.out && echo ok
0x1.2eab1ep-2 0x1.1b990cp-29

% gcc-12 --version
gcc-12 (Homebrew GCC 12.2.0) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

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

* [Bug target/109132] Apple M1 floating point bug when optimizing
  2023-03-14 20:07 [Bug translation/109132] New: Apple M1 floating point bug when optimizing muecker at gwdg dot de
@ 2023-03-14 20:10 ` pinskia at gcc dot gnu.org
  2023-03-14 20:11 ` pinskia at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-03-14 20:10 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |INVALID
             Status|UNCONFIRMED                 |RESOLVED

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
ubuntu@ubuntu:~\# ~/upstream-gcc/bin/gcc t.c -O2 -ffp-contract=off
ubuntu@ubuntu:~\# ./a.out
0x1.2eab1ep-2 0x0p+0
ubuntu@ubuntu:~\# ~/upstream-gcc/bin/gcc t.c -O2
ubuntu@ubuntu:~\# ./a.out
0x1.2eab1ep-2 0x1.1b990cp-29



NOT a bug. the use of FMA increases precission here ...

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

* [Bug target/109132] Apple M1 floating point bug when optimizing
  2023-03-14 20:07 [Bug translation/109132] New: Apple M1 floating point bug when optimizing muecker at gwdg dot de
  2023-03-14 20:10 ` [Bug target/109132] " pinskia at gcc dot gnu.org
@ 2023-03-14 20:11 ` pinskia at gcc dot gnu.org
  2023-03-14 20:14 ` pinskia at gcc dot gnu.org
  2023-03-14 20:29 ` muecker at gwdg dot de
  3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-03-14 20:11 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #1)
> ubuntu@ubuntu:~\# ~/upstream-gcc/bin/gcc t.c -O2 -ffp-contract=off
> ubuntu@ubuntu:~\# ./a.out
> 0x1.2eab1ep-2 0x0p+0
> ubuntu@ubuntu:~\# ~/upstream-gcc/bin/gcc t.c -O2
> ubuntu@ubuntu:~\# ./a.out
> 0x1.2eab1ep-2 0x1.1b990cp-29
> 
> 
> 
> NOT a bug. the use of FMA increases precission here ...

Note this was done on aarch64-linux-gnu with a GCC built from 20230310.

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

* [Bug target/109132] Apple M1 floating point bug when optimizing
  2023-03-14 20:07 [Bug translation/109132] New: Apple M1 floating point bug when optimizing muecker at gwdg dot de
  2023-03-14 20:10 ` [Bug target/109132] " pinskia at gcc dot gnu.org
  2023-03-14 20:11 ` pinskia at gcc dot gnu.org
@ 2023-03-14 20:14 ` pinskia at gcc dot gnu.org
  2023-03-14 20:29 ` muecker at gwdg dot de
  3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-03-14 20:14 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Note you get the same results on x86_64 with  -mfma too.

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

* [Bug target/109132] Apple M1 floating point bug when optimizing
  2023-03-14 20:07 [Bug translation/109132] New: Apple M1 floating point bug when optimizing muecker at gwdg dot de
                   ` (2 preceding siblings ...)
  2023-03-14 20:14 ` pinskia at gcc dot gnu.org
@ 2023-03-14 20:29 ` muecker at gwdg dot de
  3 siblings, 0 replies; 5+ messages in thread
From: muecker at gwdg dot de @ 2023-03-14 20:29 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Martin Uecker <muecker at gwdg dot de> ---
Seems you are right. Thanks! 

I get it for gcc-10 but not gcc-12 with -mfma on x86.

Apparently, WG14 made a change at some point to allow this.  But GCC does not 
implement the pragma to turn it off...

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

end of thread, other threads:[~2023-03-14 20:29 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-14 20:07 [Bug translation/109132] New: Apple M1 floating point bug when optimizing muecker at gwdg dot de
2023-03-14 20:10 ` [Bug target/109132] " pinskia at gcc dot gnu.org
2023-03-14 20:11 ` pinskia at gcc dot gnu.org
2023-03-14 20:14 ` pinskia at gcc dot gnu.org
2023-03-14 20:29 ` muecker at gwdg dot de

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).