//===- Passes.h - Sparse tensor pipeline entry points -----------*- 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 prototypes of all sparse tensor pipelines. // //===----------------------------------------------------------------------===// #ifndef MLIR_DIALECT_SPARSETENSOR_PIPELINES_PASSES_H_ #define MLIR_DIALECT_SPARSETENSOR_PIPELINES_PASSES_H_ #include "mlir/Conversion/VectorToLLVM/ConvertVectorToLLVMPass.h" #include "mlir/Dialect/SparseTensor/Transforms/Passes.h" #include "mlir/Pass/PassOptions.h" usingnamespacemlir::detail; usingnamespacellvm::cl; namespace mlir { namespace sparse_tensor { /// Options for the "sparsifier" pipeline. So far this only contains /// a subset of the options that can be set for the underlying passes, /// because it must be manually kept in sync with the tablegen files /// for those passes. struct SparsifierOptions : public PassPipelineOptions<SparsifierOptions> { … }; //===----------------------------------------------------------------------===// // Building and Registering. //===----------------------------------------------------------------------===// /// Adds the "sparsifier" pipeline to the `OpPassManager`. This /// is the standard pipeline for taking sparsity-agnostic IR using /// the sparse-tensor type and lowering it to LLVM IR with concrete /// representations and algorithms for sparse tensors. void buildSparsifier(OpPassManager &pm, const SparsifierOptions &options); /// Registers all pipelines for the `sparse_tensor` dialect. At present, /// this includes only "sparsifier". void registerSparseTensorPipelines(); } // namespace sparse_tensor } // namespace mlir #endif // MLIR_DIALECT_SPARSETENSOR_PIPELINES_PASSES_H_