Skip to content

Commit 84e0145

Browse files
authored
[mlir][nvvm] Introduce fence.mbarrier.init (#74058)
This PR introduce `fence.mbarrier.init` OP
1 parent 17544fa commit 84e0145

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

mlir/include/mlir/Dialect/LLVMIR/NVVMOps.td

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,22 @@ def NVVM_SetMaxRegisterOp : NVVM_PTXBuilder_Op<"setmaxregister"> {
471471
let hasVerifier = 1;
472472
}
473473

474+
def NVVM_FenceMbarrierInitOp : NVVM_PTXBuilder_Op<"fence.mbarrier.init"> {
475+
let arguments = (ins );
476+
let description = [{
477+
Fence operation that applies on the prior nvvm.mbarrier.init
478+
[For more information, see PTX ISA]
479+
(https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#parallel-synchronization-and-communication-instructions-membar)
480+
}];
481+
482+
let assemblyFormat = "attr-dict";
483+
let extraClassDefinition = [{
484+
std::string $cppClass::getPtx() {
485+
return std::string("fence.mbarrier_init.release.cluster;");
486+
}
487+
}];
488+
}
489+
474490
def ShflKindBfly : I32EnumAttrCase<"bfly", 0>;
475491
def ShflKindUp : I32EnumAttrCase<"up", 1>;
476492
def ShflKindDown : I32EnumAttrCase<"down", 2>;

mlir/test/Conversion/NVVMToLLVM/nvvm-to-llvm.mlir

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,15 @@ func.func @cp_bulk_commit() {
642642
nvvm.cp.async.bulk.commit.group
643643
func.return
644644
}
645+
646+
647+
// -----
648+
649+
func.func @fence_mbarrier_init() {
650+
//CHECK: llvm.inline_asm has_side_effects asm_dialect = att "fence.mbarrier_init.release.cluster;"
651+
nvvm.fence.mbarrier.init
652+
func.return
653+
}
645654
// -----
646655

647656
func.func @fence_proxy() {

0 commit comments

Comments
 (0)