[Mlir-commits] [mlir] [MLIR][NVVM] Add barrier.arrive (PR #85412)
Mehdi Amini
llvmlistbot at llvm.org
Fri Mar 15 16:29:14 PDT 2024
================
@@ -409,6 +409,38 @@ def NVVM_BarrierOp : NVVM_Op<"barrier", [AttrSizedOperandSegments]> {
let assemblyFormat = "(`id` `=` $barrierId^)? (`number_of_threads` `=` $numberOfThreads^)? attr-dict";
}
+def NVVM_BarrierArriveOp : NVVM_Op<"barrier.arrive",
+ [DeclareOpInterfaceMethods<BasicPtxBuilderOpInterface>,
+ AttrSizedOperandSegments]>
+{
+ let arguments = (ins
+ Optional<I32>:$barrierId,
+ Optional<I32>:$numberOfThreads);
+ let hasVerifier = 1;
+ let assemblyFormat = "(`id` `=` $barrierId^)? (`number_of_threads` `=` $numberOfThreads^)? attr-dict";
+ let description = [{
+ Thread that executes this op announces their arrival at the barrier with
+ given id and continue their execution.
+
+ [For more information, see PTX ISA]
+ (https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#parallel-synchronization-and-communication-instructions-bar)
+ }];
+ let extraClassDefinition = [{
+ std::string $cppClass::getPtx() {
+ std::string ptx = "bar.arrive ";
+ if (getNumberOfThreads() && getBarrierId()) {
----------------
joker-eph wrote:
I don't get the `&& getBarrierId()` since the verifier enforced it?
https://github.com/llvm/llvm-project/pull/85412
More information about the Mlir-commits
mailing list