[PATCH] D98085: [AMDGPU] Always expand system scope fp atomics on gfx90a

Matt Arsenault via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 9 06:00:05 PST 2021


arsenm added a comment.

In D98085#2612608 <https://reviews.llvm.org/D98085#2612608>, @rampitec wrote:

> In D98085#2609265 <https://reviews.llvm.org/D98085#2609265>, @rampitec wrote:
>
>> I am looking where to move syncscope initialization and cannot find a place. I do not think I can just initialize it on a first query and cache it because it depends on the LLVMContext. I have also double checked that MF is not created yet and MMI is not created yet too.
>
> Note what would happen if I cache this value at the first call:
>
>   SyncScope::ID LLVMContextImpl::getOrInsertSyncScopeID(StringRef SSN) {
>     auto NewSSID = SSC.size();
>     assert(NewSSID < std::numeric_limits<SyncScope::ID>::max() &&
>            "Hit the maximum number of synchronization scopes allowed!");
>     return SSC.insert(std::make_pair(SSN, SyncScope::ID(NewSSID))).first->second;
>   }
>
> It will lock numeric value depending on the call history of getOrInsertSyncScopeID(). Caching without mapping to a context will prohibit any part of the compiler to ever call getOrInsertSyncScopeID() and then reuse AMDGPU BE. If the same instance of SIISelLowering will be called with a different module with a different Context cache may contain a wrong value. Besides even that depends on the internal implementation of the Context. AMDGPUMachineModuleInfo is fine do it because it has module context, but anything before MF is created not.

I didn't mean the LLVMContext, I mean a new target context which would be a new concept. That doesn't necessarily belong in this patch, but I do think it would be better


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D98085/new/

https://reviews.llvm.org/D98085



More information about the llvm-commits mailing list