[Mlir-commits] [mlir] [MLIR][NVVM] Extend TMA Bulk Copy Op (PR #140232)
Durgadoss R
llvmlistbot at llvm.org
Fri May 16 05:16:39 PDT 2025
================
@@ -2599,51 +2599,48 @@ def NVVM_CpAsyncBulkSharedCTAToSharedClusterOp :
}
def NVVM_CpAsyncBulkSharedCTAToGlobalOp :
- NVVM_Op<"cp.async.bulk.global.shared.cta"> {
+ NVVM_Op<"cp.async.bulk.global.shared.cta", [AttrSizedOperandSegments]> {
let summary = "Async bulk copy from Shared CTA memory to Global memory";
let description = [{
Initiates an asynchronous copy operation from Shared CTA memory to
- global memory.
+ global memory. The 32-bit operand `size` specifies the amount of
+ memory to be copied, in terms of number of bytes. `size` must be a
+ multiple of 16. The `l2CacheHint` operand is optional, and it is used
+ to specify cache eviction policy that may be used during the memory
+ access. The `byteMask` operand is optional. The i-th bit in the 16-bit
+ wide `byteMask` specifies whether the i-th byte of each 16-byte wide
+ chunk of source data is copied to the destination. If the bit is set,
+ the byte is copied.
- The `l2CacheHint` operand is optional, and it is used to specify cache
- eviction policy that may be used during the memory access.
-
[For more information, see PTX ISA](https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#data-movement-and-conversion-instructions-cp-async-bulk)
}];
let arguments = (ins
LLVM_PointerGlobal:$dstMem,
LLVM_PointerShared:$srcMem,
I32:$size,
- Optional<I64>:$l2CacheHint);
+ Optional<I64>:$l2CacheHint,
+ Optional<I16>:$byteMask);
let assemblyFormat = [{
$dstMem `,` $srcMem `,` $size
(`l2_cache_hint` `=` $l2CacheHint^ )?
- attr-dict `:` type($dstMem) `,` type($srcMem)
+ (`byte_mask` `=` $byteMask^ )?
+ attr-dict `:` type($dstMem) `,` type($srcMem)
}];
+ let extraClassDeclaration = [{
+ static llvm::Intrinsic::ID
----------------
durga4github wrote:
Done, added in the latest revision.
https://github.com/llvm/llvm-project/pull/140232
More information about the Mlir-commits
mailing list