[Mlir-commits] [mlir] [MLIR][OpenMP] Simplify OpenMP to LLVM dialect conversion (PR #132009)

Kareem Ergawy llvmlistbot at llvm.org
Thu Mar 20 03:14:45 PDT 2025


================
@@ -295,36 +134,42 @@ void mlir::populateOpenMPToLLVMConversionPatterns(LLVMTypeConverter &converter,
       [&](omp::MapBoundsType type) -> Type { return type; });
 
   patterns.add<
-      AtomicReadOpConversion, DeclMapperOpConversion, MapInfoOpConversion,
-      MultiRegionOpConversion<omp::DeclareReductionOp>,
-      MultiRegionOpConversion<omp::PrivateClauseOp>,
-      RegionLessOpConversion<omp::CancellationPointOp>,
-      RegionLessOpConversion<omp::CancelOp>,
-      RegionLessOpConversion<omp::CriticalDeclareOp>,
-      RegionLessOpConversion<omp::DeclareMapperInfoOp>,
-      RegionLessOpConversion<omp::OrderedOp>,
-      RegionLessOpConversion<omp::ScanOp>,
-      RegionLessOpConversion<omp::TargetEnterDataOp>,
-      RegionLessOpConversion<omp::TargetExitDataOp>,
-      RegionLessOpConversion<omp::TargetUpdateOp>,
-      RegionLessOpConversion<omp::YieldOp>,
-      RegionLessOpWithVarOperandsConversion<omp::AtomicWriteOp>,
-      RegionLessOpWithVarOperandsConversion<omp::FlushOp>,
-      RegionLessOpWithVarOperandsConversion<omp::MapBoundsOp>,
-      RegionLessOpWithVarOperandsConversion<omp::ThreadprivateOp>,
-      RegionOpConversion<omp::AtomicCaptureOp>,
-      RegionOpConversion<omp::CriticalOp>,
-      RegionOpConversion<omp::DistributeOp>,
-      RegionOpConversion<omp::LoopNestOp>, RegionOpConversion<omp::LoopOp>,
-      RegionOpConversion<omp::MaskedOp>, RegionOpConversion<omp::MasterOp>,
-      RegionOpConversion<omp::OrderedRegionOp>,
-      RegionOpConversion<omp::ParallelOp>, RegionOpConversion<omp::SectionOp>,
-      RegionOpConversion<omp::SectionsOp>, RegionOpConversion<omp::SimdOp>,
-      RegionOpConversion<omp::SingleOp>, RegionOpConversion<omp::TargetDataOp>,
-      RegionOpConversion<omp::TargetOp>, RegionOpConversion<omp::TaskgroupOp>,
-      RegionOpConversion<omp::TaskloopOp>, RegionOpConversion<omp::TaskOp>,
-      RegionOpConversion<omp::TeamsOp>, RegionOpConversion<omp::WsloopOp>,
-      RegionOpWithVarOperandsConversion<omp::AtomicUpdateOp>>(converter);
+      OpenMPOpConversion<omp::AtomicCaptureOp>,
+      OpenMPOpConversion<omp::AtomicReadOp>,
+      OpenMPOpConversion<omp::AtomicUpdateOp, /*SupportsMemRefOperand=*/false>,
----------------
ergawy wrote:

Just a small suggestion, feel free to ignore if you disagree. We can remove the template argument and `constexpr if` against the Op types for which the bool is false. Cleans the template a bit more and collects all the ops fro which the bool should have been false in a single location.

https://github.com/llvm/llvm-project/pull/132009


More information about the Mlir-commits mailing list