diff --git a/mlir/docs/Interfaces.md b/mlir/docs/Interfaces.md --- a/mlir/docs/Interfaces.md +++ b/mlir/docs/Interfaces.md @@ -63,7 +63,7 @@ }; /// Register the interface with the dialect. -AffineOpsDialect::AffineOpsDialect(MLIRContext *context) ... { +AffineDialect::AffineDialect(MLIRContext *context) ... { addInterfaces(); } ``` diff --git a/mlir/docs/Tutorials/Toy/Ch-5.md b/mlir/docs/Tutorials/Toy/Ch-5.md --- a/mlir/docs/Tutorials/Toy/Ch-5.md +++ b/mlir/docs/Tutorials/Toy/Ch-5.md @@ -62,7 +62,7 @@ // We define the specific operations, or dialects, that are legal targets for // this lowering. In our case, we are lowering to a combination of the // `Affine` and `Standard` dialects. - target.addLegalDialect(); + target.addLegalDialect(); // We also define the Toy dialect as Illegal so that the conversion will fail // if any of these operations are *not* converted. Given that we actually want diff --git a/mlir/examples/toy/Ch5/mlir/LowerToAffineLoops.cpp b/mlir/examples/toy/Ch5/mlir/LowerToAffineLoops.cpp --- a/mlir/examples/toy/Ch5/mlir/LowerToAffineLoops.cpp +++ b/mlir/examples/toy/Ch5/mlir/LowerToAffineLoops.cpp @@ -15,7 +15,7 @@ #include "toy/Dialect.h" #include "toy/Passes.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/Pass/Pass.h" #include "mlir/Transforms/DialectConversion.h" @@ -280,7 +280,7 @@ // We define the specific operations, or dialects, that are legal targets for // this lowering. In our case, we are lowering to a combination of the // `Affine` and `Standard` dialects. - target.addLegalDialect(); + target.addLegalDialect(); // We also define the Toy dialect as Illegal so that the conversion will fail // if any of these operations are *not* converted. Given that we actually want diff --git a/mlir/examples/toy/Ch6/mlir/LowerToAffineLoops.cpp b/mlir/examples/toy/Ch6/mlir/LowerToAffineLoops.cpp --- a/mlir/examples/toy/Ch6/mlir/LowerToAffineLoops.cpp +++ b/mlir/examples/toy/Ch6/mlir/LowerToAffineLoops.cpp @@ -15,7 +15,7 @@ #include "toy/Dialect.h" #include "toy/Passes.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/Pass/Pass.h" #include "mlir/Transforms/DialectConversion.h" @@ -280,7 +280,7 @@ // We define the specific operations, or dialects, that are legal targets for // this lowering. In our case, we are lowering to a combination of the // `Affine` and `Standard` dialects. - target.addLegalDialect(); + target.addLegalDialect(); // We also define the Toy dialect as Illegal so that the conversion will fail // if any of these operations are *not* converted. Given that we actually want diff --git a/mlir/examples/toy/Ch6/mlir/LowerToLLVM.cpp b/mlir/examples/toy/Ch6/mlir/LowerToLLVM.cpp --- a/mlir/examples/toy/Ch6/mlir/LowerToLLVM.cpp +++ b/mlir/examples/toy/Ch6/mlir/LowerToLLVM.cpp @@ -19,7 +19,7 @@ #include "mlir/Conversion/LoopToStandard/ConvertLoopToStandard.h" #include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h" #include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/LLVMIR/LLVMDialect.h" #include "mlir/Dialect/LoopOps/LoopOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" diff --git a/mlir/examples/toy/Ch7/mlir/LowerToAffineLoops.cpp b/mlir/examples/toy/Ch7/mlir/LowerToAffineLoops.cpp --- a/mlir/examples/toy/Ch7/mlir/LowerToAffineLoops.cpp +++ b/mlir/examples/toy/Ch7/mlir/LowerToAffineLoops.cpp @@ -15,7 +15,7 @@ #include "toy/Dialect.h" #include "toy/Passes.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/Pass/Pass.h" #include "mlir/Transforms/DialectConversion.h" @@ -280,7 +280,7 @@ // We define the specific operations, or dialects, that are legal targets for // this lowering. In our case, we are lowering to a combination of the // `Affine` and `Standard` dialects. - target.addLegalDialect(); + target.addLegalDialect(); // We also define the Toy dialect as Illegal so that the conversion will fail // if any of these operations are *not* converted. Given that we actually want diff --git a/mlir/examples/toy/Ch7/mlir/LowerToLLVM.cpp b/mlir/examples/toy/Ch7/mlir/LowerToLLVM.cpp --- a/mlir/examples/toy/Ch7/mlir/LowerToLLVM.cpp +++ b/mlir/examples/toy/Ch7/mlir/LowerToLLVM.cpp @@ -19,7 +19,7 @@ #include "mlir/Conversion/LoopToStandard/ConvertLoopToStandard.h" #include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h" #include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/LLVMIR/LLVMDialect.h" #include "mlir/Dialect/LoopOps/LoopOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" diff --git a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(IR) diff --git a/mlir/include/mlir/Dialect/AffineOps/EDSC/Builders.h b/mlir/include/mlir/Dialect/Affine/EDSC/Builders.h rename from mlir/include/mlir/Dialect/AffineOps/EDSC/Builders.h rename to mlir/include/mlir/Dialect/Affine/EDSC/Builders.h --- a/mlir/include/mlir/Dialect/AffineOps/EDSC/Builders.h +++ b/mlir/include/mlir/Dialect/Affine/EDSC/Builders.h @@ -11,10 +11,10 @@ // //===----------------------------------------------------------------------===// -#ifndef MLIR_DIALECT_AFFINEOPS_EDSC_BUILDERS_H_ -#define MLIR_DIALECT_AFFINEOPS_EDSC_BUILDERS_H_ +#ifndef MLIR_DIALECT_AFFINE_EDSC_BUILDERS_H_ +#define MLIR_DIALECT_AFFINE_EDSC_BUILDERS_H_ -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/EDSC/Builders.h" #include "mlir/IR/Builders.h" #include "mlir/IR/Types.h" @@ -203,4 +203,4 @@ } // namespace edsc } // namespace mlir -#endif // MLIR_DIALECT_AFFINEOPS_EDSC_BUILDERS_H_ +#endif // MLIR_DIALECT_AFFINE_EDSC_BUILDERS_H_ diff --git a/mlir/include/mlir/Dialect/AffineOps/EDSC/Intrinsics.h b/mlir/include/mlir/Dialect/Affine/EDSC/Intrinsics.h rename from mlir/include/mlir/Dialect/AffineOps/EDSC/Intrinsics.h rename to mlir/include/mlir/Dialect/Affine/EDSC/Intrinsics.h --- a/mlir/include/mlir/Dialect/AffineOps/EDSC/Intrinsics.h +++ b/mlir/include/mlir/Dialect/Affine/EDSC/Intrinsics.h @@ -5,10 +5,10 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -#ifndef MLIR_DIALECT_AFFINEOPS_EDSC_INTRINSICS_H_ -#define MLIR_DIALECT_AFFINEOPS_EDSC_INTRINSICS_H_ +#ifndef MLIR_DIALECT_AFFINE_EDSC_INTRINSICS_H_ +#define MLIR_DIALECT_AFFINE_EDSC_INTRINSICS_H_ -#include "mlir/Dialect/AffineOps/EDSC/Builders.h" +#include "mlir/Dialect/Affine/EDSC/Builders.h" #include "mlir/EDSC/Intrinsics.h" namespace mlir { diff --git a/mlir/include/mlir/Dialect/AffineOps/AffineOps.h b/mlir/include/mlir/Dialect/Affine/IR/AffineOps.h rename from mlir/include/mlir/Dialect/AffineOps/AffineOps.h rename to mlir/include/mlir/Dialect/Affine/IR/AffineOps.h --- a/mlir/include/mlir/Dialect/AffineOps/AffineOps.h +++ b/mlir/include/mlir/Dialect/Affine/IR/AffineOps.h @@ -11,8 +11,8 @@ // //===----------------------------------------------------------------------===// -#ifndef MLIR_DIALECT_AFFINEOPS_AFFINEOPS_H -#define MLIR_DIALECT_AFFINEOPS_AFFINEOPS_H +#ifndef MLIR_DIALECT_AFFINE_IR_AFFINEOPS_H +#define MLIR_DIALECT_AFFINE_IR_AFFINEOPS_H #include "mlir/IR/AffineMap.h" #include "mlir/IR/Builders.h" @@ -493,10 +493,10 @@ void fullyComposeAffineMapAndOperands(AffineMap *map, SmallVectorImpl *operands); -#include "mlir/Dialect/AffineOps/AffineOpsDialect.h.inc" +#include "mlir/Dialect/Affine/IR/AffineOpsDialect.h.inc" #define GET_OP_CLASSES -#include "mlir/Dialect/AffineOps/AffineOps.h.inc" +#include "mlir/Dialect/Affine/IR/AffineOps.h.inc" /// Returns if the provided value is the induction variable of a AffineForOp. bool isForInductionVar(Value val); diff --git a/mlir/include/mlir/Dialect/AffineOps/AffineOps.td b/mlir/include/mlir/Dialect/Affine/IR/AffineOps.td rename from mlir/include/mlir/Dialect/AffineOps/AffineOps.td rename to mlir/include/mlir/Dialect/Affine/IR/AffineOps.td --- a/mlir/include/mlir/Dialect/AffineOps/AffineOps.td +++ b/mlir/include/mlir/Dialect/Affine/IR/AffineOps.td @@ -13,11 +13,11 @@ #ifndef AFFINE_OPS #define AFFINE_OPS -include "mlir/Dialect/AffineOps/AffineOpsBase.td" +include "mlir/Dialect/Affine/IR/AffineOpsBase.td" include "mlir/Interfaces/LoopLikeInterface.td" include "mlir/Interfaces/SideEffects.td" -def AffineOps_Dialect : Dialect { +def Affine_Dialect : Dialect { let name = "affine"; let cppNamespace = ""; let hasConstantMaterializer = 1; @@ -25,7 +25,7 @@ // Base class for Affine dialect ops. class Affine_Op traits = []> : - Op { + Op { // For every affine op, there needs to be a: // * void print(OpAsmPrinter &p, ${C++ class of Op} op) // * LogicalResult verify(${C++ class of Op} op) @@ -291,7 +291,7 @@ } class AffineMinMaxOpBase traits = []> : - Op { + Op { let arguments = (ins AffineMapAttr:$map, Variadic:$operands); let results = (outs Index); diff --git a/mlir/include/mlir/Dialect/AffineOps/AffineOpsBase.td b/mlir/include/mlir/Dialect/Affine/IR/AffineOpsBase.td rename from mlir/include/mlir/Dialect/AffineOps/AffineOpsBase.td rename to mlir/include/mlir/Dialect/Affine/IR/AffineOpsBase.td diff --git a/mlir/include/mlir/Dialect/AffineOps/AffineValueMap.h b/mlir/include/mlir/Dialect/Affine/IR/AffineValueMap.h rename from mlir/include/mlir/Dialect/AffineOps/AffineValueMap.h rename to mlir/include/mlir/Dialect/Affine/IR/AffineValueMap.h --- a/mlir/include/mlir/Dialect/AffineOps/AffineValueMap.h +++ b/mlir/include/mlir/Dialect/Affine/IR/AffineValueMap.h @@ -10,8 +10,8 @@ // analysis purposes. //===----------------------------------------------------------------------===// -#ifndef MLIR_DIALECT_AFFINEOPS_AFFINEVALUEMAP_H -#define MLIR_DIALECT_AFFINEOPS_AFFINEVALUEMAP_H +#ifndef MLIR_DIALECT_AFFINE_IR_AFFINEVALUEMAP_H +#define MLIR_DIALECT_AFFINE_IR_AFFINEVALUEMAP_H #include "mlir/IR/AffineMap.h" #include "mlir/IR/OperationSupport.h" @@ -87,4 +87,4 @@ } // namespace mlir -#endif // MLIR_DIALECT_AFFINEOPS_AFFINEVALUEMAP_H +#endif // MLIR_DIALECT_AFFINE_IR_AFFINEVALUEMAP_H diff --git a/mlir/include/mlir/Dialect/AffineOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/IR/CMakeLists.txt rename from mlir/include/mlir/Dialect/AffineOps/CMakeLists.txt rename to mlir/include/mlir/Dialect/Affine/IR/CMakeLists.txt diff --git a/mlir/include/mlir/Dialect/Affine/Passes.h b/mlir/include/mlir/Dialect/Affine/Passes.h new file mode 100644 --- /dev/null +++ b/mlir/include/mlir/Dialect/Affine/Passes.h @@ -0,0 +1,48 @@ +//===- Passes.h - Pass Entrypoints ------------------------------*- 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 +// +//===----------------------------------------------------------------------===// +// +// This header file defines a set of transforms specific for the AffineOps +// dialect. +// +//===----------------------------------------------------------------------===// + +#ifndef MLIR_DIALECT_AFFINE_TRANSFORMS_PASSES_H +#define MLIR_DIALECT_AFFINE_TRANSFORMS_PASSES_H + +#include "mlir/Support/LLVM.h" +#include +#include + +namespace mlir { + +class AffineForOp; +class FuncOp; +class ModuleOp; +class Pass; +template class OpPassBase; + +/// Creates a simplification pass for affine structures (maps and sets). In +/// addition, this pass also normalizes memrefs to have the trivial (identity) +/// layout map. +std::unique_ptr> createSimplifyAffineStructuresPass(); + +/// Creates a loop invariant code motion pass that hoists loop invariant +/// instructions out of affine loop. +std::unique_ptr> createAffineLoopInvariantCodeMotionPass(); + +/// Performs packing (or explicit copying) of accessed memref regions into +/// buffers in the specified faster memory space through either pointwise copies +/// or DMA operations. +std::unique_ptr> createAffineDataCopyGenerationPass( + unsigned slowMemorySpace, unsigned fastMemorySpace, + unsigned tagMemorySpace = 0, int minDmaTransferSize = 1024, + uint64_t fastMemCapacityBytes = std::numeric_limits::max()); + +} // end namespace mlir + +#endif // MLIR_DIALECT_AFFINE_RANSFORMS_PASSES_H diff --git a/mlir/include/mlir/Dialect/CMakeLists.txt b/mlir/include/mlir/Dialect/CMakeLists.txt --- a/mlir/include/mlir/Dialect/CMakeLists.txt +++ b/mlir/include/mlir/Dialect/CMakeLists.txt @@ -1,4 +1,4 @@ -add_subdirectory(AffineOps) +add_subdirectory(Affine) add_subdirectory(AVX512) add_subdirectory(FxpMathOps) add_subdirectory(GPU) diff --git a/mlir/include/mlir/Dialect/Linalg/IR/LinalgOps.td b/mlir/include/mlir/Dialect/Linalg/IR/LinalgOps.td --- a/mlir/include/mlir/Dialect/Linalg/IR/LinalgOps.td +++ b/mlir/include/mlir/Dialect/Linalg/IR/LinalgOps.td @@ -13,7 +13,7 @@ #ifndef LINALG_OPS #define LINALG_OPS -include "mlir/Dialect/AffineOps/AffineOpsBase.td" +include "mlir/Dialect/Affine/IR/AffineOpsBase.td" include "mlir/Dialect/Linalg/IR/LinalgBase.td" include "mlir/Interfaces/SideEffects.td" diff --git a/mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td b/mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td --- a/mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td +++ b/mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td @@ -14,7 +14,7 @@ #ifndef LINALG_STRUCTURED_OPS #define LINALG_STRUCTURED_OPS -include "mlir/Dialect/AffineOps/AffineOpsBase.td" +include "mlir/Dialect/Affine/IR/AffineOpsBase.td" include "mlir/Dialect/Linalg/IR/LinalgBase.td" include "mlir/Dialect/Linalg/IR/LinalgStructuredOpsInterface.td" diff --git a/mlir/include/mlir/Dialect/Linalg/Transforms/LinalgTransformPatterns.td b/mlir/include/mlir/Dialect/Linalg/Transforms/LinalgTransformPatterns.td --- a/mlir/include/mlir/Dialect/Linalg/Transforms/LinalgTransformPatterns.td +++ b/mlir/include/mlir/Dialect/Linalg/Transforms/LinalgTransformPatterns.td @@ -15,7 +15,7 @@ include "mlir/Dialect/Linalg/IR/LinalgOps.td" include "mlir/Dialect/Linalg/IR/LinalgStructuredOps.td" -include "mlir/Dialect/AffineOps/AffineOps.td" +include "mlir/Dialect/Affine/IR/AffineOps.td" def HasNoLinalgTransformMarker : CPred<[{ !op.getAttrOfType(LinalgTransforms::kLinalgTransformMarker) diff --git a/mlir/include/mlir/Dialect/Vector/VectorOps.td b/mlir/include/mlir/Dialect/Vector/VectorOps.td --- a/mlir/include/mlir/Dialect/Vector/VectorOps.td +++ b/mlir/include/mlir/Dialect/Vector/VectorOps.td @@ -13,7 +13,7 @@ #ifndef VECTOR_OPS #define VECTOR_OPS -include "mlir/Dialect/AffineOps/AffineOpsBase.td" +include "mlir/Dialect/Affine/IR/AffineOpsBase.td" include "mlir/Interfaces/SideEffects.td" def Vector_Dialect : Dialect { diff --git a/mlir/include/mlir/Dialect/Vector/VectorOps.td b/mlir/include/mlir/Dialect/VectorOps/VectorOps.td copy from mlir/include/mlir/Dialect/Vector/VectorOps.td copy to mlir/include/mlir/Dialect/VectorOps/VectorOps.td --- a/mlir/include/mlir/Dialect/Vector/VectorOps.td +++ b/mlir/include/mlir/Dialect/VectorOps/VectorOps.td @@ -13,10 +13,11 @@ #ifndef VECTOR_OPS #define VECTOR_OPS -include "mlir/Dialect/AffineOps/AffineOpsBase.td" +include "mlir/Dialect/Affine/IR/AffineOpsBase.td" include "mlir/Interfaces/SideEffects.td" -def Vector_Dialect : Dialect { + +def VectorOps_Dialect : Dialect { let name = "vector"; let cppNamespace = "vector"; let hasConstantMaterializer = 1; @@ -24,7 +25,7 @@ // Base class for Vector dialect ops. class Vector_Op traits = []> : - Op { + Op { // For every vector op, there needs to be a: // * void print(OpAsmPrinter &p, ${C++ class of Op} op) // * LogicalResult verify(${C++ class of Op} op) @@ -433,7 +434,7 @@ } def Vector_FMAOp : - Op]>, Arguments<(ins AnyVector:$lhs, AnyVector:$rhs, AnyVector:$acc)>, Results<(outs AnyVector:$result)> { diff --git a/mlir/include/mlir/InitAllDialects.h b/mlir/include/mlir/InitAllDialects.h --- a/mlir/include/mlir/InitAllDialects.h +++ b/mlir/include/mlir/InitAllDialects.h @@ -15,7 +15,7 @@ #define MLIR_INITALLDIALECTS_H_ #include "mlir/Dialect/AVX512/AVX512Dialect.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/FxpMathOps/FxpMathOps.h" #include "mlir/Dialect/GPU/GPUDialect.h" #include "mlir/Dialect/LLVMIR/LLVMAVX512Dialect.h" @@ -39,7 +39,7 @@ // all the possible dialects to be made available to the context automatically. inline void registerAllDialects() { static bool init_once = []() { - registerDialect(); + registerDialect(); registerDialect(); registerDialect(); registerDialect(); diff --git a/mlir/include/mlir/InitAllPasses.h b/mlir/include/mlir/InitAllPasses.h --- a/mlir/include/mlir/InitAllPasses.h +++ b/mlir/include/mlir/InitAllPasses.h @@ -25,6 +25,8 @@ #include "mlir/Conversion/LinalgToSPIRV/LinalgToSPIRVPass.h" #include "mlir/Conversion/LoopsToGPU/LoopsToGPUPass.h" #include "mlir/Conversion/StandardToSPIRV/ConvertStandardToSPIRVPass.h" +#include "mlir/Dialect/Affine/Passes.h" +#include "mlir/Dialect/FxpMathOps/Passes.h" #include "mlir/Dialect/FxpMathOps/Passes.h" #include "mlir/Dialect/GPU/Passes.h" #include "mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h" diff --git a/mlir/include/mlir/Transforms/Passes.h b/mlir/include/mlir/Transforms/Passes.h --- a/mlir/include/mlir/Transforms/Passes.h +++ b/mlir/include/mlir/Transforms/Passes.h @@ -53,11 +53,6 @@ std::unique_ptr> createLoopUnrollAndJamPass(int unrollJamFactor = -1); -/// Creates a simplification pass for affine structures (maps and sets). In -/// addition, this pass also normalizes memrefs to have the trivial (identity) -/// layout map. -std::unique_ptr> createSimplifyAffineStructuresPass(); - /// Creates a loop fusion pass which fuses loops. Buffers of size less than or /// equal to `localBufSizeThreshold` are promoted to memory space /// `fastMemorySpace'. @@ -91,14 +86,6 @@ /// bounds into a single loop. std::unique_ptr> createLoopCoalescingPass(); -/// Performs packing (or explicit copying) of accessed memref regions into -/// buffers in the specified faster memory space through either pointwise copies -/// or DMA operations. -std::unique_ptr> createAffineDataCopyGenerationPass( - unsigned slowMemorySpace, unsigned fastMemorySpace, - unsigned tagMemorySpace = 0, int minDmaTransferSize = 1024, - uint64_t fastMemCapacityBytes = std::numeric_limits::max()); - /// Creates a pass to perform optimizations relying on memref dataflow such as /// store to load forwarding, elimination of dead stores, and dead allocs. std::unique_ptr> createMemRefDataFlowOptPass(); diff --git a/mlir/lib/Analysis/AffineAnalysis.cpp b/mlir/lib/Analysis/AffineAnalysis.cpp --- a/mlir/lib/Analysis/AffineAnalysis.cpp +++ b/mlir/lib/Analysis/AffineAnalysis.cpp @@ -14,8 +14,8 @@ #include "mlir/Analysis/AffineAnalysis.h" #include "mlir/Analysis/AffineStructures.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" -#include "mlir/Dialect/AffineOps/AffineValueMap.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineValueMap.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/IR/AffineExprVisitor.h" #include "mlir/IR/Builders.h" diff --git a/mlir/lib/Analysis/AffineStructures.cpp b/mlir/lib/Analysis/AffineStructures.cpp --- a/mlir/lib/Analysis/AffineStructures.cpp +++ b/mlir/lib/Analysis/AffineStructures.cpp @@ -11,8 +11,8 @@ //===----------------------------------------------------------------------===// #include "mlir/Analysis/AffineStructures.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" -#include "mlir/Dialect/AffineOps/AffineValueMap.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineValueMap.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/IR/AffineExprVisitor.h" #include "mlir/IR/IntegerSet.h" diff --git a/mlir/lib/Analysis/CMakeLists.txt b/mlir/lib/Analysis/CMakeLists.txt --- a/mlir/lib/Analysis/CMakeLists.txt +++ b/mlir/lib/Analysis/CMakeLists.txt @@ -24,7 +24,7 @@ target_link_libraries(MLIRAnalysis PUBLIC - MLIRAffineOps + MLIRAffine MLIRCallInterfaces MLIRControlFlowInterfaces MLIRInferTypeOpInterface @@ -44,7 +44,7 @@ target_link_libraries(MLIRLoopAnalysis PUBLIC - MLIRAffineOps + MLIRAffine MLIRCallInterfaces MLIRControlFlowInterfaces MLIRInferTypeOpInterface diff --git a/mlir/lib/Analysis/LoopAnalysis.cpp b/mlir/lib/Analysis/LoopAnalysis.cpp --- a/mlir/lib/Analysis/LoopAnalysis.cpp +++ b/mlir/lib/Analysis/LoopAnalysis.cpp @@ -15,8 +15,8 @@ #include "mlir/Analysis/AffineAnalysis.h" #include "mlir/Analysis/AffineStructures.h" #include "mlir/Analysis/NestedMatcher.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" -#include "mlir/Dialect/AffineOps/AffineValueMap.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineValueMap.h" #include "mlir/Support/MathExtras.h" #include "llvm/ADT/DenseSet.h" diff --git a/mlir/lib/Analysis/NestedMatcher.cpp b/mlir/lib/Analysis/NestedMatcher.cpp --- a/mlir/lib/Analysis/NestedMatcher.cpp +++ b/mlir/lib/Analysis/NestedMatcher.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "mlir/Analysis/NestedMatcher.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "llvm/ADT/ArrayRef.h" diff --git a/mlir/lib/Analysis/SliceAnalysis.cpp b/mlir/lib/Analysis/SliceAnalysis.cpp --- a/mlir/lib/Analysis/SliceAnalysis.cpp +++ b/mlir/lib/Analysis/SliceAnalysis.cpp @@ -11,7 +11,7 @@ //===----------------------------------------------------------------------===// #include "mlir/Analysis/SliceAnalysis.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/LoopOps/LoopOps.h" #include "mlir/IR/Function.h" #include "mlir/IR/Operation.h" diff --git a/mlir/lib/Analysis/Utils.cpp b/mlir/lib/Analysis/Utils.cpp --- a/mlir/lib/Analysis/Utils.cpp +++ b/mlir/lib/Analysis/Utils.cpp @@ -14,8 +14,8 @@ #include "mlir/Analysis/Utils.h" #include "mlir/Analysis/AffineAnalysis.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" -#include "mlir/Dialect/AffineOps/AffineValueMap.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineValueMap.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "llvm/ADT/SmallPtrSet.h" #include "llvm/Support/Debug.h" diff --git a/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp b/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp --- a/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp +++ b/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp @@ -13,7 +13,7 @@ #include "mlir/Conversion/AffineToStandard/AffineToStandard.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/LoopOps/LoopOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/IR/AffineExprVisitor.h" diff --git a/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt b/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt --- a/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt +++ b/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt @@ -7,7 +7,7 @@ target_link_libraries( MLIRAffineToStandard PUBLIC - MLIRAffineOps + MLIRAffine MLIRLoopOps MLIRPass MLIRStandardOps diff --git a/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt b/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt --- a/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt +++ b/mlir/lib/Conversion/LoopsToGPU/CMakeLists.txt @@ -7,7 +7,7 @@ ) target_link_libraries(MLIRLoopsToGPU PUBLIC - MLIRAffineOps + MLIRAffine MLIRAffineToStandard MLIRGPU MLIRIR diff --git a/mlir/lib/Conversion/LoopsToGPU/LoopsToGPU.cpp b/mlir/lib/Conversion/LoopsToGPU/LoopsToGPU.cpp --- a/mlir/lib/Conversion/LoopsToGPU/LoopsToGPU.cpp +++ b/mlir/lib/Conversion/LoopsToGPU/LoopsToGPU.cpp @@ -15,7 +15,7 @@ #include "mlir/Conversion/LoopsToGPU/LoopsToGPU.h" #include "mlir/Conversion/AffineToStandard/AffineToStandard.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/GPU/GPUDialect.h" #include "mlir/Dialect/GPU/ParallelLoopMapper.h" #include "mlir/Dialect/LoopOps/LoopOps.h" diff --git a/mlir/lib/Conversion/LoopsToGPU/LoopsToGPUPass.cpp b/mlir/lib/Conversion/LoopsToGPU/LoopsToGPUPass.cpp --- a/mlir/lib/Conversion/LoopsToGPU/LoopsToGPUPass.cpp +++ b/mlir/lib/Conversion/LoopsToGPU/LoopsToGPUPass.cpp @@ -8,7 +8,7 @@ #include "mlir/Conversion/LoopsToGPU/LoopsToGPUPass.h" #include "mlir/Conversion/LoopsToGPU/LoopsToGPU.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/GPU/GPUDialect.h" #include "mlir/Dialect/LoopOps/LoopOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" @@ -123,7 +123,7 @@ populateParallelLoopToGPUPatterns(patterns, &getContext()); ConversionTarget target(getContext()); target.addLegalDialect(); - target.addLegalDialect(); + target.addLegalDialect(); target.addLegalDialect(); target.addLegalDialect(); target.addIllegalOp(); diff --git a/mlir/lib/Conversion/VectorToLoops/ConvertVectorToLoops.cpp b/mlir/lib/Conversion/VectorToLoops/ConvertVectorToLoops.cpp --- a/mlir/lib/Conversion/VectorToLoops/ConvertVectorToLoops.cpp +++ b/mlir/lib/Conversion/VectorToLoops/ConvertVectorToLoops.cpp @@ -13,7 +13,7 @@ #include #include "mlir/Conversion/VectorToLoops/ConvertVectorToLoops.h" -#include "mlir/Dialect/AffineOps/EDSC/Intrinsics.h" +#include "mlir/Dialect/Affine/EDSC/Intrinsics.h" #include "mlir/Dialect/LoopOps/EDSC/Builders.h" #include "mlir/Dialect/StandardOps/EDSC/Intrinsics.h" #include "mlir/Dialect/Vector/VectorOps.h" diff --git a/mlir/lib/Dialect/Affine/CMakeLists.txt b/mlir/lib/Dialect/Affine/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/mlir/lib/Dialect/Affine/CMakeLists.txt @@ -0,0 +1,21 @@ +add_mlir_dialect_library(MLIRAffine + IR/AffineOps.cpp + IR/AffineValueMap.cpp + EDSC/Builders.cpp + + ADDITIONAL_HEADER_DIRS + ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Affine + + DEPENDS + MLIRAffineOpsIncGen + ) +target_link_libraries(MLIRAffine + PUBLIC + MLIREDSC + MLIRIR + MLIRLoopLikeInterface + MLIRSideEffects + MLIRStandardOps + ) + +add_subdirectory(Transforms) diff --git a/mlir/lib/Dialect/AffineOps/EDSC/Builders.cpp b/mlir/lib/Dialect/Affine/EDSC/Builders.cpp rename from mlir/lib/Dialect/AffineOps/EDSC/Builders.cpp rename to mlir/lib/Dialect/Affine/EDSC/Builders.cpp --- a/mlir/lib/Dialect/AffineOps/EDSC/Builders.cpp +++ b/mlir/lib/Dialect/Affine/EDSC/Builders.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/AffineOps/EDSC/Builders.h" +#include "mlir/Dialect/Affine/EDSC/Builders.h" #include "mlir/Dialect/StandardOps/EDSC/Builders.h" #include "mlir/IR/AffineExpr.h" #include "mlir/IR/AffineMap.h" diff --git a/mlir/lib/Dialect/AffineOps/CMakeLists.txt b/mlir/lib/Dialect/Affine/EDSC/CMakeLists.txt rename from mlir/lib/Dialect/AffineOps/CMakeLists.txt rename to mlir/lib/Dialect/Affine/EDSC/CMakeLists.txt --- a/mlir/lib/Dialect/AffineOps/CMakeLists.txt +++ b/mlir/lib/Dialect/Affine/EDSC/CMakeLists.txt @@ -1,15 +1,13 @@ -add_mlir_dialect_library(MLIRAffineOps - AffineOps.cpp - AffineValueMap.cpp +add_mlir_dialect_library(MLIRAffine EDSC/Builders.cpp ADDITIONAL_HEADER_DIRS - ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/AffineOps + ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Affine DEPENDS MLIRAffineOpsIncGen ) -target_link_libraries(MLIRAffineOps +target_link_libraries(MLIRAffine PUBLIC MLIREDSC MLIRIR diff --git a/mlir/lib/Dialect/AffineOps/AffineOps.cpp b/mlir/lib/Dialect/Affine/IR/AffineOps.cpp rename from mlir/lib/Dialect/AffineOps/AffineOps.cpp rename to mlir/lib/Dialect/Affine/IR/AffineOps.cpp --- a/mlir/lib/Dialect/AffineOps/AffineOps.cpp +++ b/mlir/lib/Dialect/Affine/IR/AffineOps.cpp @@ -6,8 +6,8 @@ // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/AffineOps/AffineOps.h" -#include "mlir/Dialect/AffineOps/AffineValueMap.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineValueMap.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/IR/Function.h" #include "mlir/IR/IntegerSet.h" @@ -25,7 +25,7 @@ #define DEBUG_TYPE "affine-analysis" //===----------------------------------------------------------------------===// -// AffineOpsDialect Interfaces +// AffineDialect Interfaces //===----------------------------------------------------------------------===// namespace { @@ -64,21 +64,21 @@ } // end anonymous namespace //===----------------------------------------------------------------------===// -// AffineOpsDialect +// AffineDialect //===----------------------------------------------------------------------===// -AffineOpsDialect::AffineOpsDialect(MLIRContext *context) +AffineDialect::AffineDialect(MLIRContext *context) : Dialect(getDialectNamespace(), context) { addOperations(); addInterfaces(); } /// Materialize a single constant operation from a given attribute value with /// the desired resultant type. -Operation *AffineOpsDialect::materializeConstant(OpBuilder &builder, +Operation *AffineDialect::materializeConstant(OpBuilder &builder, Attribute value, Type type, Location loc) { return builder.create(loc, type, value); @@ -2369,4 +2369,4 @@ //===----------------------------------------------------------------------===// #define GET_OP_CLASSES -#include "mlir/Dialect/AffineOps/AffineOps.cpp.inc" +#include "mlir/Dialect/Affine/IR/AffineOps.cpp.inc" diff --git a/mlir/lib/Dialect/AffineOps/AffineValueMap.cpp b/mlir/lib/Dialect/Affine/IR/AffineValueMap.cpp rename from mlir/lib/Dialect/AffineOps/AffineValueMap.cpp rename to mlir/lib/Dialect/Affine/IR/AffineValueMap.cpp --- a/mlir/lib/Dialect/AffineOps/AffineValueMap.cpp +++ b/mlir/lib/Dialect/Affine/IR/AffineValueMap.cpp @@ -6,8 +6,8 @@ // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/AffineOps/AffineValueMap.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineValueMap.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" using namespace mlir; diff --git a/mlir/lib/Dialect/AffineOps/CMakeLists.txt b/mlir/lib/Dialect/Affine/IR/CMakeLists.txt rename from mlir/lib/Dialect/AffineOps/CMakeLists.txt rename to mlir/lib/Dialect/Affine/IR/CMakeLists.txt --- a/mlir/lib/Dialect/AffineOps/CMakeLists.txt +++ b/mlir/lib/Dialect/Affine/IR/CMakeLists.txt @@ -1,15 +1,14 @@ -add_mlir_dialect_library(MLIRAffineOps +add_mlir_dialect_library(MLIRAffine AffineOps.cpp AffineValueMap.cpp - EDSC/Builders.cpp ADDITIONAL_HEADER_DIRS - ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/AffineOps + ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Affine DEPENDS MLIRAffineOpsIncGen ) -target_link_libraries(MLIRAffineOps +target_link_libraries(MLIRAffine PUBLIC MLIREDSC MLIRIR diff --git a/mlir/lib/Transforms/AffineDataCopyGeneration.cpp b/mlir/lib/Dialect/Affine/Transforms/AffineDataCopyGeneration.cpp rename from mlir/lib/Transforms/AffineDataCopyGeneration.cpp rename to mlir/lib/Dialect/Affine/Transforms/AffineDataCopyGeneration.cpp --- a/mlir/lib/Transforms/AffineDataCopyGeneration.cpp +++ b/mlir/lib/Dialect/Affine/Transforms/AffineDataCopyGeneration.cpp @@ -20,11 +20,11 @@ //===----------------------------------------------------------------------===// #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" +#include "mlir/Dialect/Affine/Passes.h" #include "mlir/IR/Builders.h" #include "mlir/Pass/Pass.h" #include "mlir/Transforms/LoopUtils.h" -#include "mlir/Transforms/Passes.h" #include "mlir/Transforms/Utils.h" #include "llvm/ADT/MapVector.h" #include "llvm/Support/CommandLine.h" diff --git a/mlir/lib/Transforms/AffineLoopInvariantCodeMotion.cpp b/mlir/lib/Dialect/Affine/Transforms/AffineLoopInvariantCodeMotion.cpp rename from mlir/lib/Transforms/AffineLoopInvariantCodeMotion.cpp rename to mlir/lib/Dialect/Affine/Transforms/AffineLoopInvariantCodeMotion.cpp --- a/mlir/lib/Transforms/AffineLoopInvariantCodeMotion.cpp +++ b/mlir/lib/Dialect/Affine/Transforms/AffineLoopInvariantCodeMotion.cpp @@ -15,7 +15,7 @@ #include "mlir/Analysis/LoopAnalysis.h" #include "mlir/Analysis/SliceAnalysis.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/IR/AffineExpr.h" #include "mlir/IR/AffineMap.h" #include "mlir/IR/Builders.h" diff --git a/mlir/lib/Dialect/Affine/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Affine/Transforms/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/mlir/lib/Dialect/Affine/Transforms/CMakeLists.txt @@ -0,0 +1,21 @@ +add_mlir_dialect_library(MLIRAffineTransforms + AffineDataCopyGeneration.cpp + AffineLoopInvariantCodeMotion.cpp + SimplifyAffineStructures.cpp + + ADDITIONAL_HEADER_DIRS + ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Affine + + DEPENDS + MLIRAffineOpsIncGen + MLIRLoopLikeInterfaceIncGen + ) +target_link_libraries(MLIRAffineTransforms + PUBLIC + MLIRAffine + MLIREDSC + MLIRIR + MLIRSideEffects + MLIRStandardOps + ) + diff --git a/mlir/lib/Transforms/SimplifyAffineStructures.cpp b/mlir/lib/Dialect/Affine/Transforms/SimplifyAffineStructures.cpp rename from mlir/lib/Transforms/SimplifyAffineStructures.cpp rename to mlir/lib/Dialect/Affine/Transforms/SimplifyAffineStructures.cpp --- a/mlir/lib/Transforms/SimplifyAffineStructures.cpp +++ b/mlir/lib/Dialect/Affine/Transforms/SimplifyAffineStructures.cpp @@ -13,7 +13,10 @@ #include "mlir/Analysis/AffineStructures.h" #include "mlir/IR/IntegerSet.h" #include "mlir/Pass/Pass.h" -#include "mlir/Transforms/Passes.h" +#include "mlir/Dialect/Affine/IR/AffineValueMap.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" +#include "mlir/Dialect/Affine/Passes.h" +#include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/Transforms/Utils.h" #define DEBUG_TYPE "simplify-affine-structure" diff --git a/mlir/lib/Dialect/CMakeLists.txt b/mlir/lib/Dialect/CMakeLists.txt --- a/mlir/lib/Dialect/CMakeLists.txt +++ b/mlir/lib/Dialect/CMakeLists.txt @@ -1,5 +1,5 @@ +add_subdirectory(Affine) add_subdirectory(AVX512) -add_subdirectory(AffineOps) add_subdirectory(FxpMathOps) add_subdirectory(GPU) add_subdirectory(Linalg) diff --git a/mlir/lib/Dialect/Linalg/EDSC/Builders.cpp b/mlir/lib/Dialect/Linalg/EDSC/Builders.cpp --- a/mlir/lib/Dialect/Linalg/EDSC/Builders.cpp +++ b/mlir/lib/Dialect/Linalg/EDSC/Builders.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// #include "mlir/IR/Builders.h" -#include "mlir/Dialect/AffineOps/EDSC/Intrinsics.h" +#include "mlir/Dialect/Affine/EDSC/Intrinsics.h" #include "mlir/Dialect/Linalg/EDSC/Intrinsics.h" #include "mlir/Dialect/LoopOps/EDSC/Builders.h" #include "mlir/Dialect/StandardOps/EDSC/Intrinsics.h" diff --git a/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt b/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt --- a/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt +++ b/mlir/lib/Dialect/Linalg/EDSC/CMakeLists.txt @@ -12,7 +12,7 @@ PUBLIC MLIREDSC MLIRIR - MLIRAffineOps + MLIRAffine MLIRLinalgOps MLIRLoopOps MLIRStandardOps diff --git a/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt --- a/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt +++ b/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt @@ -14,7 +14,7 @@ ) target_link_libraries(MLIRLinalgTransforms PUBLIC - MLIRAffineOps + MLIRAffine MLIRAnalysis MLIREDSC MLIRIR diff --git a/mlir/lib/Dialect/Linalg/Transforms/LinalgToLoops.cpp b/mlir/lib/Dialect/Linalg/Transforms/LinalgToLoops.cpp --- a/mlir/lib/Dialect/Linalg/Transforms/LinalgToLoops.cpp +++ b/mlir/lib/Dialect/Linalg/Transforms/LinalgToLoops.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/AffineOps/EDSC/Intrinsics.h" +#include "mlir/Dialect/Affine/EDSC/Intrinsics.h" #include "mlir/Dialect/Linalg/EDSC/Intrinsics.h" #include "mlir/Dialect/Linalg/IR/LinalgOps.h" #include "mlir/Dialect/Linalg/IR/LinalgTypes.h" diff --git a/mlir/lib/Dialect/Linalg/Transforms/Promotion.cpp b/mlir/lib/Dialect/Linalg/Transforms/Promotion.cpp --- a/mlir/lib/Dialect/Linalg/Transforms/Promotion.cpp +++ b/mlir/lib/Dialect/Linalg/Transforms/Promotion.cpp @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/AffineOps/EDSC/Intrinsics.h" +#include "mlir/Dialect/Affine/EDSC/Intrinsics.h" #include "mlir/Dialect/Linalg/EDSC/Intrinsics.h" #include "mlir/Dialect/Linalg/IR/LinalgOps.h" #include "mlir/Dialect/Linalg/IR/LinalgTypes.h" diff --git a/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp b/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp --- a/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp +++ b/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/AffineOps/EDSC/Intrinsics.h" +#include "mlir/Dialect/Affine/EDSC/Intrinsics.h" #include "mlir/Dialect/Linalg/EDSC/Intrinsics.h" #include "mlir/Dialect/Linalg/IR/LinalgTypes.h" #include "mlir/Dialect/Linalg/Passes.h" diff --git a/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt b/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt --- a/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt +++ b/mlir/lib/Dialect/Linalg/Utils/CMakeLists.txt @@ -9,7 +9,7 @@ target_link_libraries(MLIRLinalgUtils PUBLIC - MLIRAffineOps + MLIRAffine MLIREDSC MLIRIR MLIRLinalgOps diff --git a/mlir/lib/Dialect/Linalg/Utils/Utils.cpp b/mlir/lib/Dialect/Linalg/Utils/Utils.cpp --- a/mlir/lib/Dialect/Linalg/Utils/Utils.cpp +++ b/mlir/lib/Dialect/Linalg/Utils/Utils.cpp @@ -11,7 +11,7 @@ //===----------------------------------------------------------------------===// #include "mlir/Dialect/Linalg/Utils/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/Linalg/IR/LinalgOps.h" #include "mlir/Dialect/Linalg/IR/LinalgTypes.h" #include "mlir/Dialect/LoopOps/LoopOps.h" diff --git a/mlir/lib/Dialect/LoopOps/Transforms/CMakeLists.txt b/mlir/lib/Dialect/LoopOps/Transforms/CMakeLists.txt --- a/mlir/lib/Dialect/LoopOps/Transforms/CMakeLists.txt +++ b/mlir/lib/Dialect/LoopOps/Transforms/CMakeLists.txt @@ -8,7 +8,7 @@ ) target_link_libraries(MLIRLoopOpsTransforms PUBLIC - MLIRAffineOps + MLIRAffine MLIRIR MLIRPass MLIRLoopOps diff --git a/mlir/lib/Dialect/LoopOps/Transforms/ParallelLoopSpecialization.cpp b/mlir/lib/Dialect/LoopOps/Transforms/ParallelLoopSpecialization.cpp --- a/mlir/lib/Dialect/LoopOps/Transforms/ParallelLoopSpecialization.cpp +++ b/mlir/lib/Dialect/LoopOps/Transforms/ParallelLoopSpecialization.cpp @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/LoopOps/LoopOps.h" #include "mlir/Dialect/LoopOps/Passes.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" diff --git a/mlir/lib/Dialect/LoopOps/Transforms/ParallelLoopTiling.cpp b/mlir/lib/Dialect/LoopOps/Transforms/ParallelLoopTiling.cpp --- a/mlir/lib/Dialect/LoopOps/Transforms/ParallelLoopTiling.cpp +++ b/mlir/lib/Dialect/LoopOps/Transforms/ParallelLoopTiling.cpp @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/LoopOps/LoopOps.h" #include "mlir/Dialect/LoopOps/Passes.h" #include "mlir/Dialect/LoopOps/Transforms.h" diff --git a/mlir/lib/Dialect/Vector/CMakeLists.txt b/mlir/lib/Dialect/Vector/CMakeLists.txt --- a/mlir/lib/Dialect/Vector/CMakeLists.txt +++ b/mlir/lib/Dialect/Vector/CMakeLists.txt @@ -16,7 +16,7 @@ MLIREDSC MLIRIR MLIRStandardOps - MLIRAffineOps + MLIRAffine MLIRLoopOps MLIRLoopAnalysis MLIRSideEffects diff --git a/mlir/lib/Dialect/Vector/VectorTransforms.cpp b/mlir/lib/Dialect/Vector/VectorTransforms.cpp --- a/mlir/lib/Dialect/Vector/VectorTransforms.cpp +++ b/mlir/lib/Dialect/Vector/VectorTransforms.cpp @@ -12,7 +12,7 @@ #include -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/Dialect/Utils/StructuredOpsUtils.h" #include "mlir/Dialect/Vector/VectorOps.h" diff --git a/mlir/lib/Dialect/Vector/VectorUtils.cpp b/mlir/lib/Dialect/Vector/VectorUtils.cpp --- a/mlir/lib/Dialect/Vector/VectorUtils.cpp +++ b/mlir/lib/Dialect/Vector/VectorUtils.cpp @@ -12,7 +12,7 @@ #include "mlir/Dialect/Vector/VectorUtils.h" #include "mlir/Analysis/LoopAnalysis.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/Dialect/Vector/VectorOps.h" #include "mlir/IR/Builders.h" diff --git a/mlir/lib/Dialect/Vector/VectorTransforms.cpp b/mlir/lib/Dialect/VectorOps/VectorTransforms.cpp copy from mlir/lib/Dialect/Vector/VectorTransforms.cpp copy to mlir/lib/Dialect/VectorOps/VectorTransforms.cpp --- a/mlir/lib/Dialect/Vector/VectorTransforms.cpp +++ b/mlir/lib/Dialect/VectorOps/VectorTransforms.cpp @@ -12,12 +12,12 @@ #include -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/Dialect/Utils/StructuredOpsUtils.h" -#include "mlir/Dialect/Vector/VectorOps.h" -#include "mlir/Dialect/Vector/VectorTransforms.h" -#include "mlir/Dialect/Vector/VectorUtils.h" +#include "mlir/Dialect/VectorOps/VectorOps.h" +#include "mlir/Dialect/VectorOps/VectorTransforms.h" +#include "mlir/Dialect/VectorOps/VectorUtils.h" #include "mlir/IR/AffineExpr.h" #include "mlir/IR/AffineMap.h" #include "mlir/IR/Attributes.h" @@ -42,6 +42,13 @@ using llvm::dbgs; using mlir::functional::zipMap; +static llvm::cl::OptionCategory clOptionsCategory(DEBUG_TYPE " options"); + +static llvm::cl::opt lowerToLLVMMatrixIntrinsics( + "vector-lower-matrix-intrinsics", + llvm::cl::desc("Lower vector.contract to llvm.intr.matrix.multiply"), + llvm::cl::init(false), llvm::cl::cat(clOptionsCategory)); + /// Given a shape with sizes greater than 0 along all dimensions, /// returns the distance, in number of elements, between a slice in a dimension /// and the next slice in the same dimension. @@ -545,18 +552,18 @@ struct SplitTransferReadOp : public OpRewritePattern { using OpRewritePattern::OpRewritePattern; - LogicalResult matchAndRewrite(vector::TransferReadOp xferReadOp, - PatternRewriter &rewriter) const override { + PatternMatchResult matchAndRewrite(vector::TransferReadOp xferReadOp, + PatternRewriter &rewriter) const override { // TODO(andydavis, ntv) Support splitting TransferReadOp with non-identity // permutation maps. Repurpose code from MaterializeVectors transformation. if (!isIdentitySuffix(xferReadOp.permutation_map())) - return failure(); + return matchFailure(); // Return unless the unique 'xferReadOp' user is an ExtractSlicesOp. Value xferReadResult = xferReadOp.getResult(); auto extractSlicesOp = dyn_cast(*xferReadResult.getUsers().begin()); if (!xferReadResult.hasOneUse() || !extractSlicesOp) - return failure(); + return matchFailure(); // Get 'sizes' and 'strides' parameters from ExtractSlicesOp user. auto sourceVectorType = extractSlicesOp.getSourceVectorType(); @@ -593,7 +600,7 @@ rewriter.replaceOpWithNewOp( xferReadOp, sourceVectorType, tupleOp, extractSlicesOp.sizes(), extractSlicesOp.strides()); - return success(); + return matchSuccess(); } }; @@ -601,23 +608,23 @@ struct SplitTransferWriteOp : public OpRewritePattern { using OpRewritePattern::OpRewritePattern; - LogicalResult matchAndRewrite(vector::TransferWriteOp xferWriteOp, - PatternRewriter &rewriter) const override { + PatternMatchResult matchAndRewrite(vector::TransferWriteOp xferWriteOp, + PatternRewriter &rewriter) const override { // TODO(andydavis, ntv) Support splitting TransferWriteOp with non-identity // permutation maps. Repurpose code from MaterializeVectors transformation. if (!isIdentitySuffix(xferWriteOp.permutation_map())) - return failure(); + return matchFailure(); // Return unless the 'xferWriteOp' 'vector' operand is an 'InsertSlicesOp'. auto *vectorDefOp = xferWriteOp.vector().getDefiningOp(); auto insertSlicesOp = dyn_cast_or_null(vectorDefOp); if (!insertSlicesOp) - return failure(); + return matchFailure(); // Get TupleOp operand of 'insertSlicesOp'. auto tupleOp = dyn_cast_or_null( insertSlicesOp.vectors().getDefiningOp()); if (!tupleOp) - return failure(); + return matchFailure(); // Get 'sizes' and 'strides' parameters from InsertSlicesOp user. auto sourceTupleType = insertSlicesOp.getSourceTupleType(); @@ -644,7 +651,7 @@ // Erase old 'xferWriteOp'. rewriter.eraseOp(xferWriteOp); - return success(); + return matchSuccess(); } }; @@ -653,15 +660,15 @@ struct ShapeCastOpDecomposer : public OpRewritePattern { using OpRewritePattern::OpRewritePattern; - LogicalResult matchAndRewrite(vector::ShapeCastOp shapeCastOp, - PatternRewriter &rewriter) const override { + PatternMatchResult matchAndRewrite(vector::ShapeCastOp shapeCastOp, + PatternRewriter &rewriter) const override { // Check if 'shapeCastOp' has tuple source/result type. auto sourceTupleType = shapeCastOp.source().getType().dyn_cast_or_null(); auto resultTupleType = shapeCastOp.result().getType().dyn_cast_or_null(); if (!sourceTupleType || !resultTupleType) - return failure(); + return matchFailure(); assert(sourceTupleType.size() == resultTupleType.size()); // Create single-vector ShapeCastOp for each source tuple element. @@ -679,7 +686,7 @@ // Replace 'shapeCastOp' with tuple of 'resultElements'. rewriter.replaceOpWithNewOp(shapeCastOp, resultTupleType, resultElements); - return success(); + return matchSuccess(); } }; @@ -702,21 +709,21 @@ struct ShapeCastOpFolder : public OpRewritePattern { using OpRewritePattern::OpRewritePattern; - LogicalResult matchAndRewrite(vector::ShapeCastOp shapeCastOp, - PatternRewriter &rewriter) const override { + PatternMatchResult matchAndRewrite(vector::ShapeCastOp shapeCastOp, + PatternRewriter &rewriter) const override { // Check if 'shapeCastOp' has vector source/result type. auto sourceVectorType = shapeCastOp.source().getType().dyn_cast_or_null(); auto resultVectorType = shapeCastOp.result().getType().dyn_cast_or_null(); if (!sourceVectorType || !resultVectorType) - return failure(); + return matchFailure(); // Check if shape cast op source operand is also a shape cast op. auto sourceShapeCastOp = dyn_cast_or_null( shapeCastOp.source().getDefiningOp()); if (!sourceShapeCastOp) - return failure(); + return matchFailure(); auto operandSourceVectorType = sourceShapeCastOp.source().getType().cast(); auto operandResultVectorType = @@ -725,10 +732,10 @@ // Check if shape cast operations invert each other. if (operandSourceVectorType != resultVectorType || operandResultVectorType != sourceVectorType) - return failure(); + return matchFailure(); rewriter.replaceOp(shapeCastOp, sourceShapeCastOp.source()); - return success(); + return matchSuccess(); } }; @@ -738,30 +745,30 @@ struct TupleGetFolderOp : public OpRewritePattern { using OpRewritePattern::OpRewritePattern; - LogicalResult matchAndRewrite(vector::TupleGetOp tupleGetOp, - PatternRewriter &rewriter) const override { + PatternMatchResult matchAndRewrite(vector::TupleGetOp tupleGetOp, + PatternRewriter &rewriter) const override { // Return if 'tupleGetOp.vectors' arg was not defined by ExtractSlicesOp. auto extractSlicesOp = dyn_cast_or_null( tupleGetOp.vectors().getDefiningOp()); if (!extractSlicesOp) - return failure(); + return matchFailure(); // Return if 'extractSlicesOp.vector' arg was not defined by InsertSlicesOp. auto insertSlicesOp = dyn_cast_or_null( extractSlicesOp.vector().getDefiningOp()); if (!insertSlicesOp) - return failure(); + return matchFailure(); // Return if 'insertSlicesOp.vectors' arg was not defined by TupleOp. auto tupleOp = dyn_cast_or_null( insertSlicesOp.vectors().getDefiningOp()); if (!tupleOp) - return failure(); + return matchFailure(); // Forward Value from 'tupleOp' at 'tupleGetOp.index'. Value tupleValue = tupleOp.getOperand(tupleGetOp.getIndex()); rewriter.replaceOp(tupleGetOp, tupleValue); - return success(); + return matchSuccess(); } }; @@ -778,8 +785,8 @@ public: using OpRewritePattern::OpRewritePattern; - LogicalResult matchAndRewrite(vector::ExtractSlicesOp op, - PatternRewriter &rewriter) const override { + PatternMatchResult matchAndRewrite(vector::ExtractSlicesOp op, + PatternRewriter &rewriter) const override { auto loc = op.getLoc(); VectorType vectorType = op.getSourceVectorType(); @@ -806,7 +813,7 @@ } rewriter.replaceOpWithNewOp(op, tupleType, tupleValues); - return success(); + return matchSuccess(); } }; @@ -825,8 +832,8 @@ public: using OpRewritePattern::OpRewritePattern; - LogicalResult matchAndRewrite(vector::InsertSlicesOp op, - PatternRewriter &rewriter) const override { + PatternMatchResult matchAndRewrite(vector::InsertSlicesOp op, + PatternRewriter &rewriter) const override { auto loc = op.getLoc(); VectorType vectorType = op.getResultVectorType(); @@ -860,7 +867,7 @@ } rewriter.replaceOp(op, result); - return success(); + return matchSuccess(); } }; @@ -881,8 +888,8 @@ public: using OpRewritePattern::OpRewritePattern; - LogicalResult matchAndRewrite(vector::OuterProductOp op, - PatternRewriter &rewriter) const override { + PatternMatchResult matchAndRewrite(vector::OuterProductOp op, + PatternRewriter &rewriter) const override { auto loc = op.getLoc(); VectorType rhsType = op.getOperandVectorTypeRHS(); @@ -907,7 +914,7 @@ result = rewriter.create(loc, resType, m, result, pos); } rewriter.replaceOp(op, result); - return success(); + return matchSuccess(); } }; @@ -929,56 +936,43 @@ public: using OpRewritePattern::OpRewritePattern; - ContractionOpLowering(vector::VectorTransformsOptions vectorTransformsOptions, - MLIRContext *context) - : OpRewritePattern(context), - vectorTransformsOptions(vectorTransformsOptions) {} - - LogicalResult matchAndRewrite(vector::ContractionOp op, - PatternRewriter &rewriter) const override { + PatternMatchResult matchAndRewrite(vector::ContractionOp op, + PatternRewriter &rewriter) const override { // TODO(ajcbik): implement masks if (llvm::size(op.masks()) != 0) - return failure(); + return matchFailure(); // TODO(ntv, ajcbik): implement benefits, cost models, separate this out in // a new pattern. // TODO(ntv, fhahn): once row-major mode is available in LLVM's matrix // intrinsics, use that. - if (vectorTransformsOptions.lowerToLLVMMatrixIntrinsics && + if (lowerToLLVMMatrixIntrinsics && isColumnMajorMatmul(op.indexing_maps())) { VectorType lhsType = op.getLhsType(); VectorType rhsType = op.getRhsType(); + Type flattenedLHSType = + VectorType::get(lhsType.getNumElements(), lhsType.getElementType()); + Type flattenedRHSType = + VectorType::get(rhsType.getNumElements(), rhsType.getElementType()); + auto lhs = rewriter.create( + op.getLoc(), flattenedLHSType, op.lhs()); + auto rhs = rewriter.create( + op.getLoc(), flattenedRHSType, op.rhs()); + unsigned lhsRows = op.getLhsType().getShape()[0]; unsigned lhsColumns = op.getLhsType().getShape()[1]; unsigned rhsColumns = op.getRhsType().getShape()[1]; - - // In cases where matrices are degenerate, scalarization issues occur in - // the backend. Avoid all LLVM scalarization issues for now. - // For more details, see: https://bugs.llvm.org/show_bug.cgi?id=45227 and - // https://bugs.llvm.org/show_bug.cgi?id=45229 - // TODO(ntv, fhahn): Relax once above bugs are fixed. - if (lhsRows != 1 && lhsColumns != 1 && rhsColumns != 1) { - Type flattenedLHSType = - VectorType::get(lhsType.getNumElements(), lhsType.getElementType()); - Type flattenedRHSType = - VectorType::get(rhsType.getNumElements(), rhsType.getElementType()); - auto lhs = rewriter.create( - op.getLoc(), flattenedLHSType, op.lhs()); - auto rhs = rewriter.create( - op.getLoc(), flattenedRHSType, op.rhs()); - - Value mul = rewriter.create( - op.getLoc(), lhs, rhs, lhsRows, lhsColumns, rhsColumns); - mul = rewriter.create(op.getLoc(), - op.acc().getType(), mul); - Type elementType = op.getLhsType().getElementType(); - assert(elementType.isIntOrFloat()); - if (elementType.isa()) - rewriter.replaceOpWithNewOp(op, op.acc(), mul); - else - rewriter.replaceOpWithNewOp(op, op.acc(), mul); - return success(); - } + Value mul = rewriter.create( + op.getLoc(), lhs, rhs, lhsRows, lhsColumns, rhsColumns); + mul = rewriter.create(op.getLoc(), + op.acc().getType(), mul); + Type elementType = op.getLhsType().getElementType(); + assert(elementType.isIntOrFloat()); + if (elementType.isa()) + rewriter.replaceOpWithNewOp(op, op.acc(), mul); + else + rewriter.replaceOpWithNewOp(op, op.acc(), mul); + return matchSuccess(); } // Find first batch dimension in LHS/RHS, and lower when found. @@ -987,7 +981,7 @@ int64_t lhsIndex = batchDimMap[0].first; int64_t rhsIndex = batchDimMap[0].second; rewriter.replaceOp(op, lowerParallel(op, lhsIndex, rhsIndex, rewriter)); - return success(); + return matchSuccess(); } // Collect contracting dimensions. @@ -1007,7 +1001,7 @@ if (lhsContractingDimSet.count(lhsIndex) == 0) { rewriter.replaceOp( op, lowerParallel(op, lhsIndex, /*rhsIndex=*/-1, rewriter)); - return success(); + return matchSuccess(); } } @@ -1018,17 +1012,17 @@ if (rhsContractingDimSet.count(rhsIndex) == 0) { rewriter.replaceOp( op, lowerParallel(op, /*lhsIndex=*/-1, rhsIndex, rewriter)); - return success(); + return matchSuccess(); } } // Lower the first remaining reduction dimension. if (!contractingDimMap.empty()) { rewriter.replaceOp(op, lowerReduction(op, rewriter)); - return success(); + return matchSuccess(); } - return failure(); + return matchFailure(); } private: @@ -1261,8 +1255,6 @@ } return result; } - - vector::VectorTransformsOptions vectorTransformsOptions; }; /// ShapeOp 2D -> 1D downcast serves the purpose of flattening 2-D to 1-D @@ -1275,12 +1267,12 @@ public: using OpRewritePattern::OpRewritePattern; - LogicalResult matchAndRewrite(vector::ShapeCastOp op, - PatternRewriter &rewriter) const override { + PatternMatchResult matchAndRewrite(vector::ShapeCastOp op, + PatternRewriter &rewriter) const override { auto sourceVectorType = op.getSourceVectorType(); auto resultVectorType = op.getResultVectorType(); if (sourceVectorType.getRank() != 2 || resultVectorType.getRank() != 1) - return failure(); + return matchFailure(); auto loc = op.getLoc(); auto elemType = sourceVectorType.getElementType(); @@ -1295,7 +1287,7 @@ /*offsets=*/i * mostMinorVectorSize, /*strides=*/1); } rewriter.replaceOp(op, desc); - return success(); + return matchSuccess(); } }; @@ -1309,12 +1301,12 @@ public: using OpRewritePattern::OpRewritePattern; - LogicalResult matchAndRewrite(vector::ShapeCastOp op, - PatternRewriter &rewriter) const override { + PatternMatchResult matchAndRewrite(vector::ShapeCastOp op, + PatternRewriter &rewriter) const override { auto sourceVectorType = op.getSourceVectorType(); auto resultVectorType = op.getResultVectorType(); if (sourceVectorType.getRank() != 1 || resultVectorType.getRank() != 2) - return failure(); + return matchFailure(); auto loc = op.getLoc(); auto elemType = sourceVectorType.getElementType(); @@ -1330,7 +1322,7 @@ desc = rewriter.create(loc, vec, desc, i); } rewriter.replaceOp(op, desc); - return success(); + return matchSuccess(); } }; @@ -1350,10 +1342,8 @@ } void mlir::vector::populateVectorContractLoweringPatterns( - OwningRewritePatternList &patterns, MLIRContext *context, - VectorTransformsOptions parameters) { - patterns.insert( context); - patterns.insert(parameters, context); } diff --git a/mlir/lib/Dialect/Vector/VectorUtils.cpp b/mlir/lib/Dialect/VectorOps/VectorUtils.cpp copy from mlir/lib/Dialect/Vector/VectorUtils.cpp copy to mlir/lib/Dialect/VectorOps/VectorUtils.cpp --- a/mlir/lib/Dialect/Vector/VectorUtils.cpp +++ b/mlir/lib/Dialect/VectorOps/VectorUtils.cpp @@ -6,15 +6,15 @@ // //===----------------------------------------------------------------------===// // -// This file implements utility methods for working with the Vector dialect. +// This file implements utility methods for working with the VectorOps dialect. // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/Vector/VectorUtils.h" +#include "mlir/Dialect/VectorOps/VectorUtils.h" #include "mlir/Analysis/LoopAnalysis.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" -#include "mlir/Dialect/Vector/VectorOps.h" +#include "mlir/Dialect/VectorOps/VectorOps.h" #include "mlir/IR/Builders.h" #include "mlir/IR/IntegerSet.h" #include "mlir/IR/Operation.h" diff --git a/mlir/lib/Transforms/CMakeLists.txt b/mlir/lib/Transforms/CMakeLists.txt --- a/mlir/lib/Transforms/CMakeLists.txt +++ b/mlir/lib/Transforms/CMakeLists.txt @@ -1,8 +1,6 @@ add_subdirectory(Utils) add_mlir_library(MLIRTransforms - AffineDataCopyGeneration.cpp - AffineLoopInvariantCodeMotion.cpp Canonicalizer.cpp CSE.cpp DialectConversion.cpp @@ -17,7 +15,6 @@ MemRefDataFlowOpt.cpp OpStats.cpp PipelineDataTransfer.cpp - SimplifyAffineStructures.cpp StripDebugInfo.cpp SymbolDCE.cpp Vectorize.cpp @@ -33,7 +30,7 @@ target_link_libraries(MLIRTransforms PUBLIC - MLIRAffineOps + MLIRAffine MLIRAnalysis MLIRLoopLikeInterface MLIRLoopOps diff --git a/mlir/lib/Transforms/LoopFusion.cpp b/mlir/lib/Transforms/LoopFusion.cpp --- a/mlir/lib/Transforms/LoopFusion.cpp +++ b/mlir/lib/Transforms/LoopFusion.cpp @@ -14,7 +14,7 @@ #include "mlir/Analysis/AffineStructures.h" #include "mlir/Analysis/LoopAnalysis.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/IR/AffineExpr.h" #include "mlir/IR/AffineMap.h" #include "mlir/IR/Builders.h" diff --git a/mlir/lib/Transforms/LoopTiling.cpp b/mlir/lib/Transforms/LoopTiling.cpp --- a/mlir/lib/Transforms/LoopTiling.cpp +++ b/mlir/lib/Transforms/LoopTiling.cpp @@ -14,7 +14,7 @@ #include "mlir/Analysis/AffineStructures.h" #include "mlir/Analysis/LoopAnalysis.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/IR/Builders.h" #include "mlir/Pass/Pass.h" #include "mlir/Transforms/LoopUtils.h" diff --git a/mlir/lib/Transforms/LoopUnroll.cpp b/mlir/lib/Transforms/LoopUnroll.cpp --- a/mlir/lib/Transforms/LoopUnroll.cpp +++ b/mlir/lib/Transforms/LoopUnroll.cpp @@ -13,7 +13,7 @@ #include "mlir/Transforms/Passes.h" #include "mlir/Analysis/LoopAnalysis.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/IR/AffineExpr.h" #include "mlir/IR/AffineMap.h" #include "mlir/IR/Builders.h" diff --git a/mlir/lib/Transforms/LoopUnrollAndJam.cpp b/mlir/lib/Transforms/LoopUnrollAndJam.cpp --- a/mlir/lib/Transforms/LoopUnrollAndJam.cpp +++ b/mlir/lib/Transforms/LoopUnrollAndJam.cpp @@ -35,7 +35,7 @@ #include "mlir/Transforms/Passes.h" #include "mlir/Analysis/LoopAnalysis.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/IR/AffineExpr.h" #include "mlir/IR/AffineMap.h" #include "mlir/IR/BlockAndValueMapping.h" diff --git a/mlir/lib/Transforms/MemRefDataFlowOpt.cpp b/mlir/lib/Transforms/MemRefDataFlowOpt.cpp --- a/mlir/lib/Transforms/MemRefDataFlowOpt.cpp +++ b/mlir/lib/Transforms/MemRefDataFlowOpt.cpp @@ -16,7 +16,7 @@ #include "mlir/Analysis/AffineAnalysis.h" #include "mlir/Analysis/Dominance.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/Pass/Pass.h" #include "mlir/Transforms/Passes.h" diff --git a/mlir/lib/Transforms/PipelineDataTransfer.cpp b/mlir/lib/Transforms/PipelineDataTransfer.cpp --- a/mlir/lib/Transforms/PipelineDataTransfer.cpp +++ b/mlir/lib/Transforms/PipelineDataTransfer.cpp @@ -15,7 +15,7 @@ #include "mlir/Analysis/AffineAnalysis.h" #include "mlir/Analysis/LoopAnalysis.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/IR/Builders.h" #include "mlir/Pass/Pass.h" #include "mlir/Transforms/LoopUtils.h" diff --git a/mlir/lib/Transforms/Utils/CMakeLists.txt b/mlir/lib/Transforms/Utils/CMakeLists.txt --- a/mlir/lib/Transforms/Utils/CMakeLists.txt +++ b/mlir/lib/Transforms/Utils/CMakeLists.txt @@ -16,7 +16,7 @@ target_link_libraries(MLIRTransformUtils PUBLIC - MLIRAffineOps + MLIRAffine MLIRAnalysis MLIRLoopAnalysis MLIRLoopOps diff --git a/mlir/lib/Transforms/Utils/LoopFusionUtils.cpp b/mlir/lib/Transforms/Utils/LoopFusionUtils.cpp --- a/mlir/lib/Transforms/Utils/LoopFusionUtils.cpp +++ b/mlir/lib/Transforms/Utils/LoopFusionUtils.cpp @@ -16,7 +16,7 @@ #include "mlir/Analysis/AffineStructures.h" #include "mlir/Analysis/LoopAnalysis.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/IR/AffineExpr.h" #include "mlir/IR/AffineMap.h" #include "mlir/IR/BlockAndValueMapping.h" diff --git a/mlir/lib/Transforms/Utils/LoopUtils.cpp b/mlir/lib/Transforms/Utils/LoopUtils.cpp --- a/mlir/lib/Transforms/Utils/LoopUtils.cpp +++ b/mlir/lib/Transforms/Utils/LoopUtils.cpp @@ -16,7 +16,7 @@ #include "mlir/Analysis/LoopAnalysis.h" #include "mlir/Analysis/SliceAnalysis.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/LoopOps/LoopOps.h" #include "mlir/IR/AffineMap.h" #include "mlir/IR/BlockAndValueMapping.h" diff --git a/mlir/lib/Transforms/Utils/Utils.cpp b/mlir/lib/Transforms/Utils/Utils.cpp --- a/mlir/lib/Transforms/Utils/Utils.cpp +++ b/mlir/lib/Transforms/Utils/Utils.cpp @@ -18,7 +18,7 @@ #include "mlir/Analysis/AffineStructures.h" #include "mlir/Analysis/Dominance.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/IR/Builders.h" #include "mlir/IR/Function.h" #include "mlir/IR/Module.h" diff --git a/mlir/lib/Transforms/Vectorize.cpp b/mlir/lib/Transforms/Vectorize.cpp --- a/mlir/lib/Transforms/Vectorize.cpp +++ b/mlir/lib/Transforms/Vectorize.cpp @@ -15,7 +15,7 @@ #include "mlir/Analysis/NestedMatcher.h" #include "mlir/Analysis/SliceAnalysis.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/Dialect/Vector/VectorOps.h" #include "mlir/Dialect/Vector/VectorUtils.h" diff --git a/mlir/test/Dialect/AffineOps/canonicalize.mlir b/mlir/test/Dialect/Affine/canonicalize.mlir rename from mlir/test/Dialect/AffineOps/canonicalize.mlir rename to mlir/test/Dialect/Affine/canonicalize.mlir diff --git a/mlir/test/Dialect/AffineOps/dma.mlir b/mlir/test/Dialect/Affine/dma.mlir rename from mlir/test/Dialect/AffineOps/dma.mlir rename to mlir/test/Dialect/Affine/dma.mlir diff --git a/mlir/test/Dialect/AffineOps/inlining.mlir b/mlir/test/Dialect/Affine/inlining.mlir rename from mlir/test/Dialect/AffineOps/inlining.mlir rename to mlir/test/Dialect/Affine/inlining.mlir diff --git a/mlir/test/Dialect/AffineOps/invalid.mlir b/mlir/test/Dialect/Affine/invalid.mlir rename from mlir/test/Dialect/AffineOps/invalid.mlir rename to mlir/test/Dialect/Affine/invalid.mlir diff --git a/mlir/test/Dialect/AffineOps/load-store-invalid.mlir b/mlir/test/Dialect/Affine/load-store-invalid.mlir rename from mlir/test/Dialect/AffineOps/load-store-invalid.mlir rename to mlir/test/Dialect/Affine/load-store-invalid.mlir diff --git a/mlir/test/Dialect/AffineOps/load-store.mlir b/mlir/test/Dialect/Affine/load-store.mlir rename from mlir/test/Dialect/AffineOps/load-store.mlir rename to mlir/test/Dialect/Affine/load-store.mlir diff --git a/mlir/test/Dialect/AffineOps/memref-stride-calculation.mlir b/mlir/test/Dialect/Affine/memref-stride-calculation.mlir rename from mlir/test/Dialect/AffineOps/memref-stride-calculation.mlir rename to mlir/test/Dialect/Affine/memref-stride-calculation.mlir diff --git a/mlir/test/Dialect/AffineOps/ops.mlir b/mlir/test/Dialect/Affine/ops.mlir rename from mlir/test/Dialect/AffineOps/ops.mlir rename to mlir/test/Dialect/Affine/ops.mlir diff --git a/mlir/test/EDSC/CMakeLists.txt b/mlir/test/EDSC/CMakeLists.txt --- a/mlir/test/EDSC/CMakeLists.txt +++ b/mlir/test/EDSC/CMakeLists.txt @@ -6,7 +6,7 @@ target_link_libraries(mlir-edsc-builder-api-test PRIVATE - MLIRAffineOps + MLIRAffine MLIREDSC MLIRIR MLIRLinalgEDSC @@ -22,7 +22,7 @@ target_include_directories(mlir-edsc-builder-api-test PRIVATE ..) whole_archive_link(mlir-edsc-builder-api-test - MLIRAffineOps + MLIRAffine MLIRLinalgOps MLIRLoopOps MLIRStandardOps diff --git a/mlir/test/EDSC/builder-api-test.cpp b/mlir/test/EDSC/builder-api-test.cpp --- a/mlir/test/EDSC/builder-api-test.cpp +++ b/mlir/test/EDSC/builder-api-test.cpp @@ -8,7 +8,7 @@ // RUN: mlir-edsc-builder-api-test | FileCheck %s -dump-input-on-failure -#include "mlir/Dialect/AffineOps/EDSC/Intrinsics.h" +#include "mlir/Dialect/Affine/EDSC/Intrinsics.h" #include "mlir/Dialect/Linalg/EDSC/Intrinsics.h" #include "mlir/Dialect/LoopOps/EDSC/Builders.h" #include "mlir/Dialect/StandardOps/EDSC/Intrinsics.h" @@ -38,7 +38,7 @@ static MLIRContext &globalContext() { static bool init_once = []() { - registerDialect(); + registerDialect(); registerDialect(); registerDialect(); registerDialect(); diff --git a/mlir/test/lib/Dialect/Affine/CMakeLists.txt b/mlir/test/lib/Dialect/Affine/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/mlir/test/lib/Dialect/Affine/CMakeLists.txt @@ -0,0 +1,14 @@ +add_llvm_library(MLIRAffineTransformsTestPasses + TestAffineDataCopy.cpp + + ADDITIONAL_HEADER_DIRS + ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Affine + ${MLIR_MAIN_INCLUDE_DIR}/mlir/IR + ) + +target_link_libraries(MLIRAffineTransformsTestPasses PRIVATE + MLIRIR + MLIRPass + MLIRAffineTransforms + MLIRSupport + ) diff --git a/mlir/test/lib/Transforms/TestAffineDataCopy.cpp b/mlir/test/lib/Dialect/Affine/TestAffineDataCopy.cpp rename from mlir/test/lib/Transforms/TestAffineDataCopy.cpp rename to mlir/test/lib/Dialect/Affine/TestAffineDataCopy.cpp --- a/mlir/test/lib/Transforms/TestAffineDataCopy.cpp +++ b/mlir/test/lib/Dialect/Affine/TestAffineDataCopy.cpp @@ -13,7 +13,7 @@ #include "mlir/Analysis/Passes.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Pass/Pass.h" #include "mlir/Transforms/LoopUtils.h" #include "mlir/Transforms/Passes.h" diff --git a/mlir/test/lib/Dialect/CMakeLists.txt b/mlir/test/lib/Dialect/CMakeLists.txt --- a/mlir/test/lib/Dialect/CMakeLists.txt +++ b/mlir/test/lib/Dialect/CMakeLists.txt @@ -1 +1,2 @@ +add_subdirectory(Affine) add_subdirectory(SPIRV) diff --git a/mlir/test/lib/Transforms/CMakeLists.txt b/mlir/test/lib/Transforms/CMakeLists.txt --- a/mlir/test/lib/Transforms/CMakeLists.txt +++ b/mlir/test/lib/Transforms/CMakeLists.txt @@ -1,5 +1,4 @@ add_llvm_library(MLIRTestTransforms - TestAffineDataCopy.cpp TestAllReduceLowering.cpp TestCallGraph.cpp TestConstantFold.cpp @@ -36,7 +35,7 @@ target_link_libraries(MLIRTestTransforms PUBLIC - MLIRAffineOps + MLIRAffine MLIRAnalysis MLIREDSC MLIRGPU diff --git a/mlir/test/lib/Transforms/TestConstantFold.cpp b/mlir/test/lib/Transforms/TestConstantFold.cpp --- a/mlir/test/lib/Transforms/TestConstantFold.cpp +++ b/mlir/test/lib/Transforms/TestConstantFold.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/IR/Builders.h" #include "mlir/IR/Function.h" diff --git a/mlir/test/lib/Transforms/TestLoopFusion.cpp b/mlir/test/lib/Transforms/TestLoopFusion.cpp --- a/mlir/test/lib/Transforms/TestLoopFusion.cpp +++ b/mlir/test/lib/Transforms/TestLoopFusion.cpp @@ -14,7 +14,7 @@ #include "mlir/Analysis/AffineStructures.h" #include "mlir/Analysis/Passes.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/IR/Builders.h" #include "mlir/Pass/Pass.h" diff --git a/mlir/test/lib/Transforms/TestMemRefBoundCheck.cpp b/mlir/test/lib/Transforms/TestMemRefBoundCheck.cpp --- a/mlir/test/lib/Transforms/TestMemRefBoundCheck.cpp +++ b/mlir/test/lib/Transforms/TestMemRefBoundCheck.cpp @@ -16,7 +16,7 @@ #include "mlir/Analysis/AffineStructures.h" #include "mlir/Analysis/Passes.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/IR/Builders.h" #include "mlir/Pass/Pass.h" diff --git a/mlir/test/lib/Transforms/TestMemRefDependenceCheck.cpp b/mlir/test/lib/Transforms/TestMemRefDependenceCheck.cpp --- a/mlir/test/lib/Transforms/TestMemRefDependenceCheck.cpp +++ b/mlir/test/lib/Transforms/TestMemRefDependenceCheck.cpp @@ -14,7 +14,7 @@ #include "mlir/Analysis/AffineStructures.h" #include "mlir/Analysis/Passes.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/StandardOps/IR/Ops.h" #include "mlir/IR/Builders.h" #include "mlir/Pass/Pass.h" diff --git a/mlir/test/lib/Transforms/TestParallelismDetection.cpp b/mlir/test/lib/Transforms/TestParallelismDetection.cpp --- a/mlir/test/lib/Transforms/TestParallelismDetection.cpp +++ b/mlir/test/lib/Transforms/TestParallelismDetection.cpp @@ -12,7 +12,7 @@ #include "mlir/Analysis/Passes.h" #include "mlir/Analysis/Utils.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/IR/Builders.h" #include "mlir/Pass/Pass.h" diff --git a/mlir/test/lib/Transforms/TestVectorizationUtils.cpp b/mlir/test/lib/Transforms/TestVectorizationUtils.cpp --- a/mlir/test/lib/Transforms/TestVectorizationUtils.cpp +++ b/mlir/test/lib/Transforms/TestVectorizationUtils.cpp @@ -13,7 +13,7 @@ #include "mlir/Analysis/AffineAnalysis.h" #include "mlir/Analysis/NestedMatcher.h" #include "mlir/Analysis/SliceAnalysis.h" -#include "mlir/Dialect/AffineOps/AffineOps.h" +#include "mlir/Dialect/Affine/IR/AffineOps.h" #include "mlir/Dialect/Vector/VectorUtils.h" #include "mlir/IR/Builders.h" #include "mlir/IR/Diagnostics.h" diff --git a/mlir/tools/mlir-opt/CMakeLists.txt b/mlir/tools/mlir-opt/CMakeLists.txt --- a/mlir/tools/mlir-opt/CMakeLists.txt +++ b/mlir/tools/mlir-opt/CMakeLists.txt @@ -9,6 +9,7 @@ ${conversion_libs} MLIRLoopOpsTransforms MLIRLoopAnalysis + MLIRAffineTransformsTestPasses MLIRAnalysis MLIRDialect MLIREDSC