From: Segher Boessenkool <segher@kernel.crashing.org>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: paulmck@linux.vnet.ibm.com, heiko.carstens@de.ibm.com,
horms@verge.net.au, linux-kernel@vger.kernel.org,
csnook@redhat.com, rpjday@mindspring.com, netdev@vger.kernel.org,
ak@suse.de, cfriesen@nortel.com, akpm@linux-foundation.org,
torvalds@linux-foundation.org, jesper.juhl@gmail.com,
linux-arch@vger.kernel.org, zlynx@acm.org,
schwidefsky@de.ibm.com, davem@davemloft.net,
wensong@linux-vs.org, wjiang@resilience.com
Subject: Re: [PATCH 1/24] make atomic_read() behave consistently on alpha
Date: Sat, 11 Aug 2007 02:38:40 +0200 [thread overview]
Message-ID: <ef7e94b08a6515d33039d187e04db5db@kernel.crashing.org> (raw)
In-Reply-To: <20070811000029.GA12779@gondor.apana.org.au>
>> That means GCC cannot compile Linux; it already optimises
>> some accesses to scalars to smaller accesses when it knows
>> it is allowed to. Not often though, since it hardly ever
>> helps in the cost model it employs.
>
> Please give an example code snippet + gcc version + arch
> to back this up.
unsigned char f(unsigned long *p)
{
return *p & 1;
}
with both
powerpc64-linux-gcc (GCC) 4.3.0 20070731 (experimental)
and
powerpc64-linux-gcc-4.2.0 (GCC) 4.2.0
(sorry, I don't have anything newer or older right now; if you
really care, I can test with those too)
generate (in 64-bit mode):
.L.f:
lbz 3,7(3)
rldicl 3,3,0,63
blr
and in 32-bit mode:
f:
stwu 1,-16(1)
nop
nop
lbz 3,3(3)
addi 1,1,16
rlwinm 3,3,0,31,31
blr
(the nops are because I use --with-cpu=970).
But perhaps you do not care for PowerPC, in which case:
i686-linux-gcc (GCC) 4.2.0 20060410 (experimental)
(sorry for the old version, I don't build x86 compilers
all that often; also I don't have a 64-bit version right
now):
f:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
popl %ebp
movzbl (%eax), %eax
andl $1, %eax
ret
If you want testing with any other versions, and/or for
any other target architecture, I can do that; it takes a
few minutes to build a compiler.
It is quite hard to build a testcase that reads more than
one part of the "long", since for small testcases the
compiler will almost always be smart enough to do one
bigger read instead; but it certainly isn't inconceivable,
and anyway the compiler would be fully in its right to do
reads non-atomically if not instructed otherwise.
Segher
next prev parent reply other threads:[~2007-08-11 0:39 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-09 13:24 [PATCH 1/24] make atomic_read() behave consistently on alpha Chris Snook
2007-08-09 14:32 ` Paul E. McKenney
2007-08-09 14:53 ` Chris Snook
2007-08-09 15:04 ` Paul E. McKenney
2007-08-09 15:24 ` Chris Snook
2007-08-09 15:50 ` Segher Boessenkool
2007-08-09 16:20 ` Chris Snook
2007-08-09 18:38 ` Segher Boessenkool
2007-08-09 19:05 ` Chris Snook
2007-08-09 19:19 ` Segher Boessenkool
2007-08-09 19:25 ` Geert Uytterhoeven
2007-08-09 19:47 ` Chris Snook
2007-08-09 23:02 ` Segher Boessenkool
2007-08-09 16:10 ` Paul E. McKenney
2007-08-09 16:36 ` Chris Snook
2007-08-09 16:58 ` Paul E. McKenney
2007-08-09 17:14 ` Chris Snook
2007-08-09 17:41 ` Paul E. McKenney
2007-08-09 18:13 ` Chris Snook
2007-08-09 18:45 ` Paul E. McKenney
2007-08-09 19:24 ` Chris Snook
2007-08-10 1:28 ` Paul E. McKenney
2007-08-10 19:49 ` Chris Snook
2007-08-10 20:26 ` Paul E. McKenney
2007-08-09 19:17 ` Segher Boessenkool
2007-08-09 18:51 ` Segher Boessenkool
2007-08-09 19:30 ` Chris Snook
2007-08-10 8:21 ` Herbert Xu
2007-08-10 9:08 ` Andi Kleen
2007-08-10 15:02 ` Paul E. McKenney
2007-08-10 20:07 ` Segher Boessenkool
2007-08-11 0:00 ` Herbert Xu
2007-08-11 0:38 ` Segher Boessenkool [this message]
2007-08-11 0:43 ` Herbert Xu
2007-08-11 0:50 ` Segher Boessenkool
2007-08-11 4:38 ` Valdis.Kletnieks
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ef7e94b08a6515d33039d187e04db5db@kernel.crashing.org \
--to=segher@kernel.crashing.org \
--cc=ak@suse.de \
--cc=akpm@linux-foundation.org \
--cc=cfriesen@nortel.com \
--cc=csnook@redhat.com \
--cc=davem@davemloft.net \
--cc=heiko.carstens@de.ibm.com \
--cc=herbert@gondor.apana.org.au \
--cc=horms@verge.net.au \
--cc=jesper.juhl@gmail.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=rpjday@mindspring.com \
--cc=schwidefsky@de.ibm.com \
--cc=torvalds@linux-foundation.org \
--cc=wensong@linux-vs.org \
--cc=wjiang@resilience.com \
--cc=zlynx@acm.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.