Skip to content

Commit efda329

Browse files
committed
[flang][NFC] Move OpenMP related passes into a separate directory
1 parent 1c5f6cf commit efda329

File tree

17 files changed

+141
-49
lines changed

17 files changed

+141
-49
lines changed

flang/include/flang/Optimizer/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ add_subdirectory(CodeGen)
22
add_subdirectory(Dialect)
33
add_subdirectory(HLFIR)
44
add_subdirectory(Transforms)
5+
add_subdirectory(OpenMP)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
set(LLVM_TARGET_DEFINITIONS Passes.td)
2+
mlir_tablegen(Passes.h.inc -gen-pass-decls -name FlangOpenMP)
3+
4+
add_public_tablegen_target(FlangOpenMPPassesIncGen)
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
//===- Passes.h - OpenMP pass entry points ----------------------*- C++ -*-===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
//
9+
// This header declares the flang OpenMP passes.
10+
//
11+
//===----------------------------------------------------------------------===//
12+
13+
#ifndef FORTRAN_OPTIMIZER_OPENMP_PASSES_H
14+
#define FORTRAN_OPTIMIZER_OPENMP_PASSES_H
15+
16+
#include "mlir/Dialect/Func/IR/FuncOps.h"
17+
#include "mlir/IR/BuiltinOps.h"
18+
#include "mlir/Pass/Pass.h"
19+
#include "mlir/Pass/PassRegistry.h"
20+
21+
#include <memory>
22+
23+
namespace flangomp {
24+
#define GEN_PASS_DECL
25+
#define GEN_PASS_REGISTRATION
26+
#include "flang/Optimizer/OpenMP/Passes.h.inc"
27+
28+
} // namespace flangomp
29+
30+
#endif // FORTRAN_OPTIMIZER_OPENMP_PASSES_H
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
//===-- Passes.td - HLFIR pass definition file -------------*- tablegen -*-===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#ifndef FORTRAN_OPTIMIZER_OPENMP_PASSES
10+
#define FORTRAN_OPTIMIZER_OPENMP_PASSES
11+
12+
include "mlir/Pass/PassBase.td"
13+
14+
def OMPMapInfoFinalizationPass
15+
: Pass<"omp-map-info-finalization"> {
16+
let summary = "expands OpenMP MapInfo operations containing descriptors";
17+
let description = [{
18+
Expands MapInfo operations containing descriptor types into multiple
19+
MapInfo's for each pointer element in the descriptor that requires
20+
explicit individual mapping by the OpenMP runtime.
21+
}];
22+
let dependentDialects = ["mlir::omp::OpenMPDialect"];
23+
}
24+
25+
def OMPMarkDeclareTargetPass
26+
: Pass<"omp-mark-declare-target", "mlir::ModuleOp"> {
27+
let summary = "Marks all functions called by an OpenMP declare target function as declare target";
28+
let dependentDialects = ["mlir::omp::OpenMPDialect"];
29+
}
30+
31+
def OMPFunctionFiltering : Pass<"omp-function-filtering"> {
32+
let summary = "Filters out functions intended for the host when compiling "
33+
"for the target device.";
34+
let dependentDialects = [
35+
"mlir::func::FuncDialect",
36+
"fir::FIROpsDialect"
37+
];
38+
}
39+
40+
#endif //FORTRAN_OPTIMIZER_OPENMP_PASSES

flang/include/flang/Optimizer/Transforms/Passes.td

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -340,32 +340,6 @@ def LoopVersioning : Pass<"loop-versioning", "mlir::func::FuncOp"> {
340340
let dependentDialects = [ "fir::FIROpsDialect" ];
341341
}
342342

