MLIR  22.0.0git
OpenMPClauseOperands.h
Go to the documentation of this file.
1 //===-- OpenMPClauseOperands.h ----------------------------------*- 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 file declares the structures defining MLIR operands associated with each
10 // OpenMP clause, and structures grouping the appropriate operands for each
11 // construct.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef MLIR_DIALECT_OPENMP_OPENMPCLAUSEOPERANDS_H_
16 #define MLIR_DIALECT_OPENMP_OPENMPCLAUSEOPERANDS_H_
17 
20 #include "llvm/ADT/SmallVector.h"
21 
22 #include "mlir/Dialect/OpenMP/OpenMPClauseOps.h.inc"
23 
24 namespace mlir {
25 namespace omp {
26 
27 //===----------------------------------------------------------------------===//
28 // Extra clause operand structures.
29 //===----------------------------------------------------------------------===//
30 
32  /// The default capture type.
33  DeclareTargetDeviceType deviceType = DeclareTargetDeviceType::any;
34 };
35 
36 //===----------------------------------------------------------------------===//
37 // Extra operation operand structures.
38 //===----------------------------------------------------------------------===//
39 
40 /// Clauses that correspond to operations other than omp.target, but might have
41 /// to be evaluated outside of a parent target region.
43  detail::Clauses<LoopRelatedClauseOps, NumTeamsClauseOps,
44  NumThreadsClauseOps, ThreadLimitClauseOps>;
45 
46 // TODO: Add `indirect` clause.
47 using DeclareTargetOperands = detail::Clauses<DeviceTypeClauseOps>;
48 
49 /// omp.target_enter_data, omp.target_exit_data and omp.target_update take the
50 /// same clauses, so we give the structure to be shared by all of them a
51 /// representative name.
52 using TargetEnterExitUpdateDataOperands = TargetEnterDataOperands;
53 
54 } // namespace omp
55 } // namespace mlir
56 
57 #endif // MLIR_DIALECT_OPENMP_OPENMPCLAUSEOPERANDS_H_
detail::Clauses< LoopRelatedClauseOps, NumTeamsClauseOps, NumThreadsClauseOps, ThreadLimitClauseOps > HostEvaluatedOperands
Clauses that correspond to operations other than omp.target, but might have to be evaluated outside o...
TargetEnterDataOperands TargetEnterExitUpdateDataOperands
omp.target_enter_data, omp.target_exit_data and omp.target_update take the same clauses,...
detail::Clauses< DeviceTypeClauseOps > DeclareTargetOperands
Include the generated interface declarations.
DeclareTargetDeviceType deviceType
The default capture type.