/* -*- Mode: C; c-basic-offset:4 ; -*- */
/*  
 *  (C) 2001 by Argonne National Laboratory.
 *      See COPYRIGHT in top-level directory.
 *
 * This file is automatically generated by buildiface 
 * DO NOT EDIT
 */
#include "mpi_fortimpl.h"


/* Begin MPI profiling block */
#if defined(USE_WEAK_SYMBOLS) && !defined(USE_ONLY_MPI_NAMES) 
#if defined(HAVE_MULTIPLE_PRAGMA_WEAK)
extern FORT_DLL_SPEC void FORT_CALL MPI_IRECV( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_irecv__( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_irecv( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_irecv_( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );

#if defined(F77_NAME_UPPER)
#pragma weak MPI_IRECV = PMPI_IRECV
#pragma weak mpi_irecv__ = PMPI_IRECV
#pragma weak mpi_irecv_ = PMPI_IRECV
#pragma weak mpi_irecv = PMPI_IRECV
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma weak MPI_IRECV = pmpi_irecv__
#pragma weak mpi_irecv__ = pmpi_irecv__
#pragma weak mpi_irecv_ = pmpi_irecv__
#pragma weak mpi_irecv = pmpi_irecv__
#elif defined(F77_NAME_LOWER_USCORE)
#pragma weak MPI_IRECV = pmpi_irecv_
#pragma weak mpi_irecv__ = pmpi_irecv_
#pragma weak mpi_irecv_ = pmpi_irecv_
#pragma weak mpi_irecv = pmpi_irecv_
#else
#pragma weak MPI_IRECV = pmpi_irecv
#pragma weak mpi_irecv__ = pmpi_irecv
#pragma weak mpi_irecv_ = pmpi_irecv
#pragma weak mpi_irecv = pmpi_irecv
#endif



#elif defined(HAVE_PRAGMA_WEAK)

#if defined(F77_NAME_UPPER)
extern FORT_DLL_SPEC void FORT_CALL MPI_IRECV( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );

#pragma weak MPI_IRECV = PMPI_IRECV
#elif defined(F77_NAME_LOWER_2USCORE)
extern FORT_DLL_SPEC void FORT_CALL mpi_irecv__( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );

#pragma weak mpi_irecv__ = pmpi_irecv__
#elif !defined(F77_NAME_LOWER_USCORE)
extern FORT_DLL_SPEC void FORT_CALL mpi_irecv( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );

#pragma weak mpi_irecv = pmpi_irecv
#else
extern FORT_DLL_SPEC void FORT_CALL mpi_irecv_( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );

#pragma weak mpi_irecv_ = pmpi_irecv_
#endif

#elif defined(HAVE_PRAGMA_HP_SEC_DEF)
#if defined(F77_NAME_UPPER)
#pragma _HP_SECONDARY_DEF PMPI_IRECV  MPI_IRECV
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma _HP_SECONDARY_DEF pmpi_irecv__  mpi_irecv__
#elif !defined(F77_NAME_LOWER_USCORE)
#pragma _HP_SECONDARY_DEF pmpi_irecv  mpi_irecv
#else
#pragma _HP_SECONDARY_DEF pmpi_irecv_  mpi_irecv_
#endif

#elif defined(HAVE_PRAGMA_CRI_DUP)
#if defined(F77_NAME_UPPER)
#pragma _CRI duplicate MPI_IRECV as PMPI_IRECV
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma _CRI duplicate mpi_irecv__ as pmpi_irecv__
#elif !defined(F77_NAME_LOWER_USCORE)
#pragma _CRI duplicate mpi_irecv as pmpi_irecv
#else
#pragma _CRI duplicate mpi_irecv_ as pmpi_irecv_
#endif
#endif /* HAVE_PRAGMA_WEAK */
#endif /* USE_WEAK_SYMBOLS */
/* End MPI profiling block */


/* These definitions are used only for generating the Fortran wrappers */
#if defined(USE_WEAK_SYMBOLS) && defined(HAVE_MULTIPLE_PRAGMA_WEAK) && \
    defined(USE_ONLY_MPI_NAMES)
extern FORT_DLL_SPEC void FORT_CALL MPI_IRECV( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_irecv__( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_irecv( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_irecv_( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );

#if defined(F77_NAME_UPPER)
#pragma weak mpi_irecv__ = MPI_IRECV
#pragma weak mpi_irecv_ = MPI_IRECV
#pragma weak mpi_irecv = MPI_IRECV
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma weak MPI_IRECV = mpi_irecv__
#pragma weak mpi_irecv_ = mpi_irecv__
#pragma weak mpi_irecv = mpi_irecv__
#elif defined(F77_NAME_LOWER_USCORE)
#pragma weak MPI_IRECV = mpi_irecv_
#pragma weak mpi_irecv__ = mpi_irecv_
#pragma weak mpi_irecv = mpi_irecv_
#else
#pragma weak MPI_IRECV = mpi_irecv
#pragma weak mpi_irecv__ = mpi_irecv
#pragma weak mpi_irecv_ = mpi_irecv
#endif

#endif

/* Map the name to the correct form */
#ifndef MPICH_MPI_FROM_PMPI
#if defined(USE_WEAK_SYMBOLS) && defined(HAVE_MULTIPLE_PRAGMA_WEAK)
/* Define the weak versions of the PMPI routine*/
#ifndef F77_NAME_UPPER
extern FORT_DLL_SPEC void FORT_CALL PMPI_IRECV( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
#endif
#ifndef F77_NAME_LOWER_2USCORE
extern FORT_DLL_SPEC void FORT_CALL pmpi_irecv__( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
#endif
#ifndef F77_NAME_LOWER_USCORE
extern FORT_DLL_SPEC void FORT_CALL pmpi_irecv_( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
#endif
#ifndef F77_NAME_LOWER
extern FORT_DLL_SPEC void FORT_CALL pmpi_irecv( void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );

#endif

#if defined(F77_NAME_UPPER)
#pragma weak pmpi_irecv__ = PMPI_IRECV
#pragma weak pmpi_irecv_ = PMPI_IRECV
#pragma weak pmpi_irecv = PMPI_IRECV
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma weak PMPI_IRECV = pmpi_irecv__
#pragma weak pmpi_irecv_ = pmpi_irecv__
#pragma weak pmpi_irecv = pmpi_irecv__
#elif defined(F77_NAME_LOWER_USCORE)
#pragma weak PMPI_IRECV = pmpi_irecv_
#pragma weak pmpi_irecv__ = pmpi_irecv_
#pragma weak pmpi_irecv = pmpi_irecv_
#else
#pragma weak PMPI_IRECV = pmpi_irecv
#pragma weak pmpi_irecv__ = pmpi_irecv
#pragma weak pmpi_irecv_ = pmpi_irecv
#endif /* Test on name mapping */
#endif /* Use multiple pragma weak */

#ifdef F77_NAME_UPPER
#define mpi_irecv_ PMPI_IRECV
#elif defined(F77_NAME_LOWER_2USCORE)
#define mpi_irecv_ pmpi_irecv__
#elif !defined(F77_NAME_LOWER_USCORE)
#define mpi_irecv_ pmpi_irecv
#else
#define mpi_irecv_ pmpi_irecv_
#endif /* Test on name mapping */

/* This defines the routine that we call, which must be the PMPI version
   since we're renaming the Fortran entry as the pmpi version.  The MPI name
   must be undefined first to prevent any conflicts with previous renamings. */
#undef MPI_Irecv
#define MPI_Irecv PMPI_Irecv 

#else

#ifdef F77_NAME_UPPER
#define mpi_irecv_ MPI_IRECV
#elif defined(F77_NAME_LOWER_2USCORE)
#define mpi_irecv_ mpi_irecv__
#elif !defined(F77_NAME_LOWER_USCORE)
#define mpi_irecv_ mpi_irecv
/* Else leave name alone */
#endif


#endif /* MPICH_MPI_FROM_PMPI */

/* Prototypes for the Fortran interfaces */
#include "fproto.h"
FORT_DLL_SPEC void FORT_CALL mpi_irecv_ ( void*v1, MPI_Fint *v2, MPI_Fint *v3, MPI_Fint *v4, MPI_Fint *v5, MPI_Fint *v6, MPI_Fint *v7, MPI_Fint *ierr ){
    *ierr = MPI_Irecv( v1, (int)*v2, (MPI_Datatype)(*v3), (int)*v4, (int)*v5, (MPI_Comm)(*v6), (MPI_Request *)(v7) );
}
