root/ompi/mpi/fortran/use-mpi-tkr/test/align_c.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. align_c
  2. align_c_
  3. align_c__
  4. ALIGN_C
  5. ALIGN_C_
  6. ALIGN_C__

   1 #include "ompi_config.h"
   2 #include <assert.h>
   3 
   4 BEGIN_C_DECLS
   5 
   6 void PRINT_INT(int* i);
   7 
   8 void align_c(char *a, char *w, char *x, char *y, char *z)
   9 {
  10     unsigned long aw, ax, ay, az;
  11     int diff, diff4;
  12 
  13     aw = (unsigned long) w;
  14     ax = (unsigned long) x;
  15     ay = (unsigned long) y;
  16     az = (unsigned long) z;
  17 
  18     if (! ((aw%16)||(ax%16)||(ay%16)||(az%16))) {
  19         diff4 = 16;
  20     }
  21     else if (! ((aw%12)||(ax%12)||(ay%12)||(az%12))) {
  22         diff4 = 12;
  23     }
  24     else if (! ((aw%8)||(ax%8)||(ay%8)||(az%8))) {
  25         diff4 = 8;
  26     }
  27     else if (! ((aw%4)||(ax%4)||(ay%4)||(az%4))) {
  28         diff4 = 4;
  29     }
  30     else if (! ((aw%2)||(ax%2)||(ay%2)||(az%2))) {
  31         diff4 = 2;
  32     }
  33     else {
  34         diff4 = 1;
  35     }
  36     diff = a - w;
  37     diff = (diff >= 0) ? diff : -diff;
  38     *a = diff;
  39     assert(diff4 == diff);
  40 }
  41 
  42 
  43 void align_c_(char *a, char *w, char *x, char *y, char *z)
  44 {
  45   align_c(a, w, x, y, z);
  46 }
  47 
  48 
  49 void align_c__(char *a, char *w, char *x, char *y, char *z)
  50 {
  51   align_c(a, w, x, y, z);
  52 }
  53 
  54 
  55 void ALIGN_C(char *a, char *w, char *x, char *y, char *z)
  56 {
  57   align_c(a, w, x, y, z);
  58 }
  59 
  60 
  61 void ALIGN_C_(char *a, char *w, char *x, char *y, char *z)
  62 {
  63   align_c(a, w, x, y, z);
  64 }
  65 
  66 
  67 void ALIGN_C__(char *a, char *w, char *x, char *y, char *z)
  68 {
  69   align_c(a, w, x, y, z);
  70 }
  71 
  72 END_C_DECLS
  73 

/* [<][>][^][v][top][bottom][index][help] */