343-
def OMPMapInfoFinalizationPass
344-
: Pass<"omp-map-info-finalization"> {
345-
let summary = "expands OpenMP MapInfo operations containing descriptors";
346-
let description = [{
347-
Expands MapInfo operations containing descriptor types into multiple
348-
MapInfo's for each pointer element in the descriptor that requires
349-
explicit individual mapping by the OpenMP runtime.
350-
}];
351-
let dependentDialects = ["mlir::omp::OpenMPDialect"];
352-
}
353-
354-
def OMPMarkDeclareTargetPass
355-
: Pass<"omp-mark-declare-target", "mlir::ModuleOp"> {
356-
let summary = "Marks all functions called by an OpenMP declare target function as declare target";
357-
let dependentDialects = ["mlir::omp::OpenMPDialect"];
358-
}
359-
360-
def OMPFunctionFiltering : Pass<"omp-function-filtering"> {
361-
let summary = "Filters out functions intended for the host when compiling "
362-
"for the target device.";
363-
let dependentDialects = [
364-
"mlir::func::FuncDialect",
365-
"fir::FIROpsDialect"
366-
];
367-
}
368-
369343
def VScaleAttr : Pass<"vscale-attr", "mlir::func::FuncOp"> {
370344
let summary = "Add vscale_range attribute to functions";
371345
let description = [{

flang/include/flang/Tools/CLOptions.inc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "flang/Optimizer/CodeGen/CodeGen.h"
1919
#include "flang/Optimizer/HLFIR/Passes.h"
2020
#include "flang/Optimizer/Transforms/Passes.h"
21+
#include "flang/Optimizer/OpenMP/Passes.h"
2122
#include "llvm/Passes/OptimizationLevel.h"
2223
#include "llvm/Support/CommandLine.h"
2324
#include <type_traits>
@@ -358,10 +359,10 @@ inline void createHLFIRToFIRPassPipeline(
358359
inline void createOpenMPFIRPassPipeline(
359360
mlir::PassManager &pm, bool isTargetDevice) {
360361
addNestedPassToAllTopLevelOperations(
361-
pm, fir::createOMPMapInfoFinalizationPass);
362-
pm.addPass(fir::createOMPMarkDeclareTargetPass());
362+
pm, flangomp::createOMPMapInfoFinalizationPass);
363+
pm.addPass(flangomp::createOMPMarkDeclareTargetPass());
363364
if (isTargetDevice)
364-
pm.addPass(fir::createOMPFunctionFiltering());
365+
pm.addPass(flangomp::createOMPFunctionFiltering());
365366
}
366367

367368
#if !defined(FLANG_EXCLUDE_CODEGEN)

flang/lib/Frontend/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ add_flang_library(flangFrontend
3838
FIRTransforms
3939
HLFIRDialect
4040
HLFIRTransforms
41+
FlangOpenMPTransforms
4142
MLIRTransforms
4243
MLIRBuiltinToLLVMIRTranslation
4344
MLIRLLVMToLLVMIRTranslation

flang/lib/Optimizer/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ add_subdirectory(HLFIR)
55
add_subdirectory(Support)
66
add_subdirectory(Transforms)
77
add_subdirectory(Analysis)
8+
add_subdirectory(OpenMP)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
2+
3+
add_flang_library(FlangOpenMPTransforms
4+
OMPFunctionFiltering.cpp
5+
OMPMapInfoFinalization.cpp
6+
OMPMarkDeclareTarget.cpp
7+
8+
DEPENDS
9+
FIRDialect
10+
HLFIROpsIncGen
11+
FlangOpenMPPassesIncGen
12+
13+
LINK_LIBS
14+
FIRAnalysis
15+
FIRBuilder
16+
FIRCodeGen
17+
FIRDialect
18+
FIRDialectSupport
19+
FIRSupport
20+
FortranCommon
21+
MLIRFuncDialect
22+
MLIROpenMPDialect
23+
HLFIRDialect
24+
MLIRIR
25+
)

flang/lib/Optimizer/Transforms/OMPFunctionFiltering.cpp renamed to flang/lib/Optimizer/OpenMP/OMPFunctionFiltering.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,25 @@
1313

1414
#include "flang/Optimizer/Dialect/FIRDialect.h"
1515
#include "flang/Optimizer/Dialect/FIROpsSupport.h"
16-
#include "flang/Optimizer/Transforms/Passes.h"
16+
#include "flang/Optimizer/OpenMP/Passes.h"
1717

1818
#include "mlir/Dialect/Func/IR/FuncOps.h"
1919
#include "mlir/Dialect/OpenMP/OpenMPDialect.h"
2020
#include "mlir/Dialect/OpenMP/OpenMPInterfaces.h"
2121
#include "mlir/IR/BuiltinOps.h"
2222
#include "llvm/ADT/SmallVector.h"
2323

24-
namespace fir {
24+
namespace flangomp {
2525
#define GEN_PASS_DEF_OMPFUNCTIONFILTERING
26-
#include "flang/Optimizer/Transforms/Passes.h.inc"
27-
} // namespace fir
26+
#include "flang/Optimizer/OpenMP/Passes.h.inc"
27+
} // namespace flangomp
2828

2929
using namespace mlir;
3030

3131
namespace {
3232
class OMPFunctionFilteringPass
33-
: public fir::impl::OMPFunctionFilteringBase<OMPFunctionFilteringPass> {
33+
: public flangomp::impl::OMPFunctionFilteringBase<
34+
OMPFunctionFilteringPass> {
3435
public:
3536
OMPFunctionFilteringPass() = default;
3637

0 commit comments

Comments
 (0)