Date: Sun, 21 Oct 2001 03:06:26 -0700 From: Peter Wemm <peter@wemm.org> To: Marcel Moolenaar <marcel@xcllnt.net> Cc: Doug Rabson <dfr@nlsystems.com>, ia64@FreeBSD.ORG Subject: Re: Hazards [was: Re: cvs commit: src/sys/ia64/ia64 sal.c] Message-ID: <20011021100626.291A038CC@overcee.netplex.com.au> In-Reply-To: <20011021020106.A540@dhcp01.pn.xcllnt.net>
index | next in thread | previous in thread | raw e-mail
Marcel Moolenaar wrote:
> On Sun, Oct 21, 2001 at 01:16:52AM -0700, Peter Wemm wrote:
> > >
> > > Which leaves:
> > > HAZARD (certain) WAW Dependency between 400000000003e500.0 and 4000000000
03e5
> > 10.2 on p6
> > >
> > > According to ski this gives:
> > > 400000000003e500 cmp.ge p6=r0,r33
> > MIB
> > > nop.i 0x0
> > > ! (p6) br.ret.spnt.few b0
> > > 400000000003e510 nop.m 0x0
> > MII
> > > mov.i r14=ar.lc
> > > cmp.ltu p6=17,r33
> > >
> > > This is clearly a hazard.
> >
> > Is it? The ia64 manual I have suggests that this special case is
> > allowed.. volume 1, section 3.4.1.. It talks about how branches
> > that use predicates set in the same bundle are allowed.. Speculation
> > deals with it. But I get a brain implosion when reading that stuff. :-)
>
> :-)
>
> It's not the branch that's causing the hazard. It's the second compare
> (cmp.ltu) that's causing a hazard with the first compare (cmp.ge).
> If the first compare yields false, the branch is not taken and the
> second compare will define p6 in the same instruction group.
Doh! I actually looked at that, but the leading ! threw me. For some
reason I let it convince me that was what was being flagged. :-)
binutils-2.11.2 flags a disturbing number of dependency violations in code
produced by the old compiler.
Cheers,
-Peter
--
Peter Wemm - peter@FreeBSD.org; peter@yahoo-inc.com; peter@netplex.com.au
"All of this is for nothing if we don't go to the stars" - JMS/B5
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ia64" in the body of the message
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20011021100626.291A038CC>
