================ @@ -251,6 +251,24 @@ SPIRV::MemorySemantics::MemorySemantics getMemSemantics(AtomicOrdering Ord) { llvm_unreachable(nullptr); } +SPIRV::Scope::Scope getMemScope(const LLVMContext &Ctx, SyncScope::ID ID) { ---------------- VyacheslavLevytskyy wrote:
@AlexVlx If you don't mind, let's do this function as the following: ``` SPIRV::Scope::Scope getMemScope(LLVMContext &Context, SyncScope::ID Id) { // Named by // https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#_scope_id We // don't need aliases for Invocation and CrossDevice, as we already have them // covered by "singlethread" and "" strings respectively (see implementation // of LLVMContext::LLVMContext()). static llvm::SyncScope::ID SubGroupSSID = Context.getOrInsertSyncScopeID("subgroup"); static llvm::SyncScope::ID WorkGroupSSID = Context.getOrInsertSyncScopeID("workgroup"); static llvm::SyncScope::ID DeviceSSID = Context.getOrInsertSyncScopeID("device"); if (Id == SyncScope::SingleThread) return SPIRV::Scope::Invocation; if (Id == SubGroupSSID) return SPIRV::Scope::Subgroup; if (Id == WorkGroupSSID) return SPIRV::Scope::Workgroup; if (Id == DeviceSSID) return SPIRV::Scope::Device; if (Id == SyncScope::System) return SPIRV::Scope::CrossDevice; // This function assumes that known memory sync scopes may appear to be the // non-exhaustive list and allows to use the most conservative/safe choice as // the default in case of an unknown SyncScope::ID value. return SPIRV::Scope::CrossDevice; } ``` https://github.com/llvm/llvm-project/pull/106429 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits