comp.lang.ada
 help / color / mirror / Atom feed
From: Georg Bauhaus <rm.dash-bauhaus@futureapps.de>
Subject: Re: GNAT and register allocation
Date: Fri, 20 Apr 2012 17:34:48 +0200
Date: 2012-04-20T17:34:48+02:00	[thread overview]
Message-ID: <4f918218$0$6557$9b4e6d93@newsspool4.arcor-online.net> (raw)
In-Reply-To: <jmrpej$cao$1@speranza.aioe.org>

On 20.04.12 15:48, Markus Schöpflin wrote:

> As long as the functions are not inlined, I'd expect them to obey the calling
> convention of the ABI of the platform on which they are compiled. Therefore
> you won't see A using xmm0/1 and B using xmm2/3.

Ah, I see. When I add two more parameters, then xmm2 and xmm3
will appear. This would agree with my naive interpretation of
"x64 fpt values are passed in registers xmm{0..3}, others on
the stack." So I guess the ABI says that one may not select
arbitrary subsets from xmm{0..3} for passing just two parameters?

> As you can see, the xmmN registers up to xmm6 are used. Do you get different
> results?

Some results are very similar to yours. They depend on options, compiler,
OS, and CPU, though.

Some variance in addition results from both the depth and the amount of
"recursive expansion". What I am after, then, is how to control
inline expansion, insofar as it affects sets of registers in a single
compilation unit. (Assuming I can do better than GCC's heuristic
apparatus.) I must use one set of options for an entire program
in this case.

I wish there were a pragma that is the opposite of pragma Inline.
After all, there is a pair Suppress/Unsuppress, too.



  reply	other threads:[~2012-04-20 15:35 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-20 10:21 GNAT and register allocation Georg Bauhaus
2012-04-20 11:17 ` Georg Bauhaus
2012-04-20 13:48   ` Markus Schöpflin
2012-04-20 15:34     ` Georg Bauhaus [this message]
2012-04-21 12:10       ` Stephen Leake
2012-04-22 16:43         ` Georg Bauhaus
2012-04-22 17:39           ` Jacob Sparre Andersen
2012-04-22 21:14             ` Georg Bauhaus
2012-04-24 12:24               ` Stephen Leake
2012-04-24 13:27                 ` Georg Bauhaus
2012-04-24 18:40                   ` "gnatchop" and ".gpr" files? (Was: GNAT and register allocation) Jacob Sparre Andersen
2012-04-25 11:51                   ` GNAT and register allocation Stephen Leake
2012-04-25 12:54                     ` Georg Bauhaus
2012-04-26 10:55                       ` Stephen Leake
2012-04-26 17:15                         ` Georg Bauhaus
2012-04-24 12:21           ` Stephen Leake
2012-04-22 17:30         ` Georg Bauhaus
2012-04-21 15:41       ` Florian Weimer
2012-04-22 16:53         ` Georg Bauhaus
2012-04-22 20:53           ` gautier_niouzes
2012-04-22 21:24             ` Georg Bauhaus
2012-04-23  8:43               ` gautier_niouzes
2012-04-23 16:46                 ` Georg Bauhaus
2012-04-23  9:11               ` gautier_niouzes
2012-04-23 16:47                 ` Georg Bauhaus
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox