text: /* -*- Mode: C; c-basic-offset:4 ; -*- */
  /*
   * Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
   *                         University Research and Technology
   *                         Corporation.  All rights reserved.
   * Copyright (c) 2004-2009 The University of Tennessee and The University
   *                         of Tennessee Research Foundation.  All rights
   *                         reserved.
   * Copyright (c) 2004-2006 High Performance Computing Center Stuttgart, 
   *                         University of Stuttgart.  All rights reserved.
   * Copyright (c) 2004-2006 The Regents of the University of California.
   *                         All rights reserved.
   * Copyright (c) 2006      Sun Microsystems Inc. All rights reserved.
   * $COPYRIGHT$
   * 
   * Additional copyrights may follow
   * 
   * $HEADER$
   */
  
  #include "ompi_config.h"
  #include "ompi/datatype/ompi_datatype.h"
  #include <time.h>
  #include <stdlib.h>
  #ifdef HAVE_SYS_TIME_H
  #include <sys/time.h>
  #endif
  #include <stdio.h>
  
  #define TIMER_DATA_TYPE struct timeval
  #define GET_TIME(TV)   gettimeofday( &(TV), NULL )
  #define ELAPSED_TIME(TSTART, TEND)  (((TEND).tv_sec - (TSTART).tv_sec) * 1000000 + ((TEND).tv_usec - (TSTART).tv_usec))
  
  #define DUMP_DATA_AFTER_COMMIT 0x00000001
  #define CHECK_PACK_UNPACK      0x00000002
  
  extern uint32_t outputFlags;
  
  /**
   * Cache cleanup.
   */
  extern void cache_trash( void );
  
  /**
   * Data-type functions.
   */
  ompi_datatype_t* create_inversed_vector( ompi_datatype_t* type, int length );
  
  extern int mpich_typeub( void );
  extern int mpich_typeub2( void );
  extern int mpich_typeub3( void );
  extern void print_double_mat( unsigned int N, double* mat );
  extern int init_random_upper_matrix( unsigned int N, double* mat );
  extern int check_diag_matrix( unsigned int N, double* mat1, double* mat2 );
  extern ompi_datatype_t* upper_matrix( unsigned int mat_size );
  extern ompi_datatype_t* lower_matrix( unsigned int mat_size );
  extern ompi_datatype_t* test_matrix_borders( unsigned int size, unsigned int width );
  extern ompi_datatype_t* test_contiguous( void );
  extern ompi_datatype_t* test_struct_char_double( void );
  extern ompi_datatype_t* test_create_twice_two_doubles( void );
  
  /*
    Datatype 0x832cf28 size 0 align 1 id 0 length 4 used 0
    true_lb 0 true_ub 0 (true_extent 0) lb 0 ub 0 (extent 0)
    nbElems 0 loops 0 flags 6 (commited contiguous )-cC--------[---][---]
    contain 13 disp 0x420 (1056) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 13 disp 0x478 (1144) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 13 disp 0x4d0 (1232) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 13 disp 0x528 (1320) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 13 disp 0x580 (1408) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 13 disp 0x5d8 (1496) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 13 disp 0x630 (1584) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 12 disp 0x68c (1676) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 11 disp 0x6e8 (1768) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 10 disp 0x744 (1860) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 9 disp 0x7a0 (1952) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 8 disp 0x7fc (2044) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 7 disp 0x858 (2136) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 6 disp 0x8b4 (2228) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 5 disp 0x910 (2320) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 4 disp 0x96c (2412) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 3 disp 0x9c8 (2504) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 2 disp 0xa24 (2596) extent 4
    --C-----D*-[ C ][INT]        MPI_INT count 1 disp 0xa80 (2688) extent 4
  */
  extern ompi_datatype_t* test_create_blacs_type( void );
  extern ompi_datatype_t* test_create_blacs_type1( ompi_datatype_t* base_type );
  extern ompi_datatype_t* test_create_blacs_type2( ompi_datatype_t* base_type );
  extern ompi_datatype_t* test_struct( void );
  extern ompi_datatype_t* create_strange_dt( void );
  extern ompi_datatype_t* create_contiguous_type( const ompi_datatype_t* data, int count );
  extern ompi_datatype_t* create_vector_type( const ompi_datatype_t* data, int count,
                                              int length, int stride );
  
  