Skip to content

Commit f8d7b47

Browse files
committed
Fix wsloopwrapperop
1 parent 88d6d03 commit f8d7b47

File tree

4 files changed

+5
-76
lines changed

4 files changed

+5
-76
lines changed

mlir/include/mlir/Dialect/OpenMP/OpenMPClauseOperands.h

Lines changed: 4 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -44,75 +44,10 @@ struct DeviceTypeClauseOps {
4444
// TODO: Add `indirect` clause.
4545
using DeclareTargetOperands = detail::Clauses<DeviceTypeClauseOps>;
4646

47-
using DistributeOperands =
48-
detail::Clauses<AllocateClauseOps, DistScheduleClauseOps, OrderClauseOps,
49-
PrivateClauseOps>;
50-
51-
using LoopNestOperands = detail::Clauses<LoopRelatedOps>;
52-
53-
using MaskedOperands = detail::Clauses<FilterClauseOps>;
54-
55-
using OrderedOperands = detail::Clauses<DoacrossClauseOps>;
56-
57-
using OrderedRegionOperands = detail::Clauses<ParallelizationLevelClauseOps>;
58-
59-
using ParallelOperands =
60-
detail::Clauses<AllocateClauseOps, IfClauseOps, NumThreadsClauseOps,
61-
PrivateClauseOps, ProcBindClauseOps, ReductionClauseOps>;
62-
63-
using SectionsOperands = detail::Clauses<AllocateClauseOps, NowaitClauseOps,
64-
PrivateClauseOps, ReductionClauseOps>;
65-
66-
using SimdOperands =
67-
detail::Clauses<AlignedClauseOps, IfClauseOps, LinearClauseOps,
68-
NontemporalClauseOps, OrderClauseOps, PrivateClauseOps,
69-
ReductionClauseOps, SafelenClauseOps, SimdlenClauseOps>;
70-
71-
using SingleOperands = detail::Clauses<AllocateClauseOps, CopyprivateClauseOps,
72-
NowaitClauseOps, PrivateClauseOps>;
73-
74-
// TODO `defaultmap`, `uses_allocators` clauses.
75-
using TargetOperands =
76-
detail::Clauses<AllocateClauseOps, DependClauseOps, DeviceClauseOps,
77-
HasDeviceAddrClauseOps, IfClauseOps, InReductionClauseOps,
78-
IsDevicePtrClauseOps, MapClauseOps, NowaitClauseOps,
79-
PrivateClauseOps, ThreadLimitClauseOps>;
80-
81-
using TargetDataOperands =
82-
detail::Clauses<DeviceClauseOps, IfClauseOps, MapClauseOps,
83-
UseDeviceAddrClauseOps, UseDevicePtrClauseOps>;
84-
85-
using TargetEnterExitUpdateDataOperands =
86-
detail::Clauses<DependClauseOps, DeviceClauseOps, IfClauseOps, MapClauseOps,
87-
NowaitClauseOps>;
88-
89-
// TODO `affinity`, `detach` clauses.
90-
using TaskOperands =
91-
detail::Clauses<AllocateClauseOps, DependClauseOps, FinalClauseOps,
92-
IfClauseOps, InReductionClauseOps, MergeableClauseOps,
93-
PriorityClauseOps, PrivateClauseOps, UntiedClauseOps>;
94-
95-
using TaskgroupOperands =
96-
detail::Clauses<AllocateClauseOps, TaskReductionClauseOps>;
97-
98-
using TaskloopOperands =
99-
detail::Clauses<AllocateClauseOps, FinalClauseOps, GrainsizeClauseOps,
100-
IfClauseOps, InReductionClauseOps, MergeableClauseOps,
101-
NogroupClauseOps, NumTasksClauseOps, PriorityClauseOps,
102-
PrivateClauseOps, ReductionClauseOps, UntiedClauseOps>;
103-
104-
using TaskwaitOperands = detail::Clauses<DependClauseOps, NowaitClauseOps>;
105-
106-
using TeamsOperands =
107-
detail::Clauses<AllocateClauseOps, IfClauseOps, NumTeamsClauseOps,
108-
PrivateClauseOps, ReductionClauseOps, ThreadLimitClauseOps>;
109-
110-
using WorkshareOperands = detail::Clauses<NowaitClauseOps>;
111-
112-
using WsloopOperands =
113-
detail::Clauses<AllocateClauseOps, LinearClauseOps, NowaitClauseOps,
114-
OrderClauseOps, OrderedClauseOps, PrivateClauseOps,
115-
ReductionClauseOps, ScheduleClauseOps>;
47+
/// omp.target_enter_data, omp.target_exit_data and omp.target_update take the
48+
/// same clauses, so we give the structure to be shared by all of them a
49+
/// representative name.
50+
using TargetEnterExitUpdateDataOperands = TargetEnterDataOperands;
11651

11752
} // namespace omp
11853
} // namespace mlir

mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ def WorkshareOp : OpenMP_Op<"workshare", traits = [
340340
}
341341

342342
def WorkshareLoopWrapperOp : OpenMP_Op<"workshare.loop_wrapper", traits = [
343-
DeclareOpInterfaceMethods<LoopWrapperInterface>,
343+
DeclareOpInterfaceMethods<LoopWrapperInterface>, NoTerminator,
344344
RecursiveMemoryEffects, SingleBlock
345345
], singleRegion = true> {
346346
let summary = "contains loop nests to be parallelized by workshare";

mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1935,10 +1935,6 @@ void WorkshareOp::build(OpBuilder &builder, OperationState &state,
19351935
//===----------------------------------------------------------------------===//
19361936

19371937
LogicalResult WorkshareLoopWrapperOp::verify() {
1938-
if (!isWrapper())
1939-
return emitOpError() << "must be a loop wrapper";
1940-
if (getNestedWrapper())
1941-
return emitError() << "nested wrappers not supported";
19421938
if (!(*this)->getParentOfType<WorkshareOp>())
19431939
return emitError() << "must be nested in an omp.workshare";
19441940
return success();

mlir/test/Dialect/OpenMP/ops.mlir

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2794,7 +2794,6 @@ func.func @omp_workshare_loop_wrapper(%idx : index) {
27942794
omp.loop_nest (%iv) : index = (%idx) to (%idx) step (%idx) {
27952795
omp.yield
27962796
}
2797-
omp.terminator
27982797
}
27992798
omp.terminator
28002799
}
@@ -2811,7 +2810,6 @@ func.func @omp_workshare_loop_wrapper_attrs(%idx : index) {
28112810
omp.loop_nest (%iv) : index = (%idx) to (%idx) step (%idx) {
28122811
omp.yield
28132812
}
2814-
omp.terminator
28152813
// CHECK: } {attr_in_dict}
28162814
} {attr_in_dict}
28172815
omp.terminator

0 commit comments

Comments
 (0)