> -----Original Message-----
> From: Brian Brooks [mailto:[email protected]]
> Sent: Friday, January 20, 2017 7:47 PM
> To: Francois Ozog <[email protected]>
> Cc: Bill Fischofer <[email protected]>; Joe Savage
> <[email protected]>; Maxim Uvarov <[email protected]>; Savolainen,
> Petri (Nokia - FI/Espoo) <[email protected]>; lng-
> [email protected]; nd <[email protected]>
> Subject: Re: [lng-odp] 32-bit support in examples
> 
> CAS is a universal primitive in the sense that you can construct those
> RMW ops by speculatively computing the updated value and the CAS to
> atomically update the value (in a retry loop).  LL/SC also universal,
> but different behavior.  Both are not the same as an atomic op
> performed deeper in the memory system.
> 
> To Petri's point about ODP not supporting 128b atomics, which compiler
> does not support the __atomic_xxx built-ins or the __int128 128b
> variable?  This has impact on portability and should be explicitly
> known; is it the microblaze compiler?



Any atomics can be emulated in SW (using compiler built-ins or locks directly). 
The point here is the missing HW support:
 * E.g. MIPS, Power, ARMv7 do not have 128 bit CAS
 * 128 bit fetch-and-add is not supported in any of the architectures

We need to ensure on any operations added that those can be implemented 
efficiently on most of the targets.

-Petri


> 
> On Fri, Jan 20, 2017 at 7:36 AM, Francois Ozog <[email protected]>
> wrote:
> > well, yes. But that is the only atomic operation supported. No add, sub,
> > inc, xadd, bit operations....
> >
> > Le ven. 20 janv. 2017 à 14:31, Joe Savage <[email protected]> a écrit :
> >
> >> > I wonder what processor supports 128 bits atomics. As far as I know
> Intel
> >>
> >> > does not support it. Lock prefix is not allowed on SSE instructions.
> >>
> >>
> >>
> >> Actually, Intel does support them through a locked cmpxchg16b. And
> ARMv8
> >>
> >> through load exclusive pair and store exclusive pair.
> >>
> >>

Reply via email to