| // Copyright 2022 The IREE Authors | |
| // | |
| // Licensed 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 | |
| // Utils for lowering of the StableHLO dialect to the Linalg dialect. | |
| #ifndef IREE_COMPILER_PLUGINS_INPUT_STABLEHLO_CONVERSION_LEGALIZE_TO_LINALG_UTILS_H_ | |
| #define IREE_COMPILER_PLUGINS_INPUT_STABLEHLO_CONVERSION_LEGALIZE_TO_LINALG_UTILS_H_ | |
| #include <algorithm> | |
| #include <numeric> | |
| #include <optional> | |
| #include <string> | |
| #include <utility> | |
| #include "llvm/ADT/STLExtras.h" | |
| #include "llvm/ADT/SmallVector.h" | |
| #include "mlir/Dialect/Linalg/Utils/Utils.h" | |
| #include "mlir/IR/Attributes.h" | |
| #include "mlir/IR/BuiltinAttributes.h" | |
| #include "mlir/IR/BuiltinTypes.h" | |
| #include "mlir/IR/Operation.h" | |
| #include "mlir/IR/OperationSupport.h" | |
| #include "mlir/IR/TypeUtilities.h" | |
| #include "mlir/Support/LLVM.h" | |
| #include "stablehlo/dialect/StablehloOps.h" | |
| namespace mlir::iree_compiler::stablehlo { | |
| /// Returns an ArrayAttr that contains `nLoops` attributes. All the attributes | |
| /// are "parallel" except the last `nReduction` elements, where are "reduction" | |
| /// attributes. | |
| SmallVector<utils::IteratorType, 3> | |
| getParallelAndReductionIterators(unsigned nLoops, unsigned nReduction); | |
| /// Returns an ArrayAttr that contains `nParallelLoops` "parallel" attributes. | |
| SmallVector<utils::IteratorType, 3> | |
| getNParallelLoopsAttrs(unsigned nParallelLoops); | |
| /// Extracts integer values from the attribute |elements|. | |
| SmallVector<int64_t> extract1DVector(DenseIntElementsAttr elements); | |
| } // namespace mlir::iree_compiler::stablehlo | |
| #endif // IREE_COMPILER_PLUGINS_INPUT_STABLEHLO_CONVERSION_LEGALIZE_TO_LINALG_UTILS_H_ |