aboutsummaryrefslogtreecommitdiff
path: root/mlir/lib/Conversion/OpenMPToLLVM/OpenMPToLLVM.cpp
diff options
context:
space:
mode:
authorAkash Banerjee <Akash.Banerjee@amd.com>2023-02-23 16:58:04 +0000
committerAkash Banerjee <Akash.Banerjee@amd.com>2023-02-23 17:01:20 +0000
commitaf694df712f28f419883e322d7dc978f04bfe38f (patch)
treed92c848e063b19f0d8ba0eb6e00039e6ae8684ed /mlir/lib/Conversion/OpenMPToLLVM/OpenMPToLLVM.cpp
parentdbf149c91b7bdf08b2d4dd94ab76f3209af4c6d4 (diff)
downloadllvm-af694df712f28f419883e322d7dc978f04bfe38f.zip
llvm-af694df712f28f419883e322d7dc978f04bfe38f.tar.gz
llvm-af694df712f28f419883e322d7dc978f04bfe38f.tar.bz2
[MLIR][OpenMP] Add conversion support from FIR to LLVM Dialect for OMP Target Data with region
This enables conversion of OpenMP Target Data op with region from FIR Dialect to LLVM IR Dialect. Differential Revision: https://reviews.llvm.org/D144380
Diffstat (limited to 'mlir/lib/Conversion/OpenMPToLLVM/OpenMPToLLVM.cpp')
-rw-r--r--mlir/lib/Conversion/OpenMPToLLVM/OpenMPToLLVM.cpp55
1 files changed, 27 insertions, 28 deletions
diff --git a/mlir/lib/Conversion/OpenMPToLLVM/OpenMPToLLVM.cpp b/mlir/lib/Conversion/OpenMPToLLVM/OpenMPToLLVM.cpp
index d2eecf2..4e38aaf 100644
--- a/mlir/lib/Conversion/OpenMPToLLVM/OpenMPToLLVM.cpp
+++ b/mlir/lib/Conversion/OpenMPToLLVM/OpenMPToLLVM.cpp
@@ -151,24 +151,23 @@ struct LegalizeDataOpForLLVMTranslation : public ConvertOpToLLVMPattern<Op> {
void mlir::configureOpenMPToLLVMConversionLegality(
ConversionTarget &target, LLVMTypeConverter &typeConverter) {
- target.addDynamicallyLegalOp<mlir::omp::AtomicUpdateOp, mlir::omp::CriticalOp,
- mlir::omp::ParallelOp, mlir::omp::WsLoopOp,
- mlir::omp::SimdLoopOp, mlir::omp::MasterOp,
- mlir::omp::SectionOp, mlir::omp::SectionsOp,
- mlir::omp::SingleOp, mlir::omp::TaskOp>(
- [&](Operation *op) {
- return typeConverter.isLegal(&op->getRegion(0)) &&
- typeConverter.isLegal(op->getOperandTypes()) &&
- typeConverter.isLegal(op->getResultTypes());
- });
- target.addDynamicallyLegalOp<mlir::omp::AtomicReadOp,
- mlir::omp::AtomicWriteOp, mlir::omp::FlushOp,
- mlir::omp::ThreadprivateOp, mlir::omp::DataOp,
- mlir::omp::EnterDataOp, mlir::omp::ExitDataOp>(
- [&](Operation *op) {
- return typeConverter.isLegal(op->getOperandTypes()) &&
- typeConverter.isLegal(op->getResultTypes());
- });
+ target.addDynamicallyLegalOp<
+ mlir::omp::AtomicUpdateOp, mlir::omp::CriticalOp, mlir::omp::DataOp,
+ mlir::omp::ParallelOp, mlir::omp::WsLoopOp, mlir::omp::SimdLoopOp,
+ mlir::omp::MasterOp, mlir::omp::SectionOp, mlir::omp::SectionsOp,
+ mlir::omp::SingleOp, mlir::omp::TaskOp>([&](Operation *op) {
+ return typeConverter.isLegal(&op->getRegion(0)) &&
+ typeConverter.isLegal(op->getOperandTypes()) &&
+ typeConverter.isLegal(op->getResultTypes());
+ });
+ target
+ .addDynamicallyLegalOp<mlir::omp::AtomicReadOp, mlir::omp::AtomicWriteOp,
+ mlir::omp::FlushOp, mlir::omp::ThreadprivateOp,
+ mlir::omp::EnterDataOp, mlir::omp::ExitDataOp>(
+ [&](Operation *op) {
+ return typeConverter.isLegal(op->getOperandTypes()) &&
+ typeConverter.isLegal(op->getResultTypes());
+ });
target.addDynamicallyLegalOp<mlir::omp::ReductionOp>([&](Operation *op) {
return typeConverter.isLegal(op->getOperandTypes());
});
@@ -177,20 +176,20 @@ void mlir::configureOpenMPToLLVMConversionLegality(
void mlir::populateOpenMPToLLVMConversionPatterns(LLVMTypeConverter &converter,
RewritePatternSet &patterns) {
patterns.add<
- ReductionOpConversion, RegionOpConversion<omp::CriticalOp>,
- RegionOpConversion<omp::MasterOp>, ReductionOpConversion,
- RegionOpConversion<omp::MasterOp>, RegionOpConversion<omp::ParallelOp>,
- RegionOpConversion<omp::WsLoopOp>, RegionOpConversion<omp::SectionsOp>,
- RegionOpConversion<omp::SectionOp>, RegionOpConversion<omp::SimdLoopOp>,
- RegionOpConversion<omp::SingleOp>, RegionOpConversion<omp::TaskOp>,
+ LegalizeDataOpForLLVMTranslation<omp::DataOp>,
+ LegalizeDataOpForLLVMTranslation<omp::EnterDataOp>,
+ LegalizeDataOpForLLVMTranslation<omp::ExitDataOp>, ReductionOpConversion,
+ RegionOpConversion<omp::CriticalOp>, RegionOpConversion<omp::MasterOp>,
+ ReductionOpConversion, RegionOpConversion<omp::MasterOp>,
+ RegionOpConversion<omp::ParallelOp>, RegionOpConversion<omp::WsLoopOp>,
+ RegionOpConversion<omp::SectionsOp>, RegionOpConversion<omp::SectionOp>,
+ RegionOpConversion<omp::SimdLoopOp>, RegionOpConversion<omp::SingleOp>,
+ RegionOpConversion<omp::TaskOp>, RegionOpConversion<omp::DataOp>,
RegionLessOpWithVarOperandsConversion<omp::AtomicReadOp>,
RegionLessOpWithVarOperandsConversion<omp::AtomicWriteOp>,
RegionOpWithVarOperandsConversion<omp::AtomicUpdateOp>,
RegionLessOpWithVarOperandsConversion<omp::FlushOp>,
- RegionLessOpWithVarOperandsConversion<omp::ThreadprivateOp>,
- LegalizeDataOpForLLVMTranslation<omp::DataOp>,
- LegalizeDataOpForLLVMTranslation<omp::EnterDataOp>,
- LegalizeDataOpForLLVMTranslation<omp::ExitDataOp>>(converter);
+ RegionLessOpWithVarOperandsConversion<omp::ThreadprivateOp>>(converter);
}
namespace {