3
3
// COM: Test MPICH ABI
4
4
// CHECK: module attributes {mpi.dlti = #dlti.map<"MPI:Implementation" = "MPICH">} {
5
5
// CHECK: llvm.func @MPI_Finalize() -> i32
6
+ // CHECK: llvm.func @MPI_Comm_split(i32, i32, i32, !llvm.ptr) -> i32
6
7
// CHECK: llvm.func @MPI_Recv(!llvm.ptr, i32, i32, i32, i32, i32, !llvm.ptr) -> i32
7
8
// CHECK: llvm.func @MPI_Send(!llvm.ptr, i32, i32, i32, i32, i32) -> i32
8
9
// CHECK: llvm.func @MPI_Comm_rank(i32, !llvm.ptr) -> i32
@@ -75,6 +76,17 @@ module attributes { mpi.dlti = #dlti.map<"MPI:Implementation" = "MPICH"> } {
75
76
// CHECK: [[v47:%.*]] = llvm.inttoptr [[v46]] : i64 to !llvm.ptr
76
77
// CHECK: [[v48:%.*]] = llvm.call @MPI_Recv([[v41]], [[v43]], [[v44]], [[v12]], [[v12]], [[comm_4]], [[v47]]) : (!llvm.ptr, i32, i32, i32, i32, i32, !llvm.ptr) -> i32
77
78
%2 = mpi.recv (%arg0 , %rank , %rank , %comm ) : memref <100 xf32 >, i32 , i32 -> !mpi.retval
79
+
80
+ // CHECK: [[v51:%.*]] = llvm.mlir.constant(10 : i32) : i32
81
+ %color = arith.constant 10 : i32
82
+ // CHECK: [[v52:%.*]] = llvm.mlir.constant(22 : i32) : i32
83
+ %key = arith.constant 22 : i32
84
+ // CHECK: [[v53:%.*]] = llvm.trunc [[comm]] : i64 to i32
85
+ // CHECK: [[v54:%.*]] = llvm.mlir.constant(1 : i32) : i32
86
+ // CHECK: [[v55:%.*]] = llvm.alloca [[v54]] x i32 : (i32) -> !llvm.ptr
87
+ // CHECK: [[v56:%.*]] = llvm.call @MPI_Comm_split([[v53]], [[v51]], [[v52]], [[v55]]) : (i32, i32, i32, !llvm.ptr) -> i32
88
+ // CHECK: [[v57:%.*]] = llvm.load [[v55]] : !llvm.ptr -> i32
89
+ %split = mpi.comm_split (%comm , %color , %key ) : !mpi.comm
78
90
79
91
// CHECK: [[v49:%.*]] = llvm.call @MPI_Finalize() : () -> i32
80
92
%3 = mpi.finalize : !mpi.retval
@@ -88,6 +100,7 @@ module attributes { mpi.dlti = #dlti.map<"MPI:Implementation" = "MPICH"> } {
88
100
// COM: Test OpenMPI ABI
89
101
// CHECK: module attributes {mpi.dlti = #dlti.map<"MPI:Implementation" = "OpenMPI">} {
90
102
// CHECK: llvm.func @MPI_Finalize() -> i32
103
+ // CHECK: llvm.func @MPI_Comm_split(!llvm.ptr, i32, i32, !llvm.ptr) -> i32
91
104
// CHECK: llvm.func @MPI_Recv(!llvm.ptr, i32, !llvm.ptr, i32, i32, !llvm.ptr, !llvm.ptr) -> i32
92
105
// CHECK: llvm.func @MPI_Send(!llvm.ptr, i32, !llvm.ptr, i32, i32, !llvm.ptr) -> i32
93
106
// CHECK: llvm.mlir.global external @ompi_mpi_float() {addr_space = 0 : i32} : !llvm.struct<"ompi_predefined_datatype_t", opaque>
@@ -163,6 +176,17 @@ module attributes { mpi.dlti = #dlti.map<"MPI:Implementation" = "OpenMPI"> } {
163
176
// CHECK: [[v48:%.*]] = llvm.call @MPI_Recv([[v41]], [[v43]], [[v44]], [[v12]], [[v12]], [[v45]], [[v47]]) : (!llvm.ptr, i32, !llvm.ptr, i32, i32, !llvm.ptr, !llvm.ptr) -> i32
164
177
%2 = mpi.recv (%arg0 , %rank , %rank , %comm ) : memref <100 xf32 >, i32 , i32 -> !mpi.retval
165
178
179
+ // CHECK: [[v51:%.*]] = llvm.mlir.constant(10 : i32) : i32
180
+ %color = arith.constant 10 : i32
181
+ // CHECK: [[v52:%.*]] = llvm.mlir.constant(22 : i32) : i32
182
+ %key = arith.constant 22 : i32
183
+ // CHECK: [[v53:%.*]] = llvm.inttoptr [[comm]] : i64 to !llvm.ptr
184
+ // CHECK: [[v54:%.*]] = llvm.mlir.constant(1 : i32) : i32
185
+ // CHECK: [[v55:%.*]] = llvm.alloca [[v54]] x !llvm.ptr : (i32) -> !llvm.ptr
186
+ // CHECK: [[v56:%.*]] = llvm.call @MPI_Comm_split([[v53]], [[v51]], [[v52]], [[v55]]) : (!llvm.ptr, i32, i32, !llvm.ptr) -> i32
187
+ // CHECK: [[v57:%.*]] = llvm.load [[v55]] : !llvm.ptr -> i32
188
+ %split = mpi.comm_split (%comm , %color , %key ) : !mpi.comm
189
+
166
190
// CHECK: [[v49:%.*]] = llvm.call @MPI_Finalize() : () -> i32
167
191
%3 = mpi.finalize : !mpi.retval
168
192
0 commit comments