From: Samuel Tardieu <sam@ada.eu.org>
To: Gautier <Gautier.deMontmollin@Maths.UniNe.CH>
Subject: Re: C like op= proposal
Date: 1999/08/17
Date: 1999-08-17T18:01:23+00:00 [thread overview]
Message-ID: <87emh2l218.fsf@antinea.enst.fr> (raw)
In-Reply-To: 37B7D172.DCE02FFA@Maths.UniNe.CH
>>>>> "Gautier" == Gautier <Gautier.deMontmollin@Maths.UniNe.CH> writes:
Gautier> a(b(c,d+e(f,g)).h(i,j)) := a(b(c,d+e(f,g)).h(i,j)) + 1;
Gautier> which can be horribily long and unlikely to be catched by the
Gautier> optimizer -> 2x too slow (at least: the extra code makes a
Gautier> penalty for processor cache).
Where did you get the impression that the optimizer would miss this?
For example, using GNAT, the following expression generates: (ix86 code)
t__pXb:
movl t__jXb,%edx |
decl %edx |
movl t__iXb,%eax |
decl %eax |
leal (%eax,%eax,4),%eax |
sall $3,%eax |
leal (%eax,%edx,4),%edx |
movl t__gXb,%ecx |
decl %ecx | Address computation
movl t__fXb,%eax |
decl %eax |
leal (%eax,%eax,4),%eax |
sall $3,%eax |
movl t__eXb(%eax,%ecx,4),%eax |
addl t__dXb,%eax |
imull $400,%eax,%eax |
leal -400(%edx,%eax),%eax |
imull $4000,t__cXb,%edx |
movl t__bXb-4000(%eax,%edx),%eax |
decl %eax |
incl t__aXb(,%eax,4) <--- Increment done here!
ret
The code used to generate this was: (-O3 -fomit-frame-pointer -gnatp)
package T is
pragma Elaborate_Body;
end T;
package body T is
pragma Warnings (Off); -- Uninitialized variables
type Two_Ints is array (Integer range <>, Integer range <>) of Integer;
type Rec is record
H : Two_Ints (1 .. 10, 1 .. 10);
end record;
type Two_Recs is array (Integer range <>, Integer range <>) of Rec;
A : array (1 .. 10) of Integer;
B : Two_Recs (1 .. 10, 1 .. 10);
C : Integer;
D : Integer;
E : Two_Ints (1 .. 10, 1 .. 10);
F : Integer;
G : Integer;
I : Integer;
J : Integer;
procedure P is
begin
a(b(c,d+e(f,g)).h(i,j)) := a(b(c,d+e(f,g)).h(i,j)) + 1;
end P;
end T;
next prev parent reply other threads:[~1999-08-17 0:00 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-08-15 0:00 C like op= proposal Brian Rogoff
1999-08-15 0:00 ` Ray Blaak
1999-08-15 0:00 ` Brian Rogoff
1999-08-16 0:00 ` Gautier
1999-08-17 0:00 ` John Duncan
1999-08-17 0:00 ` Gautier
1999-08-17 0:00 ` Samuel Tardieu [this message]
1999-08-17 0:00 ` Andi Kleen
1999-08-18 0:00 ` Robert Dewar
1999-08-17 0:00 ` Brian Rogoff
1999-08-18 0:00 ` Ted Dennison
1999-08-18 0:00 ` Jeff Carter
1999-08-18 0:00 ` Keith Thompson
1999-08-19 0:00 ` Tarjei T. Jensen
1999-08-19 0:00 ` tmoran
1999-08-19 0:00 ` Lance Kibblewhite
1999-08-19 0:00 ` Robert Dewar
1999-08-20 0:00 ` P.S. Norby
1999-08-21 0:00 ` Robert Dewar
1999-08-19 0:00 ` Ted Dennison
1999-08-19 0:00 ` Michael F. Yoder
1999-08-21 0:00 ` Keith Thompson
1999-08-18 0:00 ` Robert I. Eachus
1999-08-18 0:00 ` Gautier
1999-08-18 0:00 ` Robert Dewar
1999-08-18 0:00 ` Brian Rogoff
1999-08-19 0:00 ` Robert Dewar
1999-08-21 0:00 ` Brian Rogoff
1999-08-23 0:00 ` Robert A Duff
1999-08-18 0:00 ` Andi Kleen
1999-08-17 0:00 ` Gautier
1999-08-18 0:00 ` Gautier
1999-08-16 0:00 ` Robert Dewar
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox