xref: /llvm-project/mlir/test/Dialect/MPI/ops.mlir (revision b334664f9f3a098b6f3fd9cfd17b856a9edfe446)
1// RUN: mlir-opt %s | mlir-opt | FileCheck %s
2
3func.func @mpi_test(%ref : memref<100xf32>) -> () {
4    // Note: the !mpi.retval result is optional on all operations except mpi.error_class
5
6    // CHECK: %0 = mpi.init : !mpi.retval
7    %err = mpi.init : !mpi.retval
8
9    // CHECK-NEXT: %retval, %rank = mpi.comm_rank : !mpi.retval, i32
10    %retval, %rank = mpi.comm_rank : !mpi.retval, i32
11
12    // CHECK-NEXT: mpi.send(%arg0, %rank, %rank) : memref<100xf32>, i32, i32
13    mpi.send(%ref, %rank, %rank) : memref<100xf32>, i32, i32
14
15    // CHECK-NEXT: %1 = mpi.send(%arg0, %rank, %rank) : memref<100xf32>, i32, i32 -> !mpi.retval
16    %err2 = mpi.send(%ref, %rank, %rank) : memref<100xf32>, i32, i32 -> !mpi.retval
17
18    // CHECK-NEXT: mpi.recv(%arg0, %rank, %rank) : memref<100xf32>, i32, i32
19    mpi.recv(%ref, %rank, %rank) : memref<100xf32>, i32, i32
20
21    // CHECK-NEXT: %2 = mpi.recv(%arg0, %rank, %rank) : memref<100xf32>, i32, i32 -> !mpi.retval
22    %err3 = mpi.recv(%ref, %rank, %rank) : memref<100xf32>, i32, i32 -> !mpi.retval
23
24    // CHECK-NEXT: %3 = mpi.finalize : !mpi.retval
25    %rval = mpi.finalize : !mpi.retval
26
27    // CHECK-NEXT: %4 = mpi.retval_check %retval = <MPI_SUCCESS> : i1
28    %res = mpi.retval_check %retval = <MPI_SUCCESS> : i1
29
30    // CHECK-NEXT: %5 = mpi.error_class %0 : !mpi.retval
31    %errclass = mpi.error_class %err : !mpi.retval
32
33    // CHECK-NEXT: return
34    func.return
35}
36