|
3 | 3 | // COM: Test MPICH ABI
|
4 | 4 | // CHECK: module attributes {dlti.map = #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 {dlti.map = #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<100xf32>, 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.extractvalue [[v5]][1] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)>
|
80 | 92 | // CHECK: [[v50:%.*]] = llvm.extractvalue [[v5]][2] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)>
|
@@ -104,6 +116,7 @@ module attributes {dlti.map = #dlti.map<"MPI:Implementation" = "MPICH">} {
|
104 | 116 | // COM: Test OpenMPI ABI
|
105 | 117 | // CHECK: module attributes {dlti.map = #dlti.map<"MPI:Implementation" = "OpenMPI">} {
|
106 | 118 | // CHECK: llvm.func @MPI_Finalize() -> i32
|
| 119 | +// CHECK: llvm.func @MPI_Comm_split(!llvm.ptr, i32, i32, !llvm.ptr) -> i32 |
107 | 120 | // CHECK: llvm.func @MPI_Recv(!llvm.ptr, i32, !llvm.ptr, i32, i32, !llvm.ptr, !llvm.ptr) -> i32
|
108 | 121 | // CHECK: llvm.func @MPI_Send(!llvm.ptr, i32, !llvm.ptr, i32, i32, !llvm.ptr) -> i32
|
109 | 122 | // CHECK: llvm.mlir.global external @ompi_mpi_float() {addr_space = 0 : i32} : !llvm.struct<"ompi_predefined_datatype_t", opaque>
|
@@ -195,6 +208,17 @@ module attributes { dlti.map = #dlti.map<"MPI:Implementation" = "OpenMPI"> } {
|
195 | 208 | // CHECK: [[v62:%.*]] = llvm.call @MPI_Allreduce([[v51]], [[v56]], [[v53]], [[v59]], [[v60]], [[v61]]) : (!llvm.ptr, !llvm.ptr, i32, !llvm.ptr, !llvm.ptr, !llvm.ptr) -> i32
|
196 | 209 | mpi.allreduce(%arg0, %arg0, MPI_SUM) : memref<100xf32>, memref<100xf32>
|
197 | 210 |
|
| 211 | + // CHECK: [[v51:%.*]] = llvm.mlir.constant(10 : i32) : i32 |
| 212 | + %color = arith.constant 10 : i32 |
| 213 | + // CHECK: [[v52:%.*]] = llvm.mlir.constant(22 : i32) : i32 |
| 214 | + %key = arith.constant 22 : i32 |
| 215 | + // CHECK: [[v53:%.*]] = llvm.inttoptr [[comm]] : i64 to !llvm.ptr |
| 216 | + // CHECK: [[v54:%.*]] = llvm.mlir.constant(1 : i32) : i32 |
| 217 | + // CHECK: [[v55:%.*]] = llvm.alloca [[v54]] x !llvm.ptr : (i32) -> !llvm.ptr |
| 218 | + // CHECK: [[v56:%.*]] = llvm.call @MPI_Comm_split([[v53]], [[v51]], [[v52]], [[v55]]) : (!llvm.ptr, i32, i32, !llvm.ptr) -> i32 |
| 219 | + // CHECK: [[v57:%.*]] = llvm.load [[v55]] : !llvm.ptr -> i32 |
| 220 | + %split = mpi.comm_split(%comm, %color, %key) : !mpi.comm |
| 221 | + |
198 | 222 | // CHECK: [[v49:%.*]] = llvm.call @MPI_Finalize() : () -> i32
|
199 | 223 | %3 = mpi.finalize : !mpi.retval
|
200 | 224 |
|
|
0 commit comments