This source file includes following definitions.
- align_c
- align_c_
- align_c__
- ALIGN_C
- ALIGN_C_
- 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