[clang] [CIR] Upstream AtomicFenceOp and signal/thread fence builtins (PR #168346)
Sirui Mu via cfe-commits
cfe-commits at lists.llvm.org
Sat Nov 22 06:14:54 PST 2025
================
@@ -58,6 +58,28 @@ static RValue emitBuiltinBitOp(CIRGenFunction &cgf, const CallExpr *e,
return RValue::get(result);
}
+static mlir::Value makeAtomicFenceValue(CIRGenFunction &cgf,
+ const CallExpr *expr,
+ cir::SyncScopeKind syncScope) {
+ auto &builder = cgf.getBuilder();
+ mlir::Value orderingVal = cgf.emitScalarExpr(expr->getArg(0));
+
+ auto constOrdering = orderingVal.getDefiningOp<cir::ConstantOp>();
+ if (!constOrdering)
+ llvm_unreachable("NYI: variable ordering not supported");
+
+ if (auto constOrderingAttr = constOrdering.getValueAttr<cir::IntAttr>()) {
+ cir::MemOrder ordering =
+ static_cast<cir::MemOrder>(constOrderingAttr.getUInt());
----------------
Lancern wrote:
```suggestion
auto ordering = static_cast<cir::MemOrder>(constOrderingAttr.getUInt());
```
https://github.com/llvm/llvm-project/pull/168346
More information about the cfe-commits
mailing list