From 03b4a34fc04ebe3101dd410a0845132462e1c2fd Mon Sep 17 00:00:00 2001
From: Mathieu Faverge <mathieu.faverge@inria.fr>
Date: Mon, 22 Jan 2018 16:51:47 +0100
Subject: [PATCH] Replace all zooplap2tile by new zlap2tile

---
 compute/zgeadd.c        |  8 ++++----
 compute/zgelqf.c        |  4 ++--
 compute/zgelqf_param.c  |  4 ++--
 compute/zgelqs.c        |  8 ++++----
 compute/zgelqs_param.c  |  8 ++++----
 compute/zgels.c         | 16 ++++++++--------
 compute/zgels_param.c   | 16 ++++++++--------
 compute/zgemm.c         | 12 ++++++------
 compute/zgeqrf.c        |  4 ++--
 compute/zgeqrf_param.c  |  4 ++--
 compute/zgeqrs.c        |  8 ++++----
 compute/zgeqrs_param.c  |  8 ++++----
 compute/zgesv_incpiv.c  |  8 ++++----
 compute/zgesv_nopiv.c   |  8 ++++----
 compute/zgesvd.c        |  4 ++--
 compute/zgetrf_incpiv.c |  4 ++--
 compute/zgetrf_nopiv.c  |  5 ++---
 compute/zgetrs_incpiv.c |  8 ++++----
 compute/zgetrs_nopiv.c  |  8 ++++----
 compute/zheevd.c        |  4 ++--
 compute/zhemm.c         | 12 ++++++------
 compute/zher2k.c        | 12 ++++++------
 compute/zherk.c         |  8 ++++----
 compute/zhetrd.c        |  4 ++--
 compute/zlacpy.c        |  8 ++++----
 compute/zlange.c        |  4 ++--
 compute/zlanhe.c        |  4 ++--
 compute/zlansy.c        |  4 ++--
 compute/zlantr.c        |  4 ++--
 compute/zlascal.c       |  4 ++--
 compute/zlaset.c        |  4 ++--
 compute/zlauum.c        |  4 ++--
 compute/zposv.c         |  8 ++++----
 compute/zpotri.c        |  4 ++--
 compute/zpotrimm.c      | 12 ++++++------
 compute/zpotrs.c        |  8 ++++----
 compute/zsymm.c         | 12 ++++++------
 compute/zsyr2k.c        | 12 ++++++------
 compute/zsyrk.c         |  8 ++++----
 compute/zsysv.c         |  8 ++++----
 compute/zsytrf.c        |  4 ++--
 compute/zsytrs.c        |  8 ++++----
 compute/ztpgqrt.c       | 22 ++++++++--------------
 compute/ztpqrt.c        |  8 ++++----
 compute/ztradd.c        |  8 ++++----
 compute/ztrmm.c         |  8 ++++----
 compute/ztrsm.c         |  8 ++++----
 compute/ztrsmpl.c       |  8 ++++----
 compute/ztrtri.c        |  4 ++--
 compute/zunglq.c        |  8 ++++----
 compute/zunglq_param.c  |  8 ++++----
 compute/zungqr.c        |  8 ++++----
 compute/zungqr_param.c  |  8 ++++----
 compute/zunmlq.c        |  8 ++++----
 compute/zunmlq_param.c  |  8 ++++----
 compute/zunmqr.c        |  8 ++++----
 compute/zunmqr_param.c  |  8 ++++----
 57 files changed, 214 insertions(+), 221 deletions(-)

