1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 
  21 
  22 
  23 
  24 
  25 
  26 
  27 
  28 #ifndef OMPI_DATATYPE_INTERNAL_H
  29 #define OMPI_DATATYPE_INTERNAL_H
  30 
  31 #include "opal/datatype/opal_datatype_internal.h"
  32 
  33 
  34 
  35 
  36 
  37 #define OMPI_DATATYPE_MPI_EMPTY                   0x00
  38 #define OMPI_DATATYPE_MPI_INT8_T                  0x01
  39 #define OMPI_DATATYPE_MPI_UINT8_T                 0x02
  40 #define OMPI_DATATYPE_MPI_INT16_T                 0x03
  41 #define OMPI_DATATYPE_MPI_UINT16_T                0x04
  42 #define OMPI_DATATYPE_MPI_INT32_T                 0x05
  43 #define OMPI_DATATYPE_MPI_UINT32_T                0x06
  44 #define OMPI_DATATYPE_MPI_INT64_T                 0x07
  45 #define OMPI_DATATYPE_MPI_UINT64_T                0x08
  46 #define OMPI_DATATYPE_MPI_FLOAT                   0x09
  47 #define OMPI_DATATYPE_MPI_DOUBLE                  0x0A
  48 #define OMPI_DATATYPE_MPI_LONG_DOUBLE             0x0B
  49 #define OMPI_DATATYPE_MPI_COMPLEX4                0x0C
  50 #define OMPI_DATATYPE_MPI_COMPLEX8                0x0D
  51 #define OMPI_DATATYPE_MPI_COMPLEX16               0x0E
  52 #define OMPI_DATATYPE_MPI_COMPLEX32               0x0F
  53 #define OMPI_DATATYPE_MPI_WCHAR                   0x10
  54 #define OMPI_DATATYPE_MPI_PACKED                  0x11
  55 
  56 #define OMPI_DATATYPE_MPI_BOOL                    0x12
  57 
  58 #define OMPI_DATATYPE_MPI_LOGICAL                 0x13
  59 #define OMPI_DATATYPE_MPI_CHARACTER               0x14
  60 #define OMPI_DATATYPE_MPI_INTEGER                 0x15
  61 #define OMPI_DATATYPE_MPI_REAL                    0x16
  62 #define OMPI_DATATYPE_MPI_DOUBLE_PRECISION        0x17
  63 
  64 
  65 
  66 
  67 #define OMPI_DATATYPE_MPI_COMPLEX                 0x18   
  68 #define OMPI_DATATYPE_MPI_DOUBLE_COMPLEX          0x19   
  69 #define OMPI_DATATYPE_MPI_LONG_DOUBLE_COMPLEX     0x1A   
  70 #define OMPI_DATATYPE_MPI_2INT                    0x1B
  71 #define OMPI_DATATYPE_MPI_2INTEGER                0x1C
  72 #define OMPI_DATATYPE_MPI_2REAL                   0x1D
  73 #define OMPI_DATATYPE_MPI_2DBLPREC                0x1E
  74 #define OMPI_DATATYPE_MPI_2COMPLEX                0x1F
  75 #define OMPI_DATATYPE_MPI_2DOUBLE_COMPLEX         0x20
  76 
  77 
  78 
  79 #define OMPI_DATATYPE_MPI_FLOAT_INT               0x21
  80 #define OMPI_DATATYPE_MPI_DOUBLE_INT              0x22
  81 #define OMPI_DATATYPE_MPI_LONG_DOUBLE_INT         0x23
  82 #define OMPI_DATATYPE_MPI_LONG_INT                0x24
  83 #define OMPI_DATATYPE_MPI_SHORT_INT               0x25
  84 
  85 
  86 
  87 #define OMPI_DATATYPE_MPI_AINT                    0x26
  88 #define OMPI_DATATYPE_MPI_OFFSET                  0x27
  89 #define OMPI_DATATYPE_MPI_C_BOOL                  0x28
  90 #define OMPI_DATATYPE_MPI_C_COMPLEX               0x29
  91 #define OMPI_DATATYPE_MPI_C_FLOAT_COMPLEX         0x2A
  92 #define OMPI_DATATYPE_MPI_C_DOUBLE_COMPLEX        0x2B
  93 #define OMPI_DATATYPE_MPI_C_LONG_DOUBLE_COMPLEX   0x2C
  94 
  95 #define OMPI_DATATYPE_MPI_LB                      0x2D
  96 #define OMPI_DATATYPE_MPI_UB                      0x2E
  97 
  98 
  99 
 100 
 101 #define OMPI_DATATYPE_MPI_COUNT                   0x2F
 102 
 103 
 104 
 105 
 106 
 107 
 108 #define OMPI_DATATYPE_MPI_SHORT_FLOAT             0x30
 109 #define OMPI_DATATYPE_MPI_C_SHORT_FLOAT_COMPLEX   0x31
 110 
 111 
 112 #define OMPI_DATATYPE_MPI_UNAVAILABLE             0x32
 113 
 114 
 115 #define OMPI_DATATYPE_MPI_MAX_PREDEFINED          (OMPI_DATATYPE_MPI_UNAVAILABLE+1)
 116 
 117 
 118 
 119 
 120 #if OMPI_DATATYPE_MAX_PREDEFINED < OMPI_DATATYPE_MPI_UNAVAILABLE
 121 #error OMPI_DATATYPE_MAX_PREDEFINED should be updated to the value of OMPI_DATATYPE_MPI_UNAVAILABLE
 122 #endif
 123 
 124 
 125 
 126 
 127 
 128 
 129 #if SIZEOF_CHAR == 1
 130 #define OMPI_DATATYPE_MPI_CHAR                    OMPI_DATATYPE_MPI_INT8_T
 131 #define OMPI_DATATYPE_MPI_SIGNED_CHAR             OMPI_DATATYPE_MPI_INT8_T
 132 #define OMPI_DATATYPE_MPI_UNSIGNED_CHAR           OMPI_DATATYPE_MPI_UINT8_T
 133 #define OMPI_DATATYPE_MPI_BYTE                    OMPI_DATATYPE_MPI_UINT8_T
 134 #elif SIZEOF_CHAR == 2
 135 #define OMPI_DATATYPE_MPI_CHAR                    OMPI_DATATYPE_MPI_INT16_T
 136 #define OMPI_DATATYPE_MPI_SIGNED_CHAR             OMPI_DATATYPE_MPI_INT16_T
 137 #define OMPI_DATATYPE_MPI_UNSIGNED_CHAR           OMPI_DATATYPE_MPI_UINT16_T
 138 #define OMPI_DATATYPE_MPI_BYTE                    OMPI_DATATYPE_MPI_UINT16_T
 139 #elif SIZEOF_CHAR == 4
 140 #define OMPI_DATATYPE_MPI_CHAR                    OMPI_DATATYPE_MPI_INT32_T
 141 #define OMPI_DATATYPE_MPI_SIGNED_CHAR             OMPI_DATATYPE_MPI_INT32_T
 142 #define OMPI_DATATYPE_MPI_UNSIGNED_CHAR           OMPI_DATATYPE_MPI_UINT32_T
 143 #define OMPI_DATATYPE_MPI_BYTE                    OMPI_DATATYPE_MPI_UINT32_T
 144 #elif SIZEOF_CHAR == 8
 145 #define OMPI_DATATYPE_MPI_CHAR                    OMPI_DATATYPE_MPI_INT64_T
 146 #define OMPI_DATATYPE_MPI_SIGNED_CHAR             OMPI_DATATYPE_MPI_INT64_T
 147 #define OMPI_DATATYPE_MPI_UNSIGNED_CHAR           OMPI_DATATYPE_MPI_UINT64_T
 148 #define OMPI_DATATYPE_MPI_BYTE                    OMPI_DATATYPE_MPI_UINT64_T
 149 #endif
 150 
 151 #if SIZEOF_SHORT == 1
 152 #define OMPI_DATATYPE_MPI_SHORT                   OMPI_DATATYPE_MPI_INT8_T
 153 #define OMPI_DATATYPE_MPI_UNSIGNED_SHORT          OMPI_DATATYPE_MPI_UINT8_T
 154 #elif SIZEOF_SHORT == 2
 155 #define OMPI_DATATYPE_MPI_SHORT                   OMPI_DATATYPE_MPI_INT16_T
 156 #define OMPI_DATATYPE_MPI_UNSIGNED_SHORT          OMPI_DATATYPE_MPI_UINT16_T
 157 #elif SIZEOF_SHORT == 4
 158 #define OMPI_DATATYPE_MPI_SHORT                   OMPI_DATATYPE_MPI_INT32_T
 159 #define OMPI_DATATYPE_MPI_UNSIGNED_SHORT          OMPI_DATATYPE_MPI_UINT32_T
 160 #elif SIZEOF_SHORT == 8
 161 #define OMPI_DATATYPE_MPI_SHORT                   OMPI_DATATYPE_MPI_INT64_T
 162 #define OMPI_DATATYPE_MPI_UNSIGNED_SHORT          OMPI_DATATYPE_MPI_UINT64_T
 163 #endif
 164 
 165 #if SIZEOF_INT == 1
 166 #define OMPI_DATATYPE_MPI_INT                     OMPI_DATATYPE_MPI_INT8_T
 167 #define OMPI_DATATYPE_MPI_UNSIGNED                OMPI_DATATYPE_MPI_UINT8_T
 168 #elif SIZEOF_INT == 2
 169 #define OMPI_DATATYPE_MPI_INT                     OMPI_DATATYPE_MPI_INT16_T
 170 #define OMPI_DATATYPE_MPI_UNSIGNED                OMPI_DATATYPE_MPI_UINT16_T
 171 #elif SIZEOF_INT == 4
 172 #define OMPI_DATATYPE_MPI_INT                     OMPI_DATATYPE_MPI_INT32_T
 173 #define OMPI_DATATYPE_MPI_UNSIGNED                OMPI_DATATYPE_MPI_UINT32_T
 174 #elif SIZEOF_INT == 8
 175 #define OMPI_DATATYPE_MPI_INT                     OMPI_DATATYPE_MPI_INT64_T
 176 #define OMPI_DATATYPE_MPI_UNSIGNED                OMPI_DATATYPE_MPI_UINT64_T
 177 #endif
 178 
 179 #if SIZEOF_LONG == 1
 180 #define OMPI_DATATYPE_MPI_LONG                    OMPI_DATATYPE_MPI_INT8_T
 181 #define OMPI_DATATYPE_MPI_UNSIGNED_LONG           OMPI_DATATYPE_MPI_UINT8_T
 182 #elif SIZEOF_LONG == 2
 183 #define OMPI_DATATYPE_MPI_LONG                    OMPI_DATATYPE_MPI_INT16_T
 184 #define OMPI_DATATYPE_MPI_UNSIGNED_LONG           OMPI_DATATYPE_MPI_UINT16_T
 185 #elif SIZEOF_LONG == 4
 186 #define OMPI_DATATYPE_MPI_LONG                    OMPI_DATATYPE_MPI_INT32_T
 187 #define OMPI_DATATYPE_MPI_UNSIGNED_LONG           OMPI_DATATYPE_MPI_UINT32_T
 188 #elif SIZEOF_LONG == 8
 189 #define OMPI_DATATYPE_MPI_LONG                    OMPI_DATATYPE_MPI_INT64_T
 190 #define OMPI_DATATYPE_MPI_UNSIGNED_LONG           OMPI_DATATYPE_MPI_UINT64_T
 191 #endif
 192 
 193 #if SIZEOF_LONG_LONG == 1
 194 #define OMPI_DATATYPE_MPI_LONG_LONG_INT           OMPI_DATATYPE_MPI_INT8_T
 195 #define OMPI_DATATYPE_MPI_UNSIGNED_LONG_LONG      OMPI_DATATYPE_MPI_UINT8_T
 196 #elif SIZEOF_LONG_LONG == 2
 197 #define OMPI_DATATYPE_MPI_LONG_LONG_INT           OMPI_DATATYPE_MPI_INT16_T
 198 #define OMPI_DATATYPE_MPI_UNSIGNED_LONG_LONG      OMPI_DATATYPE_MPI_UINT16_T
 199 #elif SIZEOF_LONG_LONG == 4
 200 #define OMPI_DATATYPE_MPI_LONG_LONG_INT           OMPI_DATATYPE_MPI_INT32_T
 201 #define OMPI_DATATYPE_MPI_UNSIGNED_LONG_LONG      OMPI_DATATYPE_MPI_UINT32_T
 202 #elif SIZEOF_LONG_LONG == 8
 203 #define OMPI_DATATYPE_MPI_LONG_LONG_INT           OMPI_DATATYPE_MPI_INT64_T
 204 #define OMPI_DATATYPE_MPI_UNSIGNED_LONG_LONG      OMPI_DATATYPE_MPI_UINT64_T
 205 #endif
 206 
 207 
 208 
 209 
 210 
 211 
 212 
 213 
 214 #if OMPI_SIZEOF_FORTRAN_LOGICAL1 == OMPI_SIZEOF_FORTRAN_LOGICAL
 215 #  define OMPI_DATATYPE_MPI_LOGICAL1              OMPI_DATATYPE_MPI_LOGICAL
 216 #elif OMPI_SIZEOF_FORTRAN_LOGICAL1 == 1
 217 #  define OMPI_DATATYPE_MPI_LOGICAL1              OMPI_DATATYPE_MPI_INT8_T
 218 #elif OMPI_SIZEOF_FORTRAN_LOGICAL1 == 2
 219 #  define OMPI_DATATYPE_MPI_LOGICAL1              OMPI_DATATYPE_MPI_INT16_T
 220 #elif OMPI_SIZEOF_FORTRAN_LOGICAL1 == 4
 221 #  define OMPI_DATATYPE_MPI_LOGICAL1              OMPI_DATATYPE_MPI_INT32_T
 222 #elif OMPI_SIZEOF_FORTRAN_LOGICAL1 == 8
 223 #  define OMPI_DATATYPE_MPI_LOGICAL1              OMPI_DATATYPE_MPI_INT64_T
 224 #else
 225 #  define OMPI_DATATYPE_MPI_LOGICAL1              OMPI_DATATYPE_MPI_UNAVAILABLE
 226 #endif
 227 
 228 #if OMPI_SIZEOF_FORTRAN_LOGICAL2 == OMPI_SIZEOF_FORTRAN_LOGICAL
 229 #  define OMPI_DATATYPE_MPI_LOGICAL2              OMPI_DATATYPE_MPI_LOGICAL
 230 #elif OMPI_SIZEOF_FORTRAN_LOGICAL2 == 1
 231 #  define OMPI_DATATYPE_MPI_LOGICAL2              OMPI_DATATYPE_MPI_INT8_T
 232 #elif OMPI_SIZEOF_FORTRAN_LOGICAL2 == 2
 233 #  define OMPI_DATATYPE_MPI_LOGICAL2              OMPI_DATATYPE_MPI_INT16_T
 234 #elif OMPI_SIZEOF_FORTRAN_LOGICAL2 == 4
 235 #  define OMPI_DATATYPE_MPI_LOGICAL2              OMPI_DATATYPE_MPI_INT32_T
 236 #elif OMPI_SIZEOF_FORTRAN_LOGICAL2 == 8
 237 #  define OMPI_DATATYPE_MPI_LOGICAL2              OMPI_DATATYPE_MPI_INT64_T
 238 #else
 239 #  define OMPI_DATATYPE_MPI_LOGICAL2              OMPI_DATATYPE_MPI_UNAVAILABLE
 240 #endif
 241 
 242 #if OMPI_SIZEOF_FORTRAN_LOGICAL4 == OMPI_SIZEOF_FORTRAN_LOGICAL
 243 #  define OMPI_DATATYPE_MPI_LOGICAL4              OMPI_DATATYPE_MPI_LOGICAL
 244 #elif OMPI_SIZEOF_FORTRAN_LOGICAL4 == 1
 245 #  define OMPI_DATATYPE_MPI_LOGICAL4              OMPI_DATATYPE_MPI_INT8_T
 246 #elif OMPI_SIZEOF_FORTRAN_LOGICAL4 == 2
 247 #  define OMPI_DATATYPE_MPI_LOGICAL4              OMPI_DATATYPE_MPI_INT16_T
 248 #elif OMPI_SIZEOF_FORTRAN_LOGICAL4 == 4
 249 #  define OMPI_DATATYPE_MPI_LOGICAL4              OMPI_DATATYPE_MPI_INT32_T
 250 #elif OMPI_SIZEOF_FORTRAN_LOGICAL4 == 8
 251 #  define OMPI_DATATYPE_MPI_LOGICAL4              OMPI_DATATYPE_MPI_INT64_T
 252 #else
 253 #  define OMPI_DATATYPE_MPI_LOGICAL4              OMPI_DATATYPE_MPI_UNAVAILABLE
 254 #endif
 255 
 256 #if OMPI_SIZEOF_FORTRAN_LOGICAL8 == OMPI_SIZEOF_FORTRAN_LOGICAL
 257 #  define OMPI_DATATYPE_MPI_LOGICAL8              OMPI_DATATYPE_MPI_LOGICAL
 258 #elif OMPI_SIZEOF_FORTRAN_LOGICAL8 == 1
 259 #  define OMPI_DATATYPE_MPI_LOGICAL8              OMPI_DATATYPE_MPI_INT8_T
 260 #elif OMPI_SIZEOF_FORTRAN_LOGICAL8 == 2
 261 #  define OMPI_DATATYPE_MPI_LOGICAL8              OMPI_DATATYPE_MPI_INT16_T
 262 #elif OMPI_SIZEOF_FORTRAN_LOGICAL8 == 4
 263 #  define OMPI_DATATYPE_MPI_LOGICAL8              OMPI_DATATYPE_MPI_INT32_T
 264 #elif OMPI_SIZEOF_FORTRAN_LOGICAL8 == 8
 265 #  define OMPI_DATATYPE_MPI_LOGICAL8              OMPI_DATATYPE_MPI_INT64_T
 266 #else
 267 #  define OMPI_DATATYPE_MPI_LOGICAL8              OMPI_DATATYPE_MPI_UNAVAILABLE
 268 #endif
 269 
 270 
 271 #if OMPI_SIZEOF_FORTRAN_INTEGER1 == OMPI_SIZEOF_FORTRAN_INTEGER
 272 #  define OMPI_DATATYPE_MPI_INTEGER1              OMPI_DATATYPE_MPI_INTEGER
 273 #elif OMPI_SIZEOF_FORTRAN_INTEGER1 == 1
 274 #  define OMPI_DATATYPE_MPI_INTEGER1              OMPI_DATATYPE_MPI_INT8_T
 275 #elif OMPI_SIZEOF_FORTRAN_INTEGER1 == 2
 276 #  define OMPI_DATATYPE_MPI_INTEGER1              OMPI_DATATYPE_MPI_INT16_T
 277 #elif OMPI_SIZEOF_FORTRAN_INTEGER1 == 4
 278 #  define OMPI_DATATYPE_MPI_INTEGER1              OMPI_DATATYPE_MPI_INT32_T
 279 #elif OMPI_SIZEOF_FORTRAN_INTEGER1 == 8
 280 #  define OMPI_DATATYPE_MPI_INTEGER1              OMPI_DATATYPE_MPI_INT64_T
 281 #else
 282 #  define OMPI_DATATYPE_MPI_INTEGER1              OMPI_DATATYPE_MPI_UNAVAILABLE
 283 #endif
 284 
 285 #if OMPI_SIZEOF_FORTRAN_INTEGER2 == OMPI_SIZEOF_FORTRAN_INTEGER
 286 #  define OMPI_DATATYPE_MPI_INTEGER2              OMPI_DATATYPE_MPI_INTEGER
 287 #elif OMPI_SIZEOF_FORTRAN_INTEGER2 == 1
 288 #  define OMPI_DATATYPE_MPI_INTEGER2              OMPI_DATATYPE_MPI_INT8_T
 289 #elif OMPI_SIZEOF_FORTRAN_INTEGER2 == 2
 290 #  define OMPI_DATATYPE_MPI_INTEGER2              OMPI_DATATYPE_MPI_INT16_T
 291 #elif OMPI_SIZEOF_FORTRAN_INTEGER2 == 4
 292 #  define OMPI_DATATYPE_MPI_INTEGER2              OMPI_DATATYPE_MPI_INT32_T
 293 #elif OMPI_SIZEOF_FORTRAN_INTEGER2 == 8
 294 #  define OMPI_DATATYPE_MPI_INTEGER2              OMPI_DATATYPE_MPI_INT64_T
 295 #else
 296 #  define OMPI_DATATYPE_MPI_INTEGER2              OMPI_DATATYPE_MPI_UNAVAILABLE
 297 #endif
 298 
 299 #if OMPI_SIZEOF_FORTRAN_INTEGER4 == OMPI_SIZEOF_FORTRAN_INTEGER
 300 #  define OMPI_DATATYPE_MPI_INTEGER4              OMPI_DATATYPE_MPI_INTEGER
 301 #elif OMPI_SIZEOF_FORTRAN_INTEGER4 == 1
 302 #  define OMPI_DATATYPE_MPI_INTEGER4              OMPI_DATATYPE_MPI_INT8_T
 303 #elif OMPI_SIZEOF_FORTRAN_INTEGER4 == 2
 304 #  define OMPI_DATATYPE_MPI_INTEGER4              OMPI_DATATYPE_MPI_INT16_T
 305 #elif OMPI_SIZEOF_FORTRAN_INTEGER4 == 4
 306 #  define OMPI_DATATYPE_MPI_INTEGER4              OMPI_DATATYPE_MPI_INT32_T
 307 #elif OMPI_SIZEOF_FORTRAN_INTEGER4 == 8
 308 #  define OMPI_DATATYPE_MPI_INTEGER4              OMPI_DATATYPE_MPI_INT64_T
 309 #else
 310 #  define OMPI_DATATYPE_MPI_INTEGER4              OMPI_DATATYPE_MPI_UNAVAILABLE
 311 #endif
 312 
 313 #if OMPI_SIZEOF_FORTRAN_INTEGER8 == OMPI_SIZEOF_FORTRAN_INTEGER
 314 #  define OMPI_DATATYPE_MPI_INTEGER8              OMPI_DATATYPE_MPI_INTEGER
 315 #elif OMPI_SIZEOF_FORTRAN_INTEGER8 == 1
 316 #  define OMPI_DATATYPE_MPI_INTEGER8              OMPI_DATATYPE_MPI_INT8_T
 317 #elif OMPI_SIZEOF_FORTRAN_INTEGER8 == 2
 318 #  define OMPI_DATATYPE_MPI_INTEGER8              OMPI_DATATYPE_MPI_INT16_T
 319 #elif OMPI_SIZEOF_FORTRAN_INTEGER8 == 4
 320 #  define OMPI_DATATYPE_MPI_INTEGER8              OMPI_DATATYPE_MPI_INT32_T
 321 #elif OMPI_SIZEOF_FORTRAN_INTEGER8 == 8
 322 #  define OMPI_DATATYPE_MPI_INTEGER8              OMPI_DATATYPE_MPI_INT64_T
 323 #else
 324 #  define OMPI_DATATYPE_MPI_INTEGER8              OMPI_DATATYPE_MPI_UNAVAILABLE
 325 #endif
 326 
 327 #if OMPI_SIZEOF_FORTRAN_INTEGER16 == OMPI_SIZEOF_FORTRAN_INTEGER
 328 #  define OMPI_DATATYPE_MPI_INTEGER16             OMPI_DATATYPE_MPI_INTEGER
 329 #elif OMPI_SIZEOF_FORTRAN_INTEGER16 == 1
 330 #  define OMPI_DATATYPE_MPI_INTEGER16             OMPI_DATATYPE_MPI_INT8_T
 331 #elif OMPI_SIZEOF_FORTRAN_INTEGER16 == 2
 332 #  define OMPI_DATATYPE_MPI_INTEGER16             OMPI_DATATYPE_MPI_INT16_T
 333 #elif OMPI_SIZEOF_FORTRAN_INTEGER16 == 4
 334 #  define OMPI_DATATYPE_MPI_INTEGER16             OMPI_DATATYPE_MPI_INT32_T
 335 #elif OMPI_SIZEOF_FORTRAN_INTEGER16 == 8
 336 #  define OMPI_DATATYPE_MPI_INTEGER16             OMPI_DATATYPE_MPI_INT64_T
 337 #else
 338 #  define OMPI_DATATYPE_MPI_INTEGER16             OMPI_DATATYPE_MPI_UNAVAILABLE
 339 #endif
 340 
 341 
 342 #if OMPI_SIZEOF_FORTRAN_REAL2 == OMPI_SIZEOF_FORTRAN_REAL
 343 #  define OMPI_DATATYPE_MPI_REAL2                 OMPI_DATATYPE_MPI_REAL
 344 #elif (defined(HAVE_SHORT_FLOAT) && OMPI_SIZEOF_FORTRAN_REAL2 == SIZEOF_SHORT_FLOAT) || \
 345       (defined(HAVE_OPAL_SHORT_FLOAT_T) && OMPI_SIZEOF_FORTRAN_REAL2 == SIZEOF_OPAL_SHORT_FLOAT_T)
 346 #  define OMPI_DATATYPE_MPI_REAL2                 OMPI_DATATYPE_MPI_SHORT_FLOAT
 347 #elif OMPI_SIZEOF_FORTRAN_REAL2 == SIZEOF_FLOAT
 348 #  define OMPI_DATATYPE_MPI_REAL2                 OMPI_DATATYPE_MPI_FLOAT
 349 #elif OMPI_SIZEOF_FORTRAN_REAL2 == SIZEOF_DOUBLE
 350 #  define OMPI_DATATYPE_MPI_REAL2                 OMPI_DATATYPE_MPI_DOUBLE
 351 #elif OMPI_SIZEOF_FORTRAN_REAL2 == SIZEOF_LONG_DOUBLE
 352 #  define OMPI_DATATYPE_MPI_REAL2                 OMPI_DATATYPE_MPI_LONG_DOUBLE
 353 #else
 354 #  define OMPI_DATATYPE_MPI_REAL2                 OMPI_DATATYPE_MPI_UNAVAILABLE
 355 #endif
 356 
 357 #if OMPI_SIZEOF_FORTRAN_REAL4 == OMPI_SIZEOF_FORTRAN_REAL
 358 #  define OMPI_DATATYPE_MPI_REAL4                 OMPI_DATATYPE_MPI_REAL
 359 #elif (defined(HAVE_SHORT_FLOAT) && OMPI_SIZEOF_FORTRAN_REAL4 == SIZEOF_SHORT_FLOAT) || \
 360       (defined(HAVE_OPAL_SHORT_FLOAT_T) && OMPI_SIZEOF_FORTRAN_REAL4 == SIZEOF_OPAL_SHORT_FLOAT_T)
 361 #  define OMPI_DATATYPE_MPI_REAL4                 OMPI_DATATYPE_MPI_SHORT_FLOAT
 362 #elif OMPI_SIZEOF_FORTRAN_REAL4 == SIZEOF_FLOAT
 363 #  define OMPI_DATATYPE_MPI_REAL4                 OMPI_DATATYPE_MPI_FLOAT
 364 #elif OMPI_SIZEOF_FORTRAN_REAL4 == SIZEOF_DOUBLE
 365 #  define OMPI_DATATYPE_MPI_REAL4                 OMPI_DATATYPE_MPI_DOUBLE
 366 #elif OMPI_SIZEOF_FORTRAN_REAL4 == SIZEOF_LONG_DOUBLE
 367 #  define OMPI_DATATYPE_MPI_REAL4                 OMPI_DATATYPE_MPI_LONG_DOUBLE
 368 #else
 369 #  define OMPI_DATATYPE_MPI_REAL4                 OMPI_DATATYPE_MPI_UNAVAILABLE
 370 #endif
 371 
 372 #if OMPI_SIZEOF_FORTRAN_REAL8 == OMPI_SIZEOF_FORTRAN_REAL
 373 #  define OMPI_DATATYPE_MPI_REAL8                 OMPI_DATATYPE_MPI_REAL
 374 #elif (defined(HAVE_SHORT_FLOAT) && OMPI_SIZEOF_FORTRAN_REAL8 == SIZEOF_SHORT_FLOAT) || \
 375       (defined(HAVE_OPAL_SHORT_FLOAT_T) && OMPI_SIZEOF_FORTRAN_REAL8 == SIZEOF_OPAL_SHORT_FLOAT_T)
 376 #  define OMPI_DATATYPE_MPI_REAL8                 OMPI_DATATYPE_MPI_SHORT_FLOAT
 377 #elif OMPI_SIZEOF_FORTRAN_REAL8 == SIZEOF_FLOAT
 378 #  define OMPI_DATATYPE_MPI_REAL8                 OMPI_DATATYPE_MPI_FLOAT
 379 #elif OMPI_SIZEOF_FORTRAN_REAL8 == SIZEOF_DOUBLE
 380 #  define OMPI_DATATYPE_MPI_REAL8                 OMPI_DATATYPE_MPI_DOUBLE
 381 #elif OMPI_SIZEOF_FORTRAN_REAL8 == SIZEOF_LONG_DOUBLE
 382 #  define OMPI_DATATYPE_MPI_REAL8                 OMPI_DATATYPE_MPI_LONG_DOUBLE
 383 #else
 384 #  define OMPI_DATATYPE_MPI_REAL8                 OMPI_DATATYPE_MPI_UNAVAILABLE
 385 #endif
 386 
 387 #if OMPI_SIZEOF_FORTRAN_REAL16 == OMPI_SIZEOF_FORTRAN_REAL
 388 #  define OMPI_DATATYPE_MPI_REAL16                OMPI_DATATYPE_MPI_REAL
 389 #elif (defined(HAVE_SHORT_FLOAT) && OMPI_SIZEOF_FORTRAN_REAL16 == SIZEOF_SHORT_FLOAT) || \
 390       (defined(HAVE_OPAL_SHORT_FLOAT_T) && OMPI_SIZEOF_FORTRAN_REAL16 == SIZEOF_OPAL_SHORT_FLOAT_T)
 391 #  define OMPI_DATATYPE_MPI_REAL16                 OMPI_DATATYPE_MPI_SHORT_FLOAT
 392 #elif OMPI_SIZEOF_FORTRAN_REAL16 == SIZEOF_FLOAT
 393 #  define OMPI_DATATYPE_MPI_REAL16                OMPI_DATATYPE_MPI_FLOAT
 394 #elif OMPI_SIZEOF_FORTRAN_REAL16 == SIZEOF_DOUBLE
 395 #  define OMPI_DATATYPE_MPI_REAL16                OMPI_DATATYPE_MPI_DOUBLE
 396 #elif OMPI_SIZEOF_FORTRAN_REAL16 == SIZEOF_LONG_DOUBLE
 397 #  define OMPI_DATATYPE_MPI_REAL16                OMPI_DATATYPE_MPI_LONG_DOUBLE
 398 #else
 399 #  define OMPI_DATATYPE_MPI_REAL16                OMPI_DATATYPE_MPI_UNAVAILABLE
 400 #endif
 401 
 402 
 403 
 404 
 405 #define OMPI_DATATYPE_MPI_CXX_BOOL                OMPI_DATATYPE_MPI_C_BOOL
 406 #define OMPI_DATATYPE_MPI_CXX_SHORT_FLOAT_COMPLEX OMPI_DATATYPE_MPI_C_SHORT_FLOAT_COMPLEX
 407 #define OMPI_DATATYPE_MPI_CXX_FLOAT_COMPLEX       OMPI_DATATYPE_MPI_C_FLOAT_COMPLEX
 408 #define OMPI_DATATYPE_MPI_CXX_DOUBLE_COMPLEX      OMPI_DATATYPE_MPI_C_DOUBLE_COMPLEX
 409 #define OMPI_DATATYPE_MPI_CXX_LONG_DOUBLE_COMPLEX OMPI_DATATYPE_MPI_C_LONG_DOUBLE_COMPLEX
 410 
 411 extern const ompi_datatype_t* ompi_datatype_basicDatatypes[OMPI_DATATYPE_MPI_MAX_PREDEFINED];
 412 
 413 
 414 
 415 
 416 
 417 
 418 
 419 
 420 
 421 
 422 
 423 
 424 
 425 
 426 #define OMPI_DATATYPE_EMPTY_DATA(NAME)                                               \
 427     .id = OMPI_DATATYPE_MPI_ ## NAME,                                                \
 428     .d_f_to_c_index = -1,                                                            \
 429     .d_keyhash = NULL,                                                               \
 430     .args = NULL,                                                                    \
 431     .packed_description = 0,                                                         \
 432     .name = "MPI_" # NAME
 433 
 434 #define OMPI_DATATYPE_INITIALIZER_UNAVAILABLE(FLAGS)                                 \
 435     OPAL_DATATYPE_INITIALIZER_UNAVAILABLE(FLAGS)
 436 
 437 #define OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE_X( TYPE, NAME, FLAGS )              \
 438     {                                                  \
 439         {                                                       \
 440             OMPI_DATATYPE_INITIALIZER_ ## TYPE (OMPI_DATATYPE_FLAG_PREDEFINED |      \
 441                                                 OMPI_DATATYPE_FLAG_ANALYZED   |      \
 442                                                 OMPI_DATATYPE_FLAG_MONOTONIC  |      \
 443                                                 (FLAGS)) ,                  \
 444             OMPI_DATATYPE_EMPTY_DATA(NAME)  \
 445         },                                                                           \
 446         {0, }                                                           \
 447     }
 448 
 449 
 450 #define OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE(TYPE, NAME, FLAGS) OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE_X(TYPE, NAME, FLAGS)
 451 
 452 
 453 
 454 
 455 #define OMPI_DATATYPE_INIT_PREDEFINED( NAME, FLAGS )                                 \
 456     OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE( NAME, NAME, FLAGS )
 457 #define OMPI_DATATYPE_INIT_UNAVAILABLE( NAME, FLAGS )                                \
 458     OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE( UNAVAILABLE, NAME, FLAGS )
 459 #define OMPI_DATATYPE_INIT_UNAVAILABLE_BASIC_TYPE(TYPE, NAME, FLAGS)                 \
 460     OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE( UNAVAILABLE, NAME, FLAGS )
 461 
 462 
 463 
 464 
 465 
 466 
 467 
 468 
 469 
 470 #define OMPI_DATATYPE_INIT_DEFER(NAME, FLAGS)                                        \
 471     OMPI_DATATYPE_INIT_UNAVAILABLE(NAME, FLAGS)
 472 
 473 
 474 #if OMPI_BUILD_FORTRAN_BINDINGS
 475 
 476 
 477 
 478 
 479 #define OMPI_DATATYPE_INITIALIZER_FORTRAN( TYPE, NAME, SIZE, ALIGN, FLAGS )          \
 480     {                                                                                \
 481         .super = OPAL_OBJ_STATIC_INIT(opal_datatype_t),                              \
 482         .flags = OPAL_DATATYPE_FLAG_BASIC |                                          \
 483             OMPI_DATATYPE_FLAG_PREDEFINED |                                          \
 484             OMPI_DATATYPE_FLAG_ANALYZED   |                                          \
 485             OMPI_DATATYPE_FLAG_MONOTONIC  |                                          \
 486             OMPI_DATATYPE_FLAG_DATA_FORTRAN | (FLAGS),                               \
 487         .id = OPAL_DATATYPE_ ## TYPE ## SIZE,                                        \
 488         .bdt_used = (((uint32_t)1)<<(OPAL_DATATYPE_ ## TYPE ## SIZE)),               \
 489         .size = SIZE,                                                                \
 490         .true_lb = 0, .true_ub = SIZE, .lb = 0, .ub = SIZE,                          \
 491         .align = (ALIGN),                                                            \
 492         .nbElems = 1,                                                                \
 493         .name = OPAL_DATATYPE_INIT_NAME(TYPE ## SIZE),                               \
 494         .desc = OPAL_DATATYPE_INIT_DESC_PREDEFINED(TYPE ## SIZE),                    \
 495         .opt_desc = OPAL_DATATYPE_INIT_DESC_PREDEFINED(TYPE ## SIZE),                \
 496         .ptypes = OPAL_DATATYPE_INIT_PTYPES_ARRAY(TYPE ## SIZE)                      \
 497     }
 498 
 499 #define OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE_FORTRAN( TYPE, NAME, SIZE, ALIGN, FLAGS ) \
 500     {                                                  \
 501         .dt = {                                                                      \
 502             .super = OMPI_DATATYPE_INITIALIZER_FORTRAN( TYPE, NAME, SIZE, ALIGN, FLAGS), \
 503             OMPI_DATATYPE_EMPTY_DATA(NAME)  \
 504         },                                                                           \
 505         .padding = {0, }                                                             \
 506     }
 507 #else
 508 #define OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE_FORTRAN( TYPE, NAME, SIZE, ALIGN, FLAGS ) \
 509     OMPI_DATATYPE_INIT_PREDEFINED_BASIC_TYPE( UNAVAILABLE, NAME, FLAGS )
 510 #endif
 511 
 512 
 513 
 514 
 515 
 516 
 517 #define OMPI_DATATYPE_INITIALIZER_LB                  OPAL_DATATYPE_INITIALIZER_LB
 518 #define OMPI_DATATYPE_INITIALIZER_UB                  OPAL_DATATYPE_INITIALIZER_UB
 519 
 520 #define OMPI_DATATYPE_INITIALIZER_INT8_T              OPAL_DATATYPE_INITIALIZER_INT1
 521 #define OMPI_DATATYPE_INITIALIZER_UINT8_T             OPAL_DATATYPE_INITIALIZER_UINT1
 522 #define OMPI_DATATYPE_INITIALIZER_INT16_T             OPAL_DATATYPE_INITIALIZER_INT2
 523 #define OMPI_DATATYPE_INITIALIZER_UINT16_T            OPAL_DATATYPE_INITIALIZER_UINT2
 524 #define OMPI_DATATYPE_INITIALIZER_INT32_T             OPAL_DATATYPE_INITIALIZER_INT4
 525 #define OMPI_DATATYPE_INITIALIZER_UINT32_T            OPAL_DATATYPE_INITIALIZER_UINT4
 526 #define OMPI_DATATYPE_INITIALIZER_INT64_T             OPAL_DATATYPE_INITIALIZER_INT8
 527 #define OMPI_DATATYPE_INITIALIZER_UINT64_T            OPAL_DATATYPE_INITIALIZER_UINT8
 528 
 529 #if SIZEOF_CHAR == 1
 530 #define OMPI_DATATYPE_INITIALIZER_CHAR                OPAL_DATATYPE_INITIALIZER_INT1
 531 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED_CHAR       OPAL_DATATYPE_INITIALIZER_UINT1
 532 #define OMPI_DATATYPE_INITIALIZER_SIGNED_CHAR         OPAL_DATATYPE_INITIALIZER_INT1
 533 #define OMPI_DATATYPE_INITIALIZER_BYTE                OPAL_DATATYPE_INITIALIZER_UINT1
 534 #elif SIZEOF_CHAR == 2
 535 #define OMPI_DATATYPE_INITIALIZER_CHAR                OPAL_DATATYPE_INITIALIZER_INT2
 536 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED_CHAR       OPAL_DATATYPE_INITIALIZER_UINT2
 537 #define OMPI_DATATYPE_INITIALIZER_SIGNED_CHAR         OPAL_DATATYPE_INITIALIZER_INT2
 538 #define OMPI_DATATYPE_INITIALIZER_BYTE                OPAL_DATATYPE_INITIALIZER_UINT2
 539 #elif SIZEOF_CHAR == 4
 540 #define OMPI_DATATYPE_INITIALIZER_CHAR                OPAL_DATATYPE_INITIALIZER_INT4
 541 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED_CHAR       OPAL_DATATYPE_INITIALIZER_UINT4
 542 #define OMPI_DATATYPE_INITIALIZER_SIGNED_CHAR         OPAL_DATATYPE_INITIALIZER_INT4
 543 #define OMPI_DATATYPE_INITIALIZER_BYTE                OPAL_DATATYPE_INITIALIZER_UINT4
 544 #elif SIZEOF_CHAR == 8
 545 #define OMPI_DATATYPE_INITIALIZER_CHAR                OPAL_DATATYPE_INITIALIZER_INT8
 546 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED_CHAR       OPAL_DATATYPE_INITIALIZER_UINT8
 547 #define OMPI_DATATYPE_INITIALIZER_SIGNED_CHAR         OPAL_DATATYPE_INITIALIZER_INT8
 548 #define OMPI_DATATYPE_INITIALIZER_BYTE                OPAL_DATATYPE_INITIALIZER_UINT8
 549 #endif
 550 
 551 #if SIZEOF_SHORT == 2
 552 #define OMPI_DATATYPE_INITIALIZER_SHORT               OPAL_DATATYPE_INITIALIZER_INT2
 553 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED_SHORT      OPAL_DATATYPE_INITIALIZER_UINT2
 554 #elif SIZEOF_SHORT == 4
 555 #define OMPI_DATATYPE_INITIALIZER_SHORT               OPAL_DATATYPE_INITIALIZER_INT4
 556 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED_SHORT      OPAL_DATATYPE_INITIALIZER_UINT4
 557 #elif SIZEOF_SHORT == 8
 558 #define OMPI_DATATYPE_INITIALIZER_SHORT               OPAL_DATATYPE_INITIALIZER_INT8
 559 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED_SHORT      OPAL_DATATYPE_INITIALIZER_UINT8
 560 #endif
 561 
 562 #if SIZEOF_INT == 2
 563 #define OMPI_DATATYPE_INITIALIZER_INT                 OPAL_DATATYPE_INITIALIZER_INT2
 564 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED            OPAL_DATATYPE_INITIALIZER_UINT2
 565 #elif SIZEOF_INT == 4
 566 #define OMPI_DATATYPE_INITIALIZER_INT                 OPAL_DATATYPE_INITIALIZER_INT4
 567 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED            OPAL_DATATYPE_INITIALIZER_UINT4
 568 #elif SIZEOF_INT == 8
 569 #define OMPI_DATATYPE_INITIALIZER_INT                 OPAL_DATATYPE_INITIALIZER_INT8
 570 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED            OPAL_DATATYPE_INITIALIZER_UINT8
 571 #endif
 572 
 573 #if SIZEOF_LONG == 4
 574 #define OMPI_DATATYPE_INITIALIZER_LONG                OPAL_DATATYPE_INITIALIZER_INT4
 575 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED_LONG       OPAL_DATATYPE_INITIALIZER_UINT4
 576 #elif SIZEOF_LONG == 8
 577 #define OMPI_DATATYPE_INITIALIZER_LONG                OPAL_DATATYPE_INITIALIZER_INT8
 578 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED_LONG       OPAL_DATATYPE_INITIALIZER_UINT8
 579 #elif SIZEOF_LONG == 16
 580 #define OMPI_DATATYPE_INITIALIZER_LONG                OPAL_DATATYPE_INITIALIZER_INT16
 581 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED_LONG       OPAL_DATATYPE_INITIALIZER_UINT16
 582 #endif
 583 
 584 #if SIZEOF_LONG_LONG == 4
 585 #define OMPI_DATATYPE_INITIALIZER_LONG_LONG_INT       OPAL_DATATYPE_INITIALIZER_INT4
 586 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED_LONG_LONG  OPAL_DATATYPE_INITIALIZER_UINT4
 587 #elif SIZEOF_LONG_LONG == 8
 588 #define OMPI_DATATYPE_INITIALIZER_LONG_LONG_INT       OPAL_DATATYPE_INITIALIZER_INT8
 589 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED_LONG_LONG  OPAL_DATATYPE_INITIALIZER_UINT8
 590 #elif SIZEOF_LONG_LONG == 16
 591 #define OMPI_DATATYPE_INITIALIZER_LONG_LONG_INT       OPAL_DATATYPE_INITIALIZER_INT16
 592 #define OMPI_DATATYPE_INITIALIZER_UNSIGNED_LONG_LONG  OPAL_DATATYPE_INITIALIZER_UINT16
 593 #endif
 594 
 595 #if defined(HAVE_SHORT_FLOAT)
 596 #if SIZEOF_SHORT_FLOAT == 2
 597 #define OMPI_DATATYPE_INITIALIZER_SHORT_FLOAT         OPAL_DATATYPE_INITIALIZER_FLOAT2
 598 #elif SIZEOF_SHORT_FLOAT == 4
 599 #define OMPI_DATATYPE_INITIALIZER_SHORT_FLOAT         OPAL_DATATYPE_INITIALIZER_FLOAT4
 600 #elif SIZEOF_SHORT_FLOAT == 8
 601 #define OMPI_DATATYPE_INITIALIZER_SHORT_FLOAT         OPAL_DATATYPE_INITIALIZER_FLOAT8
 602 #endif
 603 #elif defined(HAVE_OPAL_SHORT_FLOAT_T) 
 604 #if SIZEOF_OPAL_SHORT_FLOAT_T == 2
 605 #define OMPI_DATATYPE_INITIALIZER_SHORT_FLOAT         OPAL_DATATYPE_INITIALIZER_FLOAT2
 606 #elif SIZEOF_OPAL_SHORT_FLOAT_T == 4
 607 #define OMPI_DATATYPE_INITIALIZER_SHORT_FLOAT         OPAL_DATATYPE_INITIALIZER_FLOAT4
 608 #elif SIZEOF_OPAL_SHORT_FLOAT_T == 8
 609 #define OMPI_DATATYPE_INITIALIZER_SHORT_FLOAT         OPAL_DATATYPE_INITIALIZER_FLOAT8
 610 #endif
 611 #else 
 612 #define OMPI_DATATYPE_INITIALIZER_SHORT_FLOAT         OPAL_DATATYPE_INITIALIZER_UNAVAILABLE
 613 #endif 
 614 
 615 #if SIZEOF_FLOAT == 2
 616 #define OMPI_DATATYPE_INITIALIZER_FLOAT               OPAL_DATATYPE_INITIALIZER_FLOAT2
 617 #elif SIZEOF_FLOAT == 4
 618 #define OMPI_DATATYPE_INITIALIZER_FLOAT               OPAL_DATATYPE_INITIALIZER_FLOAT4
 619 #elif SIZEOF_FLOAT == 8
 620 #define OMPI_DATATYPE_INITIALIZER_FLOAT               OPAL_DATATYPE_INITIALIZER_FLOAT8
 621 #endif
 622 
 623 #if SIZEOF_DOUBLE == 4
 624 #define OMPI_DATATYPE_INITIALIZER_DOUBLE              OPAL_DATATYPE_INITIALIZER_FLOAT4
 625 #elif SIZEOF_DOUBLE == 8
 626 #define OMPI_DATATYPE_INITIALIZER_DOUBLE              OPAL_DATATYPE_INITIALIZER_FLOAT8
 627 #elif SIZEOF_DOUBLE == 12
 628 #define OMPI_DATATYPE_INITIALIZER_DOUBLE              OPAL_DATATYPE_INITIALIZER_FLOAT12
 629 #elif SIZEOF_DOUBLE == 16
 630 #define OMPI_DATATYPE_INITIALIZER_DOUBLE              OPAL_DATATYPE_INITIALIZER_FLOAT16
 631 #endif
 632 
 633 #if SIZEOF_LONG_DOUBLE == 4
 634 #define OMPI_DATATYPE_INITIALIZER_LONG_DOUBLE         OPAL_DATATYPE_INITIALIZER_FLOAT4
 635 #elif SIZEOF_LONG_DOUBLE == 8
 636 #define OMPI_DATATYPE_INITIALIZER_LONG_DOUBLE         OPAL_DATATYPE_INITIALIZER_FLOAT8
 637 #elif SIZEOF_LONG_DOUBLE == 12
 638 #define OMPI_DATATYPE_INITIALIZER_LONG_DOUBLE         OPAL_DATATYPE_INITIALIZER_FLOAT12
 639 #elif SIZEOF_LONG_DOUBLE == 16
 640 #define OMPI_DATATYPE_INITIALIZER_LONG_DOUBLE         OPAL_DATATYPE_INITIALIZER_FLOAT16
 641 #endif
 642 
 643 #define OMPI_DATATYPE_INITIALIZER_PACKED              OPAL_DATATYPE_INITIALIZER_UINT1
 644 
 645 #define OMPI_DATATYPE_INITIALIZER_BOOL                OPAL_DATATYPE_INITIALIZER_BOOL
 646 
 647 #define OMPI_DATATYPE_INITIALIZER_WCHAR               OPAL_DATATYPE_INITIALIZER_WCHAR
 648 
 649 #define OMPI_DATATYPE_INITIALIZER_C_SHORT_FLOAT_COMPLEX OPAL_DATATYPE_INITIALIZER_SHORT_FLOAT_COMPLEX
 650 #define OMPI_DATATYPE_INITIALIZER_C_FLOAT_COMPLEX       OPAL_DATATYPE_INITIALIZER_FLOAT_COMPLEX
 651 #define OMPI_DATATYPE_INITIALIZER_C_DOUBLE_COMPLEX      OPAL_DATATYPE_INITIALIZER_DOUBLE_COMPLEX
 652 #define OMPI_DATATYPE_INITIALIZER_C_LONG_DOUBLE_COMPLEX OPAL_DATATYPE_INITIALIZER_LONG_DOUBLE_COMPLEX
 653 
 654 
 655 
 656 
 657 
 658 #define OMPI_DATATYPE_FIRST_TYPE                      OPAL_DATATYPE_MAX_PREDEFINED
 659 
 660 
 661 
 662 
 663 #define OMPI_DATATYPE_2INT                            (OMPI_DATATYPE_FIRST_TYPE+6)
 664 #define OMPI_DATATYPE_2INTEGER                        (OMPI_DATATYPE_FIRST_TYPE+7)
 665 #define OMPI_DATATYPE_2REAL                           (OMPI_DATATYPE_FIRST_TYPE+8)
 666 #define OMPI_DATATYPE_2DBLPREC                        (OMPI_DATATYPE_FIRST_TYPE+9)
 667 #define OMPI_DATATYPE_2COMPLEX                        (OMPI_DATATYPE_FIRST_TYPE+10)
 668 #define OMPI_DATATYPE_2DOUBLE_COMPLEX                 (OMPI_DATATYPE_FIRST_TYPE+11)
 669 
 670 
 671 
 672 #define OMPI_DATATYPE_FLOAT_INT                       (OMPI_DATATYPE_FIRST_TYPE+12)
 673 #define OMPI_DATATYPE_DOUBLE_INT                      (OMPI_DATATYPE_FIRST_TYPE+13)
 674 #define OMPI_DATATYPE_LONG_DOUBLE_INT                 (OMPI_DATATYPE_FIRST_TYPE+14)
 675 #define OMPI_DATATYPE_SHORT_INT                       (OMPI_DATATYPE_FIRST_TYPE+15)
 676 #define OMPI_DATATYPE_LONG_INT                        (OMPI_DATATYPE_FIRST_TYPE+16)
 677 
 678 
 679 #define OMPI_DATATYPE_UNAVAILABLE                     (OMPI_DATATYPE_FIRST_TYPE+17)
 680 
 681 
 682 #if OMPI_DATATYPE_MAX_PREDEFINED <= OMPI_DATATYPE_UNAVAILABLE
 683 #error OMPI_DATATYPE_MAX_PREDEFINED should be updated to the next value after the OMPI_DATATYPE_UNAVAILABLE define
 684 #endif  
 685 
 686 #endif