@@ -230,17 +230,6 @@ struct MultiRegionOpConversion : public ConvertOpToLLVMPattern<OpType> {
230
230
231
231
void mlir::configureOpenMPToLLVMConversionLegality (
232
232
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
- });
244
233
target.addDynamicallyLegalOp <
245
234
mlir::omp::AtomicReadOp, mlir::omp::AtomicWriteOp, mlir::omp::FlushOp,
246
235
mlir::omp::ThreadprivateOp, mlir::omp::YieldOp, mlir::omp::EnterDataOp,
@@ -252,14 +241,20 @@ void mlir::configureOpenMPToLLVMConversionLegality(
252
241
target.addDynamicallyLegalOp <mlir::omp::ReductionOp>([&](Operation *op) {
253
242
return typeConverter.isLegal (op->getOperandTypes ());
254
243
});
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 ®ion) {
253
+ return typeConverter.isLegal (®ion);
254
+ }) &&
255
+ typeConverter.isLegal (op->getOperandTypes ()) &&
256
+ typeConverter.isLegal (op->getResultTypes ());
257
+ });
263
258
}
264
259
265
260
void mlir::populateOpenMPToLLVMConversionPatterns (LLVMTypeConverter &converter,
0 commit comments