Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Problems building Open MPI 1.4.1 with Pathscale
From: Ake Sandgren (ake.sandgren_at_[hidden])
Date: 2010-02-10 09:04:00


On Wed, 2010-02-10 at 08:21 -0500, Jeff Squyres wrote:
> On Feb 10, 2010, at 7:47 AM, Ake Sandgren wrote:
>
> > According to people who knows asm statements fairly well (compiler
> > developers), it should be
>
> > static inline int opal_atomic_cmpset_32( volatile int32_t *addr,
> > int32_t oldval, int32_t newval)
> > {
> > unsigned char ret;
> > __asm__ __volatile__ (
> > SMPLOCK "cmpxchgl %3,%2 \n\t"
> > "sete %0 \n\t"
> > : "=qm" (ret), "=a" (oldval), "=m" (*addr)
> > : "q"(newval), "2"(*addr), "1"(oldval)
> > : "memory", "cc");
> >
> > return (int)ret;
> > }
>
> Disclaimer: I know almost nothing about assembly.
>
> I know that OMPI's asm is a carefully crafted set of assembly that works across a broad range of compilers. So what might not be "quite right" for one compiler may actually be there because another compiler needs it.
>
> That being said, if the changes above are for correctness, not neatness/style/etc., I can't speak for that...

The above should be correct for gcc style unless i misunderstood them.

Quoting from their reply:
'it should be "memory", "cc" since you also have to tell gcc you're
clobbering the EFLAGS'

And i don't know asm either so...

-- 
Ake Sandgren, HPC2N, Umea University, S-90187 Umea, Sweden
Internet: ake_at_[hidden]   Phone: +46 90 7866134 Fax: +46 90 7866126
Mobile: +46 70 7716134 WWW: http://www.hpc2n.umu.se