36 #ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_PPC_GCC_H_ 37 #define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_PPC_GCC_H_ 39 #define ATOMICOPS_COMPILER_BARRIER() __asm__ __volatile__("" : : : "memory") 52 "lwarx %[prev],0,%[ptr] \n\t" 53 "cmpw 0,%[prev],%[old_value] \n\t" 55 "stwcx. %[new_value],0,%[ptr] \n\t" 58 : [prev]
"=&r"(prev),
"+m"(*ptr)
59 : [ptr]
"r"(ptr), [old_value]
"r"(old_value), [new_value]
"r"(new_value)
71 "lwarx %[old],0,%[ptr] \n\t" 72 "stwcx. %[new_value],0,%[ptr] \n\t" 74 : [old]
"=&r"(old),
"+m"(*ptr)
75 : [ptr]
"r"(ptr), [new_value]
"r"(new_value)
87 "lwarx %[temp],0,%[ptr] \n\t" 88 "add %[temp],%[increment],%[temp] \n\t" 89 "stwcx. %[temp],0,%[ptr] \n\t" 92 : [increment]
"r"(increment), [ptr]
"r"(ptr)
124 inline void MemoryBarrier() { __asm__ __volatile__(
"sync" : : :
"memory"); }
153 #undef ATOMICOPS_COMPILER_BARRIER 155 #endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_PPC_GCC_H_ Atomic32 Acquire_Load(volatile const Atomic32 *ptr)
Definition: atomicops_internals_arm64_gcc.h:167
void Acquire_Store(volatile Atomic32 *ptr, Atomic32 value)
Definition: atomicops_internals_arm64_gcc.h:149
Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32 *ptr, Atomic32 old_value, Atomic32 new_value)
Definition: atomicops_internals_arm64_gcc.h:52
const FieldDescriptor const OneofDescriptor value
Definition: descriptor.h:1717
void Release_Store(volatile Atomic32 *ptr, Atomic32 value)
Definition: atomicops_internals_arm64_gcc.h:154
EGLAttrib * value
Definition: eglext.h:120
Definition: __init__.py:1
Atomic32 Release_Load(volatile const Atomic32 *ptr)
Definition: atomicops_internals_arm64_gcc.h:180
Definition: document.h:393
Atomic32 Release_CompareAndSwap(volatile Atomic32 *ptr, Atomic32 old_value, Atomic32 new_value)
Definition: atomicops_internals_arm64_gcc.h:136
Atomic32 Barrier_AtomicIncrement(volatile Atomic32 *ptr, Atomic32 increment)
Definition: atomicops_internals_arm64_gcc.h:118
Definition: gflags_completions.h:115
Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32 *ptr, Atomic32 increment)
Definition: atomicops_internals_arm64_gcc.h:97
int32 Atomic32
Definition: atomicops.h:75
Definition: interfaces.idl:174
res
Definition: harness.py:111
temp
Definition: parse_delay_file.m:64
Atomic32 NoBarrier_AtomicExchange(volatile Atomic32 *ptr, Atomic32 new_value)
Definition: atomicops_internals_arm64_gcc.h:77
void NoBarrier_Store(volatile Atomic32 *ptr, Atomic32 value)
Definition: atomicops_internals_arm64_gcc.h:145
Atomic32 NoBarrier_Load(volatile const Atomic32 *ptr)
Definition: atomicops_internals_arm64_gcc.h:163
Atomic32 Acquire_CompareAndSwap(volatile Atomic32 *ptr, Atomic32 old_value, Atomic32 new_value)
Definition: atomicops_internals_arm64_gcc.h:127
void MemoryBarrier()
Definition: atomicops_internals_arm64_gcc.h:40