/* -*- 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_REDUCE_LOCAL( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );

#if defined(F77_NAME_UPPER)
#pragma weak MPI_REDUCE_LOCAL = PMPI_REDUCE_LOCAL
#pragma weak mpi_reduce_local__ = PMPI_REDUCE_LOCAL
#pragma weak mpi_reduce_local_ = PMPI_REDUCE_LOCAL
#pragma weak mpi_reduce_local = PMPI_REDUCE_LOCAL
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma weak MPI_REDUCE_LOCAL = pmpi_reduce_local__
#pragma weak mpi_reduce_local__ = pmpi_reduce_local__
#pragma weak mpi_reduce_local_ = pmpi_reduce_local__
#pragma weak mpi_reduce_local = pmpi_reduce_local__
#elif defined(F77_NAME_LOWER_USCORE)
#pragma weak MPI_REDUCE_LOCAL = pmpi_reduce_local_
#pragma weak mpi_reduce_local__ = pmpi_reduce_local_
#pragma weak mpi_reduce_local_ = pmpi_reduce_local_
#pragma weak mpi_reduce_local = pmpi_reduce_local_
#else
#pragma weak MPI_REDUCE_LOCAL = pmpi_reduce_local
#pragma weak mpi_reduce_local__ = pmpi_reduce_local
#pragma weak mpi_reduce_local_ = pmpi_reduce_local
#pragma weak mpi_reduce_local = pmpi_reduce_local
#endif



#elif defined(HAVE_PRAGMA_WEAK)

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

#pragma weak MPI_REDUCE_LOCAL = PMPI_REDUCE_LOCAL
#elif defined(F77_NAME_LOWER_2USCORE)
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );

#pragma weak mpi_reduce_local__ = pmpi_reduce_local__
#elif !defined(F77_NAME_LOWER_USCORE)
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );

#pragma weak mpi_reduce_local = pmpi_reduce_local
#else
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );

#pragma weak mpi_reduce_local_ = pmpi_reduce_local_
#endif

#elif defined(HAVE_PRAGMA_HP_SEC_DEF)
#if defined(F77_NAME_UPPER)
#pragma _HP_SECONDARY_DEF PMPI_REDUCE_LOCAL  MPI_REDUCE_LOCAL
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma _HP_SECONDARY_DEF pmpi_reduce_local__  mpi_reduce_local__
#elif !defined(F77_NAME_LOWER_USCORE)
#pragma _HP_SECONDARY_DEF pmpi_reduce_local  mpi_reduce_local
#else
#pragma _HP_SECONDARY_DEF pmpi_reduce_local_  mpi_reduce_local_
#endif

#elif defined(HAVE_PRAGMA_CRI_DUP)
#if defined(F77_NAME_UPPER)
#pragma _CRI duplicate MPI_REDUCE_LOCAL as PMPI_REDUCE_LOCAL
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma _CRI duplicate mpi_reduce_local__ as pmpi_reduce_local__
#elif !defined(F77_NAME_LOWER_USCORE)
#pragma _CRI duplicate mpi_reduce_local as pmpi_reduce_local
#else
#pragma _CRI duplicate mpi_reduce_local_ as pmpi_reduce_local_
#endif

#elif defined(HAVE_WEAK_ATTRIBUTE)
#if defined(F77_NAME_UPPER)
extern FORT_DLL_SPEC void FORT_CALL MPI_REDUCE_LOCAL( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("PMPI_REDUCE_LOCAL")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("PMPI_REDUCE_LOCAL")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("PMPI_REDUCE_LOCAL")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("PMPI_REDUCE_LOCAL")));

#elif defined(F77_NAME_LOWER_2USCORE)
extern FORT_DLL_SPEC void FORT_CALL MPI_REDUCE_LOCAL( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local__")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local__")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local__")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local__")));

#elif defined(F77_NAME_LOWER_USCORE)
extern FORT_DLL_SPEC void FORT_CALL MPI_REDUCE_LOCAL( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local_")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local_")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local_")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local_")));

#else
extern FORT_DLL_SPEC void FORT_CALL MPI_REDUCE_LOCAL( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local")));

#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(USE_ONLY_MPI_NAMES)
#if defined(HAVE_MULTIPLE_PRAGMA_WEAK)
extern FORT_DLL_SPEC void FORT_CALL MPI_REDUCE_LOCAL( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );

#if defined(F77_NAME_UPPER)
#pragma weak mpi_reduce_local__ = MPI_REDUCE_LOCAL
#pragma weak mpi_reduce_local_ = MPI_REDUCE_LOCAL
#pragma weak mpi_reduce_local = MPI_REDUCE_LOCAL
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma weak MPI_REDUCE_LOCAL = mpi_reduce_local__
#pragma weak mpi_reduce_local_ = mpi_reduce_local__
#pragma weak mpi_reduce_local = mpi_reduce_local__
#elif defined(F77_NAME_LOWER_USCORE)
#pragma weak MPI_REDUCE_LOCAL = mpi_reduce_local_
#pragma weak mpi_reduce_local__ = mpi_reduce_local_
#pragma weak mpi_reduce_local = mpi_reduce_local_
#else
#pragma weak MPI_REDUCE_LOCAL = mpi_reduce_local
#pragma weak mpi_reduce_local__ = mpi_reduce_local
#pragma weak mpi_reduce_local_ = mpi_reduce_local
#endif
#elif defined(HAVE_WEAK_ATTRIBUTE)
#if defined(F77_NAME_UPPER)
extern FORT_DLL_SPEC void FORT_CALL MPI_REDUCE_LOCAL( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("MPI_REDUCE_LOCAL")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("MPI_REDUCE_LOCAL")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("MPI_REDUCE_LOCAL")));

#elif defined(F77_NAME_LOWER_2USCORE)
extern FORT_DLL_SPEC void FORT_CALL MPI_REDUCE_LOCAL( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("mpi_reduce_local__")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("mpi_reduce_local__")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("mpi_reduce_local__")));

#elif defined(F77_NAME_LOWER_USCORE)
extern FORT_DLL_SPEC void FORT_CALL MPI_REDUCE_LOCAL( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("mpi_reduce_local_")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("mpi_reduce_local_")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("mpi_reduce_local_")));

#else
extern FORT_DLL_SPEC void FORT_CALL MPI_REDUCE_LOCAL( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("mpi_reduce_local")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("mpi_reduce_local")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("mpi_reduce_local")));
extern FORT_DLL_SPEC void FORT_CALL mpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );

#endif
#endif

#endif

/* Map the name to the correct form */
#ifndef MPICH_MPI_FROM_PMPI
#if defined(USE_WEAK_SYMBOLS)
#if 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_REDUCE_LOCAL( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
#endif
#ifndef F77_NAME_LOWER_2USCORE
extern FORT_DLL_SPEC void FORT_CALL pmpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
#endif
#ifndef F77_NAME_LOWER_USCORE
extern FORT_DLL_SPEC void FORT_CALL pmpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );
#endif
#ifndef F77_NAME_LOWER
extern FORT_DLL_SPEC void FORT_CALL pmpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * );

