Skip to content

Commit b6c9611

Browse files
committed
Fix legality check.
1 parent ac996c1 commit b6c9611

File tree

1 file changed

+14
-19
lines changed

1 file changed

+14
-19
lines changed

mlir/lib/Conversion/OpenMPToLLVM/OpenMPToLLVM.cpp

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -230,17 +230,6 @@ struct MultiRegionOpConversion : public ConvertOpToLLVMPattern<OpType> {
230230

231231
void mlir::configureOpenMPToLLVMConversionLegality(
232232
ConversionTarget &target, LLVMTypeConverter &typeConverter) {
233-
target.addDynamicallyLegalOp<
234-
mlir::omp::AtomicUpdateOp, mlir::omp::CriticalOp, mlir::omp::TargetOp,
235-
mlir::omp::DataOp, mlir::omp::OrderedRegionOp, mlir::omp::ParallelOp,
236-
mlir::omp::WsLoopOp, mlir::omp::SimdLoopOp, mlir::omp::MasterOp,
237-
mlir::omp::SectionOp, mlir::omp::SectionsOp, mlir::omp::SingleOp,
238-
mlir::omp::TaskGroupOp, mlir::omp::TaskOp, mlir::omp::PrivateClauseOp>(
239-
[&](Operation *op) {
240-
return typeConverter.isLegal(&op->getRegion(0)) &&
241-
typeConverter.isLegal(op->getOperandTypes()) &&
242-
typeConverter.isLegal(op->getResultTypes());
243-
});
244233
target.addDynamicallyLegalOp<
245234
mlir::omp::AtomicReadOp, mlir::omp::AtomicWriteOp, mlir::omp::FlushOp,
246235
mlir::omp::ThreadprivateOp, mlir::omp::YieldOp, mlir::omp::EnterDataOp,
@@ -252,14 +241,20 @@ void mlir::configureOpenMPToLLVMConversionLegality(
252241
target.addDynamicallyLegalOp<mlir::omp::ReductionOp>([&](Operation *op) {
253242
return typeConverter.isLegal(op->getOperandTypes());
254243
});
255-
target.addDynamicallyLegalOp<mlir::omp::ReductionDeclareOp>(
256-
[&](Operation *op) {
257-
return typeConverter.isLegal(&op->getRegion(0)) &&
258-
typeConverter.isLegal(&op->getRegion(1)) &&
259-
typeConverter.isLegal(&op->getRegion(2)) &&
260-
typeConverter.isLegal(op->getOperandTypes()) &&
261-
typeConverter.isLegal(op->getResultTypes());
262-
});
244+
target.addDynamicallyLegalOp<
245+
mlir::omp::AtomicUpdateOp, mlir::omp::CriticalOp, mlir::omp::TargetOp,
246+
mlir::omp::DataOp, mlir::omp::OrderedRegionOp, mlir::omp::ParallelOp,
247+
mlir::omp::WsLoopOp, mlir::omp::SimdLoopOp, mlir::omp::MasterOp,
248+
mlir::omp::SectionOp, mlir::omp::SectionsOp, mlir::omp::SingleOp,
249+
mlir::omp::TaskGroupOp, mlir::omp::TaskOp, mlir::omp::ReductionDeclareOp,
250+
mlir::omp::PrivateClauseOp>([&](Operation *op) {
251+
return std::all_of(op->getRegions().begin(), op->getRegions().end(),
252+
[&](Region &region) {
253+
return typeConverter.isLegal(&region);
254+
}) &&
255+
typeConverter.isLegal(op->getOperandTypes()) &&
256+
typeConverter.isLegal(op->getResultTypes());
257+
});
263258
}
264259

265260
void mlir::populateOpenMPToLLVMConversionPatterns(LLVMTypeConverter &converter,

0 commit comments

Comments
 (0)