[Mlir-commits] [flang] [mlir] [MLIR][NVVM] Update mbarrier.arrive.* Op (PR #168758)
Guray Ozen
llvmlistbot at llvm.org
Thu Nov 20 05:06:25 PST 2025
================
@@ -638,9 +638,76 @@ def NVVM_MBarrierInvalOp : NVVM_Op<"mbarrier.inval">,
}];
}
-def NVVM_MBarrierArriveOp : NVVM_Op<"mbarrier.arrive">,
- Results<(outs I64:$res)>,
- Arguments<(ins AnyTypeOf<[LLVM_PointerGeneric, LLVM_PointerShared]>:$addr)> {
+def NVVM_MBarrierExpectTxOp : NVVM_Op<"mbarrier.expect_tx"> {
+ let summary = "MBarrier expect-tx Operation";
+ let description = [{
+ The `nvvm.mbarrier.expect_tx` operation increases the transaction count
+ of the mbarrier located at `addr` by `txcount` amount. The `scope`
+ specifies the set of threads that can directly observe the memory
+ synchronizing effect of the `mbarrier.expect_tx` operation. `CTA`
+ and `CLUSTER` are the only allowed values for `scope`.
+
+ [For more information, see PTX ISA](https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#parallel-synchronization-and-communication-instructions-mbarrier-expect-tx)
+ }];
+
+ let arguments = (ins
+ AnyTypeOf<[LLVM_PointerShared, LLVM_PointerSharedCluster]>:$addr,
+ I32:$txcount,
+ DefaultValuedAttr<MemScopeKindAttr, "MemScopeKind::CTA">:$scope);
+
+ let assemblyFormat = "$addr `,` $txcount attr-dict `:` type(operands)";
+
+ let hasVerifier = 1;
+
+ let extraClassDeclaration = [{
+ static mlir::NVVM::IDArgPair
+ getIntrinsicIDAndArgs(Operation &op, LLVM::ModuleTranslation &mt,
+ llvm::IRBuilderBase& builder);
+ }];
+
+ string llvmBuilder = [{
+ auto [id, args] = NVVM::MBarrierExpectTxOp::getIntrinsicIDAndArgs(
+ *op, moduleTranslation, builder);
+ createIntrinsicCall(builder, id, args);
+ }];
+}
+
+def NVVM_MBarrierCompleteTxOp : NVVM_Op<"mbarrier.complete_tx"> {
+ let summary = "MBarrier complete-tx Operation";
+ let description = [{
+ The `nvvm.mbarrier.complete_tx` operation decrements the transaction
+ count of the *mbarrier object* at `addr` by `txcount`. It also signals
----------------
grypp wrote:
same goes for the `mbarrier object`
https://github.com/llvm/llvm-project/pull/168758
More information about the Mlir-commits
mailing list