[all-commits] [llvm/llvm-project] ba5591: [mlir][Transform] Reuse bbArgs in FuseIntoContaini...

Pablo Antonio Martinez via All-commits all-commits at lists.llvm.org
Thu May 15 01:29:55 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: ba5591e39d50973bf60fe2716d085465b62768e8
      https://github.com/llvm/llvm-project/commit/ba5591e39d50973bf60fe2716d085465b62768e8
  Author: Pablo Antonio Martinez <pablo.antonio.martinez at huawei.com>
  Date:   2025-05-15 (Thu, 15 May 2025)

  Changed paths:
    M mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
    M mlir/test/Dialect/Linalg/transform-op-fuse-into-containing.mlir

  Log Message:
  -----------
  [mlir][Transform] Reuse bbArgs in FuseIntoContainingOp (#135066)

When fusing two ops with the same output operand using
FuseIntoContainingOp, the current implementation makes both ops write
into a different value pointing to the same tensor. This, in the end,
will bufferize into two different buffers, which is sub-optimal. The
current patch solves this problem, adding support to reuse the tensor by
both consumer and producer.

More precisely, before FuseIntoContainingOp is applied, we may have two
ops that write into the same output tensor. However, the consumer would
be tiled, thus the op would write into the loop iter_args (i.e., it does
not write directly into the original tensor). When the producer is fused
into the loop, the output tensor of the producer remains the same, so
the consumer and producer writes into two different values (consumer
writes into the iter_args and producer into the original tensor).

The current patch clones the consumer into the loop and checks if the
consumer is writing to the same value pointed by the loop inits, in
which case, it makes the output point to such tensor.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list