[flang] [llvm] [mlir] [flang][OMPIRBuilder][MLIR][llvm] Backend support for atomic control options (PR #151579)

Sergio Afonso via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 7 02:56:13 PDT 2025


================
@@ -3364,13 +3376,26 @@ convertOmpAtomicCapture(omp::AtomicCaptureOp atomicCaptureOp,
     return moduleTranslation.lookupValue(yieldop.getResults()[0]);
   };
 
+  bool isIgnoreDenormalMode = false;
+  bool isFineGrainedMemory = false;
+  bool isRemoteMemory = false;
+  if (atomicUpdateOp &&
+      atomicUpdateOp->hasAttr(atomicUpdateOp.getAtomicControlAttrName())) {
+    mlir::omp::AtomicControlAttr atomicControlAttr =
+        atomicUpdateOp.getAtomicControlAttr();
+    isIgnoreDenormalMode = atomicControlAttr.getIgnoreDenormalMode();
+    isFineGrainedMemory = atomicControlAttr.getFineGrainedMemory();
+    isRemoteMemory = atomicControlAttr.getRemoteMemory();
+  }
----------------
skatrak wrote:

Nit: We can probably refactor and reuse this logic between the two places that query this information, to avoid divergence if we eventually extend these flags.
```suggestion
  void extractAtomicControlFlags(omp::AtomicUpdateOp op, bool &...) {
    isIgnoreDenormalMode = false;
    ...
    if (!op || !op->hasAttr(...))
      return;
    ...
  }

  bool isIgnoreDenormalMode, isFineGrainedMemory, isRemoteMemory;
  extractAtomicControlFlags(atomicUpdateOp, isIgnoreDenormalMode, isFineGrainedMemory, isRemoteMemory);
```

https://github.com/llvm/llvm-project/pull/151579


More information about the llvm-commits mailing list