================
@@ -537,7 +537,11 @@ AMDGPUTargetCodeGenInfo::getLLVMSyncScopeID(const 
LangOptions &LangOpts,
     break;
   }
 
-  if (Ordering != llvm::AtomicOrdering::SequentiallyConsistent) {
+  // OpenCL assumes by default that atomic scopes are per-address space for
+  // non-sequentially consistent operations.
+  if (Scope >= SyncScope::OpenCLWorkGroup &&
----------------
t-tye wrote:

I guess I am still feeling I am missing something. This PR is making a change 
to this function. Nothing else. So it seems the question is if the change is 
correct. This function should only act on the arguments it is given and 
faithfully do the right thing. It seems that is what it is doing, except for 
the check of the memory ordering. That check should be in the callers of the 
function.

Sounds like the callers of this function are the builtins that you describe. 
The builtins that are intended to implement OpenCL semantics should be sure to 
pass the O{PENCL* scope values, and should check the memory ordering for being 
sequentially consistent. The non-OpenCL builtins should pass in the appropriate 
non-OPENCL values for scope. Is that what is happening?

https://github.com/llvm/llvm-project/pull/120095
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to