Skip to content

Conversation

FantasqueX
Copy link
Collaborator

This PR make CIR's AtomicFenceOp similar to MLIR LLVMIR's FenceOp.

MLIR LLVMIR FenceOp:

def LLVM_FenceOp : LLVM_Op<"fence">, LLVM_MemOpPatterns {
let arguments = (ins AtomicOrdering:$ordering,
OptionalAttr<StrAttr>:$syncscope);
let assemblyFormat = "(`syncscope` `(` $syncscope^ `)`)? $ordering attr-dict";
string llvmInstName = "Fence";
let llvmBuilder = [{
auto *inst = builder.CreateFence(convertAtomicOrderingToLLVM($ordering));
}] # setSyncScopeCode;
string mlirBuilder = [{
llvm::FenceInst *fenceInst = cast<llvm::FenceInst>(inst);
$_op = $_builder.create<LLVM::FenceOp>(
$_location,
convertAtomicOrderingFromLLVM(fenceInst->getOrdering()),
getLLVMSyncScope(fenceInst));
}];
let builders = [
LLVM_VoidResultTypeOpBuilder,
LLVM_ZeroResultOpBuilder,
OpBuilder<(ins "LLVM::AtomicOrdering":$ordering,
CArg<"StringRef", "StringRef()">:$syncscope)>
];
let hasVerifier = 1;
}

@bcardosolopes bcardosolopes merged commit a3ab178 into llvm:main Mar 4, 2025
6 checks passed
terapines-osc-cir pushed a commit to Terapines/clangir that referenced this pull request Sep 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants