These conversions are better suited to be applied at whole tensor level. Applying these as canonicalizations end up triggering such canonicalizations at all levels of the stack which might be undesirable. For example some of the resulting code patterns wont bufferize in-place and need additional stack buffers. Best is to be more deliberate in when these canonicalizations apply. Differential Revision: https://reviews.llvm.org/D115912
55 lines
1.3 KiB
C++
55 lines
1.3 KiB
C++
//===- PassDetail.h - Linalg Pass class details -----------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef DIALECT_LINALG_TRANSFORMS_PASSDETAIL_H_
|
|
#define DIALECT_LINALG_TRANSFORMS_PASSDETAIL_H_
|
|
|
|
#include "mlir/Dialect/Affine/IR/AffineOps.h"
|
|
#include "mlir/IR/Dialect.h"
|
|
#include "mlir/Pass/Pass.h"
|
|
|
|
namespace mlir {
|
|
// Forward declaration from Dialect.h
|
|
template <typename ConcreteDialect>
|
|
void registerDialect(DialectRegistry ®istry);
|
|
|
|
namespace arith {
|
|
class ArithmeticDialect;
|
|
} // namespace arith
|
|
|
|
namespace bufferization {
|
|
class BufferizationDialect;
|
|
} // namespace bufferization
|
|
|
|
namespace linalg {
|
|
class LinalgDialect;
|
|
} // namespace linalg
|
|
|
|
namespace scf {
|
|
class SCFDialect;
|
|
} // namespace scf
|
|
|
|
namespace memref {
|
|
class MemRefDialect;
|
|
} // namespace memref
|
|
|
|
namespace tensor {
|
|
class TensorDialect;
|
|
} // namespace tensor
|
|
|
|
namespace vector {
|
|
class VectorDialect;
|
|
} // namespace vector
|
|
|
|
#define GEN_PASS_CLASSES
|
|
#include "mlir/Dialect/Linalg/Passes.h.inc"
|
|
|
|
} // namespace mlir
|
|
|
|
#endif // DIALECT_LINALG_TRANSFORMS_PASSDETAIL_H_
|