[Mlir-commits] [mlir] [mlir][tensor] Add a tensor.concat operation (PR #72779)

Quinn Dawkins llvmlistbot at llvm.org
Mon Nov 20 06:10:43 PST 2023


================
@@ -121,6 +121,66 @@ def Tensor_CastOp : Tensor_Op<"cast", [
   let hasCanonicalizer = 1;
 }
 
+//===----------------------------------------------------------------------===//
+// ConcatOp
+//===----------------------------------------------------------------------===//
+
+def Tensor_ConcatOp : Tensor_Op<"concat",
+    [Pure,
+     DeclareOpInterfaceMethods<OpAsmOpInterface, ["getAsmResultNames"]>,
+     DeclareOpInterfaceMethods<ReifyRankedShapedTypeOpInterface>]> {
+  let summary = "tensor concatenation operation";
+  let description = [{
+    The "concat" operation constructs a tensor out of a variadic list of input
+    tensors, concatenated along a static dimension. All inputs and the result
+    type must share the same rank.
+
+    `dim` specifies the dimension along which to concatenate. The size of the
+    concatenated dimension in the result must be equal to the sum of the sizes
+    of the inputs along that dimension. All other dimensions in both the inputs
+    and result must be the same size.
+
+    Example:
+
+    ```mlir
+    %0 = tensor.concat dim(0) %0, %1, %2 :
----------------
qedawkins wrote:

After some more thought, if we ever wanted a `memref.concat`, I would much prefer having a destination on `tensor.concat` to get there. If others agree, I'm open to switching it to DPS and just providing nice helpers for constructing the destination (so that we don't duplicate that logic in every frontend lowering).

https://github.com/llvm/llvm-project/pull/72779


More information about the Mlir-commits mailing list