[PATCH] D18156: AMDGPU: mark atomic instructions as sources of divergence

Tom Stellard via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 16 06:46:19 PDT 2016

tstellarAMD added inline comments.

Comment at: lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp:189-195
@@ -188,2 +188,9 @@
+  // Atomics are divergent because they are executed sequentially: when an
+  // atomic operation refers to the same address in each thread, then each
+  // thread after the first sees the value written by the previous thread as
+  // original value.
+  if (isa<AtomicRMWInst>(V) || isa<AtomicCmpXchgInst>(V))
+    return true;
   if (const IntrinsicInst *Intrinsic = dyn_cast<IntrinsicInst>(V)) {
Are these still divergent if the return value isn't used?


More information about the llvm-commits mailing list