================
@@ -566,6 +569,27 @@ class SIInsertWaitcnts {
     return VmemReadMapping[getVmemType(Inst)];
   }
 
+  bool hasCPolAsyncBit(const MachineInstr &MI) const {
+    const MachineOperand *CPol = TII->getNamedOperand(MI, 
AMDGPU::OpName::cpol);
+    return CPol && (CPol->getImm() & AMDGPU::CPol::ASYNC_pregfx12);
+  }
+
+  bool isAsync(const MachineInstr &MI) const {
+    if (!SIInstrInfo::isLDSDMA(MI))
+      return false;
+    if (SIInstrInfo::usesASYNC_CNT(MI))
+      return true;
+    return hasCPolAsyncBit(MI);
----------------
Pierre-vh wrote:

```suggestion
    return SIInstrInfo::usesASYNC_CNT(MI) || hasCPolAsyncBit(MI);
```

small nit: Should all of these be in the SIInstrInfo class instead (or some 
other memory util header) ? They're generic utils
I personally prefer when small utils like these (with a clear name and simple 
impl) are in a separate place, even though the consensus (I think) is to leave 
them in here because they're only used in one place.

https://github.com/llvm/llvm-project/pull/173259
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to