Blame src/mpi/coll/opmin.c

Packit 0848f5
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
Packit 0848f5
/*
Packit 0848f5
 *
Packit 0848f5
 *  (C) 2001 by Argonne National Laboratory.
Packit 0848f5
 *      See COPYRIGHT in top-level directory.
Packit 0848f5
 */
Packit 0848f5
Packit 0848f5
#include "mpiimpl.h"
Packit 0848f5
#include "oputil.h"
Packit 0848f5
Packit 0848f5
/*
Packit 0848f5
 * In MPI-2.1, this operation is valid only for C integer, Fortran integer,
Packit 0848f5
 * and floating point types (5.9.2 Predefined reduce operations)
Packit 0848f5
 */
Packit 0848f5
#undef FUNCNAME
Packit 0848f5
#define FUNCNAME MPIR_MINF
Packit 0848f5
#undef FCNAME
Packit 0848f5
#define FCNAME MPL_QUOTE(FUNCNAME)
Packit 0848f5
void MPIR_MINF (
Packit 0848f5
    void *invec,
Packit 0848f5
    void *inoutvec,
Packit 0848f5
    int *Len,
Packit 0848f5
    MPI_Datatype *type )
Packit 0848f5
{
Packit 0848f5
    int i, len = *Len;
Packit 0848f5
Packit 0848f5
    switch (*type) {
Packit 0848f5
#undef MPIR_OP_TYPE_MACRO
Packit 0848f5
#define MPIR_OP_TYPE_MACRO(mpi_type_, c_type_, type_name_) MPIR_OP_TYPE_REDUCE_CASE(mpi_type_, c_type_, MPIR_MIN)
Packit 0848f5
        /* no semicolons by necessity */
Packit 0848f5
        MPIR_OP_TYPE_GROUP(C_INTEGER)
Packit 0848f5
        MPIR_OP_TYPE_GROUP(FORTRAN_INTEGER)
Packit 0848f5
        MPIR_OP_TYPE_GROUP(FLOATING_POINT)
Packit 0848f5
        /* extra types that are not required to be supported by the MPI Standard */
Packit 0848f5
        MPIR_OP_TYPE_GROUP(C_INTEGER_EXTRA)
Packit 0848f5
        MPIR_OP_TYPE_GROUP(FORTRAN_INTEGER_EXTRA)
Packit 0848f5
        MPIR_OP_TYPE_GROUP(FLOATING_POINT_EXTRA)
Packit 0848f5
#undef MPIR_OP_TYPE_MACRO
Packit 0848f5
        /* --BEGIN ERROR HANDLING-- */
Packit 0848f5
        default: {
Packit 0848f5
            MPID_THREADPRIV_DECL;
Packit 0848f5
            MPID_THREADPRIV_GET;
Packit 0848f5
            MPID_THREADPRIV_FIELD(op_errno) = MPIR_Err_create_code( MPI_SUCCESS, MPIR_ERR_RECOVERABLE, FCNAME, __LINE__, MPI_ERR_OP, "**opundefined","**opundefined %s", "MPI_MIN" );
Packit 0848f5
            break;
Packit 0848f5
        }
Packit 0848f5
        /* --END ERROR HANDLING-- */
Packit 0848f5
    }
Packit 0848f5
}
Packit 0848f5
Packit 0848f5
Packit 0848f5
#undef FUNCNAME
Packit 0848f5
#define FUNCNAME MPIR_MINF_check_dtype
Packit 0848f5
#undef FCNAME
Packit 0848f5
#define FCNAME MPL_QUOTE(FUNCNAME)
Packit 0848f5
int MPIR_MINF_check_dtype ( MPI_Datatype type )
Packit 0848f5
{
Packit 0848f5
    switch (type) {
Packit 0848f5
#undef MPIR_OP_TYPE_MACRO
Packit 0848f5
#define MPIR_OP_TYPE_MACRO(mpi_type_, c_type_, type_name_) case (mpi_type_):
Packit 0848f5
        MPIR_OP_TYPE_GROUP(C_INTEGER)
Packit 0848f5
        MPIR_OP_TYPE_GROUP(FORTRAN_INTEGER)
Packit 0848f5
        MPIR_OP_TYPE_GROUP(FLOATING_POINT)
Packit 0848f5
        /* extra types that are not required to be supported by the MPI Standard */
Packit 0848f5
        MPIR_OP_TYPE_GROUP(C_INTEGER_EXTRA)
Packit 0848f5
        MPIR_OP_TYPE_GROUP(FORTRAN_INTEGER_EXTRA)
Packit 0848f5
        MPIR_OP_TYPE_GROUP(FLOATING_POINT_EXTRA)
Packit 0848f5
#undef MPIR_OP_TYPE_MACRO
Packit 0848f5
            return MPI_SUCCESS;
Packit 0848f5
        /* --BEGIN ERROR HANDLING-- */
Packit 0848f5
        default:
Packit 0848f5
            return MPIR_Err_create_code( MPI_SUCCESS, MPIR_ERR_RECOVERABLE, FCNAME, __LINE__, MPI_ERR_OP, "**opundefined","**opundefined %s", "MPI_MIN" );
Packit 0848f5
        /* --END ERROR HANDLING-- */
Packit 0848f5
    }
Packit 0848f5
}