Hello,
With respect to atomic operations in assembly, I can see three source
files, for the same AMD64 architecture.
1. opal/asm/base/AMD64.asm
2. opal/include/opal/sys/amd64/atomic.h
3. opal/include/opal/sys/atomic_impl.h
What is the need for three files ? How are they inter-related ?
Please
Hello,
I did few more experiments. Built-in atomics are disabled by default and
can be enabled by "--enable-builtin-atomics". With this option, a
different atomic file is include (I mean, different from the other three
mentioned in the earlier email).
opal/include/opal/sys/sync_builtin/atomic.
Sreenihdi,
Maintenance of the "other" files is, at least, required for older compilers
(including several non-GNU ones) which have support for GCC inline ASM
constructs but do not include the __sync functions.
Additionally, the __sync functions always include a full memory fence while
there are p