MLIR  19.0.0git
Utils.h
Go to the documentation of this file.
1 //===- Passes.h - Pass Entrypoints ------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This header file defines utility functions exposed by the GPU dialect
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #ifndef MLIR_DIALECT_GPU_TRANSFORMS_UTILS_H_
14 #define MLIR_DIALECT_GPU_TRANSFORMS_UTILS_H_
15 
18 #include "mlir/Support/LLVM.h"
19 
20 #include <string>
21 
22 namespace mlir {
23 struct LogicalResult;
24 class Operation;
25 class Value;
26 
27 namespace gpu {
28 class GPUFuncOp;
29 class LaunchOp;
30 
31 /// Returns the matching vector combining kind.
32 vector::CombiningKind convertReductionKind(gpu::AllReduceOperation mode);
33 } // namespace gpu
34 
35 /// Get a gpu.func created from outlining the region of a gpu.launch op with the
36 /// given `kernelFnName`. The region of the `launchOp` can use values from
37 /// above. These need to be captured and passed as arguments to the generated
38 /// gpu.func. The generated function has arguments
39 /// - corresponding to the values passed in as `operands`, in that order.
40 /// - any additional values that might be used within the region of the
41 /// `launchOp` and defined above it. These captured values are appended to the
42 /// `operands` list.
43 gpu::GPUFuncOp outlineKernelFunc(gpu::LaunchOp launchOp, StringRef kernelFnName,
44  SmallVectorImpl<Value> &operands);
45 
46 /// Sink operations into the `launchOp` to reduce the number of values that are
47 /// used within the region of the operation, but defined outside of the
48 /// region.
49 LogicalResult sinkOperationsIntoLaunchOp(
50  gpu::LaunchOp launchOp,
51  llvm::function_ref<bool(Operation *)> isSinkingBeneficiary);
52 
53 } // namespace mlir
54 #endif // MLIR_DIALECT_GPU_TRANSFORMS_UTILS_H_
vector::CombiningKind convertReductionKind(gpu::AllReduceOperation mode)
Returns the matching vector combining kind.
Definition: Utils.cpp:18
Include the generated interface declarations.
LogicalResult sinkOperationsIntoLaunchOp(gpu::LaunchOp launchOp, llvm::function_ref< bool(Operation *)> isSinkingBeneficiary)
Sink operations into the launchOp to reduce the number of values that are used within the region of t...
gpu::GPUFuncOp outlineKernelFunc(gpu::LaunchOp launchOp, StringRef kernelFnName, SmallVectorImpl< Value > &operands)
Get a gpu.func created from outlining the region of a gpu.launch op with the given kernelFnName.