#endif

#if defined(F77_NAME_UPPER)
#pragma weak pmpi_reduce_local__ = PMPI_REDUCE_LOCAL
#pragma weak pmpi_reduce_local_ = PMPI_REDUCE_LOCAL
#pragma weak pmpi_reduce_local = PMPI_REDUCE_LOCAL
#elif defined(F77_NAME_LOWER_2USCORE)
#pragma weak PMPI_REDUCE_LOCAL = pmpi_reduce_local__
#pragma weak pmpi_reduce_local_ = pmpi_reduce_local__
#pragma weak pmpi_reduce_local = pmpi_reduce_local__
#elif defined(F77_NAME_LOWER_USCORE)
#pragma weak PMPI_REDUCE_LOCAL = pmpi_reduce_local_
#pragma weak pmpi_reduce_local__ = pmpi_reduce_local_
#pragma weak pmpi_reduce_local = pmpi_reduce_local_
#else
#pragma weak PMPI_REDUCE_LOCAL = pmpi_reduce_local
#pragma weak pmpi_reduce_local__ = pmpi_reduce_local
#pragma weak pmpi_reduce_local_ = pmpi_reduce_local
#endif /* Test on name mapping */

#elif defined(HAVE_WEAK_ATTRIBUTE)
#if defined(F77_NAME_UPPER)
extern FORT_DLL_SPEC void FORT_CALL pmpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("PMPI_REDUCE_LOCAL")));
extern FORT_DLL_SPEC void FORT_CALL pmpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("PMPI_REDUCE_LOCAL")));
extern FORT_DLL_SPEC void FORT_CALL pmpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("PMPI_REDUCE_LOCAL")));

