mirror of
https://github.com/intel/llvm.git
synced 2026-01-16 05:32:28 +08:00
[flang][OpenMP] Move extractOmpDirective to Utils.cpp, NFC (#148653)
This commit is contained in:
committed by
GitHub
parent
d35931c49e
commit
ff5784bb90
@@ -372,90 +372,6 @@ extractMappedBaseValues(llvm::ArrayRef<mlir::Value> vars,
|
||||
});
|
||||
}
|
||||
|
||||
/// Get the directive enumeration value corresponding to the given OpenMP
|
||||
/// construct PFT node.
|
||||
llvm::omp::Directive
|
||||
extractOmpDirective(const parser::OpenMPConstruct &ompConstruct) {
|
||||
return common::visit(
|
||||
common::visitors{
|
||||
[](const parser::OpenMPAllocatorsConstruct &c) {
|
||||
return llvm::omp::OMPD_allocators;
|
||||
},
|
||||
[](const parser::OpenMPAssumeConstruct &c) {
|
||||
return llvm::omp::OMPD_assume;
|
||||
},
|
||||
[](const parser::OpenMPAtomicConstruct &c) {
|
||||
return llvm::omp::OMPD_atomic;
|
||||
},
|
||||
[](const parser::OpenMPBlockConstruct &c) {
|
||||
return std::get<parser::OmpBlockDirective>(
|
||||
std::get<parser::OmpBeginBlockDirective>(c.t).t)
|
||||
.v;
|
||||
},
|
||||
[](const parser::OpenMPCriticalConstruct &c) {
|
||||
return llvm::omp::OMPD_critical;
|
||||
},
|
||||
[](const parser::OpenMPDeclarativeAllocate &c) {
|
||||
return llvm::omp::OMPD_allocate;
|
||||
},
|
||||
[](const parser::OpenMPDispatchConstruct &c) {
|
||||
return llvm::omp::OMPD_dispatch;
|
||||
},
|
||||
[](const parser::OpenMPExecutableAllocate &c) {
|
||||
return llvm::omp::OMPD_allocate;
|
||||
},
|
||||
[](const parser::OpenMPLoopConstruct &c) {
|
||||
return std::get<parser::OmpLoopDirective>(
|
||||
std::get<parser::OmpBeginLoopDirective>(c.t).t)
|
||||
.v;
|
||||
},
|
||||
[](const parser::OpenMPSectionConstruct &c) {
|
||||
return llvm::omp::OMPD_section;
|
||||
},
|
||||
[](const parser::OpenMPSectionsConstruct &c) {
|
||||
return std::get<parser::OmpSectionsDirective>(
|
||||
std::get<parser::OmpBeginSectionsDirective>(c.t).t)
|
||||
.v;
|
||||
},
|
||||
[](const parser::OpenMPStandaloneConstruct &c) {
|
||||
return common::visit(
|
||||
common::visitors{
|
||||
[](const parser::OpenMPSimpleStandaloneConstruct &c) {
|
||||
return c.v.DirId();
|
||||
},
|
||||
[](const parser::OpenMPFlushConstruct &c) {
|
||||
return llvm::omp::OMPD_flush;
|
||||
},
|
||||
[](const parser::OpenMPCancelConstruct &c) {
|
||||
return llvm::omp::OMPD_cancel;
|
||||
},
|
||||
[](const parser::OpenMPCancellationPointConstruct &c) {
|
||||
return llvm::omp::OMPD_cancellation_point;
|
||||
},
|
||||
[](const parser::OmpMetadirectiveDirective &c) {
|
||||
return llvm::omp::OMPD_metadirective;
|
||||
},
|
||||
[](const parser::OpenMPDepobjConstruct &c) {
|
||||
return llvm::omp::OMPD_depobj;
|
||||
},
|
||||
[](const parser::OpenMPInteropConstruct &c) {
|
||||
return llvm::omp::OMPD_interop;
|
||||
}},
|
||||
c.u);
|
||||
},
|
||||
[](const parser::OpenMPUtilityConstruct &c) {
|
||||
return common::visit(
|
||||
common::visitors{[](const parser::OmpErrorDirective &c) {
|
||||
return llvm::omp::OMPD_error;
|
||||
},
|
||||
[](const parser::OmpNothingDirective &c) {
|
||||
return llvm::omp::OMPD_nothing;
|
||||
}},
|
||||
c.u);
|
||||
}},
|
||||
ompConstruct.u);
|
||||
}
|
||||
|
||||
/// Populate the global \see hostEvalInfo after processing clauses for the given
|
||||
/// \p eval OpenMP target construct, or nested constructs, if these must be
|
||||
/// evaluated outside of the target region per the spec.
|
||||
|
||||
@@ -661,6 +661,90 @@ bool collectLoopRelatedInfo(
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
/// Get the directive enumeration value corresponding to the given OpenMP
|
||||
/// construct PFT node.
|
||||
llvm::omp::Directive
|
||||
extractOmpDirective(const parser::OpenMPConstruct &ompConstruct) {
|
||||
return common::visit(
|
||||
common::visitors{
|
||||
[](const parser::OpenMPAllocatorsConstruct &c) {
|
||||
return llvm::omp::OMPD_allocators;
|
||||
},
|
||||
[](const parser::OpenMPAssumeConstruct &c) {
|
||||
return llvm::omp::OMPD_assume;
|
||||
},
|
||||
[](const parser::OpenMPAtomicConstruct &c) {
|
||||
return llvm::omp::OMPD_atomic;
|
||||
},
|
||||
[](const parser::OpenMPBlockConstruct &c) {
|
||||
return std::get<parser::OmpBlockDirective>(
|
||||
std::get<parser::OmpBeginBlockDirective>(c.t).t)
|
||||
.v;
|
||||
},
|
||||
[](const parser::OpenMPCriticalConstruct &c) {
|
||||
return llvm::omp::OMPD_critical;
|
||||
},
|
||||
[](const parser::OpenMPDeclarativeAllocate &c) {
|
||||
return llvm::omp::OMPD_allocate;
|
||||
},
|
||||
[](const parser::OpenMPDispatchConstruct &c) {
|
||||
return llvm::omp::OMPD_dispatch;
|
||||
},
|
||||
[](const parser::OpenMPExecutableAllocate &c) {
|
||||
return llvm::omp::OMPD_allocate;
|
||||
},
|
||||
[](const parser::OpenMPLoopConstruct &c) {
|
||||
return std::get<parser::OmpLoopDirective>(
|
||||
std::get<parser::OmpBeginLoopDirective>(c.t).t)
|
||||
.v;
|
||||
},
|
||||
[](const parser::OpenMPSectionConstruct &c) {
|
||||
return llvm::omp::OMPD_section;
|
||||
},
|
||||
[](const parser::OpenMPSectionsConstruct &c) {
|
||||
return std::get<parser::OmpSectionsDirective>(
|
||||
std::get<parser::OmpBeginSectionsDirective>(c.t).t)
|
||||
.v;
|
||||
},
|
||||
[](const parser::OpenMPStandaloneConstruct &c) {
|
||||
return common::visit(
|
||||
common::visitors{
|
||||
[](const parser::OpenMPSimpleStandaloneConstruct &c) {
|
||||
return c.v.DirId();
|
||||
},
|
||||
[](const parser::OpenMPFlushConstruct &c) {
|
||||
return llvm::omp::OMPD_flush;
|
||||
},
|
||||
[](const parser::OpenMPCancelConstruct &c) {
|
||||
return llvm::omp::OMPD_cancel;
|
||||
},
|
||||
[](const parser::OpenMPCancellationPointConstruct &c) {
|
||||
return llvm::omp::OMPD_cancellation_point;
|
||||
},
|
||||
[](const parser::OmpMetadirectiveDirective &c) {
|
||||
return llvm::omp::OMPD_metadirective;
|
||||
},
|
||||
[](const parser::OpenMPDepobjConstruct &c) {
|
||||
return llvm::omp::OMPD_depobj;
|
||||
},
|
||||
[](const parser::OpenMPInteropConstruct &c) {
|
||||
return llvm::omp::OMPD_interop;
|
||||
}},
|
||||
c.u);
|
||||
},
|
||||
[](const parser::OpenMPUtilityConstruct &c) {
|
||||
return common::visit(
|
||||
common::visitors{[](const parser::OmpErrorDirective &c) {
|
||||
return llvm::omp::OMPD_error;
|
||||
},
|
||||
[](const parser::OmpNothingDirective &c) {
|
||||
return llvm::omp::OMPD_nothing;
|
||||
}},
|
||||
c.u);
|
||||
}},
|
||||
ompConstruct.u);
|
||||
}
|
||||
} // namespace omp
|
||||
} // namespace lower
|
||||
} // namespace Fortran
|
||||
|
||||
@@ -166,6 +166,9 @@ bool collectLoopRelatedInfo(
|
||||
lower::pft::Evaluation &eval, const omp::List<omp::Clause> &clauses,
|
||||
mlir::omp::LoopRelatedClauseOps &result,
|
||||
llvm::SmallVectorImpl<const semantics::Symbol *> &iv);
|
||||
|
||||
llvm::omp::Directive
|
||||
extractOmpDirective(const parser::OpenMPConstruct &ompConstruct);
|
||||
} // namespace omp
|
||||
} // namespace lower
|
||||
} // namespace Fortran
|
||||
|
||||
Reference in New Issue
Block a user