Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
be even more informative to the user
[simgrid.git] / src / smpi / smpi_mpi_dt.cpp
index 634ecf4..91a8ee7 100644 (file)
@@ -436,7 +436,11 @@ void smpi_datatype_use(MPI_Datatype type){
 #endif
 }
 
-void smpi_datatype_unuse(MPI_Datatype type){
+void smpi_datatype_unuse(MPI_Datatype type)
+{
+  if (type == MPI_DATATYPE_NULL)
+    return;
+
   if (type->in_use > 0)
     type->in_use--;
 
@@ -444,9 +448,9 @@ void smpi_datatype_unuse(MPI_Datatype type){
     static_cast<s_smpi_subtype_t *>((type)->substruct)->subtype_free(&type);  
   }
 
-  if(type != MPI_DATATYPE_NULL && type->in_use == 0){
+  if (type->in_use == 0)
     smpi_datatype_free(&type);
-  }
+
 #if HAVE_MC
   if(MC_is_active())
     MC_ignore(&(type->in_use), sizeof(type->in_use));
@@ -1252,6 +1256,10 @@ static void sum_func(void *a, void *b, int *length, MPI_Datatype * datatype)
     APPLY_FUNC(a, b, length, unsigned short, SUM_OP)
   } else if (*datatype == MPI_UNSIGNED) {
     APPLY_FUNC(a, b, length, unsigned int, SUM_OP)
+  } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+    APPLY_FUNC(a, b, length, unsigned long long, SUM_OP)
+  } else if (*datatype == MPI_LONG_LONG) {
+    APPLY_FUNC(a, b, length, long long, SUM_OP)
   } else if (*datatype == MPI_UNSIGNED_LONG) {
     APPLY_FUNC(a, b, length, unsigned long, SUM_OP)
   } else if (*datatype == MPI_UNSIGNED_CHAR) {
@@ -1289,6 +1297,10 @@ static void prod_func(void *a, void *b, int *length, MPI_Datatype * datatype)
     APPLY_FUNC(a, b, length, unsigned int, PROD_OP)
   } else if (*datatype == MPI_UNSIGNED_LONG) {
     APPLY_FUNC(a, b, length, unsigned long, PROD_OP)
+  } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+    APPLY_FUNC(a, b, length, unsigned long long, PROD_OP)
+  } else if (*datatype == MPI_LONG_LONG) {
+    APPLY_FUNC(a, b, length, long long, PROD_OP)
   } else if (*datatype == MPI_UNSIGNED_CHAR) {
     APPLY_FUNC(a, b, length, unsigned char, PROD_OP)
   } else if (*datatype == MPI_FLOAT) {
@@ -1326,6 +1338,10 @@ static void land_func(void *a, void *b, int *length, MPI_Datatype * datatype)
     APPLY_FUNC(a, b, length, unsigned long, LAND_OP)
   } else if (*datatype == MPI_UNSIGNED_CHAR) {
     APPLY_FUNC(a, b, length, unsigned char, LAND_OP)
+  } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+    APPLY_FUNC(a, b, length, unsigned long long, LAND_OP)
+  } else if (*datatype == MPI_LONG_LONG) {
+    APPLY_FUNC(a, b, length, long long, LAND_OP)
   } else if (*datatype == MPI_C_BOOL) {
     APPLY_FUNC(a, b, length, bool, LAND_OP)
   } else {
@@ -1351,6 +1367,10 @@ static void lor_func(void *a, void *b, int *length, MPI_Datatype * datatype)
     APPLY_FUNC(a, b, length, unsigned long, LOR_OP)
   } else if (*datatype == MPI_UNSIGNED_CHAR) {
     APPLY_FUNC(a, b, length, unsigned char, LOR_OP)
+  } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+    APPLY_FUNC(a, b, length, unsigned long long, LOR_OP)
+  } else if (*datatype == MPI_LONG_LONG) {
+    APPLY_FUNC(a, b, length, long long, LOR_OP)
   } else if (*datatype == MPI_C_BOOL) {
     APPLY_FUNC(a, b, length, bool, LOR_OP)
   } else {
@@ -1376,6 +1396,10 @@ static void lxor_func(void *a, void *b, int *length, MPI_Datatype * datatype)
     APPLY_FUNC(a, b, length, unsigned long, LXOR_OP)
   } else if (*datatype == MPI_UNSIGNED_CHAR) {
     APPLY_FUNC(a, b, length, unsigned char, LXOR_OP)
+  } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+    APPLY_FUNC(a, b, length, unsigned long long, LXOR_OP)
+  } else if (*datatype == MPI_LONG_LONG) {
+    APPLY_FUNC(a, b, length, long long, LXOR_OP)
   } else if (*datatype == MPI_C_BOOL) {
     APPLY_FUNC(a, b, length, bool, LXOR_OP)
   } else {
@@ -1401,6 +1425,10 @@ static void band_func(void *a, void *b, int *length, MPI_Datatype * datatype)
     APPLY_FUNC(a, b, length, unsigned long, BAND_OP)
   } else if (*datatype == MPI_UNSIGNED_CHAR) {
     APPLY_FUNC(a, b, length, unsigned char, BAND_OP)
+  } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+    APPLY_FUNC(a, b, length, unsigned long long, BAND_OP)
+  } else if (*datatype == MPI_LONG_LONG) {
+    APPLY_FUNC(a, b, length, long long, BAND_OP)
   } else if (*datatype == MPI_BYTE) {
     APPLY_FUNC(a, b, length, uint8_t, BAND_OP)
   } else {
@@ -1426,6 +1454,10 @@ static void bor_func(void *a, void *b, int *length, MPI_Datatype * datatype)
     APPLY_FUNC(a, b, length, unsigned long, BOR_OP)
   } else if (*datatype == MPI_UNSIGNED_CHAR) {
     APPLY_FUNC(a, b, length, unsigned char, BOR_OP)
+  } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+    APPLY_FUNC(a, b, length, unsigned long long, BOR_OP)
+  } else if (*datatype == MPI_LONG_LONG) {
+    APPLY_FUNC(a, b, length, long long, BOR_OP)
   } else if (*datatype == MPI_BYTE) {
     APPLY_FUNC(a, b, length, uint8_t, BOR_OP)
   } else {
@@ -1451,6 +1483,10 @@ static void bxor_func(void *a, void *b, int *length, MPI_Datatype * datatype)
     APPLY_FUNC(a, b, length, unsigned long, BXOR_OP)
   } else if (*datatype == MPI_UNSIGNED_CHAR) {
     APPLY_FUNC(a, b, length, unsigned char, BXOR_OP)
+  } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+    APPLY_FUNC(a, b, length, unsigned long long, BXOR_OP)
+  } else if (*datatype == MPI_LONG_LONG) {
+    APPLY_FUNC(a, b, length, long long, BXOR_OP)
   } else if (*datatype == MPI_BYTE) {
     APPLY_FUNC(a, b, length, uint8_t, BXOR_OP)
   } else {