On 9/26/23 09:30, Richard Biener via Gcc wrote:

On Mon, Sep 25, 2023 at 5:17 PM Sylvain Noiry via Gcc <gcc@gcc.gnu.org> wrote:

As I said at the end of the presentation, we have written a paper which
explains
our implementation in details. You can find it on the wiki page of the
Cauldron
(https://gcc.gnu.org/wiki/cauldron2023talks?action=AttachFile&do=view&target=Exposing+Complex+Numbers+to+Target+Back-ends+%28paper%29.pdf).

Thanks for the detailed presentation at the Cauldron.

My personal summary is that I'm less convinced delaying lowering is
the way to go.

Thanks Sylvain for the quick summary of the discussion - it helps a great deal now that the discussion is still fresh in our memory.

Some thought I came up with (of course, only after the end of the conference):

In what way is the handling of the complex type different from that of the 128 bit real (i.e., float) type ?

Both are not implemented on most architectures; on most they require two registers (or possibly two memory location that do not necessarily have to be adjacent) to be implemented.

Yet both are supported by the middle end - consider the clear equivalence of the handling of variables a and b when looking at the result of -fdump-tree-ssa (on x86_64) for:

cat 128.f90
parameter (iq=kind(1q0))
real(kind=iq) :: a, b
read*, a, b
print*, a / b
end

and:

cat complex.f90
complex a,b
read*,a,b
print*,a/b
end

Hope this helps for a continuing fruitful discussion.

Kind regards,

--
Toon Moene - e-mail: t...@moene.org - phone: +31 346 214290
Saturnushof 14, 3738 XG  Maartensdijk, The Netherlands

Reply via email to