/* -*- 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_IBARRIER( MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_ibarrier__( MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_ibarrier( MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_ibarrier_( MPI_Fint *, MPI_Fint *, MPI_Fint * );

#if defined(F77_NAME_UPPER)
#pragma weak MPI_IBARRIER = PMPI_IBARRIER
#pragma weak mpi_ibarrier__ = PMPI_IBARRIER
#pragma weak mpi_ibarrier_ = PMPI_IBARRIER
#pragma weak mpi_ibarrier = PMPI_IBARRIER
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma weak MPI_IBARRIER = pmpi_ibarrier__
#pragma weak mpi_ibarrier__ = pmpi_ibarrier__
#pragma weak mpi_ibarrier_ = pmpi_ibarrier__
#pragma weak mpi_ibarrier = pmpi_ibarrier__
#elif defined(F77_NAME_LOWER_USCORE)
#pragma weak MPI_IBARRIER = pmpi_ibarrier_
#pragma weak mpi_ibarrier__ = pmpi_ibarrier_
#pragma weak mpi_ibarrier_ = pmpi_ibarrier_
#pragma weak mpi_ibarrier = pmpi_ibarrier_
#else
#pragma weak MPI_IBARRIER = pmpi_ibarrier
#pragma weak mpi_ibarrier__ = pmpi_ibarrier
#pragma weak mpi_ibarrier_ = pmpi_ibarrier
#pragma weak mpi_ibarrier = pmpi_ibarrier
#endif



#elif defined(HAVE_PRAGMA_WEAK)

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

#pragma weak MPI_IBARRIER = PMPI_IBARRIER
#elif defined(F77_NAME_LOWER_2USCORE)
extern FORT_DLL_SPEC void FORT_CALL mpi_ibarrier__( MPI_Fint *, MPI_Fint *, MPI_Fint * );

#pragma weak mpi_ibarrier__ = pmpi_ibarrier__
#elif !defined(F77_NAME_LOWER_USCORE)
extern FORT_DLL_SPEC void FORT_CALL mpi_ibarrier( MPI_Fint *, MPI_Fint *, MPI_Fint * );

#pragma weak mpi_ibarrier = pmpi_ibarrier
#else
extern FORT_DLL_SPEC void FORT_CALL mpi_ibarrier_( MPI_Fint *, MPI_Fint *, MPI_Fint * );

#pragma weak mpi_ibarrier_ = pmpi_ibarrier_
#endif

#elif defined(HAVE_PRAGMA_HP_SEC_DEF)
#if defined(F77_NAME_UPPER)
#pragma _HP_SECONDARY_DEF PMPI_IBARRIER  MPI_IBARRIER
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma _HP_SECONDARY_DEF pmpi_ibarrier__  mpi_ibarrier__
#elif !defined(F77_NAME_LOWER_USCORE)
#pragma _HP_SECONDARY_DEF pmpi_ibarrier  mpi_ibarrier
#else
#pragma _HP_SECONDARY_DEF pmpi_ibarrier_  mpi_ibarrier_
#endif

#elif defined(HAVE_PRAGMA_CRI_DUP)
#if defined(F77_NAME_UPPER)
#pragma _CRI duplicate MPI_IBARRIER as PMPI_IBARRIER
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma _CRI duplicate mpi_ibarrier__ as pmpi_ibarrier__
#elif !defined(F77_NAME_LOWER_USCORE)
#pragma _CRI duplicate mpi_ibarrier as pmpi_ibarrier
#else
#pragma _CRI duplicate mpi_ibarrier_ as pmpi_ibarrier_
#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_IBARRIER( MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_ibarrier__( MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_ibarrier( MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_ibarrier_( MPI_Fint *, MPI_Fint *, MPI_Fint * );

#if defined(F77_NAME_UPPER)
#pragma weak mpi_ibarrier__ = MPI_IBARRIER
#pragma weak mpi_ibarrier_ = MPI_IBARRIER
#pragma weak mpi_ibarrier = MPI_IBARRIER
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma weak MPI_IBARRIER = mpi_ibarrier__
#pragma weak mpi_ibarrier_ = mpi_ibarrier__
#pragma weak mpi_ibarrier = mpi_ibarrier__
#elif defined(F77_NAME_LOWER_USCORE)
#pragma weak MPI_IBARRIER = mpi_ibarrier_
#pragma weak mpi_ibarrier__ = mpi_ibarrier_
#pragma weak mpi_ibarrier = mpi_ibarrier_
#else
#pragma weak MPI_IBARRIER = mpi_ibarrier
#pragma weak mpi_ibarrier__ = mpi_ibarrier
#pragma weak mpi_ibarrier_ = mpi_ibarrier
#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_IBARRIER( MPI_Fint *, MPI_Fint *, MPI_Fint * );
#endif
#ifndef F77_NAME_LOWER_2USCORE
extern FORT_DLL_SPEC void FORT_CALL pmpi_ibarrier__( MPI_Fint *, MPI_Fint *, MPI_Fint * );
#endif
#ifndef F77_NAME_LOWER_USCORE
extern FORT_DLL_SPEC void FORT_CALL pmpi_ibarrier_( MPI_Fint *, MPI_Fint *, MPI_Fint * );
#endif
#ifndef F77_NAME_LOWER
extern FORT_DLL_SPEC void FORT_CALL pmpi_ibarrier( MPI_Fint *, MPI_Fint *, MPI_Fint * );

#endif

#if defined(F77_NAME_UPPER)
#pragma weak pmpi_ibarrier__ = PMPI_IBARRIER
#pragma weak pmpi_ibarrier_ = PMPI_IBARRIER
#pragma weak pmpi_ibarrier = PMPI_IBARRIER
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma weak PMPI_IBARRIER = pmpi_ibarrier__
#pragma weak pmpi_ibarrier_ = pmpi_ibarrier__
#pragma weak pmpi_ibarrier = pmpi_ibarrier__
#elif defined(F77_NAME_LOWER_USCORE)
#pragma weak PMPI_IBARRIER = pmpi_ibarrier_
#pragma weak pmpi_ibarrier__ = pmpi_ibarrier_
#pragma weak pmpi_ibarrier = pmpi_ibarrier_
#else
#pragma weak PMPI_IBARRIER = pmpi_ibarrier
#pragma weak pmpi_ibarrier__ = pmpi_ibarrier
#pragma weak pmpi_ibarrier_ = pmpi_ibarrier
#endif /* Test on name mapping */
#endif /* Use multiple pragma weak */

#ifdef F77_NAME_UPPER
#define mpi_ibarrier_ PMPI_IBARRIER
#elif defined(F77_NAME_LOWER_2USCORE)
#define mpi_ibarrier_ pmpi_ibarrier__
#elif !defined(F77_NAME_LOWER_USCORE)
#define mpi_ibarrier_ pmpi_ibarrier
#else
#define mpi_ibarrier_ pmpi_ibarrier_
#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_Ibarrier
#define MPI_Ibarrier PMPI_Ibarrier 

#else

#ifdef F77_NAME_UPPER
#define mpi_ibarrier_ MPI_IBARRIER
#elif defined(F77_NAME_LOWER_2USCORE)
#define mpi_ibarrier_ mpi_ibarrier__
#elif !defined(F77_NAME_LOWER_USCORE)
#define mpi_ibarrier_ mpi_ibarrier
/* 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_ibarrier_ ( MPI_Fint *v1, MPI_Fint *v2, MPI_Fint *ierr ){
    *ierr = MPI_Ibarrier( (MPI_Comm)(*v1), (MPI_Request *)(v2) );
}