diff --git a/compute/zgeadd.c b/compute/zgeadd.c
index b6e85b322..93e709dfd 100644
--- a/compute/zgeadd.c
+++ b/compute/zgeadd.c
@@ -154,10 +154,10 @@ int MORSE_zgeadd(MORSE_enum trans, int M, int N,
     morse_sequence_create(morse, &sequence);
 
     /* if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) { */
-        morse_zooplap2tile( descA, A, NB, NB, LDA, An, 0, 0, Am, An, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, An, Am, An, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, N, M, N, sequence, &request );
     /* } else { */
     /*     morse_ziplap2tile( descA, A, NB, NB, LDA, An, 0, 0, Am, An, */
     /*                         sequence, &request); */
diff --git a/compute/zgelqf.c b/compute/zgelqf.c
index 55b928483..4fb713c04 100644
--- a/compute/zgelqf.c
+++ b/compute/zgelqf.c
@@ -123,8 +123,8 @@ int MORSE_zgelqf(int M, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zgelqf_param.c b/compute/zgelqf_param.c
index d650ba8ad..1b0c5bf61 100644
--- a/compute/zgelqf_param.c
+++ b/compute/zgelqf_param.c
@@ -120,8 +120,8 @@ int MORSE_zgelqf_param(const libhqr_tree_t *qrtree, int M, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zgelqs.c b/compute/zgelqs.c
index 816bf9969..dde651c68 100644
--- a/compute/zgelqs.c
+++ b/compute/zgelqs.c
@@ -138,10 +138,10 @@ int MORSE_zgelqs(int M, int N, int NRHS,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N,    sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N, NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N,   */
 /*                            sequence, &request);*/
diff --git a/compute/zgelqs_param.c b/compute/zgelqs_param.c
index 2a93e3265..fc3d96ea6 100644
--- a/compute/zgelqs_param.c
+++ b/compute/zgelqs_param.c
@@ -140,10 +140,10 @@ int MORSE_zgelqs_param(const libhqr_tree_t *qrtree, int M, int N, int NRHS,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N,    sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N, NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N,   */
 /*                            sequence, &request);*/
diff --git a/compute/zgels.c b/compute/zgels.c
index 7b6392f4c..a12abd3ca 100644
--- a/compute/zgels.c
+++ b/compute/zgels.c
@@ -173,10 +173,10 @@ int MORSE_zgels(MORSE_enum trans, int M, int N, int NRHS,
 
     if ( M >= N ) {
 /*        if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-            morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N, sequence, &request,
-                                 morse_desc_mat_free(&(descA)) );
-            morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, M, NRHS, sequence, &request,
-                                 morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, M, NRHS, sequence, &request );
 /*        } else {*/
 /*            morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N,*/
 /*                                sequence, &request);*/
@@ -185,10 +185,10 @@ int MORSE_zgels(MORSE_enum trans, int M, int N, int NRHS,
 /*        }*/
     } else {
 /*        if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-            morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N, sequence, &request,
-                                 morse_desc_mat_free(&(descA)) );
-            morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request,
-                                 morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N, NRHS, sequence, &request );
 /*        } else {*/
 /*            morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N,*/
 /*                                sequence, &request);*/
diff --git a/compute/zgels_param.c b/compute/zgels_param.c
index 9e91871be..26d4ae18a 100644
--- a/compute/zgels_param.c
+++ b/compute/zgels_param.c
@@ -175,10 +175,10 @@ int MORSE_zgels_param(const libhqr_tree_t *qrtree, MORSE_enum trans, int M, int
 
     if ( M >= N ) {
         /*        if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N, sequence, &request,
-                            morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, M, NRHS, sequence, &request,
-                            morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, M, NRHS, sequence, &request );
         /*        } else {*/
         /*            morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N,*/
         /*                                sequence, &request);*/
@@ -187,10 +187,10 @@ int MORSE_zgels_param(const libhqr_tree_t *qrtree, MORSE_enum trans, int M, int
         /*        }*/
     } else {
         /*        if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N, sequence, &request,
-                            morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request,
-                            morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N, NRHS, sequence, &request );
         /*        } else {*/
         /*            morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N,*/
         /*                                sequence, &request);*/
diff --git a/compute/zgemm.c b/compute/zgemm.c
index 332b54006..7d5fd72bd 100644
--- a/compute/zgemm.c
+++ b/compute/zgemm.c
@@ -211,12 +211,12 @@ int MORSE_zgemm(MORSE_enum transA, MORSE_enum transB, int M, int N, int K,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, An, 0, 0, Am, An, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, Bn, 0, 0, Bm, Bn, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
-        morse_zooplap2tile( descC, C, NB, NB, LDC, N,  0, 0, M,  N,  sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)); morse_desc_mat_free(&(descC)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, An, Am, An, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, Bn, Bm, Bn, sequence, &request );
+    morse_zlap2tile( morse, &descCl, &descCt, MorseUpperLower,
+                     C, NB, NB, LDC, N, M,  N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, An, 0, 0, Am, An, */
 /*                            sequence, &request);*/
diff --git a/compute/zgeqrf.c b/compute/zgeqrf.c
index 5e500472b..08604a843 100644
--- a/compute/zgeqrf.c
+++ b/compute/zgeqrf.c
@@ -122,8 +122,8 @@ int MORSE_zgeqrf(int M, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zgeqrf_param.c b/compute/zgeqrf_param.c
index a67f508db..4e1dbb612 100644
--- a/compute/zgeqrf_param.c
+++ b/compute/zgeqrf_param.c
@@ -125,8 +125,8 @@ int MORSE_zgeqrf_param(const libhqr_tree_t *qrtree, int M, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zgeqrs.c b/compute/zgeqrs.c
index 29b962f4f..615c1513a 100644
--- a/compute/zgeqrs.c
+++ b/compute/zgeqrs.c
@@ -138,10 +138,10 @@ int MORSE_zgeqrs(int M, int N, int NRHS,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N,    sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, M, NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, M, NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N,   */
 /*                            sequence, &request);*/
diff --git a/compute/zgeqrs_param.c b/compute/zgeqrs_param.c
index 6e6cb28b3..c14ee32b0 100644
--- a/compute/zgeqrs_param.c
+++ b/compute/zgeqrs_param.c
@@ -133,10 +133,10 @@ int MORSE_zgeqrs_param(const libhqr_tree_t *qrtree, int M, int N, int NRHS,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N,    sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, M, NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, M, NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, M, N,   */
 /*                            sequence, &request);*/
diff --git a/compute/zgesv_incpiv.c b/compute/zgesv_incpiv.c
index ca0ca1e6a..f1431c24e 100644
--- a/compute/zgesv_incpiv.c
+++ b/compute/zgesv_incpiv.c
@@ -137,10 +137,10 @@ int MORSE_zgesv_incpiv(int N, int NRHS,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,    sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N, NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,   */
 /*                            sequence, &request);*/
diff --git a/compute/zgesv_nopiv.c b/compute/zgesv_nopiv.c
index bc0d9bdf9..97a540d58 100644
--- a/compute/zgesv_nopiv.c
+++ b/compute/zgesv_nopiv.c
@@ -136,10 +136,10 @@ int MORSE_zgesv_nopiv(int N, int NRHS,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,    sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N, NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,   */
 /*                            sequence, &request);*/
diff --git a/compute/zgesvd.c b/compute/zgesvd.c
index 968c0a01b..7432a277f 100644
--- a/compute/zgesvd.c
+++ b/compute/zgesvd.c
@@ -215,8 +215,8 @@ int MORSE_zgesvd(MORSE_enum jobu, MORSE_enum jobvt,
     morse_sequence_create(morse, &sequence);
 
     /* if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) { */
-    morse_zooplap2tile( descA, A, NB, NB,  LDA, N, 0, 0, M, N, sequence, &request,
-                        morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB,  LDA, N, M, N, sequence, &request );
     /* } else { */
     /*     morse_ziplap2tile( descA,   A, NB, NB,  LDA, N, 0, 0, M, N, */
     /*                         sequence, &request); */
diff --git a/compute/zgetrf_incpiv.c b/compute/zgetrf_incpiv.c
index aaf96f147..243e7f70c 100644
--- a/compute/zgetrf_incpiv.c
+++ b/compute/zgetrf_incpiv.c
@@ -124,8 +124,8 @@ int MORSE_zgetrf_incpiv(int M, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zgetrf_nopiv.c b/compute/zgetrf_nopiv.c
index 5e56c4a8b..447ed24f5 100644
--- a/compute/zgetrf_nopiv.c
+++ b/compute/zgetrf_nopiv.c
@@ -117,9 +117,8 @@ int MORSE_zgetrf_nopiv(int M, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N,
-                             sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile(  descA, A, NB, NB, LDA, N, 0, 0, N, N,*/
 /*                             sequence, &request);*/
diff --git a/compute/zgetrs_incpiv.c b/compute/zgetrs_incpiv.c
index 195b0895d..d2a410344 100644
--- a/compute/zgetrs_incpiv.c
+++ b/compute/zgetrs_incpiv.c
@@ -143,10 +143,10 @@ int MORSE_zgetrs_incpiv(MORSE_enum trans, int N, int NRHS,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,    sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N, NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,   */
 /*                            sequence, &request);*/
diff --git a/compute/zgetrs_nopiv.c b/compute/zgetrs_nopiv.c
index f92c66abf..72af580ea 100644
--- a/compute/zgetrs_nopiv.c
+++ b/compute/zgetrs_nopiv.c
@@ -137,10 +137,10 @@ int MORSE_zgetrs_nopiv(MORSE_enum trans, int N, int NRHS,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,    sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N, NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,   */
 /*                            sequence, &request);*/
diff --git a/compute/zheevd.c b/compute/zheevd.c
index 8094b590b..864d50eb0 100644
--- a/compute/zheevd.c
+++ b/compute/zheevd.c
@@ -153,8 +153,8 @@ int MORSE_zheevd(MORSE_enum jobz, MORSE_enum uplo, int N,
     morse_sequence_create(morse, &sequence);
 
     /* if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) { */
-    morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N, sequence, &request,
-                        morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
     /* } else { */
     /*     morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N, */
     /*                         sequence, &requoest); */
diff --git a/compute/zhemm.c b/compute/zhemm.c
index 5b6b31852..1aa351cce 100644
--- a/compute/zhemm.c
+++ b/compute/zhemm.c
@@ -174,12 +174,12 @@ int MORSE_zhemm(MORSE_enum side, MORSE_enum uplo, int M, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, Am, 0, 0, Am, Am, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, N,  0, 0, M,  N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
-        morse_zooplap2tile( descC, C, NB, NB, LDC, N,  0, 0, M,  N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)); morse_desc_mat_free(&(descC)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, Am, Am, Am, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, N, M,  N, sequence, &request );
+    morse_zlap2tile( morse, &descCl, &descCt, MorseUpperLower,
+                     C, NB, NB, LDC, N, M,  N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, Am, 0, 0, Am, Am,*/
 /*                            sequence, &request);*/
diff --git a/compute/zher2k.c b/compute/zher2k.c
index e8f2e6d89..b75b27348 100644
--- a/compute/zher2k.c
+++ b/compute/zher2k.c
@@ -179,12 +179,12 @@ int MORSE_zher2k(MORSE_enum uplo, MORSE_enum trans, int N, int K,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, An, 0, 0, Am, An, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, An, 0, 0, Am, An, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
-        morse_zooplap2tile( descC, C, NB, NB, LDC, N,  0, 0, N,  N,   sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)); morse_desc_mat_free(&(descC)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, An, Am, An, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, An, Am, An, sequence, &request );
+    morse_zlap2tile( morse, &descCl, &descCt, MorseUpperLower,
+                     C, NB, NB, LDC, N, N,  N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, An, 0, 0, Am, An, */
 /*                            sequence, &request);*/
diff --git a/compute/zherk.c b/compute/zherk.c
index 6fbe72d55..47e0048d7 100644
--- a/compute/zherk.c
+++ b/compute/zherk.c
@@ -165,10 +165,10 @@ int MORSE_zherk(MORSE_enum uplo, MORSE_enum trans, int N, int K,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, An, 0, 0, Am, An, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descC, C, NB, NB, LDC, N,  0, 0, N,  N,   sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descC)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, An, Am, An, sequence, &request );
+    morse_zlap2tile( morse, &descCl, &descCt, MorseUpperLower,
+                     C, NB, NB, LDC, N, N,  N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, An, 0, 0, Am, An, */
 /*                            sequence, &request);*/
diff --git a/compute/zhetrd.c b/compute/zhetrd.c
index e69bce8a9..5bf4718f4 100644
--- a/compute/zhetrd.c
+++ b/compute/zhetrd.c
@@ -167,8 +167,8 @@ int MORSE_zhetrd(MORSE_enum jobz, MORSE_enum uplo, int N,
     morse_sequence_create(morse, &sequence);
 
     /* if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) { */
-    morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N, sequence, &request,
-                        morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
     /* } else { */
     /*     morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N, */
     /*                         sequence, &request); */
diff --git a/compute/zlacpy.c b/compute/zlacpy.c
index 308844270..9d7ca0785 100644
--- a/compute/zlacpy.c
+++ b/compute/zlacpy.c
@@ -131,10 +131,10 @@ int MORSE_zlacpy(MORSE_enum uplo, int M, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile(  descA, A, NB, NB, LDA, N, 0, 0, M, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zlange.c b/compute/zlange.c
index 82831613f..1ab8a57ec 100644
--- a/compute/zlange.c
+++ b/compute/zlange.c
@@ -135,8 +135,8 @@ double MORSE_zlange(MORSE_enum norm, int M, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-    morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N, sequence, &request,
-                        morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile(  descA, A, NB, NB, LDA, N, 0, 0, M, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zlanhe.c b/compute/zlanhe.c
index e666221ac..673352709 100644
--- a/compute/zlanhe.c
+++ b/compute/zlanhe.c
@@ -135,8 +135,8 @@ double MORSE_zlanhe(MORSE_enum norm, MORSE_enum uplo, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile(  descA, A, NB, NB, LDA, N, 0, 0, N, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zlansy.c b/compute/zlansy.c
index 35df4fc89..4186a9561 100644
--- a/compute/zlansy.c
+++ b/compute/zlansy.c
@@ -135,8 +135,8 @@ double MORSE_zlansy(MORSE_enum norm, MORSE_enum uplo, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile(  descA, A, NB, NB, LDA, N, 0, 0, N, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zlantr.c b/compute/zlantr.c
index 3f5e8f1ed..bf288ccf3 100644
--- a/compute/zlantr.c
+++ b/compute/zlantr.c
@@ -155,8 +155,8 @@ double MORSE_zlantr(MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile(  descA, A, NB, NB, LDA, N, 0, 0, M, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zlascal.c b/compute/zlascal.c
index c86ca1da0..1ceb1ad8c 100644
--- a/compute/zlascal.c
+++ b/compute/zlascal.c
@@ -114,8 +114,8 @@ int MORSE_zlascal(MORSE_enum uplo, int M, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N , 0, 0, M, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zlaset.c b/compute/zlaset.c
index fab26797f..c9e404994 100644
--- a/compute/zlaset.c
+++ b/compute/zlaset.c
@@ -128,8 +128,8 @@ int MORSE_zlaset(MORSE_enum uplo, int M, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile(  descA, A, NB, NB, LDA, N, 0, 0, M, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zlauum.c b/compute/zlauum.c
index 8ef3f032d..0102c3269 100644
--- a/compute/zlauum.c
+++ b/compute/zlauum.c
@@ -122,8 +122,8 @@ int MORSE_zlauum(MORSE_enum uplo, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile(  descA, A, NB, NB, LDA, N, 0, 0, N, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zposv.c b/compute/zposv.c
index 5fe1ab279..49af7c7e8 100644
--- a/compute/zposv.c
+++ b/compute/zposv.c
@@ -150,10 +150,10 @@ int MORSE_zposv(MORSE_enum uplo, int N, int NRHS,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,    sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N, NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,   */
 /*                            sequence, &request);*/
diff --git a/compute/zpotri.c b/compute/zpotri.c
index 801f077cc..d7456beb8 100644
--- a/compute/zpotri.c
+++ b/compute/zpotri.c
@@ -119,8 +119,8 @@ int MORSE_zpotri(MORSE_enum uplo, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile(  descA, A, NB, NB, LDA, N, 0, 0, N, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zpotrimm.c b/compute/zpotrimm.c
index 180725746..bd12cb16a 100644
--- a/compute/zpotrimm.c
+++ b/compute/zpotrimm.c
@@ -129,12 +129,12 @@ int MORSE_zpotrimm(MORSE_enum uplo, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, N, 0, 0, N, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
-        morse_zooplap2tile( descC, C, NB, NB, LDC, N, 0, 0, N, N,  sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)); morse_desc_mat_free(&(descC)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, N, N, N, sequence, &request );
+    morse_zlap2tile( morse, &descCl, &descCt, MorseUpperLower,
+                     C, NB, NB, LDC, N, N, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile(  descA, A, NB, NB, LDA, N, 0, 0, N, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zpotrs.c b/compute/zpotrs.c
index 0494b6884..79cbe0d6e 100644
--- a/compute/zpotrs.c
+++ b/compute/zpotrs.c
@@ -134,10 +134,10 @@ int MORSE_zpotrs(MORSE_enum uplo, int N, int NRHS,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,    sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N, NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,   */
 /*                            sequence, &request);*/
diff --git a/compute/zsymm.c b/compute/zsymm.c
index 344f04da6..34aedb00e 100644
--- a/compute/zsymm.c
+++ b/compute/zsymm.c
@@ -174,12 +174,12 @@ int MORSE_zsymm(MORSE_enum side, MORSE_enum uplo, int M, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, Am, 0, 0, Am, Am, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, N,  0, 0, M,  N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
-        morse_zooplap2tile( descC, C, NB, NB, LDC, N,  0, 0, M,  N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)); morse_desc_mat_free(&(descC)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, Am, Am, Am, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, N, M,  N, sequence, &request );
+    morse_zlap2tile( morse, &descCl, &descCt, MorseUpperLower,
+                     C, NB, NB, LDC, N, M,  N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, Am, 0, 0, Am, Am,*/
 /*                            sequence, &request);*/
diff --git a/compute/zsyr2k.c b/compute/zsyr2k.c
index 50c9b234e..dbc9ec1ed 100644
--- a/compute/zsyr2k.c
+++ b/compute/zsyr2k.c
@@ -179,12 +179,12 @@ int MORSE_zsyr2k(MORSE_enum uplo, MORSE_enum trans, int N, int K,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, An, 0, 0, Am, An, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, An, 0, 0, Am, An, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
-        morse_zooplap2tile( descC, C, NB, NB, LDC, N,  0, 0, N,  N,   sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)); morse_desc_mat_free(&(descC)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, An, Am, An, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, An, Am, An, sequence, &request );
+    morse_zlap2tile( morse, &descCl, &descCt, MorseUpperLower,
+                     C, NB, NB, LDC, N, N,  N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, An, 0, 0, Am, An, */
 /*                            sequence, &request);*/
diff --git a/compute/zsyrk.c b/compute/zsyrk.c
index 4b29d6b7f..16383776e 100644
--- a/compute/zsyrk.c
+++ b/compute/zsyrk.c
@@ -165,10 +165,10 @@ int MORSE_zsyrk(MORSE_enum uplo, MORSE_enum trans, int N, int K,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, An, 0, 0, Am, An, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descC, C, NB, NB, LDC, N,  0, 0, N,  N,   sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descC)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, An, Am, An, sequence, &request );
+    morse_zlap2tile( morse, &descCl, &descCt, MorseUpperLower,
+                     C, NB, NB, LDC, N, N,  N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, An, 0, 0, Am, An, */
 /*                            sequence, &request);*/
diff --git a/compute/zsysv.c b/compute/zsysv.c
index d39bda8bf..f2419e6bb 100644
--- a/compute/zsysv.c
+++ b/compute/zsysv.c
@@ -147,10 +147,10 @@ int MORSE_zsysv(MORSE_enum uplo, int N, int NRHS,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,    sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N, NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,   */
 /*                            sequence, &request);*/
diff --git a/compute/zsytrf.c b/compute/zsytrf.c
index c2e3eeead..a902fabdf 100644
--- a/compute/zsytrf.c
+++ b/compute/zsytrf.c
@@ -123,8 +123,8 @@ int MORSE_zsytrf(MORSE_enum uplo, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zsytrs.c b/compute/zsytrs.c
index df6f7d9de..7649dd6eb 100644
--- a/compute/zsytrs.c
+++ b/compute/zsytrs.c
@@ -133,10 +133,10 @@ int MORSE_zsytrs(MORSE_enum uplo, int N, int NRHS,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,    sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N, NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,   */
 /*                            sequence, &request);*/
diff --git a/compute/ztpgqrt.c b/compute/ztpgqrt.c
index bf6fee28d..4942e0d2f 100644
--- a/compute/ztpgqrt.c
+++ b/compute/ztpgqrt.c
@@ -208,20 +208,14 @@ int MORSE_ztpgqrt( int M, int N, int K, int L,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descV1, V1, NB, NB, LDV1, K, 0, 0, M, K, sequence, &request,
-                            morse_desc_mat_free(&(descV1)) );
-        morse_zooplap2tile( descV2, V2, NB, NB, LDV2, K, 0, 0, M, K, sequence, &request,
-                            (morse_desc_mat_free(&(descV1)),
-                             morse_desc_mat_free(&(descV2))) );
-        morse_zooplap2tile( descQ1, Q1, NB, NB, LDQ1, N, 0, 0, K, N, sequence, &request,
-                            (morse_desc_mat_free(&(descV1)),
-                             morse_desc_mat_free(&(descV2)),
-                             morse_desc_mat_free(&(descQ1))) );
-        morse_zooplap2tile( descQ2, Q2, NB, NB, LDQ2, N, 0, 0, M, N, sequence, &request,
-                            (morse_desc_mat_free(&(descV1)),
-                             morse_desc_mat_free(&(descV2)),
-                             morse_desc_mat_free(&(descQ1)),
-                             morse_desc_mat_free(&(descQ2))) );
+    morse_zlap2tile( morse, &descV1l, &descV1t, MorseUpperLower,
+                     V1, NB, NB, LDV1, K, M, K, sequence, &request );
+    morse_zlap2tile( morse, &descV2l, &descV2t, MorseUpperLower,
+                     V2, NB, NB, LDV2, K, M, K, sequence, &request );
+    morse_zlap2tile( morse, &descQ1l, &descQ1t, MorseUpperLower,
+                     Q1, NB, NB, LDQ1, N, K, N, sequence, &request );
+    morse_zlap2tile( morse, &descQ2l, &descQ2t, MorseUpperLower,
+                     Q2, NB, NB, LDQ2, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descQ1, Q1, NB, NB, LDQ1, N, 0, 0, M, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/ztpqrt.c b/compute/ztpqrt.c
index 3298638e0..a80b0c911 100644
--- a/compute/ztpqrt.c
+++ b/compute/ztpqrt.c
@@ -186,10 +186,10 @@ int MORSE_ztpqrt( int M, int N, int L,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N, sequence, &request,
-                            morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, N, 0, 0, M, N, sequence, &request,
-                            (morse_desc_mat_free(&(descA)), morse_desc_mat_free(&(descB))) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/ztradd.c b/compute/ztradd.c
index 7bbf05f99..8deb69a60 100644
--- a/compute/ztradd.c
+++ b/compute/ztradd.c
@@ -164,10 +164,10 @@ int MORSE_ztradd(MORSE_enum uplo, MORSE_enum trans, int M, int N,
     morse_sequence_create(morse, &sequence);
 
     /* if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) { */
-        morse_zooplap2tile( descA, A, NB, NB, LDA, An, 0, 0, Am, An, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, An, Am, An, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, N, M, N, sequence, &request );
     /* } else { */
     /*     morse_ziplap2tile( descA, A, NB, NB, LDA, An, 0, 0, Am, An, */
     /*                         sequence, &request); */
diff --git a/compute/ztrmm.c b/compute/ztrmm.c
index 434621d6d..cf6a4b5df 100644
--- a/compute/ztrmm.c
+++ b/compute/ztrmm.c
@@ -178,10 +178,10 @@ int MORSE_ztrmm(MORSE_enum side, MORSE_enum uplo,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, NA,   0, 0, NA, NA,    sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N,  NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, NA, NA, NA, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N,  NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, NA,   0, 0, NA, NA,  */
 /*                            sequence, &request);*/
diff --git a/compute/ztrsm.c b/compute/ztrsm.c
index db4e89dec..10b239204 100644
--- a/compute/ztrsm.c
+++ b/compute/ztrsm.c
@@ -176,10 +176,10 @@ int MORSE_ztrsm(MORSE_enum side, MORSE_enum uplo,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, NA,   0, 0, NA, NA,   sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N,  NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, NA, NA, NA, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N,  NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, NA,   0, 0, NA, NA,  */
 /*                            sequence, &request);*/
diff --git a/compute/ztrsmpl.c b/compute/ztrsmpl.c
index 043983410..4666f2b87 100644
--- a/compute/ztrsmpl.c
+++ b/compute/ztrsmpl.c
@@ -131,10 +131,10 @@ int MORSE_ztrsmpl(int N, int NRHS,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,    sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
+    morse_zlap2tile( morse, &descBl, &descBt, MorseUpperLower,
+                     B, NB, NB, LDB, NRHS, N, NRHS, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N,    0, 0, N, N,   */
 /*                            sequence, &request);*/
diff --git a/compute/ztrtri.c b/compute/ztrtri.c
index 2f2d36c60..522fe747a 100644
--- a/compute/ztrtri.c
+++ b/compute/ztrtri.c
@@ -131,8 +131,8 @@ int MORSE_ztrtri(MORSE_enum uplo, MORSE_enum diag, int N,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, N, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, N, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile(  descA, A, NB, NB, LDA, N, 0, 0, N, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zunglq.c b/compute/zunglq.c
index 7ececcb75..73f6193e5 100644
--- a/compute/zunglq.c
+++ b/compute/zunglq.c
@@ -137,10 +137,10 @@ int MORSE_zunglq(int M, int N, int K,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, K, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descQ, Q, NB, NB, LDQ, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descQ)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, K, N, sequence, &request );
+    morse_zlap2tile( morse, &descQl, &descQt, MorseUpperLower,
+                     Q, NB, NB, LDQ, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, K, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zunglq_param.c b/compute/zunglq_param.c
index 5b6d30e60..5f1a5ee3f 100644
--- a/compute/zunglq_param.c
+++ b/compute/zunglq_param.c
@@ -134,10 +134,10 @@ int MORSE_zunglq_param(const libhqr_tree_t *qrtree, int M, int N, int K,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, K, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descQ, Q, NB, NB, LDQ, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descQ)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, K, N, sequence, &request );
+    morse_zlap2tile( morse, &descQl, &descQt, MorseUpperLower,
+                     Q, NB, NB, LDQ, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, K, N,*/
 /*                            sequence, &request);*/
diff --git a/compute/zungqr.c b/compute/zungqr.c
index 822dc4e56..b62905220 100644
--- a/compute/zungqr.c
+++ b/compute/zungqr.c
@@ -136,10 +136,10 @@ int MORSE_zungqr(int M, int N, int K,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, K, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descQ, Q, NB, NB, LDQ, N, 0, 0, M, N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descQ)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, K, sequence, &request );
+    morse_zlap2tile( morse, &descQl, &descQt, MorseUpperLower,
+                     Q, NB, NB, LDQ, N, M, N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, K,*/
 /*                            sequence, &request);*/
diff --git a/compute/zungqr_param.c b/compute/zungqr_param.c
index af88ea598..c99631434 100644
--- a/compute/zungqr_param.c
+++ b/compute/zungqr_param.c
@@ -135,10 +135,10 @@ int MORSE_zungqr_param(const libhqr_tree_t *qrtree,
     morse_sequence_create(morse, &sequence);
 
     /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-    morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, K, sequence, &request,
-                        morse_desc_mat_free(&(descA)) );
-    morse_zooplap2tile( descQ, Q, NB, NB, LDQ, N, 0, 0, M, N, sequence, &request,
-                        morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descQ)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, N, M, K, sequence, &request );
+    morse_zlap2tile( morse, &descQl, &descQt, MorseUpperLower,
+                     Q, NB, NB, LDQ, N, M, N, sequence, &request );
     /*    } else {*/
     /*        morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, K,*/
     /*                            sequence, &request);*/
diff --git a/compute/zunmlq.c b/compute/zunmlq.c
index 81535c19d..ba2f34e5d 100644
--- a/compute/zunmlq.c
+++ b/compute/zunmlq.c
@@ -174,10 +174,10 @@ int MORSE_zunmlq(MORSE_enum side, MORSE_enum trans, int M, int N, int K,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, An, 0, 0, K, An, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descC, C, NB, NB, LDC, N, 0, 0, M,  N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descC)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, An, K, An, sequence, &request );
+    morse_zlap2tile( morse, &descCl, &descCt, MorseUpperLower,
+                     C, NB, NB, LDC, N, M,  N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, An, 0, 0, K, An,*/
 /*                            sequence, &request);*/
diff --git a/compute/zunmlq_param.c b/compute/zunmlq_param.c
index b6f746d02..36da968cf 100644
--- a/compute/zunmlq_param.c
+++ b/compute/zunmlq_param.c
@@ -173,10 +173,10 @@ int MORSE_zunmlq_param(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_enum
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, An, 0, 0, K, An, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descC, C, NB, NB, LDC, N, 0, 0, M,  N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descC)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, An, K, An, sequence, &request );
+    morse_zlap2tile( morse, &descCl, &descCt, MorseUpperLower,
+                     C, NB, NB, LDC, N, M,  N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, An, 0, 0, K, An,*/
 /*                            sequence, &request);*/
diff --git a/compute/zunmqr.c b/compute/zunmqr.c
index 4464aaecb..6f8563d2e 100644
--- a/compute/zunmqr.c
+++ b/compute/zunmqr.c
@@ -177,10 +177,10 @@ int MORSE_zunmqr(MORSE_enum side, MORSE_enum trans, int M, int N, int K,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, K, 0, 0, Am, K, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descC, C, NB, NB, LDC, N, 0, 0, M,  N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descC)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, K, Am, K, sequence, &request );
+    morse_zlap2tile( morse, &descCl, &descCt, MorseUpperLower,
+                     C, NB, NB, LDC, N, M,  N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, K, 0, 0, Am, K,*/
 /*                            sequence, &request);*/
diff --git a/compute/zunmqr_param.c b/compute/zunmqr_param.c
index d285caabf..510115624 100644
--- a/compute/zunmqr_param.c
+++ b/compute/zunmqr_param.c
@@ -178,10 +178,10 @@ int MORSE_zunmqr_param(const libhqr_tree_t *qrtree,
     morse_sequence_create(morse, &sequence);
 
 /*    if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/
-        morse_zooplap2tile( descA, A, NB, NB, LDA, K, 0, 0, Am, K, sequence, &request,
-                             morse_desc_mat_free(&(descA)) );
-        morse_zooplap2tile( descC, C, NB, NB, LDC, N, 0, 0, M,  N, sequence, &request,
-                             morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descC)));
+    morse_zlap2tile( morse, &descAl, &descAt, MorseUpperLower,
+                     A, NB, NB, LDA, K, Am, K, sequence, &request );
+    morse_zlap2tile( morse, &descCl, &descCt, MorseUpperLower,
+                     C, NB, NB, LDC, N, M,  N, sequence, &request );
 /*    } else {*/
 /*        morse_ziplap2tile( descA, A, NB, NB, LDA, K, 0, 0, Am, K,*/
 /*                            sequence, &request);*/
-- 
GitLab