================
@@ -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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits