From efef210b6f1b5b29dc59742da0d56cb90971eda4 Mon Sep 17 00:00:00 2001
From: Florent Pruvost <florent.pruvost@inria.fr>
Date: Fri, 9 Sep 2016 15:57:42 +0000
Subject: [PATCH] chameleon: merge plghe2/plgsy2 routines with plghe/plgsy

---
 compute/CMakeLists.txt                      |   4 -
 compute/pzplghe.c                           |  68 +++--
 compute/pzplghe2.c                          |  93 -------
 compute/pzplgsy.c                           |  59 ++++-
 compute/pzplgsy2.c                          |  88 -------
 compute/zplghe.c                            |  53 ++--
 compute/zplghe2.c                           | 268 --------------------
 compute/zplgsy.c                            |  43 ++--
 compute/zplgsy2.c                           | 267 -------------------
 compute/zplrnt.c                            |  12 +-
 control/compute_z.h                         |   6 +-
 control/morse_zf77.c                        |  24 +-
 control/morse_zf90.F90                      |  36 ++-
 docs/texinfo/chapters/using.texi            |  13 +-
 example/basic_zposv/zposv_morse_functions.c |   2 +-
 example/basic_zposv/zposv_users_functions.c |   2 +-
 example/lapack_to_morse/step1.c             |   2 +-
 example/lapack_to_morse/step2.c             |   2 +-
 example/lapack_to_morse/step3.c             |   2 +-
 example/lapack_to_morse/step4.c             |   2 +-
 example/lapack_to_morse/step5.c             |   2 +-
 example/lapack_to_morse/step6.c             |   2 +-
 example/link_chameleon/link_chameleon.c     |   2 +-
 example/out_of_core/out_of_core.c           |   2 +-
 include/morse_z.h                           |  18 +-
 testing/testing_zhemm.c                     |   2 +-
 testing/testing_zher2k.c                    |   2 +-
 testing/testing_zherk.c                     |   2 +-
 testing/testing_zposv.c                     |   8 +-
 testing/testing_zpotri.c                    |   2 +-
 testing/testing_zsymm.c                     |   2 +-
 testing/testing_zsyr2k.c                    |   2 +-
 testing/testing_zsyrk.c                     |   2 +-
 timing/time_zposv.c                         |   2 +-
 timing/time_zposv_tile.c                    |   2 +-
 timing/time_zpotrf.c                        |   2 +-
 timing/time_zpotrf_tile.c                   |   2 +-
 timing/time_zpotri_tile.c                   |   2 +-
 timing/time_zpotrs_tile.c                   |   2 +-
 timing/time_zsytrf_tile.c                   |   2 +-
 timing/time_ztrsm.c                         |   2 +-
 41 files changed, 242 insertions(+), 868 deletions(-)
 delete mode 100644 compute/pzplghe2.c
 delete mode 100644 compute/pzplgsy2.c
 delete mode 100644 compute/zplghe2.c
 delete mode 100644 compute/zplgsy2.c

