Skip to content

Commit e6d70ab

Browse files
committed
add initial set of lowerings for MPI dialect
1 parent ac40463 commit e6d70ab

File tree

9 files changed

+454
-1
lines changed

9 files changed

+454
-1
lines changed

Diff for: flake.lock

+104
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: flake.nix

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
inputs = {
3+
flake-utils.follows = "nix-vscode-extensions/flake-utils";
4+
nixpkgs.follows = "nix-vscode-extensions/nixpkgs";
5+
};
6+
7+
outputs = inputs:
8+
inputs.flake-utils.lib.eachDefaultSystem
9+
(system:
10+
let
11+
pkgs = inputs.nixpkgs.legacyPackages.${system};
12+
13+
devShells.default = pkgs.mkShell {
14+
buildInputs = [
15+
packages.default
16+
pkgs.git pkgs.ripgrep pkgs.gdb pkgs.clang-tools
17+
pkgs.cmake pkgs.ninja pkgs.clang pkgs.lld pkgs.chrpath
18+
pkgs.fish pkgs.neovim pkgs.git pkgs.libclang
19+
pkgs.ccache
20+
] ;
21+
shellHook = ''
22+
export CC=clang
23+
export CXX=clang++
24+
'';
25+
};
26+
in
27+
{
28+
inherit packages devShells;
29+
});
30+
}

Diff for: mlir/include/mlir/Conversion/MPIToLLVM/MPIToLLVM.h

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
//
2+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
3+
// See https://llvm.org/LICENSE.txt for license information.
4+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5+
//
6+
//===----------------------------------------------------------------------===//
7+
8+
#ifndef MLIR_CONVERSION_MPITOLLVM_H
9+
#define MLIR_CONVERSION_MPITOLLVM_H
10+
11+
#include "mlir/IR/DialectRegistry.h"
12+
13+
namespace mlir {
14+
15+
class LLVMTypeConverter;
16+
class RewritePatternSet;
17+
18+
#define GEN_PASS_DECL_MPITOLLVMCONVERSIONPASS
19+
#include "mlir/Conversion/Passes.h.inc"
20+
21+
namespace mpi {
22+
void populateMPIToLLVMConversionPatterns(LLVMTypeConverter &converter,
23+
RewritePatternSet &patterns);
24+
25+
void registerConvertMPIToLLVMInterface(DialectRegistry &registry);
26+
27+
} // namespace mpi
28+
} // namespace mlir
29+
30+
#endif // MLIR_CONVERSION_MPITOLLVM_H

Diff for: mlir/include/mlir/Dialect/MPI/IR/MPITypes.td

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class MPI_Type<string name, string typeMnemonic, list<Trait> traits = []>
3030
//===----------------------------------------------------------------------===//
3131

3232
def MPI_Retval : MPI_Type<"Retval", "retval"> {
33-
let summary = "MPI function call return value";
33+
let summary = "MPI function call return value (!mpi.retval)";
3434
let description = [{
3535
This type represents a return value from an MPI function call.
3636
This value can be MPI_SUCCESS, MPI_ERR_IN_STATUS, or any error code.

Diff for: mlir/include/mlir/InitAllExtensions.h

+2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#ifndef MLIR_INITALLEXTENSIONS_H_
1515
#define MLIR_INITALLEXTENSIONS_H_
1616

17+
#include "Conversion/MPIToLLVM/MPIToLLVM.h"
1718
#include "mlir/Conversion/ArithToLLVM/ArithToLLVM.h"
1819
#include "mlir/Conversion/ComplexToLLVM/ComplexToLLVM.h"
1920
#include "mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
@@ -62,6 +63,7 @@ inline void registerAllExtensions(DialectRegistry &registry) {
6263
registerConvertFuncToLLVMInterface(registry);
6364
index::registerConvertIndexToLLVMInterface(registry);
6465
registerConvertMathToLLVMInterface(registry);
66+
mpi::registerConvertMPIToLLVMInterface(registry);
6567
registerConvertMemRefToLLVMInterface(registry);
6668
registerConvertNVVMToLLVMInterface(registry);
6769
ub::registerConvertUBToLLVMInterface(registry);

Diff for: mlir/lib/Conversion/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ add_subdirectory(MathToSPIRV)
3939
add_subdirectory(MemRefToEmitC)
4040
add_subdirectory(MemRefToLLVM)
4141
add_subdirectory(MemRefToSPIRV)
42+
add_subdirectory(MPIToLLVM)
4243
add_subdirectory(NVGPUToNVVM)
4344
add_subdirectory(NVVMToLLVM)
4445
add_subdirectory(OpenACCToSCF)

Diff for: mlir/lib/Conversion/MPIToLLVM/CMakeLists.txt

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
add_mlir_conversion_library(MLIRMPIToLLVM
2+
MPIToLLVM.cpp
3+
4+
ADDITIONAL_HEADER_DIRS
5+
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/MPIToLLVM
6+
7+
DEPENDS
8+
MLIRConversionPassIncGen
9+
10+
LINK_COMPONENTS
11+
Core
12+
13+
LINK_LIBS PUBLIC
14+
MLIRLLVMCommonConversion
15+
MLIRLLVMDialect
16+
MLIRMPIDialect
17+
)

0 commit comments

Comments
 (0)