MLIR  20.0.0git
GPUUtils.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 class Operation;
24 class Value;
25 
26 namespace gpu {
27 class GPUFuncOp;
28 class LaunchOp;
29 
30 /// Returns the matching vector combining kind.
31 vector::CombiningKind convertReductionKind(gpu::AllReduceOperation mode);
32 } // namespace gpu
33 
34 /// Get a gpu.func created from outlining the region of a gpu.launch op with the
35 /// given `kernelFnName`. The region of the `launchOp` can use values from
36 /// above. These need to be captured and passed as arguments to the generated
37 /// gpu.func. The generated function has arguments
38 /// - corresponding to the values passed in as `operands`, in that order.
39 /// - any additional values that might be used within the region of the
40 /// `launchOp` and defined above it. These captured values are appended to the
41 /// `operands` list.
42 gpu::GPUFuncOp outlineKernelFunc(gpu::LaunchOp launchOp, StringRef kernelFnName,
43  SmallVectorImpl<Value> &operands);
44 
45 /// Sink operations into the `launchOp` to reduce the number of values that are
46 /// used within the region of the operation, but defined outside of the
47 /// region.
48 LogicalResult sinkOperationsIntoLaunchOp(
49  gpu::LaunchOp launchOp,
50  llvm::function_ref<bool(Operation *)> isSinkingBeneficiary);
51 
52 } // namespace mlir
53 #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.