diff --git a/compute/CMakeLists.txt b/compute/CMakeLists.txt
index b6174a90d..784b42d1f 100644
--- a/compute/CMakeLists.txt
+++ b/compute/CMakeLists.txt
@@ -97,9 +97,7 @@ set(ZSRC
     pzlaset.c
     pzlauum.c
     pzplghe.c
-    pzplghe2.c
     pzplgsy.c
-    pzplgsy2.c
     pzplrnt.c
     pzpotrf.c
     pzsytrf.c
@@ -135,9 +133,7 @@ set(ZSRC
     zlaset.c
     zlauum.c
     zplghe.c
-    zplghe2.c
     zplgsy.c
-    zplgsy2.c
     zplrnt.c
     zposv.c
     zsysv.c
diff --git a/compute/pzplghe.c b/compute/pzplghe.c
index 4ad0c6244..068ca66cb 100644
--- a/compute/pzplghe.c
+++ b/compute/pzplghe.c
@@ -3,7 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
+ * @copyright (c) 2012-2016 Inria. All rights reserved.
  * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
@@ -17,12 +17,15 @@
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
  * @version 2.5.0
- * @comment This file has been automatically generated
+ * @comment This file is a copy from pzplghe.c
+ *          wich has been automatically generated
  *          from Plasma 2.5.0 for MORSE 1.0.0
  * @author Mathieu Faverge
  * @author Emmanuel Agullo
  * @author Cedric Castagnede
- * @date 2010-11-15
+ * @author Rade Mathis
+ * @author Florent Pruvost
+ * @date 2016-08-01
  * @precisions normal z -> c
  *
  **/
@@ -30,10 +33,11 @@
 
 #define A(m,n) A,  m,  n
 /***************************************************************************//**
- *  morse_pzplghe - Generate a random hermitian (positive definite if 'bump' is large enough) matrix by tiles.
+ *  morse_pzplghe - Generate a random hermitian (positive definite if 'bump' is large enough) half-matrix by tiles.
  **/
-void morse_pzplghe( double bump, MORSE_desc_t *A, unsigned long long int seed,
-                           MORSE_sequence_t *sequence, MORSE_request_t *request )
+void morse_pzplghe( double bump, MORSE_enum uplo, MORSE_desc_t *A,
+		            unsigned long long int seed,
+                    MORSE_sequence_t *sequence, MORSE_request_t *request )
 {
     MORSE_context_t *morse;
     MORSE_option_t options;
@@ -48,18 +52,50 @@ void morse_pzplghe( double bump, MORSE_desc_t *A, unsigned long long int seed,
     RUNTIME_options_init(&options, morse, sequence, request);
 
     for (m = 0; m < A->mt; m++) {
-        tempmm = m == A->mt-1 ? A->m-m*A->mb : A->mb;
-        ldam = BLKLDD(A, m);
+    	tempmm = m == A->mt-1 ? A->m-m*A->mb : A->mb;
+    	ldam = BLKLDD(A, m);
 
-        for (n = 0; n < A->nt; n++) {
-            tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
+		/*
+		 *  MorseLower
+		 */
+		if (uplo == MorseLower) {
+			for (n = 0; n <= m; n++) {
+				tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
 
-            MORSE_TASK_zplghe( 
-                &options,
-                bump, tempmm, tempnn, A(m, n), ldam,
-                A->m, m*A->mb, n*A->nb, seed );
-        
-        }
+				options.priority = m + n;
+				MORSE_TASK_zplghe(
+					&options,
+					bump, tempmm, tempnn, A(m, n), ldam,
+					A->m, m*A->mb, n*A->nb, seed );
+			}
+		}
+		/*
+		 * MorseUpper
+		 */
+		else if (uplo == MorseUpper) {
+			for (n = m; n < A->nt; n++) {
+				tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
+
+				options.priority = m + n;
+				MORSE_TASK_zplghe(
+					&options,
+					bump, tempmm, tempnn, A(m, n), ldam,
+					A->m, m*A->mb, n*A->nb, seed );
+			}
+		}
+		/*
+		 * MorseUpperLower
+		 */
+		else {
+			for (n = 0; n < A->nt; n++) {
+				tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
+
+				MORSE_TASK_zplghe(
+					&options,
+					bump, tempmm, tempnn, A(m, n), ldam,
+					A->m, m*A->mb, n*A->nb, seed );
+			}
+		}
     }
     RUNTIME_options_finalize(&options, morse);
     MORSE_TASK_dataflush_all();
diff --git a/compute/pzplghe2.c b/compute/pzplghe2.c
deleted file mode 100644
index 558a7f615..000000000
--- a/compute/pzplghe2.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- *
- * @copyright (c) 2009-2014 The University of Tennessee and The University
- *                          of Tennessee Research Foundation.
- *                          All rights reserved.
- * @copyright (c) 2012-2016 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
- *
- **/
-
-/**
- *
- * @file pzplghe2.c
- *
- *  MORSE auxiliary routines
- *  MORSE is a software package provided by Univ. of Tennessee,
- *  Univ. of California Berkeley and Univ. of Colorado Denver
- *
- * @version 2.5.0
- * @comment This file is a copy from pzplghe.c
- *          wich has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @author Rade Mathis
- * @date 2016-08-01
- * @precisions normal z -> c
- *
- **/
-#include "control/common.h"
-
-#define A(m,n) A,  m,  n
-/***************************************************************************//**
- *  morse_pzplghe - Generate a random hermitian (positive definite if 'bump' is large enough) half-matrix by tiles.
- **/
-void morse_pzplghe2( double bump, MORSE_desc_t *A, unsigned long long int seed,
-                     MORSE_enum uplo, MORSE_sequence_t *sequence,
-                     MORSE_request_t *request )
-{
-    MORSE_context_t *morse;
-    MORSE_option_t options;
-
-    int m, n;
-    int ldam;
-    int tempmm, tempnn;
-
-    morse = morse_context_self();
-    if (sequence->status != MORSE_SUCCESS)
-        return;
-    RUNTIME_options_init(&options, morse, sequence, request);
-
-    /*
-     *  MorseLower
-     */
-    if (uplo == MorseLower) {
-        for (m = 0; m < A->mt; m++) {
-        tempmm = m == A->mt-1 ? A->m-m*A->mb : A->mb;
-            ldam = BLKLDD(A, m);
-
-            for (n = 0; n <= m; n++) {
-                tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
-
-                options.priority = m + n;
-                MORSE_TASK_zplghe(
-                    &options,
-                    bump, tempmm, tempnn, A(m, n), ldam,
-                    A->m, m*A->mb, n*A->nb, seed );
-            }
-        }
-    }
-    /*
-     * MorseUpper
-     */
-    else {
-        for (m = 0; m < A->mt; m++) {
-            tempmm = m == A->mt-1 ? A->m-m*A->mb : A->mb;
-            ldam = BLKLDD(A, m);
-
-            for (n = m; n < A->nt; n++) {
-                tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
-
-                options.priority = m + n;
-                MORSE_TASK_zplghe(
-                    &options,
-                    bump, tempmm, tempnn, A(m, n), ldam,
-                    A->m, m*A->mb, n*A->nb, seed );
-            }
-        }
-    }
-    RUNTIME_options_finalize(&options, morse);
-    MORSE_TASK_dataflush_all();
-}
diff --git a/compute/pzplgsy.c b/compute/pzplgsy.c
index 0a1f2883c..9e0ae59de 100644
--- a/compute/pzplgsy.c
+++ b/compute/pzplgsy.c
@@ -3,7 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
+ * @copyright (c) 2012-2016 Inria. All rights reserved.
  * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
@@ -17,12 +17,15 @@
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
  * @version 2.5.0
- * @comment This file has been automatically generated
+ * @comment This file is a copy of pzplgsy.c,
+            wich has been automatically generated
  *          from Plasma 2.5.0 for MORSE 1.0.0
  * @author Mathieu Faverge
  * @author Emmanuel Agullo
  * @author Cedric Castagnede
- * @date 2010-11-15
+ * @author Rade Mathis
+ * @author Florent Pruvost
+ * @date 2016-08-01
  * @precisions normal z -> c d s
  *
  **/
@@ -30,9 +33,10 @@
 
 #define A(m,n) A,  m,  n
 /***************************************************************************//**
- *  morse_pzplgsy - Generate a random symmetric (positive definite if 'bump' is large enough) matrix by tiles.
+ *  morse_pzplgsy - Generate a random symmetric (positive definite if 'bump' is large enough) half-matrix by tiles.
  **/
-void morse_pzplgsy( MORSE_Complex64_t bump, MORSE_desc_t *A, unsigned long long int seed,
+void morse_pzplgsy( MORSE_Complex64_t bump, MORSE_enum uplo, MORSE_desc_t *A,
+                    unsigned long long int seed,
                     MORSE_sequence_t *sequence, MORSE_request_t *request )
 {
     MORSE_context_t *morse;
@@ -51,13 +55,46 @@ void morse_pzplgsy( MORSE_Complex64_t bump, MORSE_desc_t *A, unsigned long long
         tempmm = m == A->mt-1 ? A->m-m*A->mb : A->mb;
         ldam = BLKLDD(A, m);
 
-        for (n = 0; n < A->nt; n++) {
-            tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
+        /*
+         * MorseLower
+         */
+        if (uplo == MorseLower) {
+            for (n = 0; n <= m; n++) {
+                tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
 
-            MORSE_TASK_zplgsy(
-                &options,
-                bump, tempmm, tempnn, A(m, n), ldam,
-                A->m, m*A->mb, n*A->nb, seed );
+                options.priority = m + n;
+                MORSE_TASK_zplgsy(
+                    &options,
+                    bump, tempmm, tempnn, A(m, n), ldam,
+                    A->m, m*A->mb, n*A->nb, seed );
+            }
+        }
+        /*
+         * MorseUpper
+         */
+        else if (uplo == MorseUpper) {
+            for (n = m; n < A->nt; n++) {
+                tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
+
+                options.priority = m + n;
+                MORSE_TASK_zplgsy(
+                    &options,
+                    bump, tempmm, tempnn, A(m, n), ldam,
+                    A->m, m*A->mb, n*A->nb, seed );
+            }
+        }
+        /*
+         * MorseUpperLower
+         */
+        else {
+			for (n = 0; n < A->nt; n++) {
+				tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
+
+				MORSE_TASK_zplgsy(
+					&options,
+					bump, tempmm, tempnn, A(m, n), ldam,
+					A->m, m*A->mb, n*A->nb, seed );
+			}
         }
     }
     RUNTIME_options_finalize(&options, morse);
diff --git a/compute/pzplgsy2.c b/compute/pzplgsy2.c
deleted file mode 100644
index 1277bc92a..000000000
--- a/compute/pzplgsy2.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- *
- * @copyright (c) 2009-2014 The University of Tennessee and The University
- *                          of Tennessee Research Foundation.
- *                          All rights reserved.
- * @copyright (c) 2012-2016 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
- *
- **/
-
-/**
- *
- * @file pzplgsy2.c
- *
- *  MORSE auxiliary routines
- *  MORSE is a software package provided by Univ. of Tennessee,
- *  Univ. of California Berkeley and Univ. of Colorado Denver
- *
- * @version 2.5.0
- * @comment This file is a copy of pzplgsy.c,
-            wich has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @author Rade Mathis
- * @date 2016-08-01
- * @precisions normal z -> c d s
- *
- **/
-#include "control/common.h"
-
-#define A(m,n) A,  m,  n
-/***************************************************************************//**
- *  morse_pzplgsy2 - Generate a random symmetric (positive definite if 'bump' is large enough) half-matrix by tiles.
- **/
-void morse_pzplgsy2( MORSE_Complex64_t bump, MORSE_desc_t *A,
-                     unsigned long long int seed, MORSE_enum uplo,
-                     MORSE_sequence_t *sequence, MORSE_request_t *request )
-{
-    MORSE_context_t *morse;
-    MORSE_option_t options;
-
-    int m, n;
-    int ldam;
-    int tempmm, tempnn;
-
-    morse = morse_context_self();
-    if (sequence->status != MORSE_SUCCESS)
-        return;
-    RUNTIME_options_init(&options, morse, sequence, request);
-
-    for (m = 0; m < A->mt; m++) {
-        tempmm = m == A->mt-1 ? A->m-m*A->mb : A->mb;
-        ldam = BLKLDD(A, m);
-
-        /*
-         * MorseLower
-         */
-        if (uplo == MorseLower) {
-            for (n = 0; n <= m; n++) {
-                tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
-
-                options.priority = m + n;
-                MORSE_TASK_zplgsy(
-                    &options,
-                    bump, tempmm, tempnn, A(m, n), ldam,
-                    A->m, m*A->mb, n*A->nb, seed );
-            }
-        }
-        /*
-         * MorseUpper
-         */
-        else {
-            for (n = m; n < A->nt; n++) {
-                tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
-
-                options.priority = m + n;
-                MORSE_TASK_zplgsy(
-                    &options,
-                    bump, tempmm, tempnn, A(m, n), ldam,
-                    A->m, m*A->mb, n*A->nb, seed );
-            }
-        }
-    }
-    RUNTIME_options_finalize(&options, morse);
-    MORSE_TASK_dataflush_all();
-}
diff --git a/compute/zplghe.c b/compute/zplghe.c
index b446437f1..9929737c3 100644
--- a/compute/zplghe.c
+++ b/compute/zplghe.c
@@ -3,7 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
+ * @copyright (c) 2012-2016 Inria. All rights reserved.
  * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
@@ -17,12 +17,15 @@
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
  * @version 2.5.0
- * @comment This file has been automatically generated
+ * @comment This file is a copy of zplghe.c
+ *          wich has been automatically generated
  *          from Plasma 2.5.0 for MORSE 1.0.0
  * @author Mathieu Faverge
  * @author Emmanuel Agullo
  * @author Cedric Castagnede
- * @date 2010-11-15
+ * @author Rade Mathis
+ * @author Florent Pruvost
+ * @date 2016-08-01
  * @precisions normal z -> c
  *
  **/
@@ -32,7 +35,7 @@
  *
  * @ingroup MORSE_Complex64_t
  *
- *  MORSE_zplghe - Generate a random hermitian (positive definite if 'bump' is large enough) matrix by tiles.
+ *  MORSE_zplghe - Generate a random hermitian (positive definite if 'bump' is large enough) half-matrix by tiles.
  *
  *******************************************************************************
  *
@@ -43,6 +46,9 @@
  * @param[in] N
  *          The order of the matrix A. N >= 0.
  *
+ * @param[in] uplo
+ *          The part of the Matrix wich will be generated.
+ *
  * @param[out] A
  *          On exit, The random hermitian matrix A generated.
  *
@@ -65,13 +71,12 @@
  * @sa MORSE_cplghe
  * @sa MORSE_dplghe
  * @sa MORSE_splghe
- * @sa MORSE_zplrnt
- * @sa MORSE_zplgsy
+ * @sa MORSE_zplghe
  *
  ******************************************************************************/
-int MORSE_zplghe( double bump, int N,
-                   MORSE_Complex64_t *A, int LDA,
-                   unsigned long long int seed )
+int MORSE_zplghe( double bump, MORSE_enum uplo, int N,
+                  MORSE_Complex64_t *A, int LDA,
+                  unsigned long long int seed )
 {
     int NB;
     int status;
@@ -112,7 +117,7 @@ int MORSE_zplghe( double bump, int N,
     morse_zdesc_alloc(descA, NB, NB, LDA, N, 0, 0, N, N, morse_desc_mat_free(&descA));
 
     /* Call the tile interface */
-    MORSE_zplghe_Tile_Async( bump, &descA, seed, sequence, &request );
+    MORSE_zplghe_Tile_Async( bump, uplo, &descA, seed, sequence, &request );
 
     morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
     morse_sequence_wait(morse, sequence);
@@ -128,7 +133,7 @@ int MORSE_zplghe( double bump, int N,
  *
  * @ingroup MORSE_Complex64_t_Tile
  *
- *  MORSE_zplghe_Tile - Generate a random hermitian (positive definite if 'bump' is large enough) matrix by tiles.
+ *  MORSE_zplghe_Tile - Generate a random hermitian (positive definite if 'bump' is large enough) half-matrix by tiles.
  *  Tile equivalent of MORSE_zplghe().
  *  Operates on matrices stored by tiles.
  *  All matrices are passed through descriptors.
@@ -140,6 +145,9 @@ int MORSE_zplghe( double bump, int N,
  *          The value to add to the diagonal to be sure
  *          to have a positive definite matrix.
  *
+ * @param[in] uplo
+ *          The part of the Matrix wich will be generated.
+ *
  * @param[in] A
  *          On exit, The random hermitian matrix A generated.
  *
@@ -158,12 +166,11 @@ int MORSE_zplghe( double bump, int N,
  * @sa MORSE_cplghe_Tile
  * @sa MORSE_dplghe_Tile
  * @sa MORSE_splghe_Tile
- * @sa MORSE_zplrnt_Tile
- * @sa MORSE_zplgsy_Tile
+ * @sa MORSE_zplghe_Tile
  *
  ******************************************************************************/
-int MORSE_zplghe_Tile( double bump, MORSE_desc_t *A,
-                        unsigned long long int seed )
+int MORSE_zplghe_Tile( double bump, MORSE_enum uplo, MORSE_desc_t *A,
+                       unsigned long long int seed )
 {
     MORSE_context_t *morse;
     MORSE_sequence_t *sequence = NULL;
@@ -176,7 +183,7 @@ int MORSE_zplghe_Tile( double bump, MORSE_desc_t *A,
         return MORSE_ERR_NOT_INITIALIZED;
     }
     morse_sequence_create(morse, &sequence);
-    MORSE_zplghe_Tile_Async( bump, A, seed, sequence, &request );
+    MORSE_zplghe_Tile_Async( bump, uplo, A, seed, sequence, &request );
     morse_sequence_wait(morse, sequence);
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
@@ -187,7 +194,7 @@ int MORSE_zplghe_Tile( double bump, MORSE_desc_t *A,
  *
  * @ingroup MORSE_Complex64_t_Tile_Async
  *
- *  MORSE_zplghe_Tile_Async - Generate a random hermitian (positive definite if 'bump' is large enough) matrix by tiles.
+ *  MORSE_zplghe_Tile_Async - Generate a random hermitian (positive definite if 'bump' is large enough) half-matrix by tiles.
  *  Non-blocking equivalent of MORSE_zplghe_Tile().
  *  May return before the computation is finished.
  *  Allows for pipelining of operations at runtime.
@@ -209,14 +216,14 @@ int MORSE_zplghe_Tile( double bump, MORSE_desc_t *A,
  * @sa MORSE_dplghe_Tile_Async
  * @sa MORSE_splghe_Tile_Async
  * @sa MORSE_zplghe_Tile_Async
- * @sa MORSE_zplgsy_Tile_Async
  *
  ******************************************************************************/
-int MORSE_zplghe_Tile_Async( double          bump,
-                             MORSE_desc_t     *A,
+int MORSE_zplghe_Tile_Async( double                 bump,
+                             MORSE_enum             uplo,
+                             MORSE_desc_t             *A,
                              unsigned long long int seed,
-                             MORSE_sequence_t *sequence,
-                             MORSE_request_t  *request)
+                             MORSE_sequence_t  *sequence,
+                             MORSE_request_t    *request )
 {
     MORSE_context_t *morse;
 
@@ -254,7 +261,7 @@ int MORSE_zplghe_Tile_Async( double          bump,
     if (min( A->m, A->n ) == 0)
         return MORSE_SUCCESS;
 
-    morse_pzplghe(bump,      A, seed, sequence,  request);
+    morse_pzplghe(bump, uplo, A, seed, sequence,  request);
 
     return MORSE_SUCCESS;
 }
diff --git a/compute/zplghe2.c b/compute/zplghe2.c
deleted file mode 100644
index 25c87ac43..000000000
--- a/compute/zplghe2.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/**
- *
- * @copyright (c) 2009-2014 The University of Tennessee and The University
- *                          of Tennessee Research Foundation.
- *                          All rights reserved.
- * @copyright (c) 2012-2016 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
- *
- **/
-
-/**
- *
- * @file zplghe2.c
- *
- *  MORSE computational routines
- *  MORSE is a software package provided by Univ. of Tennessee,
- *  Univ. of California Berkeley and Univ. of Colorado Denver
- *
- * @version 2.5.0
- * @comment This file is a copy of zplghe.c
- *          wich has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @author Rade Mathis
- * @date 2016-08-01
- * @precisions normal z -> c
- *
- **/
-#include "control/common.h"
-
-/***************************************************************************//**
- *
- * @ingroup MORSE_Complex64_t
- *
- *  MORSE_zplghe2 - Generate a random hermitian (positive definite if 'bump' is large enough) half-matrix by tiles.
- *
- *******************************************************************************
- *
- * @param[in] bump
- *          The value to add to the diagonal to be sure
- *          to have a positive definite matrix.
- *
- * @param[in] N
- *          The order of the matrix A. N >= 0.
- *
- * @param[out] A
- *          On exit, The random hermitian matrix A generated.
- *
- * @param[in] LDA
- *          The leading dimension of the array A. LDA >= max(1,M).
- *
- * @param[in] seed
- *          The seed used in the random generation.
- *
- * @param[in] uplo
- *          The part of the Matrix wich will be generated.
- *
- *******************************************************************************
- *
- * @return
- *          \retval MORSE_SUCCESS successful exit
- *          \retval <0 if -i, the i-th argument had an illegal value
- *
- *******************************************************************************
- *
- * @sa MORSE_zplghe2_Tile
- * @sa MORSE_zplghe2_Tile_Async
- * @sa MORSE_cplghe2
- * @sa MORSE_dplghe2
- * @sa MORSE_splghe2
- * @sa MORSE_zplgsy2
- *
- ******************************************************************************/
-int MORSE_zplghe2( double bump, int N,
-                   MORSE_Complex64_t *A, int LDA,
-                   unsigned long long int seed, MORSE_enum uplo )
-{
-    int NB;
-    int status;
-    MORSE_context_t *morse;
-    MORSE_sequence_t *sequence = NULL;
-    MORSE_request_t request = MORSE_REQUEST_INITIALIZER;
-    MORSE_desc_t descA;
-
-    morse = morse_context_self();
-    if (morse == NULL) {
-        morse_fatal_error("MORSE_zplghe2", "MORSE not initialized");
-        return MORSE_ERR_NOT_INITIALIZED;
-    }
-    /* Check input arguments */
-    if (N < 0) {
-        morse_error("MORSE_zplghe2", "illegal value of N");
-        return -2;
-    }
-    if (LDA < max(1, N)) {
-        morse_error("MORSE_zplghe2", "illegal value of LDA");
-        return -4;
-    }
-    /* Quick return */
-    if (max(0, N) == 0)
-        return MORSE_SUCCESS;
-
-    /* Tune NB depending on M, N & NRHS; Set NBNB */
-    status = morse_tune(MORSE_FUNC_ZGEMM, N, N, 0);
-    if (status != MORSE_SUCCESS) {
-        morse_error("MORSE_zplghe2", "morse_tune() failed");
-        return status;
-    }
-
-    /* Set NT */
-    NB = MORSE_NB;
-    morse_sequence_create(morse, &sequence);
-
-    morse_zdesc_alloc(descA, NB, NB, LDA, N, 0, 0, N, N, morse_desc_mat_free(&descA));
-
-    /* Call the tile interface */
-    MORSE_zplghe2_Tile_Async( bump, &descA, seed, uplo, sequence, &request );
-
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-    morse_sequence_wait(morse, sequence);
-    morse_desc_mat_free(&descA);
-
-    status = sequence->status;
-    morse_sequence_destroy(morse, sequence);
-
-    return status;
-}
-
-/***************************************************************************//**
- *
- * @ingroup MORSE_Complex64_t_Tile
- *
- *  MORSE_zplghe2_Tile - Generate a random hermitian (positive definite if 'bump' is large enough) half-matrix by tiles.
- *  Tile equivalent of MORSE_zplghe2().
- *  Operates on matrices stored by tiles.
- *  All matrices are passed through descriptors.
- *  All dimensions are taken from the descriptors.
- *
- *******************************************************************************
- *
- * @param[in] bump
- *          The value to add to the diagonal to be sure
- *          to have a positive definite matrix.
- *
- * @param[in] A
- *          On exit, The random hermitian matrix A generated.
- *
- * @param[in] seed
- *          The seed used in the random generation.
- *
- * @param[in] uplo
- *          The part of the Matrix wich will be generated.
- *
- *******************************************************************************
- *
- * @return
- *          \retval MORSE_SUCCESS successful exit
- *
- *******************************************************************************
- *
- * @sa MORSE_zplghe2
- * @sa MORSE_zplghe2_Tile_Async
- * @sa MORSE_cplghe2_Tile
- * @sa MORSE_dplghe2_Tile
- * @sa MORSE_splghe2_Tile
- * @sa MORSE_zplgsy2_Tile
- *
- ******************************************************************************/
-int MORSE_zplghe2_Tile( double bump, MORSE_desc_t *A,
-                       unsigned long long int seed, MORSE_enum uplo )
-{
-    MORSE_context_t *morse;
-    MORSE_sequence_t *sequence = NULL;
-    MORSE_request_t request = MORSE_REQUEST_INITIALIZER;
-    int status;
-
-    morse = morse_context_self();
-    if (morse == NULL) {
-        morse_fatal_error("MORSE_zplghe2_Tile", "MORSE not initialized");
-        return MORSE_ERR_NOT_INITIALIZED;
-    }
-    morse_sequence_create(morse, &sequence);
-    MORSE_zplghe2_Tile_Async( bump, A, seed, uplo, sequence, &request );
-    morse_sequence_wait(morse, sequence);
-    status = sequence->status;
-    morse_sequence_destroy(morse, sequence);
-    return status;
-}
-
-/***************************************************************************//**
- *
- * @ingroup MORSE_Complex64_t_Tile_Async
- *
- *  MORSE_zplghe2_Tile_Async - Generate a random hermitian (positive definite if 'bump' is large enough) half-matrix by tiles.
- *  Non-blocking equivalent of MORSE_zplghe2_Tile().
- *  May return before the computation is finished.
- *  Allows for pipelining of operations at runtime.
- *
- *******************************************************************************
- *
- * @param[in] sequence
- *          Identifies the sequence of function calls that this call belongs to
- *          (for completion checks and exception handling purposes).
- *
- * @param[out] request
- *          Identifies this function call (for exception handling purposes).
- *
- *******************************************************************************
- *
- * @sa MORSE_zplghe2
- * @sa MORSE_zplghe2_Tile
- * @sa MORSE_cplghe2_Tile_Async
- * @sa MORSE_dplghe2_Tile_Async
- * @sa MORSE_splghe2_Tile_Async
- * @sa MORSE_zplghe2_Tile_Async
- * @sa MORSE_zplgsy2_Tile_Async
- *
- ******************************************************************************/
-int MORSE_zplghe2_Tile_Async( double                 bump,
-                              MORSE_desc_t             *A,
-                              unsigned long long int seed,
-                              MORSE_enum             uplo,
-                              MORSE_sequence_t  *sequence,
-                              MORSE_request_t    *request )
-{
-    MORSE_context_t *morse;
-
-    morse = morse_context_self();
-    if (morse == NULL) {
-        morse_fatal_error("MORSE_zplghe2_Tile", "MORSE not initialized");
-        return MORSE_ERR_NOT_INITIALIZED;
-    }
-    if (sequence == NULL) {
-        morse_fatal_error("MORSE_zplghe2_Tile", "NULL sequence");
-        return MORSE_ERR_UNALLOCATED;
-    }
-    if (request == NULL) {
-        morse_fatal_error("MORSE_zplghe2_Tile", "NULL request");
-        return MORSE_ERR_UNALLOCATED;
-    }
-    /* Check sequence status */
-    if (sequence->status == MORSE_SUCCESS)
-        request->status = MORSE_SUCCESS;
-    else
-        return morse_request_fail(sequence, request, MORSE_ERR_SEQUENCE_FLUSHED);
-
-    /* Check descriptors for correctness */
-    if (morse_desc_check(A) != MORSE_SUCCESS) {
-        morse_error("MORSE_zplghe2_Tile", "invalid descriptor");
-        return morse_request_fail(sequence, request, MORSE_ERR_ILLEGAL_VALUE);
-    }
-    /* Check input arguments */
-    if (A->nb != A->mb) {
-        morse_error("MORSE_zplghe2_Tile", "only square tiles supported");
-        return morse_request_fail(sequence, request, MORSE_ERR_ILLEGAL_VALUE);
-    }
-
-    /* Quick return */
-    if (min( A->m, A->n ) == 0)
-        return MORSE_SUCCESS;
-
-
-    morse_pzplghe2(bump,      A, seed, uplo, sequence,  request);
-
-    return MORSE_SUCCESS;
-}
diff --git a/compute/zplgsy.c b/compute/zplgsy.c
index bbf5aaa48..f61ee0d83 100644
--- a/compute/zplgsy.c
+++ b/compute/zplgsy.c
@@ -3,7 +3,7 @@
  * @copyright (c) 2009-2014 The University of Tennessee and The University
  *                          of Tennessee Research Foundation.
  *                          All rights reserved.
- * @copyright (c) 2012-2014 Inria. All rights reserved.
+ * @copyright (c) 2012-2016 Inria. All rights reserved.
  * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
  *
  **/
@@ -17,12 +17,15 @@
  *  Univ. of California Berkeley and Univ. of Colorado Denver
  *
  * @version 2.5.0
- * @comment This file has been automatically generated
+ * @comment This file is a copy of zplgsy.c,
+ *          wich has been automatically generated
  *          from Plasma 2.5.0 for MORSE 1.0.0
  * @author Mathieu Faverge
  * @author Emmanuel Agullo
  * @author Cedric Castagnede
- * @date 2010-11-15
+ * @author Rade Mathis
+ * @author Florent Pruvost
+ * @date 2016-08-01
  * @precisions normal z -> c d s
  *
  **/
@@ -32,7 +35,7 @@
  *
  * @ingroup MORSE_Complex64_t
  *
- *  MORSE_zplgsy - Generate a random symmetric (positive definite if 'bump' is large enough) matrix by tiles.
+ *  MORSE_zplgsy - Generate a random symmetric (positive definite if 'bump' is large enough) half-matrix by tiles.
  *
  *******************************************************************************
  *
@@ -43,6 +46,9 @@
  * @param[in] N
  *          The order of the matrix A. N >= 0.
  *
+ * @param[in] uplo
+ *          The half of the matrix that will be generated.
+ *
  * @param[out] A
  *          On exit, The random hermitian matrix A generated.
  *
@@ -65,11 +71,10 @@
  * @sa MORSE_cplgsy
  * @sa MORSE_dplgsy
  * @sa MORSE_splgsy
- * @sa MORSE_zplrnt
  * @sa MORSE_zplgsy
  *
  ******************************************************************************/
-int MORSE_zplgsy( MORSE_Complex64_t bump, int N,
+int MORSE_zplgsy( MORSE_Complex64_t bump, MORSE_enum uplo, int N,
                   MORSE_Complex64_t *A, int LDA,
                   unsigned long long int seed )
 {
@@ -112,7 +117,7 @@ int MORSE_zplgsy( MORSE_Complex64_t bump, int N,
     morse_zdesc_alloc(descA, NB, NB, LDA, N, 0, 0, N, N, morse_desc_mat_free(&descA));
 
     /* Call the tile interface */
-    MORSE_zplgsy_Tile_Async( bump, &descA, seed, sequence, &request );
+    MORSE_zplgsy_Tile_Async( bump, uplo, &descA, seed, sequence, &request );
 
     morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
     morse_sequence_wait(morse, sequence);
@@ -128,7 +133,7 @@ int MORSE_zplgsy( MORSE_Complex64_t bump, int N,
  *
  * @ingroup MORSE_Complex64_t_Tile
  *
- *  MORSE_zplgsy_Tile - Generate a random symmetric (positive definite if 'bump' is large enough) matrix by tiles.
+ *  MORSE_zplgsy_Tile - Generate a random symmetric (positive definite if 'bump' is large enough) half-matrix by tiles.
  *  Tile equivalent of MORSE_zplgsy().
  *  Operates on matrices stored by tiles.
  *  All matrices are passed through descriptors.
@@ -140,6 +145,9 @@ int MORSE_zplgsy( MORSE_Complex64_t bump, int N,
  *          The value to add to the diagonal to be sure
  *          to have a positive definite matrix.
  *
+ * @param[in] uplo
+ *          The half of the matrix that will be generated.
+ *
  * @param[in] A
  *          On exit, The random hermitian matrix A generated.
  *
@@ -158,11 +166,11 @@ int MORSE_zplgsy( MORSE_Complex64_t bump, int N,
  * @sa MORSE_cplgsy_Tile
  * @sa MORSE_dplgsy_Tile
  * @sa MORSE_splgsy_Tile
- * @sa MORSE_zplrnt_Tile
  * @sa MORSE_zplgsy_Tile
  *
  ******************************************************************************/
-int MORSE_zplgsy_Tile( MORSE_Complex64_t bump, MORSE_desc_t *A,
+int MORSE_zplgsy_Tile( MORSE_Complex64_t bump, MORSE_enum uplo,
+		               MORSE_desc_t *A,
                        unsigned long long int seed )
 {
     MORSE_context_t *morse;
@@ -176,7 +184,7 @@ int MORSE_zplgsy_Tile( MORSE_Complex64_t bump, MORSE_desc_t *A,
         return MORSE_ERR_NOT_INITIALIZED;
     }
     morse_sequence_create(morse, &sequence);
-    MORSE_zplgsy_Tile_Async( bump, A, seed, sequence, &request );
+    MORSE_zplgsy_Tile_Async( bump, uplo, A, seed, sequence, &request );
     morse_sequence_wait(morse, sequence);
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
@@ -187,7 +195,7 @@ int MORSE_zplgsy_Tile( MORSE_Complex64_t bump, MORSE_desc_t *A,
  *
  * @ingroup MORSE_Complex64_t_Tile_Async
  *
- *  MORSE_zplgsy_Tile_Async - Generate a random symmetric (positive definite if 'bump' is large enough) matrix by tiles.
+ *  MORSE_zplgsy_Tile_Async - Generate a random symmetric (positive definite if 'bump' is large enough) half-matrix by tiles.
  *  Non-blocking equivalent of MORSE_zplgsy_Tile().
  *  May return before the computation is finished.
  *  Allows for pipelining of operations at runtime.
@@ -212,11 +220,12 @@ int MORSE_zplgsy_Tile( MORSE_Complex64_t bump, MORSE_desc_t *A,
  * @sa MORSE_zplgsy_Tile_Async
  *
  ******************************************************************************/
-int MORSE_zplgsy_Tile_Async( MORSE_Complex64_t          bump,
-                             MORSE_desc_t     *A,
+int MORSE_zplgsy_Tile_Async( MORSE_Complex64_t      bump,
+                             MORSE_enum             uplo,
+                             MORSE_desc_t             *A,
                              unsigned long long int seed,
-                             MORSE_sequence_t *sequence,
-                             MORSE_request_t  *request)
+                             MORSE_sequence_t  *sequence,
+                             MORSE_request_t    *request )
 {
     MORSE_context_t *morse;
 
@@ -254,7 +263,7 @@ int MORSE_zplgsy_Tile_Async( MORSE_Complex64_t          bump,
     if (min( A->m, A->n ) == 0)
         return MORSE_SUCCESS;
 
-    morse_pzplgsy(bump,        A, seed,   sequence,    request);
+    morse_pzplgsy(bump, uplo, A, seed, sequence, request);
 
     return MORSE_SUCCESS;
 }
diff --git a/compute/zplgsy2.c b/compute/zplgsy2.c
deleted file mode 100644
index 0fce99c8e..000000000
--- a/compute/zplgsy2.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/**
- *
- * @copyright (c) 2009-2014 The University of Tennessee and The University
- *                          of Tennessee Research Foundation.
- *                          All rights reserved.
- * @copyright (c) 2012-2016 Inria. All rights reserved.
- * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
- *
- **/
-
-/**
- *
- * @file zplgsy2.c
- *
- *  MORSE computational routines
- *  MORSE is a software package provided by Univ. of Tennessee,
- *  Univ. of California Berkeley and Univ. of Colorado Denver
- *
- * @version 2.5.0
- * @comment This file is a copy of zplgsy.c,
- *          wich has been automatically generated
- *          from Plasma 2.5.0 for MORSE 1.0.0
- * @author Mathieu Faverge
- * @author Emmanuel Agullo
- * @author Cedric Castagnede
- * @author Rade Mathis
- * @date 2016-08-01
- * @precisions normal z -> c d s
- *
- **/
-#include "control/common.h"
-
-/***************************************************************************//**
- *
- * @ingroup MORSE_Complex64_t
- *
- *  MORSE_zplgsy2 - Generate a random symmetric (positive definite if 'bump' is large enough) half-matrix by tiles.
- *
- *******************************************************************************
- *
- * @param[in] bump
- *          The value to add to the diagonal to be sure
- *          to have a positive definite matrix.
- *
- * @param[in] N
- *          The order of the matrix A. N >= 0.
- *
- * @param[out] A
- *          On exit, The random hermitian matrix A generated.
- *
- * @param[in] LDA
- *          The leading dimension of the array A. LDA >= max(1,M).
- *
- * @param[in] seed
- *          The seed used in the random generation.
- *
- * @param[in] uplo
- *          The half of the matrix that will be generated.
- *
- *******************************************************************************
- *
- * @return
- *          \retval MORSE_SUCCESS successful exit
- *          \retval <0 if -i, the i-th argument had an illegal value
- *
- *******************************************************************************
- *
- * @sa MORSE_zplgsy2_Tile
- * @sa MORSE_zplgsy2_Tile_Async
- * @sa MORSE_cplgsy2
- * @sa MORSE_dplgsy2
- * @sa MORSE_splgsy2
- * @sa MORSE_zplgsy2
- *
- ******************************************************************************/
-int MORSE_zplgsy2( MORSE_Complex64_t bump, int N,
-                   MORSE_Complex64_t *A, int LDA,
-                   unsigned long long int seed, MORSE_enum uplo )
-{
-    int NB;
-    int status;
-    MORSE_context_t *morse;
-    MORSE_sequence_t *sequence = NULL;
-    MORSE_request_t request = MORSE_REQUEST_INITIALIZER;
-    MORSE_desc_t descA;
-
-    morse = morse_context_self();
-    if (morse == NULL) {
-        morse_fatal_error("MORSE_zplgsy2", "MORSE not initialized");
-        return MORSE_ERR_NOT_INITIALIZED;
-    }
-    /* Check input arguments */
-    if (N < 0) {
-        morse_error("MORSE_zplgsy2", "illegal value of N");
-        return -2;
-    }
-    if (LDA < max(1, N)) {
-        morse_error("MORSE_zplgsy2", "illegal value of LDA");
-        return -4;
-    }
-    /* Quick return */
-    if (max(0, N) == 0)
-        return MORSE_SUCCESS;
-
-    /* Tune NB depending on M, N & NRHS; Set NBNB */
-    status = morse_tune(MORSE_FUNC_ZGEMM, N, N, 0);
-    if (status != MORSE_SUCCESS) {
-        morse_error("MORSE_zplgsy2", "morse_tune() failed");
-        return status;
-    }
-
-    /* Set NT */
-    NB = MORSE_NB;
-    morse_sequence_create(morse, &sequence);
-
-    morse_zdesc_alloc(descA, NB, NB, LDA, N, 0, 0, N, N, morse_desc_mat_free(&descA));
-
-    /* Call the tile interface */
-    MORSE_zplgsy2_Tile_Async( bump, &descA, seed, uplo, sequence, &request );
-
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-    morse_sequence_wait(morse, sequence);
-    morse_desc_mat_free(&descA);
-
-    status = sequence->status;
-    morse_sequence_destroy(morse, sequence);
-
-    return status;
-}
-
-/***************************************************************************//**
- *
- * @ingroup MORSE_Complex64_t_Tile
- *
- *  MORSE_zplgsy2_Tile - Generate a random symmetric (positive definite if 'bump' is large enough) half-matrix by tiles.
- *  Tile equivalent of MORSE_zplgsy2().
- *  Operates on matrices stored by tiles.
- *  All matrices are passed through descriptors.
- *  All dimensions are taken from the descriptors.
- *
- *******************************************************************************
- *
- * @param[in] bump
- *          The value to add to the diagonal to be sure
- *          to have a positive definite matrix.
- *
- * @param[in] A
- *          On exit, The random hermitian matrix A generated.
- *
- * @param[in] seed
- *          The seed used in the random generation.
- *
- * @param[in] uplo
- *          The half of the matrix that will be generated.
- *
- *******************************************************************************
- *
- * @return
- *          \retval MORSE_SUCCESS successful exit
- *
- *******************************************************************************
- *
- * @sa MORSE_zplgsy2
- * @sa MORSE_zplgsy2_Tile_Async
- * @sa MORSE_cplgsy2_Tile
- * @sa MORSE_dplgsy2_Tile
- * @sa MORSE_splgsy2_Tile
- * @sa MORSE_zplgsy2_Tile
- *
- ******************************************************************************/
-int MORSE_zplgsy2_Tile( MORSE_Complex64_t bump, MORSE_desc_t *A,
-                        unsigned long long int seed, MORSE_enum uplo )
-{
-    MORSE_context_t *morse;
-    MORSE_sequence_t *sequence = NULL;
-    MORSE_request_t request = MORSE_REQUEST_INITIALIZER;
-    int status;
-
-    morse = morse_context_self();
-    if (morse == NULL) {
-        morse_fatal_error("MORSE_zplgsy2_Tile", "MORSE not initialized");
-        return MORSE_ERR_NOT_INITIALIZED;
-    }
-    morse_sequence_create(morse, &sequence);
-    MORSE_zplgsy2_Tile_Async( bump, A, seed, uplo, sequence, &request );
-    morse_sequence_wait(morse, sequence);
-    status = sequence->status;
-    morse_sequence_destroy(morse, sequence);
-    return status;
-}
-
-/***************************************************************************//**
- *
- * @ingroup MORSE_Complex64_t_Tile_Async
- *
- *  MORSE_zplgsy2_Tile_Async - Generate a random symmetric (positive definite if 'bump' is large enough) half-matrix by tiles.
- *  Non-blocking equivalent of MORSE_zplgsy2_Tile().
- *  May return before the computation is finished.
- *  Allows for pipelining of operations at runtime.
- *
- *******************************************************************************
- *
- * @param[in] sequence
- *          Identifies the sequence of function calls that this call belongs to
- *          (for completion checks and exception handling purposes).
- *
- * @param[out] request
- *          Identifies this function call (for exception handling purposes).
- *
- *******************************************************************************
- *
- * @sa MORSE_zplgsy
- * @sa MORSE_zplgsy_Tile
- * @sa MORSE_cplgsy_Tile_Async
- * @sa MORSE_dplgsy_Tile_Async
- * @sa MORSE_splgsy_Tile_Async
- * @sa MORSE_zplgsy_Tile_Async
- * @sa MORSE_zplgsy_Tile_Async
- *
- ******************************************************************************/
-int MORSE_zplgsy2_Tile_Async( MORSE_Complex64_t      bump,
-                             MORSE_desc_t             *A,
-                             unsigned long long int seed,
-                             MORSE_enum             uplo,
-                             MORSE_sequence_t  *sequence,
-                             MORSE_request_t    *request )
-{
-    MORSE_context_t *morse;
-
-    morse = morse_context_self();
-    if (morse == NULL) {
-        morse_fatal_error("MORSE_zplgsy2_Tile", "MORSE not initialized");
-        return MORSE_ERR_NOT_INITIALIZED;
-    }
-    if (sequence == NULL) {
-        morse_fatal_error("MORSE_zplgsy2_Tile", "NULL sequence");
-        return MORSE_ERR_UNALLOCATED;
-    }
-    if (request == NULL) {
-        morse_fatal_error("MORSE_zplgsy2_Tile", "NULL request");
-        return MORSE_ERR_UNALLOCATED;
-    }
-    /* Check sequence status */
-    if (sequence->status == MORSE_SUCCESS)
-        request->status = MORSE_SUCCESS;
-    else
-        return morse_request_fail(sequence, request, MORSE_ERR_SEQUENCE_FLUSHED);
-
-    /* Check descriptors for correctness */
-    if (morse_desc_check(A) != MORSE_SUCCESS) {
-        morse_error("MORSE_zplgsy2_Tile", "invalid descriptor");
-        return morse_request_fail(sequence, request, MORSE_ERR_ILLEGAL_VALUE);
-    }
-    /* Check input arguments */
-    if (A->nb != A->mb) {
-        morse_error("MORSE_zplgsy2_Tile", "only square tiles supported");
-        return morse_request_fail(sequence, request, MORSE_ERR_ILLEGAL_VALUE);
-    }
-
-    /* Quick return */
-    if (min( A->m, A->n ) == 0)
-        return MORSE_SUCCESS;
-
-    morse_pzplgsy2(bump, A, seed, uplo, sequence, request);
-
-    return MORSE_SUCCESS;
-}
diff --git a/compute/zplrnt.c b/compute/zplrnt.c
index b2d2d89cb..5410719a6 100644
--- a/compute/zplrnt.c
+++ b/compute/zplrnt.c
@@ -69,8 +69,8 @@
  *
  ******************************************************************************/
 int MORSE_zplrnt( int M, int N,
-                   MORSE_Complex64_t *A, int LDA,
-                   unsigned long long int seed )
+                  MORSE_Complex64_t *A, int LDA,
+                  unsigned long long int seed )
 {
     int NB;
     int status;
@@ -161,7 +161,7 @@ int MORSE_zplrnt( int M, int N,
  *
  ******************************************************************************/
 int MORSE_zplrnt_Tile( MORSE_desc_t *A,
-                        unsigned long long int seed )
+                       unsigned long long int seed )
 {
     MORSE_context_t *morse;
     MORSE_sequence_t *sequence = NULL;
@@ -211,9 +211,9 @@ int MORSE_zplrnt_Tile( MORSE_desc_t *A,
  *
  ******************************************************************************/
 int MORSE_zplrnt_Tile_Async( MORSE_desc_t     *A,
-                              unsigned long long int seed,
-                              MORSE_sequence_t *sequence,
-                              MORSE_request_t  *request)
+                             unsigned long long int seed,
+                             MORSE_sequence_t *sequence,
+                             MORSE_request_t  *request)
 {
     MORSE_context_t *morse;
 
diff --git a/control/compute_z.h b/control/compute_z.h
index 8bcb0bc26..cf34dcd1a 100644
--- a/control/compute_z.h
+++ b/control/compute_z.h
@@ -124,11 +124,9 @@ void morse_pzlaswp(MORSE_desc_t *B, int *IPIV, int inc, MORSE_sequence_t *sequen
 void morse_pzlaswpc(MORSE_desc_t *B, int *IPIV, int inc, MORSE_sequence_t *sequence, MORSE_request_t *request);
 void morse_pzlauum(MORSE_enum uplo, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
 #ifdef COMPLEX
-void morse_pzplghe(double bump, MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request);
-void morse_pzplghe2(double bump, MORSE_desc_t *A, unsigned long long int seed, MORSE_enum uplo, MORSE_sequence_t *sequence, MORSE_request_t *request );
+void morse_pzplghe(double bump, MORSE_enum uplo, MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request );
 #endif
-void morse_pzplgsy(MORSE_Complex64_t bump, MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request );
-void morse_pzplgsy2(MORSE_Complex64_t bump, MORSE_desc_t *A, unsigned long long int seed, MORSE_enum uplo, MORSE_sequence_t *sequence, MORSE_request_t *request );
+void morse_pzplgsy(MORSE_Complex64_t bump, MORSE_enum uplo, MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request );
 void morse_pzplrnt(MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request );
 void morse_pzpotrf(MORSE_enum uplo, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
 void morse_pzpotrimm(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request);
diff --git a/control/morse_zf77.c b/control/morse_zf77.c
index 338743a56..b98cd09f9 100644
--- a/control/morse_zf77.c
+++ b/control/morse_zf77.c
@@ -429,12 +429,12 @@ void MORSE_ZLAUUM(MORSE_enum *uplo, int *N, MORSE_Complex64_t *A, int *LDA, int
 { *info = MORSE_zlauum(*uplo, *N, A, *LDA); }
 
 #ifdef COMPLEX
-void MORSE_ZPLGHE(double *bump, int *N, MORSE_Complex64_t *A, int *LDA, unsigned long long int  *seed, int *info)
-{ *info = MORSE_zplghe(*bump, *N, A, *LDA, *seed); }
+void MORSE_ZPLGHE(double *bump, MORSE_enum *uplo, int *N, MORSE_Complex64_t *A, int *LDA, unsigned long long int  *seed, int *info)
+{ *info = MORSE_zplghe(*bump, *uplo, *N, A, *LDA, *seed); }
 #endif
 
-void MORSE_ZPLGSY(MORSE_Complex64_t *bump, int *N, MORSE_Complex64_t *A, int *LDA, unsigned long long int  *seed, int *info)
-{ *info = MORSE_zplgsy(*bump, *N, A, *LDA, *seed); }
+void MORSE_ZPLGSY(MORSE_Complex64_t *bump, MORSE_enum *uplo, int *N, MORSE_Complex64_t *A, int *LDA, unsigned long long int  *seed, int *info)
+{ *info = MORSE_zplgsy(*bump, *uplo, *N, A, *LDA, *seed); }
 
 void MORSE_ZPLRNT(int *M, int *N, MORSE_Complex64_t *A, int *LDA, unsigned long long int  *seed, int *info)
 { *info = MORSE_zplrnt(*M, *N, A, *LDA, *seed); }
@@ -619,12 +619,12 @@ void MORSE_ZLAUUM_TILE(MORSE_enum *uplo, MORSE_desc_t *A, int *info)
 { *info = MORSE_zlauum_Tile(*uplo, A); }
 
 #ifdef COMPLEX
-void MORSE_ZPLGHE_TILE(double *bump, MORSE_desc_t *A, unsigned long long int  *seed, int *info)
-{ *info = MORSE_zplghe_Tile(*bump, A, *seed); }
+void MORSE_ZPLGHE_TILE(double *bump, MORSE_enum *uplo, MORSE_desc_t *A, unsigned long long int  *seed, int *info)
+{ *info = MORSE_zplghe_Tile(*bump, *uplo, A, *seed); }
 #endif
 
-void MORSE_ZPLGSY_TILE(MORSE_Complex64_t *bump, MORSE_desc_t *A, unsigned long long int  *seed, int *info)
-{ *info = MORSE_zplgsy_Tile(*bump, A, *seed); }
+void MORSE_ZPLGSY_TILE(MORSE_Complex64_t *bump, MORSE_enum *uplo, MORSE_desc_t *A, unsigned long long int  *seed, int *info)
+{ *info = MORSE_zplgsy_Tile(*bump, *uplo, A, *seed); }
 
 void MORSE_ZPLRNT_TILE(MORSE_desc_t *A, unsigned long long int  *seed, int *info)
 { *info = MORSE_zplrnt_Tile(A, *seed); }
@@ -809,12 +809,12 @@ void MORSE_ZLAUUM_TILE_ASYNC(MORSE_enum *uplo, MORSE_desc_t *A, MORSE_sequence_t
 { *info = MORSE_zlauum_Tile_Async(*uplo, A, sequence, request); }
 
 #ifdef COMPLEX
-void MORSE_ZPLGHE_TILE_ASYNC(double *bump, MORSE_desc_t *A, unsigned long long int *seed, MORSE_sequence_t *sequence, MORSE_request_t * *request, int *info)
-{ *info = MORSE_zplghe_Tile_Async(*bump, A, *seed, sequence, *request); }
+void MORSE_ZPLGHE_TILE_ASYNC(double *bump, MORSE_enum *uplo, MORSE_desc_t *A, unsigned long long int *seed, MORSE_sequence_t *sequence, MORSE_request_t * *request, int *info)
+{ *info = MORSE_zplghe_Tile_Async(*bump, *uplo, A, *seed, sequence, *request); }
 #endif
 
-void MORSE_ZPLGSY_TILE_ASYNC(MORSE_Complex64_t *bump, MORSE_desc_t *A, unsigned long long int *seed, MORSE_sequence_t *sequence, MORSE_request_t * *request, int *info)
-{ *info = MORSE_zplgsy_Tile_Async(*bump, A, *seed, sequence, *request); }
+void MORSE_ZPLGSY_TILE_ASYNC(MORSE_Complex64_t *bump, MORSE_enum *uplo, MORSE_desc_t *A, unsigned long long int *seed, MORSE_sequence_t *sequence, MORSE_request_t * *request, int *info)
+{ *info = MORSE_zplgsy_Tile_Async(*bump, *uplo, A, *seed, sequence, *request); }
 
 void MORSE_ZPLRNT_TILE_ASYNC(MORSE_desc_t *A, unsigned long long int *seed, MORSE_sequence_t *sequence, MORSE_request_t * *request, int *info)
 { *info = MORSE_zplrnt_Tile_Async(A, *seed, sequence, *request); }
diff --git a/control/morse_zf90.F90 b/control/morse_zf90.F90
index e544868ba..78c4631dd 100644
--- a/control/morse_zf90.F90
+++ b/control/morse_zf90.F90
@@ -774,12 +774,13 @@ module morse_z
 
 #if defined(PRECISION_z) || defined(PRECISION_c)
       interface
-         function MORSE_zplghe_c(bump,N,A,LDA,seed) &
+         function MORSE_zplghe_c(bump,uplo,N,A,LDA,seed) &
           & bind(c, name='MORSE_zplghe')
             use iso_c_binding
             implicit none
             integer(kind=c_int) :: MORSE_zplghe_c
             real(kind=c_double), value :: bump
+            integer(kind=c_int), value :: uplo
             integer(kind=c_int), value :: N
             type(c_ptr), value :: A
             integer(kind=c_int), value :: LDA
@@ -789,12 +790,13 @@ module morse_z
 #endif
 
       interface
-         function MORSE_zplgsy_c(bump,N,A,LDA,seed) &
+         function MORSE_zplgsy_c(bump,uplo,N,A,LDA,seed) &
           & bind(c, name='MORSE_zplgsy')
             use iso_c_binding
             implicit none
             integer(kind=c_int) :: MORSE_zplgsy_c
             complex(kind=c_double_complex), value :: bump
+            integer(kind=c_int), value :: uplo
             integer(kind=c_int), value :: N
             type(c_ptr), value :: A
             integer(kind=c_int), value :: LDA
@@ -1600,12 +1602,13 @@ module morse_z
 
 #if defined(PRECISION_z) || defined(PRECISION_c)
       interface
-         function MORSE_zplghe_Tile_c(bump,A,seed) &
+         function MORSE_zplghe_Tile_c(bump,uplo,A,seed) &
           & bind(c, name='MORSE_zplghe_Tile')
             use iso_c_binding
             implicit none
             integer(kind=c_int) :: MORSE_zplghe_Tile_c
             real(kind=c_double), value :: bump
+            integer(kind=c_int), value :: uplo
             type(c_ptr), value :: A
             integer(kind=c_long_long), value :: seed
           end function MORSE_zplghe_Tile_c
@@ -1613,12 +1616,13 @@ module morse_z
 #endif
 
       interface
-         function MORSE_zplgsy_Tile_c(bump,A,seed) &
+         function MORSE_zplgsy_Tile_c(bump,uplo,A,seed) &
           & bind(c, name='MORSE_zplgsy_Tile')
             use iso_c_binding
             implicit none
             integer(kind=c_int) :: MORSE_zplgsy_Tile_c
             complex(kind=c_double_complex), value :: bump
+            integer(kind=c_int), value :: uplo
             type(c_ptr), value :: A
             integer(kind=c_long_long), value :: seed
           end function MORSE_zplgsy_Tile_c
@@ -2415,12 +2419,13 @@ module morse_z
 
 #if defined(PRECISION_z) || defined(PRECISION_c)
       interface
-         function MORSE_zplghe_Tile_Async_c(bump,A,seed,sequence,request) &
+         function MORSE_zplghe_Tile_Async_c(bump,uplo,A,seed,sequence,request) &
           & bind(c, name='MORSE_zplghe_Tile_Async')
             use iso_c_binding
             implicit none
             integer(kind=c_int) :: MORSE_zplghe_Tile_Async_c
             real(kind=c_double), value :: bump
+            integer(kind=c_int), value :: uplo
             type(c_ptr), value :: A
             integer(kind=c_long_long), value :: seed
             type(c_ptr), value :: sequence
@@ -2430,12 +2435,13 @@ module morse_z
 #endif
 
       interface
-         function MORSE_zplgsy_Tile_Async_c(bump,A,seed,sequence,request) &
+         function MORSE_zplgsy_Tile_Async_c(bump,uplo,A,seed,sequence,request) &
           & bind(c, name='MORSE_zplgsy_Tile_Async')
             use iso_c_binding
             implicit none
             integer(kind=c_int) :: MORSE_zplgsy_Tile_Async_c
             complex(kind=c_double_complex), value :: bump
+            integer(kind=c_int), value :: uplo
             type(c_ptr), value :: A
             integer(kind=c_long_long), value :: seed
             type(c_ptr), value :: sequence
@@ -3472,11 +3478,12 @@ module morse_z
       end subroutine MORSE_zlauum
 
 #if defined(PRECISION_z) || defined(PRECISION_c)
-      subroutine MORSE_zplghe(bump,N,A,LDA,seed,info) 
+      subroutine MORSE_zplghe(bump,uplo,N,A,LDA,seed,info)
          use iso_c_binding
          implicit none
          integer(kind=c_int), intent(out) :: info
          real(kind=c_double), intent(in) :: bump
+         integer(kind=c_int), intent(in) :: uplo
          integer(kind=c_int), intent(in) :: N
          integer(kind=c_int), intent(in) :: LDA
          integer(kind=c_long_long), intent(in) :: seed
@@ -3485,11 +3492,12 @@ module morse_z
        end subroutine MORSE_zplghe
 #endif
 
-      subroutine MORSE_zplgsy(bump,N,A,LDA,seed,info) 
+      subroutine MORSE_zplgsy(bump,uplo,N,A,LDA,seed,info)
          use iso_c_binding
          implicit none
          integer(kind=c_int), intent(out) :: info
          complex(kind=c_double_complex), intent(in) :: bump
+         integer(kind=c_int), intent(in) :: uplo
          integer(kind=c_int), intent(in) :: N
          integer(kind=c_int), intent(in) :: LDA
          integer(kind=c_long_long), intent(in) :: seed
@@ -4207,22 +4215,24 @@ module morse_z
       end subroutine MORSE_zlauum_Tile
 
 #if defined(PRECISION_z) || defined(PRECISION_c)
-      subroutine MORSE_zplghe_Tile(bump,A,seed,info) 
+      subroutine MORSE_zplghe_Tile(bump,uplo,A,seed,info)
          use iso_c_binding
          implicit none
          integer(kind=c_int), intent(out) :: info
          real(kind=c_double), intent(in) :: bump
+         integer(kind=c_int), intent(in) :: uplo
          integer(kind=c_long_long), intent(in) :: seed
          type(c_ptr), value :: A ! Arg managed by MORSE: opaque to Fortran
          info = MORSE_zplghe_Tile_c(bump,A,seed)
       end subroutine MORSE_zplghe_Tile
 #endif
 
-      subroutine MORSE_zplgsy_Tile(bump,A,seed,info) 
+      subroutine MORSE_zplgsy_Tile(bump,uplo,A,seed,info)
          use iso_c_binding
          implicit none
          integer(kind=c_int), intent(out) :: info
          complex(kind=c_double_complex), intent(in) :: bump
+         integer(kind=c_int), intent(in) :: uplo
          integer(kind=c_long_long), intent(in) :: seed
          type(c_ptr), value :: A ! Arg managed by MORSE: opaque to Fortran
          info = MORSE_zplgsy_Tile_c(bump,A,seed)
@@ -4931,11 +4941,12 @@ module morse_z
       end subroutine MORSE_zlauum_Tile_Async
 
 #if defined(PRECISION_z) || defined(PRECISION_c)
-      subroutine MORSE_zplghe_Tile_Async(bump,A,seed,sequence,request,info) 
+      subroutine MORSE_zplghe_Tile_Async(bump,uplo,A,seed,sequence,request,info)
          use iso_c_binding
          implicit none
          integer(kind=c_int), intent(out) :: info
          real(kind=c_double), intent(in) :: bump
+         integer(kind=c_int), intent(in) :: uplo
          integer(kind=c_long_long), intent(in) :: seed
          type(c_ptr), value :: A ! Arg managed by MORSE: opaque to Fortran
          type(c_ptr), value :: sequence ! Arg managed by MORSE: opaque to Fortran
@@ -4944,11 +4955,12 @@ module morse_z
       end subroutine MORSE_zplghe_Tile_Async
 #endif
 
-      subroutine MORSE_zplgsy_Tile_Async(bump,A,seed,sequence,request,info) 
+      subroutine MORSE_zplgsy_Tile_Async(bump,uplo,A,seed,sequence,request,info)
          use iso_c_binding
          implicit none
          integer(kind=c_int), intent(out) :: info
          complex(kind=c_double_complex), intent(in) :: bump
+         integer(kind=c_int), intent(in) :: uplo
          integer(kind=c_long_long), intent(in) :: seed
          type(c_ptr), value :: A ! Arg managed by MORSE: opaque to Fortran
          type(c_ptr), value :: sequence ! Arg managed by MORSE: opaque to Fortran
diff --git a/docs/texinfo/chapters/using.texi b/docs/texinfo/chapters/using.texi
index f42acdb6b..c8bb2125c 100644
--- a/docs/texinfo/chapters/using.texi
+++ b/docs/texinfo/chapters/using.texi
@@ -949,11 +949,12 @@ int MORSE_zlaset(MORSE_enum uplo, int M, int N, MORSE_Complex64_t alpha,
 int MORSE_zlauum(MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA);
 
 #ifdef COMPLEX
-int MORSE_zplghe( double bump, int N, MORSE_Complex64_t *A, int LDA,
+int MORSE_zplghe( double bump, MORSE_enum uplo, int N,
+                  MORSE_Complex64_t *A, int LDA,
                   unsigned long long int seed );
 #endif
 
-int MORSE_zplgsy( MORSE_Complex64_t bump, int N,
+int MORSE_zplgsy( MORSE_Complex64_t bump, MORSE_enum uplo, int N,
                   MORSE_Complex64_t *A, int LDA,
                   unsigned long long int seed );
 
@@ -1102,11 +1103,11 @@ int MORSE_zlaset_Tile(MORSE_enum uplo, MORSE_Complex64_t alpha,
 int MORSE_zlauum_Tile(MORSE_enum uplo, MORSE_desc_t *A);
 
 #ifdef COMPLEX
-int MORSE_zplghe_Tile(double bump, MORSE_desc_t *A,
+int MORSE_zplghe_Tile(double bump, MORSE_enum uplo, MORSE_desc_t *A,
                       unsigned long long int seed);
 #endif
 
-int MORSE_zplgsy_Tile(MORSE_Complex64_t bump, MORSE_desc_t *A,
+int MORSE_zplgsy_Tile(MORSE_Complex64_t bump, MORSE_enum uplo, MORSE_desc_t *A,
                       unsigned long long int seed );
 
 int MORSE_zplrnt_Tile(MORSE_desc_t *A, unsigned long long int seed );
@@ -1284,13 +1285,13 @@ int MORSE_zlauum_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A,
                             MORSE_request_t *request);
 
 #ifdef COMPLEX
-int MORSE_zplghe_Tile_Async(double bump, MORSE_desc_t *A,
+int MORSE_zplghe_Tile_Async(double bump, MORSE_enum uplo, MORSE_desc_t *A,
                             unsigned long long int seed,
                             MORSE_sequence_t *sequence,
                             MORSE_request_t *request );
 #endif
 
-int MORSE_zplgsy_Tile_Async(MORSE_Complex64_t bump, MORSE_desc_t *A,
+int MORSE_zplgsy_Tile_Async(MORSE_Complex64_t bump, MORSE_enum uplo, MORSE_desc_t *A,
                             unsigned long long int seed,
                             MORSE_sequence_t *sequence,
                             MORSE_request_t *request );
diff --git a/example/basic_zposv/zposv_morse_functions.c b/example/basic_zposv/zposv_morse_functions.c
index cc53929f1..a12805578 100644
--- a/example/basic_zposv/zposv_morse_functions.c
+++ b/example/basic_zposv/zposv_morse_functions.c
@@ -68,7 +68,7 @@ int main(int argc, char *argv[]) {
                       NB, NB, NB*NB, N, N, 0, 0, N, N, 1, 1);
 
     /* generate A matrix with random values such that it is hermitian */
-    MORSE_zplghe_Tile( (double)N, descA, 51 );
+    MORSE_zplghe_Tile( (double)N, MorseUpperLower, descA, 51 );
 
     /* generate RHS */
     MORSE_Desc_Create(&descB, NULL, MorseComplexDouble,
diff --git a/example/basic_zposv/zposv_users_functions.c b/example/basic_zposv/zposv_users_functions.c
index b8580db53..c717deb63 100644
--- a/example/basic_zposv/zposv_users_functions.c
+++ b/example/basic_zposv/zposv_users_functions.c
@@ -98,7 +98,7 @@ int main(int argc, char *argv[]) {
                            user_getrankof_2d);
 
     /* generate A matrix with random values such that it is hermitian */
-    MORSE_zplghe_Tile( (double)N, descA, 51 );
+    MORSE_zplghe_Tile( (double)N, MorseUpperLower, descA, 51 );
 
     /* generate RHS */
     MORSE_Desc_Create(&descB, NULL, MorseComplexDouble,
diff --git a/example/lapack_to_morse/step1.c b/example/lapack_to_morse/step1.c
index 24ff72645..cb87ad8ea 100644
--- a/example/lapack_to_morse/step1.c
+++ b/example/lapack_to_morse/step1.c
@@ -105,7 +105,7 @@ int main(int argc, char *argv[]) {
     PASTE_CODE_ALLOCATE_MATRIX( Acpy, double, N, N );
 
     /* generate A matrix with random values such that it is spd */
-    MORSE_dplgsy( (double)N, N, A, N, 51 );
+    MORSE_dplgsy( (double)N, MorseUpperLower, N, A, N, 51 );
 
     /* generate RHS */
     MORSE_dplrnt( N, NRHS, B, N, 5673 );
diff --git a/example/lapack_to_morse/step2.c b/example/lapack_to_morse/step2.c
index 540c437f8..9f211fe4f 100644
--- a/example/lapack_to_morse/step2.c
+++ b/example/lapack_to_morse/step2.c
@@ -148,7 +148,7 @@ int main(int argc, char *argv[]) {
      * precise partitionning called 2D cyclic (see the documentation) */
 
     /* generate A matrix with random values such that it is spd */
-    MORSE_dplgsy_Tile( (double)N, descA, 51 );
+    MORSE_dplgsy_Tile( (double)N, MorseUpperLower, descA, 51 );
 
     /* generate RHS */
     MORSE_dplrnt_Tile( descB, 5673 );
diff --git a/example/lapack_to_morse/step3.c b/example/lapack_to_morse/step3.c
index 4677bd55f..f9237f7f5 100644
--- a/example/lapack_to_morse/step3.c
+++ b/example/lapack_to_morse/step3.c
@@ -131,7 +131,7 @@ int main(int argc, char *argv[]) {
                       NB, NB, NB*NB, N, N, 0, 0, N, N, 1, 1);
 
     /* generate A matrix with random values such that it is spd */
-    MORSE_dplgsy_Tile( (double)N, descA, 51 );
+    MORSE_dplgsy_Tile( (double)N, MorseUpperLower, descA, 51 );
 
     /* generate RHS */
     MORSE_dplrnt_Tile( descB, 5673 );
diff --git a/example/lapack_to_morse/step4.c b/example/lapack_to_morse/step4.c
index 0e57339ed..269a7caf8 100644
--- a/example/lapack_to_morse/step4.c
+++ b/example/lapack_to_morse/step4.c
@@ -111,7 +111,7 @@ int main(int argc, char *argv[]) {
                       NB, NB,  NB*NB, N, N, 0, 0, N, N, 1, 1);
 
     /* generate A matrix with random values such that it is spd */
-    MORSE_dplgsy_Tile( (double)N, descA, 51 );
+    MORSE_dplgsy_Tile( (double)N, MorseUpperLower, descA, 51 );
 
     /* generate RHS */
     MORSE_dplrnt_Tile( descB, 5673 );
diff --git a/example/lapack_to_morse/step5.c b/example/lapack_to_morse/step5.c
index 7017277ab..3177f09fb 100644
--- a/example/lapack_to_morse/step5.c
+++ b/example/lapack_to_morse/step5.c
@@ -115,7 +115,7 @@ int main(int argc, char *argv[]) {
                       NB, NB,  NB*NB, N, N, 0, 0, N, N, 1, 1);
 
     /* generate A matrix with random values such that it is spd */
-    MORSE_dplgsy_Tile( (double)N, descA, 51 );
+    MORSE_dplgsy_Tile( (double)N, MorseUpperLower, descA, 51 );
 
     /* generate RHS */
     MORSE_dplrnt_Tile( descB, 5673 );
diff --git a/example/lapack_to_morse/step6.c b/example/lapack_to_morse/step6.c
index a9755768b..325a0fd8b 100644
--- a/example/lapack_to_morse/step6.c
+++ b/example/lapack_to_morse/step6.c
@@ -137,7 +137,7 @@ int main(int argc, char *argv[]) {
                       GRID_P, GRID_Q);
 
     /* generate A matrix with random values such that it is spd */
-    MORSE_dplgsy_Tile( (double)N, descA, 51 );
+    MORSE_dplgsy_Tile( (double)N, MorseUpperLower, descA, 51 );
 
     /* generate RHS */
     MORSE_dplrnt_Tile( descB, 5673 );
diff --git a/example/link_chameleon/link_chameleon.c b/example/link_chameleon/link_chameleon.c
index d13e2b1da..b38b12d50 100644
--- a/example/link_chameleon/link_chameleon.c
+++ b/example/link_chameleon/link_chameleon.c
@@ -273,7 +273,7 @@ int main(int argc, char *argv[]) {
     PASTE_CODE_ALLOCATE_MATRIX( Acpy, double, N, N );
 
     /* generate A matrix with random values such that it is spd */
-    MORSE_dplgsy( (double)N, N, A, N, 51 );
+    MORSE_dplgsy( (double)N, MorseUpperLower, N, A, N, 51 );
 
     /* generate RHS */
     MORSE_dplrnt( N, NRHS, B, N, 5673 );
diff --git a/example/out_of_core/out_of_core.c b/example/out_of_core/out_of_core.c
index 7f95bf6c5..cf468ad45 100644
--- a/example/out_of_core/out_of_core.c
+++ b/example/out_of_core/out_of_core.c
@@ -112,7 +112,7 @@ int main(int argc, char *argv[]) {
                       NB, NB,  NB*NB, N, N, 0, 0, N, N, 1, 1);
 
     /* generate A matrix with random values such that it is spd */
-    MORSE_dplgsy_Tile( (double)N, descA, 51 );
+    MORSE_dplgsy_Tile( (double)N, MorseUpperLower, descA, 51 );
 
     /* generate RHS */
     MORSE_dplrnt_Tile( descB, 5673 );
diff --git a/include/morse_z.h b/include/morse_z.h
index aa9b0c7f1..8335b8925 100644
--- a/include/morse_z.h
+++ b/include/morse_z.h
@@ -86,11 +86,9 @@ int MORSE_zlaset(MORSE_enum uplo, int M, int N, MORSE_Complex64_t alpha, MORSE_C
 //int MORSE_zlaswpc(int N, MORSE_Complex64_t *A, int LDA, int K1, int K2, int *IPIV, int INCX);
 int MORSE_zlauum(MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA);
 #ifdef COMPLEX
-int MORSE_zplghe( double bump, int N, MORSE_Complex64_t *A, int LDA, unsigned long long int seed );
-int MORSE_zplghe2( double bump, int N, MORSE_Complex64_t *A, int LDA, unsigned long long int seed, MORSE_enum uplo );
+int MORSE_zplghe( double bump, MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA, unsigned long long int seed );
 #endif
-int MORSE_zplgsy( MORSE_Complex64_t bump, int N, MORSE_Complex64_t *A, int LDA, unsigned long long int seed );
-int MORSE_zplgsy2( MORSE_Complex64_t bump, int N, MORSE_Complex64_t *A, int LDA, unsigned long long int seed, MORSE_enum uplo );
+int MORSE_zplgsy( MORSE_Complex64_t bump, MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA, unsigned long long int seed );
 int MORSE_zplrnt( int M, int N, MORSE_Complex64_t *A, int LDA, unsigned long long int seed );
 int MORSE_zposv(MORSE_enum uplo, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB);
 int MORSE_zpotrf(MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA);
@@ -164,11 +162,9 @@ int MORSE_zlaset_Tile(MORSE_enum uplo, MORSE_Complex64_t alpha, MORSE_Complex64_
 //int MORSE_zlaswpc_Tile(MORSE_desc_t *A, int K1, int K2, int *IPIV, int INCX);
 int MORSE_zlauum_Tile(MORSE_enum uplo, MORSE_desc_t *A);
 #ifdef COMPLEX
-int MORSE_zplghe_Tile(double bump, MORSE_desc_t *A, unsigned long long int seed );
-int MORSE_zplghe2_Tile(double bump, MORSE_desc_t *A, unsigned long long int seed, MORSE_enum uplo);
+int MORSE_zplghe_Tile(double bump, MORSE_enum uplo, MORSE_desc_t *A, unsigned long long int seed );
 #endif
-int MORSE_zplgsy_Tile(MORSE_Complex64_t bump, MORSE_desc_t *A, unsigned long long int seed );
-int MORSE_zplgsy2_Tile(MORSE_Complex64_t bump, MORSE_desc_t *A, unsigned long long int seed, MORSE_enum uplo );
+int MORSE_zplgsy_Tile(MORSE_Complex64_t bump, MORSE_enum uplo, MORSE_desc_t *A, unsigned long long int seed );
 int MORSE_zplrnt_Tile(MORSE_desc_t *A, unsigned long long int seed );
 int MORSE_zposv_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B);
 int MORSE_zpotrf_Tile(MORSE_enum uplo, MORSE_desc_t *A);
@@ -239,11 +235,9 @@ int MORSE_zlaset_Tile_Async(MORSE_enum uplo, MORSE_Complex64_t alpha, MORSE_Comp
 //int MORSE_zlaswpc_Tile_Async(MORSE_desc_t *A, int K1, int K2, int *IPIV, int INCX, MORSE_sequence_t *sequence, MORSE_request_t *request);
 int MORSE_zlauum_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
 #ifdef COMPLEX
-int MORSE_zplghe_Tile_Async(double bump, MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request );
-int MORSE_zplghe2_Tile_Async(double bump, MORSE_desc_t *A, unsigned long long int seed, MORSE_enum uplo, MORSE_sequence_t *sequence, MORSE_request_t *request );
+int MORSE_zplghe_Tile_Async(double bump, MORSE_enum uplo, MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request );
 #endif
-int MORSE_zplgsy_Tile_Async(MORSE_Complex64_t bump, MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request );
-int MORSE_zplgsy2_Tile_Async(MORSE_Complex64_t bump, MORSE_desc_t *A, unsigned long long int seed, MORSE_enum uplo, MORSE_sequence_t *sequence, MORSE_request_t *request );
+int MORSE_zplgsy_Tile_Async(MORSE_Complex64_t bump, MORSE_enum uplo, MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request );
 int MORSE_zplrnt_Tile_Async(MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request );
 int MORSE_zposv_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request);
 int MORSE_zpotrf_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request);
diff --git a/testing/testing_zhemm.c b/testing/testing_zhemm.c
index 83f4927e5..c0659d888 100644
--- a/testing/testing_zhemm.c
+++ b/testing/testing_zhemm.c
@@ -102,7 +102,7 @@ int testing_zhemm(int argc, char **argv)
     */
 
     /* Initialize A */
-    MORSE_zplghe( (double)0., MNmax, A, LDA, 51 );
+    MORSE_zplghe( (double)0., MorseUpperLower, MNmax, A, LDA, 51 );
 
     /* Initialize B */
     LAPACKE_zlarnv_work(IONE, ISEED, LDBxN, B);
diff --git a/testing/testing_zher2k.c b/testing/testing_zher2k.c
index 117150f82..750622248 100644
--- a/testing/testing_zher2k.c
+++ b/testing/testing_zher2k.c
@@ -107,7 +107,7 @@ int testing_zher2k(int argc, char **argv)
     LAPACKE_zlarnv_work(IONE, ISEED, LDBxK, B);
 
     /* Initialize C */
-    MORSE_zplghe( (double)0., N, C, LDC, 51 );
+    MORSE_zplghe( (double)0., MorseUpperLower, N, C, LDC, 51 );
 
     for (u=0; u<2; u++) {
         for (t=0; t<3; t++) {
diff --git a/testing/testing_zherk.c b/testing/testing_zherk.c
index a3aeb4820..5805e00ea 100644
--- a/testing/testing_zherk.c
+++ b/testing/testing_zherk.c
@@ -101,7 +101,7 @@ int testing_zherk(int argc, char **argv)
     LAPACKE_zlarnv_work(IONE, ISEED, LDAxK, A);
 
     /* Initialize C */
-    MORSE_zplgsy( (double)0., N, C, LDC, 51 );
+    MORSE_zplgsy( (double)0., MorseUpperLower, N, C, LDC, 51 );
 
     for (u=0; u<2; u++) {
         for (t=0; t<3; t++) {
diff --git a/testing/testing_zposv.c b/testing/testing_zposv.c
index e439f0957..f7fc89af6 100644
--- a/testing/testing_zposv.c
+++ b/testing/testing_zposv.c
@@ -210,8 +210,8 @@ int testing_zposv(int argc, char **argv)
     *  TESTING ZPOSV
     */
 
-    /* Initialize A1 and A2 for Symmetric Positif Matrix */
-    MORSE_zplghe( (double)N, N, A1, LDA, 51 );
+    /* Initialize A1 and A2 for Symmetric Positive Matrix */
+    MORSE_zplghe( (double)N, MorseUpperLower, N, A1, LDA, 51 );
     MORSE_zlacpy( MorseUpperLower, N, N, A1, LDA, A2, LDA );
 
     /* Initialize B1 and B2 */
@@ -250,7 +250,7 @@ int testing_zposv(int argc, char **argv)
     */
 
     /* Initialize A1 and A2 for Symmetric Positif Matrix */
-    MORSE_zplghe( (double)N, N, A1, LDA, 51 );
+    MORSE_zplghe( (double)N, MorseUpperLower, N, A1, LDA, 51 );
     MORSE_zlacpy( MorseUpperLower, N, N, A1, LDA, A2, LDA );
 
     /* Initialize B1 and B2 */
@@ -290,7 +290,7 @@ int testing_zposv(int argc, char **argv)
     */
 
     /* Initialize A1 and A2 for Symmetric Positif Matrix */
-    MORSE_zplghe( (double)N, N, A1, LDA, 51 );
+    MORSE_zplghe( (double)N, MorseUpperLower, N, A1, LDA, 51 );
     MORSE_zlacpy( MorseUpperLower, N, N, A1, LDA, A2, LDA );
 
     /* Initialize B1 and B2 */
diff --git a/testing/testing_zpotri.c b/testing/testing_zpotri.c
index ec0c4991e..22c42b565 100644
--- a/testing/testing_zpotri.c
+++ b/testing/testing_zpotri.c
@@ -213,7 +213,7 @@ int testing_zpotri(int argc, char **argv)
     */
 
     /* Initialize A1 and A2 for Symmetric Positif Matrix */
-    MORSE_zplghe( (double)N, N, A1, LDA, 51 );
+    MORSE_zplghe( (double)N, MorseUpperLower, N, A1, LDA, 51 );
     MORSE_zlacpy( MorseUpperLower, N, N, A1, LDA, A2, LDA );
 
     printf("\n");
diff --git a/testing/testing_zsymm.c b/testing/testing_zsymm.c
index 54fb4b34d..ca66d4a43 100644
--- a/testing/testing_zsymm.c
+++ b/testing/testing_zsymm.c
@@ -102,7 +102,7 @@ int testing_zsymm(int argc, char **argv)
     */
 
     /* Initialize A */
-    MORSE_zplgsy( (double)0., MNmax, A, LDA, 51 );
+    MORSE_zplgsy( (double)0., MorseUpperLower, MNmax, A, LDA, 51 );
 
     /* Initialize B */
     LAPACKE_zlarnv_work(IONE, ISEED, LDBxN, B);
diff --git a/testing/testing_zsyr2k.c b/testing/testing_zsyr2k.c
index 1c440504a..366e9b1ad 100644
--- a/testing/testing_zsyr2k.c
+++ b/testing/testing_zsyr2k.c
@@ -107,7 +107,7 @@ int testing_zsyr2k(int argc, char **argv)
     LAPACKE_zlarnv_work(IONE, ISEED, LDBxK, B);
 
     /* Initialize C */
-    MORSE_zplgsy( (double)0., N, C, LDC, 51 );
+    MORSE_zplgsy( (double)0., MorseUpperLower, N, C, LDC, 51 );
 
     for (u=0; u<2; u++) {
         for (t=0; t<2; t++) {
diff --git a/testing/testing_zsyrk.c b/testing/testing_zsyrk.c
index 0db367d1d..1f63117cf 100644
--- a/testing/testing_zsyrk.c
+++ b/testing/testing_zsyrk.c
@@ -101,7 +101,7 @@ int testing_zsyrk(int argc, char **argv)
     LAPACKE_zlarnv_work(IONE, ISEED, LDAxK, A);
 
     /* Initialize C */
-    MORSE_zplgsy( (double)0., N, C, LDC, 51 );
+    MORSE_zplgsy( (double)0., MorseUpperLower, N, C, LDC, 51 );
 
     for (u=0; u<2; u++) {
         for (t=0; t<2; t++) {
diff --git a/timing/time_zposv.c b/timing/time_zposv.c
index 69b73daa0..979a2f530 100644
--- a/timing/time_zposv.c
+++ b/timing/time_zposv.c
@@ -38,7 +38,7 @@ RunTest(int *iparam, double *dparam, morse_time_t *t_)
     PASTE_CODE_ALLOCATE_MATRIX( X, 1, MORSE_Complex64_t, LDB, NRHS );
     
     /* Initialiaze Data */
-    MORSE_zplghe((double)N, N, A, LDA, 51 );
+    MORSE_zplghe((double)N, MorseUpperLower, N, A, LDA, 51 );
     MORSE_zplrnt( N, NRHS, X, LDB, 5673 );
 
     /* Save A and b  */
diff --git a/timing/time_zposv_tile.c b/timing/time_zposv_tile.c
index 0670620fa..205e06ae8 100644
--- a/timing/time_zposv_tile.c
+++ b/timing/time_zposv_tile.c
@@ -39,7 +39,7 @@ RunTest(int *iparam, double *dparam, morse_time_t *t_)
     PASTE_CODE_ALLOCATE_MATRIX_TILE( descB,  check, MORSE_Complex64_t, MorseComplexDouble, LDB, N, NRHS );
 
     /* Initialize AT and bT for Symmetric Positif Matrix */
-    MORSE_zplghe_Tile((double)N, descA, 51 );
+    MORSE_zplghe_Tile((double)N, MorseUpperLower, descA, 51 );
     MORSE_zplrnt_Tile( descX, 7732 );
 
     /* Save AT and bT for check */
diff --git a/timing/time_zpotrf.c b/timing/time_zpotrf.c
index 18ffaeebd..0f4d46619 100644
--- a/timing/time_zpotrf.c
+++ b/timing/time_zpotrf.c
@@ -37,7 +37,7 @@ RunTest(int *iparam, double *dparam, morse_time_t *t_)
     PASTE_CODE_ALLOCATE_MATRIX( A, 1, MORSE_Complex64_t, LDA, N );
 
     /* Initialiaze Data */
-    MORSE_zplghe( (double)N, N, A, LDA, 51 );
+    MORSE_zplghe( (double)N, MorseUpperLower, N, A, LDA, 51 );
 
     /* Save A and b  */
     PASTE_CODE_ALLOCATE_COPY( A2, check, MORSE_Complex64_t, A, LDA, N    );
diff --git a/timing/time_zpotrf_tile.c b/timing/time_zpotrf_tile.c
index 11dedafb3..14fdc32fc 100644
--- a/timing/time_zpotrf_tile.c
+++ b/timing/time_zpotrf_tile.c
@@ -37,7 +37,7 @@ RunTest(int *iparam, double *dparam, morse_time_t *t_)
     PASTE_CODE_ALLOCATE_MATRIX_TILE( descB,  check, MORSE_Complex64_t, MorseComplexDouble, LDB, N, NRHS );
     PASTE_CODE_ALLOCATE_MATRIX_TILE( descAC, check, MORSE_Complex64_t, MorseComplexDouble, LDA, N, N    );
     PASTE_CODE_ALLOCATE_MATRIX_TILE( descX,  check, MORSE_Complex64_t, MorseComplexDouble, LDB, N, NRHS );
-    MORSE_zplghe_Tile( (double)N, descA, 51 );
+    MORSE_zplghe_Tile( (double)N, MorseUpperLower, descA, 51 );
 
     /* Save A for check */
     if (check == 1){
diff --git a/timing/time_zpotri_tile.c b/timing/time_zpotri_tile.c
index 8941c0608..a8e8bcab4 100644
--- a/timing/time_zpotri_tile.c
+++ b/timing/time_zpotri_tile.c
@@ -42,7 +42,7 @@ RunTest(int *iparam, double *dparam, morse_time_t *t_)
      * It's done in static to avoid having the same sequence than one 
      * the function we want to trace
      */
-    MORSE_zplghe_Tile( (double)N, descA, 51 );
+    MORSE_zplghe_Tile( (double)N, MorseUpperLower, descA, 51 );
 
     /* MORSE ZPOTRF / ZTRTRI / ZLAUUM  */
     /*
diff --git a/timing/time_zpotrs_tile.c b/timing/time_zpotrs_tile.c
index bf7a813a1..c50e86b05 100644
--- a/timing/time_zpotrs_tile.c
+++ b/timing/time_zpotrs_tile.c
@@ -38,7 +38,7 @@ RunTest(int *iparam, double *dparam, morse_time_t *t_)
     PASTE_CODE_ALLOCATE_MATRIX_TILE( descB,  check, MORSE_Complex64_t, MorseComplexDouble, LDB, N, NRHS );
     PASTE_CODE_ALLOCATE_MATRIX_TILE( descAC, check, MORSE_Complex64_t, MorseComplexDouble, LDA, N, N    );
     PASTE_CODE_ALLOCATE_MATRIX_TILE( descX,  check, MORSE_Complex64_t, MorseComplexDouble, LDB, N, NRHS );
-    MORSE_zplghe_Tile( (double)N, descA, 51 );
+    MORSE_zplghe_Tile( (double)N, MorseUpperLower, descA, 51 );
 
     /* Save A for check */
     if (check == 1){
diff --git a/timing/time_zsytrf_tile.c b/timing/time_zsytrf_tile.c
index 26b9f0852..6c1d880ed 100644
--- a/timing/time_zsytrf_tile.c
+++ b/timing/time_zsytrf_tile.c
@@ -37,7 +37,7 @@ RunTest(int *iparam, double *dparam, morse_time_t *t_)
     PASTE_CODE_ALLOCATE_MATRIX_TILE( descB,  check, MORSE_Complex64_t, MorseComplexDouble, LDB, N, NRHS );
     PASTE_CODE_ALLOCATE_MATRIX_TILE( descAC, check, MORSE_Complex64_t, MorseComplexDouble, LDA, N, N    );
     PASTE_CODE_ALLOCATE_MATRIX_TILE( descX,  check, MORSE_Complex64_t, MorseComplexDouble, LDB, N, NRHS );
-    MORSE_zplgsy_Tile( (double)N, descA, 51 );
+    MORSE_zplgsy_Tile( (double)N, MorseUpperLower, descA, 51 );
 
     /* Save A for check */
     if (check == 1){
diff --git a/timing/time_ztrsm.c b/timing/time_ztrsm.c
index 0b579f4f6..1216bb197 100644
--- a/timing/time_ztrsm.c
+++ b/timing/time_ztrsm.c
@@ -39,7 +39,7 @@ RunTest(int *iparam, double *dparam, morse_time_t *t_)
     PASTE_CODE_ALLOCATE_MATRIX( B2, check, MORSE_Complex64_t, LDB, NRHS);
 
      /* Initialiaze Data */
-    MORSE_zplgsy( (MORSE_Complex64_t)N, N, A, LDA, 453 );
+    MORSE_zplgsy( (MORSE_Complex64_t)N, MorseUpperLower, N, A, LDA, 453 );
     MORSE_zplrnt( N, NRHS, B, LDB, 5673 );
     LAPACKE_zlarnv_work(1, ISEED, 1, &alpha);
     alpha = 10.; /*alpha * N  /  2.;*/
-- 
GitLab