Passing the complex args in the GPR's

David Edelsohn dje.gcc at gmail.com
Wed Jun 7 03:33:30 AEST 2023


On Tue, Jun 6, 2023 at 1:08 PM Umesh Kalappa via Gcc <gcc at gcc.gnu.org>
wrote:

> Hi Segher ,
>
> >>What did you expect, what happened instead?
> For example the complex args are passed in GPR's for  cexp in the case
> GCC and Clang uses  caller memory .
>
> for reference : https://godbolt.org/z/MfMz3cTe7
>
> We have cross tools  like some of libraries built  using  the GCC and
> some use Clang .
>
> We approached Clang developers on this behaviour (Why stack , not the
> FPR's registers like PPC64)  and they are not going to change this
> behaviour, and asked us to refer back to GCC ,hence this email thread.
>
> Question is : Why does GCC choose to use GPR's here and have any
> reference to support this decision  ?
>

The use of GPRs to pass complex floating point arguments was an early
implementation mistake -- the parameter passing code missed the
enumeration of a type.  The behavior cannot be changed and corrected
without breaking the ABI.

I don't know what you mean by "support this decision".  It was not
intentionally chosen through careful performance analysis or type system
design as the preferred method to pass complex floating point values.  The
initial implementation was wrong and not discovered until it was too late.
The reference to support this is that one cannot break the ABI without
causing chaos in the ecosystem.

Thanks, David


>
> Thank you
> ~Umesh
>
>
>
> On Tue, Jun 6, 2023 at 10:16 PM Segher Boessenkool
> <segher at kernel.crashing.org> wrote:
> >
> > Hi!
> >
> > On Tue, Jun 06, 2023 at 08:35:22PM +0530, Umesh Kalappa wrote:
> > > Hi Adnrew,
> > > Thank you for the quick response and for PPC64 too ,we do have
> > > mismatches in ABI b/w complex operations like
> > > https://godbolt.org/z/bjsYovx4c .
> > >
> > > Any reason why GCC chose to use GPR 's here ?
> >
> > What did you expect, what happened instead?  Why did you expect that,
> > and why then is it an error what did happen?
> >
> > You used -O0.  As long as the code works, all is fine.  But unoptimised
> > code frequently is hard to read, please use -O2 instead?
> >
> > As Andrew says, why did you use -m32 for GCC but -m64 for LLVM?  It is
> > hard to compare those at all!  32-bit PowerPC Linux ABI (based on 32-bit
> > PowerPC ELF ABI from 1995, BE version) vs. 64-bit ELFv2 ABI from 2015
> > (LE version).
> >
> >
> > Segher
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20230606/13aa44fc/attachment.htm>


More information about the Linuxppc-dev mailing list