#elif defined(F77_NAME_LOWER_2USCORE)
extern FORT_DLL_SPEC void FORT_CALL PMPI_REDUCE_LOCAL( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local__")));
extern FORT_DLL_SPEC void FORT_CALL pmpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local__")));
extern FORT_DLL_SPEC void FORT_CALL pmpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local__")));

#elif defined(F77_NAME_LOWER_USCORE)
extern FORT_DLL_SPEC void FORT_CALL PMPI_REDUCE_LOCAL( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local_")));
extern FORT_DLL_SPEC void FORT_CALL pmpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local_")));
extern FORT_DLL_SPEC void FORT_CALL pmpi_reduce_local( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local_")));

#else
extern FORT_DLL_SPEC void FORT_CALL PMPI_REDUCE_LOCAL( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local")));
extern FORT_DLL_SPEC void FORT_CALL pmpi_reduce_local__( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local")));
extern FORT_DLL_SPEC void FORT_CALL pmpi_reduce_local_( void*, void*, MPI_Fint *, MPI_Fint *, MPI_Fint *, MPI_Fint * ) __attribute__((weak,alias("pmpi_reduce_local")));

#endif /* Test on name mapping */
#endif /* HAVE_MULTIPLE_PRAGMA_WEAK */
#endif /* USE_WEAK_SYMBOLS */

#ifdef F77_NAME_UPPER
#define mpi_reduce_local_ PMPI_REDUCE_LOCAL
#elif defined(F77_NAME_LOWER_2USCORE)
#define mpi_reduce_local_ pmpi_reduce_local__
#elif !defined(F77_NAME_LOWER_USCORE)
#define mpi_reduce_local_ pmpi_reduce_local
#else
#define mpi_reduce_local_ pmpi_reduce_local_
#endif /* Test on name mapping */

#ifdef F77_USE_PMPI
/* 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_Reduce_local
#define MPI_Reduce_local PMPI_Reduce_local 
#endif

#else

#ifdef F77_NAME_UPPER
#define mpi_reduce_local_ MPI_REDUCE_LOCAL
#elif defined(F77_NAME_LOWER_2USCORE)
#define mpi_reduce_local_ mpi_reduce_local__
#elif !defined(F77_NAME_LOWER_USCORE)
#define mpi_reduce_local_ mpi_reduce_local
/* 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_reduce_local_ ( void*v1, void*v2, MPI_Fint *v3, MPI_Fint *v4, MPI_Fint *v5, MPI_Fint *ierr ){
    if (v1 == MPIR_F_MPI_BOTTOM) v1 = MPI_BOTTOM;
    if (v2 == MPIR_F_MPI_BOTTOM) v2 = MPI_BOTTOM;
    *ierr = MPI_Reduce_local( v1, v2, (int)*v3, (MPI_Datatype)(*v4), (MPI_Op)*v5 );
}
