[mlir] split transform interfaces into a separate library (#85221)
Transform interfaces are implemented, direction or via extensions, in libraries belonging to multiple other dialects. Those dialects don't need to depend on the non-interface part of the transform dialect, which includes the growing number of ops and transitive dependency footprint. Split out the interfaces into a separate library. This in turn requires flipping the dependency from the interface on the dialect that has crept in because both co-existed in one library. The interface shouldn't depend on the transform dialect either. As a consequence of splitting, the capability of the interpreter to automatically walk the payload IR to identify payload ops of a certain kind based on the type used for the entry point symbol argument is disabled. This is a good move by itself as it simplifies the interpreter logic. This functionality can be trivially replaced by a `transform.structured.match` operation.
This commit is contained in:
committed by
GitHub
parent
b7324b6a9c
commit
5a9bdd85ee
@@ -62,7 +62,7 @@ The operations themselves can be defined using ODS, exactly in the same way as r
|
||||
#define MY_EXTENSION
|
||||
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/IR/OpBase.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
|
||||
@@ -124,7 +124,7 @@ This will generate two files, `MyExtension.h.inc` and `MyExtension.cpp.inc`, tha
|
||||
```c++
|
||||
// In MyExtension.h.
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
|
||||
#define GET_OP_CLASSES
|
||||
#include "MyExtension.h.inc"
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
#include "mlir/Bytecode/BytecodeOpInterface.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
|
||||
#define GET_OP_CLASSES
|
||||
#include "MyExtension.h.inc"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#define MY_EXTENSION
|
||||
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/IR/OpBase.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/Dialect/SCF/IR/SCF.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/DialectRegistry.h"
|
||||
#include "mlir/IR/Operation.h"
|
||||
#include "mlir/Interfaces/SideEffectInterfaces.h"
|
||||
|
||||
@@ -13,13 +13,16 @@
|
||||
|
||||
#include "mlir/Bytecode/BytecodeOpInterface.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
|
||||
namespace mlir {
|
||||
class CallOpInterface;
|
||||
namespace func {
|
||||
class CallOp;
|
||||
} // namespace func
|
||||
namespace transform {
|
||||
class OperationType;
|
||||
} // namespace transform
|
||||
} // namespace mlir
|
||||
|
||||
#define GET_TYPEDEF_CLASSES
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
include "MyExtensionTypes.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformTypes.td"
|
||||
include "mlir/IR/OpBase.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
include "mlir/IR/AttrTypeBase.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
|
||||
// Transform dialect allows additional types to be defined and injected.
|
||||
def CallOpInterfaceHandle
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/Dialect/SCF/IR/SCF.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/IR/DialectImplementation.h"
|
||||
#include "mlir/Interfaces/CallInterfaces.h"
|
||||
#include "llvm/ADT/TypeSwitch.h"
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
|
||||
#include "mlir/Bytecode/BytecodeOpInterface.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformOps.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
|
||||
namespace mlir {
|
||||
class CallOpInterface;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
include "mlir/Dialect/Transform/IR/MatchInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/IR/OpBase.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformAttrs.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
#include "mlir/IR/RegionKindInterface.h"
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
include "mlir/Dialect/Transform/IR/TransformAttrs.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformTypes.td"
|
||||
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
#define MLIR_DIALECT_AFFINE_TRANSFORMOPS_AFFINETRANSFORMOPS_H
|
||||
|
||||
#include "mlir/Bytecode/BytecodeOpInterface.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
|
||||
namespace mlir {
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define AFFINE_TRANSFORM_OPS
|
||||
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformTypes.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
include "mlir/IR/OpBase.td"
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
|
||||
#include "mlir/Bytecode/BytecodeOpInterface.h"
|
||||
#include "mlir/Dialect/Bufferization/IR/BufferizableOpInterface.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
|
||||
namespace mlir {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
include "mlir/Dialect/Bufferization/IR/BufferizationEnums.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformTypes.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
include "mlir/IR/OpBase.td"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define MLIR_DIALECT_FUNC_TRANSFORMOPS_FUNCTRANSFORMOPS_H
|
||||
|
||||
#include "mlir/Bytecode/BytecodeOpInterface.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
|
||||
#define GET_OP_CLASSES
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define FUNC_TRANSFORM_OPS
|
||||
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformTypes.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
include "mlir/IR/RegionKindInterface.td"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define MLIR_DIALECT_GPU_TRANSFORMOPS_GPUTRANSFORMOPS_H
|
||||
|
||||
#include "mlir/Dialect/SCF/IR/SCF.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
#include "mlir/IR/PatternMatch.h"
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define GPU_TRANSFORM_OPS
|
||||
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
include "mlir/IR/OpBase.td"
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
#include "mlir/Dialect/GPU/IR/GPUDialect.h"
|
||||
#include "mlir/Dialect/SCF/IR/DeviceMappingInterface.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
#include "mlir/IR/PatternMatch.h"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include "mlir/Dialect/Linalg/IR/Linalg.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformAttrs.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Utils/StructuredOpsUtils.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
#include "mlir/IR/RegionKindInterface.h"
|
||||
@@ -38,6 +38,9 @@ class UnPackOp;
|
||||
} // namespace tensor
|
||||
|
||||
namespace transform {
|
||||
class AnyOpType;
|
||||
class AnyValueType;
|
||||
class OperationType;
|
||||
class TransformHandleTypeInterface;
|
||||
// Types needed for builders.
|
||||
struct TileSizesSpec {};
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
include "mlir/Dialect/Linalg/TransformOps/LinalgTransformEnums.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformAttrs.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformTypes.td"
|
||||
include "mlir/Dialect/SCF/IR/DeviceMappingInterface.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
|
||||
@@ -10,13 +10,16 @@
|
||||
#define MLIR_DIALECT_MEMREF_TRANSFORMOPS_MEMREFTRANSFORMOPS_H
|
||||
|
||||
#include "mlir/Bytecode/BytecodeOpInterface.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
|
||||
namespace mlir {
|
||||
namespace memref {
|
||||
class AllocOp;
|
||||
} // namespace memref
|
||||
namespace transform {
|
||||
class OperationType;
|
||||
} // namespace transform
|
||||
} // namespace mlir
|
||||
|
||||
#define GET_OP_CLASSES
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define MEMREF_TRANSFORM_OPS
|
||||
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformTypes.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
include "mlir/IR/OpBase.td"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformAttrs.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
#include "mlir/IR/RegionKindInterface.h"
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
include "mlir/Dialect/Transform/IR/TransformAttrs.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformTypes.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
#define MLIR_DIALECT_SCF_TRANSFORMOPS_SCFTRANSFORMOPS_H
|
||||
|
||||
#include "mlir/Bytecode/BytecodeOpInterface.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
#include "mlir/Interfaces/LoopLikeInterface.h"
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define SCF_TRANSFORM_OPS
|
||||
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformTypes.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
include "mlir/IR/OpBase.td"
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include "mlir/Dialect/Transform/IR/MatchInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformAttrs.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
#include "mlir/IR/RegionKindInterface.h"
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
#ifndef MLIR_DIALECT_TENSOR_TRANSFORMOPS_TENSORTRANSFORMOPS_H
|
||||
#define MLIR_DIALECT_TENSOR_TRANSFORMOPS_TENSORTRANSFORMOPS_H
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
#include "mlir/IR/PatternMatch.h"
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define TENSOR_TRANSFORM_OPS
|
||||
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformTypes.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
include "mlir/IR/OpBase.td"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
add_subdirectory(DebugExtension)
|
||||
add_subdirectory(Interfaces)
|
||||
add_subdirectory(IR)
|
||||
add_subdirectory(LoopExtension)
|
||||
add_subdirectory(PDLExtension)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include "mlir/Bytecode/BytecodeOpInterface.h"
|
||||
#include "mlir/Dialect/Transform/IR/MatchInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpDefinition.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
#include "mlir/Interfaces/SideEffectInterfaces.h"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
include "mlir/IR/OpBase.td"
|
||||
include "mlir/Dialect/Transform/IR/MatchInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
|
||||
def DebugEmitRemarkAtOp : TransformDialectOp<"debug.emit_remark_at",
|
||||
|
||||
@@ -24,17 +24,7 @@ add_dependencies(mlir-headers MLIRTransformDialectEnumIncGen)
|
||||
add_mlir_dialect(TransformOps transform)
|
||||
add_mlir_doc(TransformOps TransformOps Dialects/ -gen-op-doc -dialect=transform)
|
||||
|
||||
# Contrary to what the name claims, this only produces the _op_ interface.
|
||||
add_mlir_interface(TransformInterfaces)
|
||||
add_mlir_doc(TransformInterfaces TransformOpInterfaces Dialects/ -gen-op-interface-docs)
|
||||
|
||||
add_mlir_interface(MatchInterfaces)
|
||||
add_dependencies(MLIRMatchInterfacesIncGen MLIRTransformInterfacesIncGen)
|
||||
add_mlir_doc(TransformInterfaces MatchOpInterfaces Dialects/ -gen-op-interface-docs)
|
||||
|
||||
set(LLVM_TARGET_DEFINITIONS TransformInterfaces.td)
|
||||
mlir_tablegen(TransformTypeInterfaces.h.inc -gen-type-interface-decls)
|
||||
mlir_tablegen(TransformTypeInterfaces.cpp.inc -gen-type-interface-defs)
|
||||
add_public_tablegen_target(MLIRTransformDialectTypeInterfacesIncGen)
|
||||
add_dependencies(mlir-headers MLIRTransformDialectTypeInterfacesIncGen)
|
||||
add_mlir_doc(TransformInterfaces TransformTypeInterfaces Dialects/ -gen-type-interface-docs)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include <optional>
|
||||
#include <type_traits>
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpDefinition.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
include "mlir/IR/OpBase.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
|
||||
def MatchOpInterface
|
||||
: OpInterface<"MatchOpInterface", [TransformOpInterface]> {
|
||||
|
||||
@@ -23,7 +23,7 @@ def Transform_Dialect : Dialect {
|
||||
/// Symbol name for the default entry point "named sequence".
|
||||
constexpr const static ::llvm::StringLiteral
|
||||
kTransformEntryPointSymbolName = "__transform_main";
|
||||
|
||||
|
||||
/// Name of the attribute attachable to the symbol table operation
|
||||
/// containing named sequences. This is used to trigger verification.
|
||||
constexpr const static ::llvm::StringLiteral
|
||||
@@ -34,12 +34,6 @@ def Transform_Dialect : Dialect {
|
||||
constexpr const static ::llvm::StringLiteral kTargetTagAttrName =
|
||||
"transform.target_tag";
|
||||
|
||||
/// Name of the attribute attachable to an operation, indicating that
|
||||
/// TrackingListener failures should be silenced.
|
||||
constexpr const static ::llvm::StringLiteral
|
||||
kSilenceTrackingFailuresAttrName =
|
||||
"transform.silence_tracking_failures";
|
||||
|
||||
/// Names of the attributes indicating whether an argument of an external
|
||||
/// transform dialect symbol is consumed or only read.
|
||||
constexpr const static ::llvm::StringLiteral kArgConsumedAttrName =
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
#include "mlir/Dialect/Transform/IR/MatchInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformAttrs.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpDefinition.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
#include "mlir/IR/PatternMatch.h"
|
||||
|
||||
@@ -21,7 +21,7 @@ include "mlir/IR/SymbolInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/MatchInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformAttrs.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
|
||||
def AlternativesOp : TransformDialectOp<"alternatives",
|
||||
[DeclareOpInterfaceMethods<RegionBranchOpInterface,
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#ifndef MLIR_DIALECT_TRANSFORM_IR_TRANSFORMTYPES_H
|
||||
#define MLIR_DIALECT_TRANSFORM_IR_TRANSFORMTYPES_H
|
||||
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Utils/DiagnosedSilenceableFailure.h"
|
||||
#include "mlir/IR/Types.h"
|
||||
#include "mlir/Support/LLVM.h"
|
||||
@@ -19,7 +20,6 @@ class Operation;
|
||||
class Type;
|
||||
} // namespace mlir
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypeInterfaces.h.inc"
|
||||
#define GET_TYPEDEF_CLASSES
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h.inc"
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define MLIR_DIALECT_TRANSFORM_IR_TRANSFORMTYPES
|
||||
|
||||
include "mlir/IR/AttrTypeBase.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
|
||||
def Transform_AffineMapParamType : TypeDef<Transform_Dialect, "AffineMapParam",
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
# Contrary to what the name claims, this only produces the _op_ interface. The
|
||||
# type interface is produced manually below.
|
||||
add_mlir_interface(TransformInterfaces)
|
||||
add_mlir_doc(TransformInterfaces TransformOpInterfaces Dialects/ -gen-op-interface-docs)
|
||||
|
||||
set(LLVM_TARGET_DEFINITIONS TransformInterfaces.td)
|
||||
mlir_tablegen(TransformTypeInterfaces.h.inc -gen-type-interface-decls)
|
||||
mlir_tablegen(TransformTypeInterfaces.cpp.inc -gen-type-interface-defs)
|
||||
add_public_tablegen_target(MLIRTransformDialectTypeInterfacesIncGen)
|
||||
add_dependencies(mlir-headers MLIRTransformDialectTypeInterfacesIncGen)
|
||||
add_mlir_doc(TransformInterfaces TransformTypeInterfaces Dialects/ -gen-type-interface-docs)
|
||||
@@ -6,10 +6,9 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef MLIR_DIALECT_TRANSFORM_IR_TRANSFORMINTERFACES_H
|
||||
#define MLIR_DIALECT_TRANSFORM_IR_TRANSFORMINTERFACES_H
|
||||
#ifndef MLIR_DIALECT_TRANSFORM_INTERFACES_TRANSFORMINTERFACES_H
|
||||
#define MLIR_DIALECT_TRANSFORM_INTERFACES_TRANSFORMINTERFACES_H
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/Dialect/Transform/Utils/DiagnosedSilenceableFailure.h"
|
||||
#include "mlir/Dialect/Transform/Utils/RaggedArray.h"
|
||||
#include "mlir/IR/OpDefinition.h"
|
||||
@@ -18,6 +17,8 @@
|
||||
#include "mlir/Support/LogicalResult.h"
|
||||
#include "mlir/Transforms/DialectConversion.h"
|
||||
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformTypeInterfaces.h.inc"
|
||||
|
||||
namespace mlir {
|
||||
namespace transform {
|
||||
|
||||
@@ -74,7 +75,7 @@ getConsumedHandleOpOperands(transform::TransformOpInterface transformOp);
|
||||
} // namespace transform
|
||||
} // namespace mlir
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h.inc"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h.inc"
|
||||
|
||||
namespace mlir {
|
||||
namespace transform {
|
||||
@@ -1591,4 +1592,4 @@ mlir::transform::TransformEachOpTrait<OpTy>::verifyTrait(Operation *op) {
|
||||
return success();
|
||||
}
|
||||
|
||||
#endif // DIALECT_TRANSFORM_IR_TRANSFORMINTERFACES_H
|
||||
#endif // DIALECT_TRANSFORM_INTERFACES_TRANSFORMINTERFACES_H
|
||||
@@ -241,6 +241,14 @@ def FindPayloadReplacementOpInterface
|
||||
/*arguments=*/(ins)
|
||||
>,
|
||||
];
|
||||
|
||||
let extraSharedClassDeclaration = [{
|
||||
/// Name of the attribute attachable to an operation, indicating that
|
||||
/// TrackingListener failures should be silenced.
|
||||
constexpr const static ::llvm::StringLiteral
|
||||
kSilenceTrackingFailuresAttrName =
|
||||
"transform.silence_tracking_failures";
|
||||
}];
|
||||
}
|
||||
|
||||
def PatternDescriptorOpInterface : OpInterface<"PatternDescriptorOpInterface"> {
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
#include "mlir/Bytecode/BytecodeOpInterface.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpDefinition.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
#include "mlir/Interfaces/LoopLikeInterface.h"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define MLIR_DIALECT_TRANSFORM_LOOPEXTENSION_LOOPEXTENSIONOPS
|
||||
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
|
||||
def HoistLoopInvariantSubsetsOp
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
#include "mlir/Bytecode/BytecodeOpInterface.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpDefinition.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
#include "mlir/IR/SymbolTable.h"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define MLIR_DIALECT_TRANSFORM_PDLEXTENSION_PDLEXTENSIONOPS
|
||||
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
include "mlir/IR/OpAsmInterface.td"
|
||||
include "mlir/IR/SymbolInterfaces.td"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#ifndef MLIR_DIALECT_TRANSFORM_TRANSFORMS_TRANSFORMINTERPRETERPASSBASE_H
|
||||
#define MLIR_DIALECT_TRANSFORM_TRANSFORMS_TRANSFORMINTERPRETERPASSBASE_H
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Pass/Pass.h"
|
||||
#include "mlir/Support/LLVM.h"
|
||||
#include <memory>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define MLIR_DIALECT_TRANSFORM_TRANSFORMS_TRANSFORMINTERPRETERUTILS_H
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Pass/Pass.h"
|
||||
#include "mlir/Support/LLVM.h"
|
||||
#include <memory>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#ifndef MLIR_DIALECT_VECTOR_TRANSFORMOPS_VECTORTRANSFORMOPS_H
|
||||
#define MLIR_DIALECT_VECTOR_TRANSFORMOPS_VECTORTRANSFORMOPS_H
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Vector/Transforms/VectorRewritePatterns.h"
|
||||
#include "mlir/Dialect/Vector/Transforms/VectorTransforms.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define VECTOR_TRANSFORM_OPS
|
||||
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Vector/Transforms/VectorTransformsBase.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
include "mlir/IR/OpBase.td"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include "mlir/CAPI/IR.h"
|
||||
#include "mlir/CAPI/Support.h"
|
||||
#include "mlir/CAPI/Wrap.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Transforms/TransformInterpreterUtils.h"
|
||||
|
||||
using namespace mlir;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include "mlir/Dialect/Affine/IR/AffineValueMap.h"
|
||||
#include "mlir/Dialect/Affine/LoopUtils.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
|
||||
|
||||
using namespace mlir;
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformOps.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Transforms/DialectConversion.h"
|
||||
|
||||
using namespace mlir;
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
#include "mlir/Dialect/SCF/IR/DeviceMappingInterface.h"
|
||||
#include "mlir/Dialect/SCF/IR/SCF.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Utils/IndexingUtils.h"
|
||||
#include "mlir/Dialect/Vector/IR/VectorOps.h"
|
||||
#include "mlir/Dialect/Vector/Transforms/VectorTransforms.h"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#include "mlir/Dialect/SCF/IR/DeviceMappingInterface.h"
|
||||
#include "mlir/Dialect/SCF/IR/SCF.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Utils/IndexingUtils.h"
|
||||
#include "mlir/Dialect/Vector/IR/VectorOps.h"
|
||||
#include "mlir/IR/AffineExpr.h"
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "mlir/Dialect/Linalg/TransformOps/Syntax.h"
|
||||
#include "mlir/Dialect/Linalg/Utils/Utils.h"
|
||||
#include "mlir/Dialect/Transform/IR/MatchInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/IR/BuiltinAttributes.h"
|
||||
#include "mlir/Interfaces/FunctionImplementation.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
|
||||
@@ -25,9 +25,9 @@
|
||||
#include "mlir/Dialect/Tensor/IR/Tensor.h"
|
||||
#include "mlir/Dialect/Tensor/Utils/Utils.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformOps.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Utils/Utils.h"
|
||||
#include "mlir/Dialect/Utils/IndexingUtils.h"
|
||||
#include "mlir/Dialect/Utils/StaticValueUtils.h"
|
||||
|
||||
@@ -19,7 +19,8 @@
|
||||
#include "mlir/Dialect/NVGPU/IR/NVGPUDialect.h"
|
||||
#include "mlir/Dialect/SCF/IR/SCF.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Vector/IR/VectorOps.h"
|
||||
#include "mlir/Dialect/Vector/Transforms/VectorTransforms.h"
|
||||
#include "mlir/Interfaces/LoopLikeInterface.h"
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
#include "mlir/Dialect/SCF/Transforms/Transforms.h"
|
||||
#include "mlir/Dialect/SCF/Utils/Utils.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformOps.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Utils/StaticValueUtils.h"
|
||||
#include "mlir/Dialect/Vector/IR/VectorOps.h"
|
||||
#include "mlir/IR/BuiltinAttributes.h"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include "mlir/Dialect/Bufferization/IR/BufferizableOpInterface.h"
|
||||
#include "mlir/Dialect/Complex/IR/Complex.h"
|
||||
#include "mlir/Dialect/Tensor/IR/Tensor.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Interfaces/SubsetOpInterface.h"
|
||||
#include "mlir/Transforms/InliningUtils.h"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include "mlir/Dialect/Tensor/Transforms/Transforms.h"
|
||||
#include "mlir/Dialect/Tensor/Utils/Utils.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/Builders.h"
|
||||
#include "mlir/Transforms/DialectConversion.h"
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
add_subdirectory(DebugExtension)
|
||||
add_subdirectory(Interfaces)
|
||||
add_subdirectory(IR)
|
||||
add_subdirectory(LoopExtension)
|
||||
add_subdirectory(PDLExtension)
|
||||
|
||||
@@ -2,7 +2,6 @@ add_mlir_dialect_library(MLIRTransformDialect
|
||||
MatchInterfaces.cpp
|
||||
TransformAttrs.cpp
|
||||
TransformDialect.cpp
|
||||
TransformInterfaces.cpp
|
||||
TransformOps.cpp
|
||||
TransformTypes.cpp
|
||||
Utils.cpp
|
||||
@@ -10,7 +9,6 @@ add_mlir_dialect_library(MLIRTransformDialect
|
||||
DEPENDS
|
||||
MLIRMatchInterfacesIncGen
|
||||
MLIRTransformDialectIncGen
|
||||
MLIRTransformInterfacesIncGen
|
||||
|
||||
LINK_LIBS PUBLIC
|
||||
MLIRCastInterfaces
|
||||
@@ -24,5 +22,6 @@ add_mlir_dialect_library(MLIRTransformDialect
|
||||
MLIRRewrite
|
||||
MLIRSideEffectInterfaces
|
||||
MLIRTransforms
|
||||
MLIRTransformDialectInterfaces
|
||||
MLIRTransformDialectUtils
|
||||
)
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Analysis/CallGraph.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformOps.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/Dialect/Transform/IR/Utils.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/DialectImplementation.h"
|
||||
#include "llvm/ADT/SCCIterator.h"
|
||||
|
||||
@@ -178,7 +178,8 @@ LogicalResult transform::TransformDialect::verifyOperationAttribute(
|
||||
}
|
||||
return success();
|
||||
}
|
||||
if (attribute.getName().getValue() == kSilenceTrackingFailuresAttrName) {
|
||||
if (attribute.getName().getValue() ==
|
||||
FindPayloadReplacementOpInterface::kSilenceTrackingFailuresAttrName) {
|
||||
if (!llvm::isa<UnitAttr>(attribute.getValue())) {
|
||||
return op->emitError()
|
||||
<< attribute.getName() << " must be a unit attribute";
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
#include "mlir/Dialect/Transform/IR/MatchInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformAttrs.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/BuiltinAttributes.h"
|
||||
#include "mlir/IR/Diagnostics.h"
|
||||
#include "mlir/IR/Dominance.h"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/Builders.h"
|
||||
#include "mlir/IR/BuiltinTypes.h"
|
||||
#include "mlir/IR/DialectImplementation.h"
|
||||
@@ -19,8 +19,6 @@
|
||||
|
||||
using namespace mlir;
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypeInterfaces.cpp.inc"
|
||||
|
||||
// These are automatically generated by ODS but are not used as the Transform
|
||||
// dialect uses a different dispatch mechanism to support dialect extensions.
|
||||
LLVM_ATTRIBUTE_UNUSED static OptionalParseResult
|
||||
|
||||
15
mlir/lib/Dialect/Transform/Interfaces/CMakeLists.txt
Normal file
15
mlir/lib/Dialect/Transform/Interfaces/CMakeLists.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
add_mlir_library(MLIRTransformDialectInterfaces
|
||||
TransformInterfaces.cpp
|
||||
|
||||
DEPENDS
|
||||
MLIRTransformInterfacesIncGen
|
||||
|
||||
LINK_LIBS PUBLIC
|
||||
MLIRCastInterfaces
|
||||
MLIRIR
|
||||
MLIRRewrite
|
||||
MLIRSideEffectInterfaces
|
||||
MLIRTransforms
|
||||
MLIRTransformDialectUtils
|
||||
)
|
||||
|
||||
@@ -6,10 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/IR/Diagnostics.h"
|
||||
#include "mlir/IR/Operation.h"
|
||||
#include "mlir/IR/PatternMatch.h"
|
||||
@@ -951,8 +949,8 @@ transform::TransformState::applyTransform(TransformOpInterface transform) {
|
||||
DiagnosedSilenceableFailure trackingFailure =
|
||||
trackingListener.checkAndResetError();
|
||||
if (!transform->hasTrait<ReportTrackingListenerFailuresOpTrait>() ||
|
||||
transform->hasAttr(
|
||||
transform::TransformDialect::kSilenceTrackingFailuresAttrName)) {
|
||||
transform->hasAttr(FindPayloadReplacementOpInterface::
|
||||
kSilenceTrackingFailuresAttrName)) {
|
||||
// Only report failures for ReportTrackingListenerFailuresOpTrait ops. Also
|
||||
// do not report failures if the above mentioned attribute is set.
|
||||
if (trackingFailure.isSilenceableFailure())
|
||||
@@ -1649,23 +1647,7 @@ LogicalResult transform::detail::mapPossibleTopLevelTransformOpBlockArguments(
|
||||
<< " were provided to the interpreter";
|
||||
}
|
||||
|
||||
// Top-level transforms can be used for matching. If no concrete operation
|
||||
// type is specified, the block argument is mapped to the top-level op.
|
||||
// Otherwise, it is mapped to all ops of the specified type within the
|
||||
// top-level op (including the top-level op itself). Once an op is added as
|
||||
// a target, its descendants are not explored any further.
|
||||
BlockArgument bbArg = region.front().getArgument(0);
|
||||
if (auto bbArgType = dyn_cast<transform::OperationType>(bbArg.getType())) {
|
||||
state.getTopLevel()->walk<WalkOrder::PreOrder>([&](Operation *op) {
|
||||
if (op->getName().getStringRef() == bbArgType.getOperationName()) {
|
||||
targets.push_back(op);
|
||||
return WalkResult::skip();
|
||||
}
|
||||
return WalkResult::advance();
|
||||
});
|
||||
} else {
|
||||
targets.push_back(state.getTopLevel());
|
||||
}
|
||||
targets.push_back(state.getTopLevel());
|
||||
|
||||
for (unsigned i = 0, e = state.getNumTopLevelMappings(); i < e; ++i)
|
||||
extraMappings.push_back(llvm::to_vector(state.getTopLevelMapping(i)));
|
||||
@@ -2003,4 +1985,5 @@ LogicalResult transform::applyTransforms(
|
||||
// Generated interface implementation.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.cpp.inc"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.cpp.inc"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformTypeInterfaces.cpp.inc"
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
#include "mlir/Dialect/Transform/Transforms/Passes.h"
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Interfaces/SideEffectInterfaces.h"
|
||||
#include "mlir/Pass/Pass.h"
|
||||
#include "llvm/ADT/SetOperations.h"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/Transforms/Passes.h"
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/Visitors.h"
|
||||
#include "mlir/Interfaces/FunctionInterfaces.h"
|
||||
#include "mlir/Interfaces/SideEffectInterfaces.h"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Transform/Transforms/TransformInterpreterUtils.h"
|
||||
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
|
||||
#include "mlir/Dialect/Transform/Transforms/TransformInterpreterPassBase.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformOps.h"
|
||||
#include "mlir/Dialect/Transform/IR/Utils.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Transforms/TransformInterpreterUtils.h"
|
||||
#include "mlir/IR/BuiltinOps.h"
|
||||
#include "mlir/IR/Verifier.h"
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
|
||||
#include "mlir/Dialect/Transform/Transforms/TransformInterpreterUtils.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformOps.h"
|
||||
#include "mlir/Dialect/Transform/IR/Utils.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/BuiltinOps.h"
|
||||
#include "mlir/IR/Verifier.h"
|
||||
#include "mlir/IR/Visitors.h"
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
#include "mlir/Conversion/VectorToSCF/VectorToSCF.h"
|
||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformOps.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Vector/IR/VectorOps.h"
|
||||
#include "mlir/Dialect/Vector/Transforms/LoweringPatterns.h"
|
||||
#include "mlir/Dialect/Vector/Transforms/VectorRewritePatterns.h"
|
||||
|
||||
@@ -73,7 +73,8 @@ func.func @decompose_dynamic_into_static_concat_dim(%arg0 : tensor<1x?x?xf32>,
|
||||
// CHECK: return %[[CONCAT]] : tensor<1x?x128xf32>
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root: !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.tensor.decompose_concat
|
||||
} : !transform.op<"func.func">
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
// RUN: mlir-opt -split-input-file -transform-interpreter %s | FileCheck %s
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.tensor.fold_tensor_empty
|
||||
} : !transform.op<"func.func">
|
||||
@@ -67,7 +68,8 @@ func.func @rank_reducing_empty_tensor_extract(%sz : index, %idx : index) -> tens
|
||||
// -----
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.tensor.fold_tensor_empty
|
||||
{fold_single_use_only = true}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
// RUN: mlir-opt -split-input-file -transform-interpreter %s | FileCheck %s
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.tensor.fold_tensor_subset_ops_into_vector_transfers
|
||||
} : !transform.op<"func.func">
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
// RUN: mlir-opt -split-input-file -transform-interpreter %s | FileCheck %s
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.tensor.rewrite_as_constant
|
||||
} : !transform.op<"func.func">
|
||||
|
||||
@@ -657,7 +657,8 @@ func.func @masked_extract_contract2_scalable_reduction_dim(%arg0: vector<[2]x[3]
|
||||
// TD sequence
|
||||
// ============================================================================
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_contraction lowering_strategy = "outerproduct"
|
||||
} : !transform.op<"func.func">
|
||||
|
||||
@@ -8,7 +8,8 @@ func.func @select_single_i1_vector(%cond : i1) -> vector<1xi1> {
|
||||
}
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.materialize_masks
|
||||
} : !transform.op<"func.func">
|
||||
|
||||
@@ -282,7 +282,8 @@ func.func private @scalable_dims(%A : vector<8x[4]x2xf32>, %B: vector<8x[4]xf32>
|
||||
// CHECK: return %[[VAL_163]] : vector<8x[4]xf32>
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_multi_reduction lowering_strategy = "innerreduction"
|
||||
} : !transform.op<"func.func">
|
||||
|
||||
@@ -189,7 +189,8 @@ func.func @vector_multi_reduction_to_scalar(%arg0: vector<2x3xf32>, %acc: f32) -
|
||||
// CHECK: return %{{.+}}
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_multi_reduction lowering_strategy = "innerparallel"
|
||||
} : !transform.op<"func.func">
|
||||
|
||||
@@ -239,7 +239,8 @@ func.func @masked_transfer_read_dynamic_rank_reducing_scalable_unit_dim(
|
||||
// CHECK: vector.transfer_read {{.*}} vector<[16]x[1]xi8>
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.rank_reducing_subview_patterns
|
||||
} : !transform.op<"func.func">
|
||||
|
||||
@@ -63,7 +63,7 @@ func.func @split_vector_transfer_read_strided_2d(
|
||||
%c0 = arith.constant 0 : index
|
||||
%f0 = arith.constant 0.0 : f32
|
||||
|
||||
|
||||
|
||||
// CHECK-DAG: %[[c0:.*]] = arith.constant 0 : index
|
||||
// CHECK-DAG: %[[c4:.*]] = arith.constant 4 : index
|
||||
// CHECK-DAG: %[[c7:.*]] = arith.constant 7 : index
|
||||
@@ -107,7 +107,8 @@ func.func @split_vector_transfer_read_strided_2d(
|
||||
}
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.split_transfer_full_partial split_transfer_strategy = "linalg-copy"
|
||||
} : !transform.op<"func.func">
|
||||
@@ -170,7 +171,8 @@ func.func @split_vector_transfer_write_2d(%V: vector<4x8xf32>, %A: memref<?x8xf3
|
||||
// CHECK: }
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.split_transfer_full_partial split_transfer_strategy = "linalg-copy"
|
||||
} : !transform.op<"func.func">
|
||||
@@ -240,7 +242,8 @@ func.func @split_vector_transfer_write_strided_2d(
|
||||
// CHECK: }
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.split_transfer_full_partial split_transfer_strategy = "linalg-copy"
|
||||
} : !transform.op<"func.func">
|
||||
|
||||
@@ -133,7 +133,8 @@ func.func @split_vector_transfer_read_mem_space(%A: memref<?x8xf32, 3>, %i: inde
|
||||
}
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.split_transfer_full_partial split_transfer_strategy = "vector-transfer"
|
||||
} : !transform.op<"func.func">
|
||||
@@ -193,7 +194,8 @@ func.func @split_vector_transfer_write_2d(%V: vector<4x8xf32>, %A: memref<?x8xf3
|
||||
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.split_transfer_full_partial split_transfer_strategy = "vector-transfer"
|
||||
} : !transform.op<"func.func">
|
||||
@@ -257,7 +259,8 @@ func.func @split_vector_transfer_write_strided_2d(
|
||||
// CHECK: }
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.split_transfer_full_partial split_transfer_strategy = "vector-transfer"
|
||||
} : !transform.op<"func.func">
|
||||
@@ -292,7 +295,8 @@ func.func @split_vector_transfer_write_mem_space(%V: vector<4x8xf32>, %A: memref
|
||||
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.split_transfer_full_partial split_transfer_strategy = "vector-transfer"
|
||||
} : !transform.op<"func.func">
|
||||
@@ -337,7 +341,8 @@ func.func @transfer_read_within_scf_for(%A : memref<?x?xf32>, %lb : index, %ub :
|
||||
}
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.split_transfer_full_partial split_transfer_strategy = "vector-transfer"
|
||||
} : !transform.op<"func.func">
|
||||
|
||||
@@ -239,7 +239,8 @@ func.func @transfer_broadcasting_complex(%mem : memref<10x20x30x8x8xf32>, %i : i
|
||||
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_transfer max_transfer_rank = 99
|
||||
transform.apply_patterns.vector.transfer_permutation_patterns
|
||||
@@ -363,7 +364,8 @@ func.func @transfer_write_broadcast_unit_dim(
|
||||
}
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_transfer max_transfer_rank = 99
|
||||
transform.apply_patterns.vector.transfer_permutation_patterns
|
||||
@@ -391,7 +393,8 @@ func.func @transfer_2D_masked(%mem : memref<?x?xf32>, %mask : vector<2x4xi1>) ->
|
||||
}
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_transfer max_transfer_rank = 2
|
||||
} : !transform.op<"func.func">
|
||||
|
||||
@@ -86,7 +86,8 @@ func.func @transpose23_scalable(%arg0: vector<2x[3]xf32>) -> vector<[3]x2xf32> {
|
||||
}
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_transpose lowering_strategy = "eltwise"
|
||||
} : !transform.op<"func.func">
|
||||
@@ -111,7 +112,8 @@ func.func @transpose(%arg0: vector<2x4xf32>) -> vector<4x2xf32> {
|
||||
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_transpose lowering_strategy = "shuffle_1d"
|
||||
} : !transform.op<"func.func">
|
||||
@@ -132,7 +134,8 @@ func.func @transpose(%arg0: vector<2x4xf32>) -> vector<4x2xf32> {
|
||||
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_transpose lowering_strategy = "flat_transpose"
|
||||
} : !transform.op<"func.func">
|
||||
@@ -621,7 +624,8 @@ func.func @transpose210_1x8x8xf32(%arg0: vector<1x8x8xf32>) -> vector<8x8x1xf32>
|
||||
}
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_transpose avx2_lowering_strategy = true
|
||||
} : !transform.op<"func.func">
|
||||
@@ -701,7 +705,8 @@ func.func @transpose_shuffle16x16xf32(%arg0: vector<16x16xf32>) -> vector<16x16x
|
||||
}
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_transpose lowering_strategy = "shuffle_16x16"
|
||||
} : !transform.op<"func.func">
|
||||
@@ -782,7 +787,8 @@ func.func @transpose021_shuffle16x16xf32(%arg0: vector<1x16x16xf32>) -> vector<1
|
||||
}
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_transpose lowering_strategy = "shuffle_16x16"
|
||||
} : !transform.op<"func.func">
|
||||
@@ -842,7 +848,8 @@ func.func @transpose10_nx4xnx1xf32(%arg0: vector<4x[1]xf32>) -> vector<[1]x4xf32
|
||||
}
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_transpose
|
||||
} : !transform.op<"func.func">
|
||||
@@ -863,7 +870,8 @@ func.func @transpose_nx8x2xf32(%arg0: vector<[8]x2xf32>) -> vector<2x[8]xf32> {
|
||||
}
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_transpose lowering_strategy = "shuffle_1d"
|
||||
} : !transform.op<"func.func">
|
||||
|
||||
@@ -30,7 +30,8 @@ func.func @entry() {
|
||||
}
|
||||
|
||||
module attributes {transform.with_named_sequence} {
|
||||
transform.named_sequence @__transform_main(%func_op: !transform.op<"func.func"> {transform.readonly}) {
|
||||
transform.named_sequence @__transform_main(%root : !transform.any_op {transform.readonly}) {
|
||||
%func_op = transform.structured.match ops{["func.func"]} in %root : (!transform.any_op) -> !transform.op<"func.func">
|
||||
transform.apply_patterns to %func_op {
|
||||
transform.apply_patterns.vector.lower_transpose lowering_strategy = "shuffle_16x16"
|
||||
} : !transform.op<"func.func">
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
#include "mlir/Dialect/Tensor/IR/Tensor.h"
|
||||
#include "mlir/Dialect/Tensor/Transforms/TransformUtils.h"
|
||||
#include "mlir/Dialect/Tensor/Transforms/Transforms.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformOps.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Pass/Pass.h"
|
||||
#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
#include "TestTransformStateExtension.h"
|
||||
#include "mlir/Dialect/PDL/IR/PDL.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformOps.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/PDLExtension/PDLExtensionOps.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
#include "mlir/IR/PatternMatch.h"
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
#include "mlir/Bytecode/BytecodeOpInterface.h"
|
||||
#include "mlir/Dialect/PDL/IR/PDLTypes.h"
|
||||
#include "mlir/Dialect/Transform/IR/MatchInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformTypes.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
|
||||
namespace mlir {
|
||||
|
||||
@@ -19,7 +19,7 @@ include "mlir/IR/AttrTypeBase.td"
|
||||
include "mlir/IR/OpBase.td"
|
||||
include "mlir/Dialect/Transform/IR/MatchInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/PDL/IR/PDLTypes.td"
|
||||
|
||||
def TestTransformTestDialectHandleType
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
|
||||
#include "TestTransformDialectExtension.h"
|
||||
#include "mlir/Dialect/Transform/DebugExtension/DebugExtensionOps.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformOps.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Transforms/TransformInterpreterPassBase.h"
|
||||
#include "mlir/IR/Builders.h"
|
||||
#include "mlir/IR/BuiltinOps.h"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#ifndef MLIR_TEST_LIB_DIALECT_TRANSFORM_TESTTRANSFORMSTATEEXTENSION_H
|
||||
#define MLIR_TEST_LIB_DIALECT_TRANSFORM_TESTTRANSFORMSTATEEXTENSION_H
|
||||
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
|
||||
using namespace mlir;
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#include "mlir/Dialect/SCF/Transforms/TileUsingInterface.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformAttrs.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
|
||||
#include "mlir/Dialect/Utils/StaticValueUtils.h"
|
||||
#include "mlir/IR/Dominance.h"
|
||||
#include "mlir/IR/OpImplementation.h"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
include "mlir/Dialect/SCF/IR/DeviceMappingInterface.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformDialect.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
|
||||
include "mlir/Dialect/Transform/IR/TransformTypes.td"
|
||||
include "mlir/Interfaces/SideEffectInterfaces.td"
|
||||
include "mlir/IR/OpBase.td"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user