From 6a341c23bd00b138f09bc582972733cec524be28 Mon Sep 17 00:00:00 2001
From: Mathieu Faverge <mathieu.faverge@inria.fr>
Date: Mon, 22 Jan 2018 19:22:46 +0100
Subject: [PATCH] Replace the tile2lap

---
 compute/zbuild.c        |  7 ++++++-
 compute/zgeadd.c        |  6 +++++-
 compute/zgelqf.c        |  6 +++++-
 compute/zgelqf_param.c  |  6 +++++-
 compute/zgelqs.c        |  9 +++++++--
 compute/zgelqs_param.c  |  9 +++++++--
 compute/zgels.c         |  9 +++++++--
 compute/zgels_param.c   |  9 +++++++--
 compute/zgemm.c         |  6 +++++-
 compute/zgeqrf.c        |  6 +++++-
 compute/zgeqrf_param.c  |  6 +++++-
 compute/zgeqrs.c        |  9 +++++++--
 compute/zgeqrs_param.c  |  9 +++++++--
 compute/zgesv_incpiv.c  |  9 +++++++--
 compute/zgesv_nopiv.c   |  9 +++++++--
 compute/zgesvd.c        |  9 ++++++++-
 compute/zgetrf_incpiv.c |  6 +++++-
 compute/zgetrf_nopiv.c  |  6 +++++-
 compute/zgetrs_incpiv.c |  6 +++++-
 compute/zgetrs_nopiv.c  |  6 +++++-
 compute/zheevd.c        |  7 +++++--
 compute/zhemm.c         |  6 +++++-
 compute/zher2k.c        |  6 +++++-
 compute/zherk.c         |  6 +++++-
 compute/zhetrd.c        |  8 +++++++-
 compute/zlacpy.c        |  7 ++++++-
 compute/zlange.c        |  7 ++++++-
 compute/zlanhe.c        |  7 ++++++-
 compute/zlansy.c        |  4 ++++
 compute/zlantr.c        |  4 ++++
 compute/zlascal.c       |  3 ++-
 compute/zlaset.c        |  4 ++++
 compute/zlauum.c        |  6 +++++-
 compute/zplghe.c        |  7 ++++++-
 compute/zplgsy.c        |  7 ++++++-
 compute/zplrnt.c        |  7 ++++++-
 compute/zposv.c         |  9 +++++++--
 compute/zpotrf.c        |  5 +++--
 compute/zpotri.c        |  6 +++++-
 compute/zpotrimm.c      | 12 +++++++++---
 compute/zpotrs.c        |  6 +++++-
 compute/zsymm.c         |  6 +++++-
 compute/zsyr2k.c        |  6 +++++-
 compute/zsyrk.c         |  6 +++++-
 compute/zsysv.c         |  9 +++++++--
 compute/zsytrf.c        |  6 +++++-
 compute/zsytrs.c        |  6 +++++-
 compute/ztpgqrt.c       |  9 +++++++--
 compute/ztpqrt.c        |  9 +++++++--
 compute/ztradd.c        |  6 +++++-
 compute/ztrmm.c         |  6 +++++-
 compute/ztrsm.c         |  6 +++++-
 compute/ztrsmpl.c       |  6 +++++-
 compute/ztrtri.c        |  6 +++++-
 compute/zunglq.c        |  6 +++++-
 compute/zunglq_param.c  |  6 +++++-
 compute/zungqr.c        |  6 +++++-
 compute/zungqr_param.c  |  6 +++++-
 compute/zunmlq.c        |  6 +++++-
 compute/zunmlq_param.c  |  6 +++++-
 compute/zunmqr.c        |  6 +++++-
 compute/zunmqr_param.c  |  6 +++++-
 control/compute_z.h     | 11 +++++------
 63 files changed, 347 insertions(+), 81 deletions(-)

diff --git a/compute/zbuild.c b/compute/zbuild.c
index 71fadaac9..24e03410e 100644
--- a/compute/zbuild.c
+++ b/compute/zbuild.c
@@ -130,8 +130,11 @@ int MORSE_zbuild( MORSE_enum uplo, int M, int N,
     /* Call the tile interface */
     MORSE_zbuild_Tile_Async(uplo, &descA, user_data, user_build_callback, sequence, &request );
 
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -197,7 +200,9 @@ int MORSE_zbuild_Tile( MORSE_enum uplo, MORSE_desc_t *A,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zbuild_Tile_Async( uplo, A, user_data, user_build_callback, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
     return status;
diff --git a/compute/zgeadd.c b/compute/zgeadd.c
index fc18ca2d3..501e5e42e 100644
--- a/compute/zgeadd.c
+++ b/compute/zgeadd.c
@@ -164,8 +164,11 @@ int MORSE_zgeadd(MORSE_enum trans, int M, int N,
         trans, alpha, &descA, beta, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap( descB, B, NB, NB, LDB, N,  sequence, &request);
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -240,6 +243,7 @@ int MORSE_zgeadd_Tile(MORSE_enum trans,
     MORSE_zgeadd_Tile_Async(trans, alpha, A, beta, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgelqf.c b/compute/zgelqf.c
index 191ae7a0f..6047b801e 100644
--- a/compute/zgelqf.c
+++ b/compute/zgelqf.c
@@ -130,8 +130,11 @@ int MORSE_zgelqf(int M, int N,
     MORSE_zgelqf_Tile_Async(&descA, descT, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -193,6 +196,7 @@ int MORSE_zgelqf_Tile(MORSE_desc_t *A, MORSE_desc_t *T)
     morse_sequence_create(morse, &sequence);
     MORSE_zgelqf_Tile_Async(A, T, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgelqf_param.c b/compute/zgelqf_param.c
index 270dba3ba..2c90ef470 100644
--- a/compute/zgelqf_param.c
+++ b/compute/zgelqf_param.c
@@ -127,8 +127,11 @@ int MORSE_zgelqf_param(const libhqr_tree_t *qrtree, int M, int N,
     MORSE_zgelqf_param_Tile_Async(qrtree, &descA, descTS, descTT, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -190,6 +193,7 @@ int MORSE_zgelqf_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     morse_sequence_create(morse, &sequence);
     MORSE_zgelqf_param_Tile_Async(qrtree, A, TS, TT, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgelqs.c b/compute/zgelqs.c
index 124188a51..290a3627a 100644
--- a/compute/zgelqs.c
+++ b/compute/zgelqs.c
@@ -147,9 +147,13 @@ int MORSE_zgelqs(int M, int N, int NRHS,
     MORSE_zgelqs_Tile_Async(&descA, descT, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -213,6 +217,7 @@ int MORSE_zgelqs_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B)
     MORSE_zgelqs_Tile_Async(A, T, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgelqs_param.c b/compute/zgelqs_param.c
index 0a03c9cbf..e2efe30d1 100644
--- a/compute/zgelqs_param.c
+++ b/compute/zgelqs_param.c
@@ -149,9 +149,13 @@ int MORSE_zgelqs_param(const libhqr_tree_t *qrtree, int M, int N, int NRHS,
     MORSE_zgelqs_param_Tile_Async(qrtree, &descA, descTS, descTT, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -218,6 +222,7 @@ int MORSE_zgelqs_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     MORSE_zgelqs_param_Tile_Async(qrtree, A, TS, TT, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgels.c b/compute/zgels.c
index 33d50af97..885d1e3de 100644
--- a/compute/zgels.c
+++ b/compute/zgels.c
@@ -189,9 +189,13 @@ int MORSE_zgels(MORSE_enum trans, int M, int N, int NRHS,
     MORSE_zgels_Tile_Async(MorseNoTrans, &descA, descT, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -271,6 +275,7 @@ int MORSE_zgels_Tile(MORSE_enum trans, MORSE_desc_t *A,
     MORSE_zgels_Tile_Async(trans, A, T, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgels_param.c b/compute/zgels_param.c
index 733eeed65..ee5d6640b 100644
--- a/compute/zgels_param.c
+++ b/compute/zgels_param.c
@@ -190,9 +190,13 @@ int MORSE_zgels_param(const libhqr_tree_t *qrtree, MORSE_enum trans, int M, int
     MORSE_zgels_param_Tile_Async(qrtree, MorseNoTrans, &descA, descTS, descTT, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -275,6 +279,7 @@ int MORSE_zgels_param_Tile(const libhqr_tree_t *qrtree, MORSE_enum trans, MORSE_
     MORSE_zgels_param_Tile_Async(qrtree, trans, A, TS, TT, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgemm.c b/compute/zgemm.c
index 00f7a3b14..1ab3eda0d 100644
--- a/compute/zgemm.c
+++ b/compute/zgemm.c
@@ -223,8 +223,11 @@ int MORSE_zgemm(MORSE_enum transA, MORSE_enum transB, int M, int N, int K,
         transA, transB, alpha, &descA, &descB, beta, &descC, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
+    morse_ztile2lap( morse, &descCl, &descCt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
     morse_desc_mat_free(&descC);
@@ -310,6 +313,7 @@ int MORSE_zgemm_Tile(MORSE_enum transA, MORSE_enum transB,
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
     RUNTIME_desc_flush( C, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgeqrf.c b/compute/zgeqrf.c
index 00a462be3..cf9623380 100644
--- a/compute/zgeqrf.c
+++ b/compute/zgeqrf.c
@@ -129,8 +129,11 @@ int MORSE_zgeqrf(int M, int N,
     MORSE_zgeqrf_Tile_Async(&descA, descT, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -192,6 +195,7 @@ int MORSE_zgeqrf_Tile(MORSE_desc_t *A, MORSE_desc_t *T)
     morse_sequence_create(morse, &sequence);
     MORSE_zgeqrf_Tile_Async(A, T, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgeqrf_param.c b/compute/zgeqrf_param.c
index c5db6d1d8..238411322 100644
--- a/compute/zgeqrf_param.c
+++ b/compute/zgeqrf_param.c
@@ -132,8 +132,11 @@ int MORSE_zgeqrf_param(const libhqr_tree_t *qrtree, int M, int N,
     MORSE_zgeqrf_param_Tile_Async(qrtree, &descA, descTS, descTT, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -199,6 +202,7 @@ int MORSE_zgeqrf_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     morse_sequence_create(morse, &sequence);
     MORSE_zgeqrf_param_Tile_Async(qrtree, A, TS, TT, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgeqrs.c b/compute/zgeqrs.c
index 30d415146..445daf03f 100644
--- a/compute/zgeqrs.c
+++ b/compute/zgeqrs.c
@@ -147,9 +147,13 @@ int MORSE_zgeqrs(int M, int N, int NRHS,
     MORSE_zgeqrs_Tile_Async(&descA, descT, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -213,6 +217,7 @@ int MORSE_zgeqrs_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B)
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( T, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgeqrs_param.c b/compute/zgeqrs_param.c
index bf285e431..467955410 100644
--- a/compute/zgeqrs_param.c
+++ b/compute/zgeqrs_param.c
@@ -142,9 +142,13 @@ int MORSE_zgeqrs_param(const libhqr_tree_t *qrtree, int M, int N, int NRHS,
     MORSE_zgeqrs_param_Tile_Async(qrtree, &descA, descTS, descTT, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -209,6 +213,7 @@ int MORSE_zgeqrs_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     RUNTIME_desc_flush( TS, sequence );
     RUNTIME_desc_flush( TT, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgesv_incpiv.c b/compute/zgesv_incpiv.c
index 1c1abc516..e43014e2f 100644
--- a/compute/zgesv_incpiv.c
+++ b/compute/zgesv_incpiv.c
@@ -146,9 +146,13 @@ int MORSE_zgesv_incpiv(int N, int NRHS,
     MORSE_zgesv_incpiv_Tile_Async(&descA, descL, IPIV, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -217,6 +221,7 @@ int MORSE_zgesv_incpiv_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_d
     MORSE_zgesv_incpiv_Tile_Async(A, L, IPIV, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgesv_nopiv.c b/compute/zgesv_nopiv.c
index d1fcc7c66..1693481d3 100644
--- a/compute/zgesv_nopiv.c
+++ b/compute/zgesv_nopiv.c
@@ -145,9 +145,13 @@ int MORSE_zgesv_nopiv(int N, int NRHS,
     MORSE_zgesv_nopiv_Tile_Async(&descA, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -209,6 +213,7 @@ int MORSE_zgesv_nopiv_Tile(MORSE_desc_t *A, MORSE_desc_t *B)
     MORSE_zgesv_nopiv_Tile_Async(A, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgesvd.c b/compute/zgesvd.c
index d7e7060b9..b55aa9d82 100644
--- a/compute/zgesvd.c
+++ b/compute/zgesvd.c
@@ -222,8 +222,11 @@ int MORSE_zgesvd(MORSE_enum jobu, MORSE_enum jobvt,
     MORSE_zgesvd_Tile_Async(jobu, jobvt, &descA, S, descT, U, LDU, VT, LDVT, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -350,7 +353,9 @@ int MORSE_zgesvd_Tile(MORSE_enum jobu, MORSE_enum jobvt,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zgesvd_Tile_Async(jobu, jobvt, A, S, T, U, LDU, VT, LDVT, sequence, &request);
+
     morse_sequence_wait(morse, sequence);
+
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
     return status;
@@ -551,6 +556,7 @@ int MORSE_zgesvd_Tile_Async(MORSE_enum jobu, MORSE_enum jobvt,
     if ( jobvt != MorseNoVec ) {
         morse_zooplap2tile( descVT, VT, NB, NB, LDVT, N, 0, 0, N, N, sequence, request, morse_desc_mat_free(&(descVT)) );
     }
+
     morse_sequence_wait(morse, sequence);
 
     subA = NULL;
@@ -597,6 +603,7 @@ int MORSE_zgesvd_Tile_Async(MORSE_enum jobu, MORSE_enum jobvt,
     }
 
     morse_sequence_wait(morse, sequence);
+
     if (subA) {
         free(subA); free(subUVT); free(subT);
     }
diff --git a/compute/zgetrf_incpiv.c b/compute/zgetrf_incpiv.c
index f12be25c1..bfad3adf2 100644
--- a/compute/zgetrf_incpiv.c
+++ b/compute/zgetrf_incpiv.c
@@ -131,8 +131,11 @@ int MORSE_zgetrf_incpiv(int M, int N,
     MORSE_zgetrf_incpiv_Tile_Async(&descA, descL, IPIV, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -197,6 +200,7 @@ int MORSE_zgetrf_incpiv_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV)
     morse_sequence_create(morse, &sequence);
     MORSE_zgetrf_incpiv_Tile_Async(A, L, IPIV, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgetrf_nopiv.c b/compute/zgetrf_nopiv.c
index 87f0d117c..344f1d26a 100644
--- a/compute/zgetrf_nopiv.c
+++ b/compute/zgetrf_nopiv.c
@@ -124,8 +124,11 @@ int MORSE_zgetrf_nopiv(int M, int N,
     MORSE_zgetrf_nopiv_Tile_Async(&descA, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N, sequence, &request );
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -183,6 +186,7 @@ int MORSE_zgetrf_nopiv_Tile(MORSE_desc_t *A)
     morse_sequence_create(morse, &sequence);
     MORSE_zgetrf_nopiv_Tile_Async(A, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgetrs_incpiv.c b/compute/zgetrs_incpiv.c
index 8be117d8a..536a51113 100644
--- a/compute/zgetrs_incpiv.c
+++ b/compute/zgetrs_incpiv.c
@@ -152,8 +152,11 @@ int MORSE_zgetrs_incpiv(MORSE_enum trans, int N, int NRHS,
     MORSE_zgetrs_incpiv_Tile_Async(&descA, descL, IPIV, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -220,6 +223,7 @@ int MORSE_zgetrs_incpiv_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_
     MORSE_zgetrs_incpiv_Tile_Async(A, L, IPIV, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zgetrs_nopiv.c b/compute/zgetrs_nopiv.c
index 08858c5d6..f3fdfc502 100644
--- a/compute/zgetrs_nopiv.c
+++ b/compute/zgetrs_nopiv.c
@@ -146,8 +146,11 @@ int MORSE_zgetrs_nopiv(MORSE_enum trans, int N, int NRHS,
     MORSE_zgetrs_nopiv_Tile_Async(&descA, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -208,6 +211,7 @@ int MORSE_zgetrs_nopiv_Tile(MORSE_desc_t *A, MORSE_desc_t *B)
     MORSE_zgetrs_nopiv_Tile_Async(A, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zheevd.c b/compute/zheevd.c
index 9ea486242..67d343211 100644
--- a/compute/zheevd.c
+++ b/compute/zheevd.c
@@ -160,8 +160,11 @@ int MORSE_zheevd(MORSE_enum jobz, MORSE_enum uplo, int N,
     MORSE_zheevd_Tile_Async(jobz, uplo, &descA, W, descT, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -253,6 +256,7 @@ int MORSE_zheevd_Tile(MORSE_enum jobz, MORSE_enum uplo,
     MORSE_zheevd_Tile_Async(jobz, uplo, A, W, T, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( T, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
@@ -417,7 +421,6 @@ int MORSE_zheevd_Tile_Async(MORSE_enum jobz, MORSE_enum uplo,
         morse_error("MORSE_zheevd_Tile", "MORSE_zhetrd failed");
     }
 
-
     if (jobz == MorseNoVec){
 #if !defined(CHAMELEON_SIMULATION)
         /* Tridiagonal eigensolver */
diff --git a/compute/zhemm.c b/compute/zhemm.c
index 7cf7374f3..ab49a42e2 100644
--- a/compute/zhemm.c
+++ b/compute/zhemm.c
@@ -186,8 +186,11 @@ int MORSE_zhemm(MORSE_enum side, MORSE_enum uplo, int M, int N,
         side, uplo, alpha, &descA, &descB, beta, &descC, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
+    morse_ztile2lap( morse, &descCl, &descCt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
     morse_desc_mat_free(&descC);
@@ -275,6 +278,7 @@ int MORSE_zhemm_Tile(MORSE_enum side, MORSE_enum uplo,
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
     RUNTIME_desc_flush( C, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zher2k.c b/compute/zher2k.c
index a4c3f059d..03c76ebf9 100644
--- a/compute/zher2k.c
+++ b/compute/zher2k.c
@@ -190,8 +190,11 @@ int MORSE_zher2k(MORSE_enum uplo, MORSE_enum trans, int N, int K,
     MORSE_zher2k_Tile_Async(uplo, trans, alpha, &descA, &descB, beta, &descC, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
+    morse_ztile2lap( morse, &descCl, &descCt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
     morse_desc_mat_free(&descC);
@@ -274,6 +277,7 @@ int MORSE_zher2k_Tile(MORSE_enum uplo, MORSE_enum trans,
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
     RUNTIME_desc_flush( C, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zherk.c b/compute/zherk.c
index 64b671dc9..05901be70 100644
--- a/compute/zherk.c
+++ b/compute/zherk.c
@@ -174,8 +174,11 @@ int MORSE_zherk(MORSE_enum uplo, MORSE_enum trans, int N, int K,
     MORSE_zherk_Tile_Async(uplo, trans, alpha, &descA, beta, &descC, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
+    morse_ztile2lap( morse, &descCl, &descCt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descC);
 
@@ -252,6 +255,7 @@ int MORSE_zherk_Tile(MORSE_enum uplo, MORSE_enum trans,
     MORSE_zherk_Tile_Async(uplo, trans, alpha, A, beta, C, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( C, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zhetrd.c b/compute/zhetrd.c
index e895ce6b5..b63b5d1a7 100644
--- a/compute/zhetrd.c
+++ b/compute/zhetrd.c
@@ -174,8 +174,11 @@ int MORSE_zhetrd(MORSE_enum jobz, MORSE_enum uplo, int N,
     MORSE_zhetrd_Tile_Async(jobz, uplo, &descA, D, E, descT, Q, LDQ, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -279,7 +282,9 @@ int MORSE_zhetrd_Tile(MORSE_enum jobz, MORSE_enum uplo,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zhetrd_Tile_Async(jobz, uplo, A, D, E, T, Q, LDQ, sequence, &request);
+
     morse_sequence_wait(morse, sequence);
+
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
     return status;
@@ -408,6 +413,7 @@ int MORSE_zhetrd_Tile_Async(MORSE_enum jobz,
     /* Copy data into band structure */
     morse_pztile2band( uplo, A, &descAB,
                        sequence, request );
+
     morse_sequence_wait(morse, sequence);
 
     /* Reduce band matrix to tridiagonal matrix */
diff --git a/compute/zlacpy.c b/compute/zlacpy.c
index 9c749e85e..885ae54d5 100644
--- a/compute/zlacpy.c
+++ b/compute/zlacpy.c
@@ -140,8 +140,11 @@ int MORSE_zlacpy(MORSE_enum uplo, int M, int N,
     MORSE_zlacpy_Tile_Async(uplo, &descA, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descB, B, NB, NB, LDB, N,  sequence, &request);
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -203,7 +206,9 @@ int MORSE_zlacpy_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zlacpy_Tile_Async(uplo, A, B, sequence, &request);
+
     morse_sequence_wait(morse, sequence);
+
     morse_sequence_destroy(morse, sequence);
     return MORSE_SUCCESS;
 }
diff --git a/compute/zlange.c b/compute/zlange.c
index 3267d7461..f1ea38a96 100644
--- a/compute/zlange.c
+++ b/compute/zlange.c
@@ -142,9 +142,12 @@ double MORSE_zlange(MORSE_enum norm, int M, int N,
     MORSE_zlange_Tile_Async(norm, &descA, &value, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
     RUNTIME_desc_flush( &descA, sequence );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     morse_sequence_destroy(morse, sequence);
@@ -204,7 +207,9 @@ double MORSE_zlange_Tile(MORSE_enum norm, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zlange_Tile_Async(norm, A, &value, sequence, &request);
+
     morse_sequence_wait(morse, sequence);
+
     morse_sequence_destroy(morse, sequence);
     return value;
 }
diff --git a/compute/zlanhe.c b/compute/zlanhe.c
index 455f74ec9..ce7e4fa19 100644
--- a/compute/zlanhe.c
+++ b/compute/zlanhe.c
@@ -142,9 +142,12 @@ double MORSE_zlanhe(MORSE_enum norm, MORSE_enum uplo, int N,
     MORSE_zlanhe_Tile_Async(norm, uplo, &descA, &value, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
     RUNTIME_desc_flush( &descA, sequence );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     morse_sequence_destroy(morse, sequence);
@@ -208,7 +211,9 @@ double MORSE_zlanhe_Tile(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zlanhe_Tile_Async(norm, uplo, A, &value, sequence, &request);
+
     morse_sequence_wait(morse, sequence);
+
     morse_sequence_destroy(morse, sequence);
     return value;
 }
diff --git a/compute/zlansy.c b/compute/zlansy.c
index 9a10fe789..8912e0f61 100644
--- a/compute/zlansy.c
+++ b/compute/zlansy.c
@@ -142,7 +142,9 @@ double MORSE_zlansy(MORSE_enum norm, MORSE_enum uplo, int N,
     MORSE_zlansy_Tile_Async(norm, uplo, &descA, &value, sequence, &request);
 
     /* Submit the matrix conversion */
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     morse_sequence_destroy(morse, sequence);
@@ -206,7 +208,9 @@ double MORSE_zlansy_Tile(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A)
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zlansy_Tile_Async(norm, uplo, A, &value, sequence, &request);
+
     morse_sequence_wait(morse, sequence);
+
     morse_sequence_destroy(morse, sequence);
     return value;
 }
diff --git a/compute/zlantr.c b/compute/zlantr.c
index 8ae33b76b..61dcb8be9 100644
--- a/compute/zlantr.c
+++ b/compute/zlantr.c
@@ -162,7 +162,9 @@ double MORSE_zlantr(MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag,
     MORSE_zlantr_Tile_Async(norm, uplo, diag, &descA, &value, sequence, &request);
 
     /* Submit the matrix conversion */
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     morse_sequence_destroy(morse, sequence);
@@ -228,7 +230,9 @@ double MORSE_zlantr_Tile(MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag, MORS
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zlantr_Tile_Async(norm, uplo, diag, A, &value, sequence, &request);
+
     morse_sequence_wait(morse, sequence);
+
     morse_sequence_destroy(morse, sequence);
     return value;
 }
diff --git a/compute/zlascal.c b/compute/zlascal.c
index 242fb1aee..2b1979406 100644
--- a/compute/zlascal.c
+++ b/compute/zlascal.c
@@ -122,7 +122,8 @@ int MORSE_zlascal(MORSE_enum uplo, int M, int N,
         uplo, alpha, &descA, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap( descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
     RUNTIME_sequence_wait(morse, sequence);
     morse_desc_mat_free(&descA);
 
diff --git a/compute/zlaset.c b/compute/zlaset.c
index 9f74ff42a..f0b8269fb 100644
--- a/compute/zlaset.c
+++ b/compute/zlaset.c
@@ -135,7 +135,9 @@ int MORSE_zlaset(MORSE_enum uplo, int M, int N,
     MORSE_zlaset_Tile_Async(uplo, alpha, beta, &descA, sequence, &request);
 
     /* Submit the matrix conversion */
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     morse_sequence_destroy(morse, sequence);
@@ -194,7 +196,9 @@ int MORSE_zlaset_Tile(MORSE_enum uplo,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zlaset_Tile_Async(uplo, alpha, beta, A, sequence, &request);
+
     morse_sequence_wait(morse, sequence);
+
     morse_sequence_destroy(morse, sequence);
     return MORSE_SUCCESS;
 }
diff --git a/compute/zlauum.c b/compute/zlauum.c
index eb16a1751..a07910ca1 100644
--- a/compute/zlauum.c
+++ b/compute/zlauum.c
@@ -129,8 +129,11 @@ int MORSE_zlauum(MORSE_enum uplo, int N,
     MORSE_zlauum_Tile_Async(uplo, &descA, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -194,6 +197,7 @@ int MORSE_zlauum_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     morse_sequence_create(morse, &sequence);
     MORSE_zlauum_Tile_Async(uplo, A, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zplghe.c b/compute/zplghe.c
index 0d7af9927..7ba0cef44 100644
--- a/compute/zplghe.c
+++ b/compute/zplghe.c
@@ -120,8 +120,11 @@ int MORSE_zplghe( double bump, MORSE_enum uplo, int N,
     /* Call the tile interface */
     MORSE_zplghe_Tile_Async( bump, uplo, &descA, seed, sequence, &request );
 
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -186,7 +189,9 @@ int MORSE_zplghe_Tile( double bump, MORSE_enum uplo, MORSE_desc_t *A,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zplghe_Tile_Async( bump, uplo, A, seed, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
     return status;
diff --git a/compute/zplgsy.c b/compute/zplgsy.c
index d0264a234..7b4f36a67 100644
--- a/compute/zplgsy.c
+++ b/compute/zplgsy.c
@@ -120,8 +120,11 @@ int MORSE_zplgsy( MORSE_Complex64_t bump, MORSE_enum uplo, int N,
     /* Call the tile interface */
     MORSE_zplgsy_Tile_Async( bump, uplo, &descA, seed, sequence, &request );
 
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -187,7 +190,9 @@ int MORSE_zplgsy_Tile( MORSE_Complex64_t bump, MORSE_enum uplo,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zplgsy_Tile_Async( bump, uplo, A, seed, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
     return status;
diff --git a/compute/zplrnt.c b/compute/zplrnt.c
index 45e141e11..0040cd9e5 100644
--- a/compute/zplrnt.c
+++ b/compute/zplrnt.c
@@ -117,8 +117,11 @@ int MORSE_zplrnt( int M, int N,
     /* Call the tile interface */
     MORSE_zplrnt_Tile_Async( &descA, seed, sequence, &request );
 
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N, sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -177,7 +180,9 @@ int MORSE_zplrnt_Tile( MORSE_desc_t *A,
     }
     morse_sequence_create(morse, &sequence);
     MORSE_zplrnt_Tile_Async( A, seed, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     status = sequence->status;
     morse_sequence_destroy(morse, sequence);
     return status;
diff --git a/compute/zposv.c b/compute/zposv.c
index 01b79e4cd..418f623d0 100644
--- a/compute/zposv.c
+++ b/compute/zposv.c
@@ -159,9 +159,13 @@ int MORSE_zposv(MORSE_enum uplo, int N, int NRHS,
     MORSE_zposv_Tile_Async(uplo, &descA, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -235,6 +239,7 @@ int MORSE_zposv_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B)
     MORSE_zposv_Tile_Async(uplo, A, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zpotrf.c b/compute/zpotrf.c
index 776bede31..5e87c910b 100644
--- a/compute/zpotrf.c
+++ b/compute/zpotrf.c
@@ -135,8 +135,8 @@ int MORSE_zpotrf(MORSE_enum uplo, int N,
     MORSE_zpotrf_Tile_Async(uplo, &descAt, sequence, &request);
 
     /* Submit the matrix conversion back */
-    morse_ztile2lap( morse, &descAl, &descAt, uplo,
-                     A, NB, NB, LDA, N, N, N, sequence, &request );
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     uplo, sequence, &request );
 
     morse_sequence_wait(morse, sequence);
 
@@ -210,6 +210,7 @@ int MORSE_zpotrf_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     morse_sequence_create(morse, &sequence);
     MORSE_zpotrf_Tile_Async(uplo, A, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zpotri.c b/compute/zpotri.c
index 14711dfa3..f88cb5148 100644
--- a/compute/zpotri.c
+++ b/compute/zpotri.c
@@ -126,8 +126,11 @@ int MORSE_zpotri(MORSE_enum uplo, int N,
     MORSE_zpotri_Tile_Async(uplo, &descA, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -194,6 +197,7 @@ int MORSE_zpotri_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     morse_sequence_create(morse, &sequence);
     MORSE_zpotri_Tile_Async(uplo, A, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zpotrimm.c b/compute/zpotrimm.c
index ed4f3479f..f45957e61 100644
--- a/compute/zpotrimm.c
+++ b/compute/zpotrimm.c
@@ -140,10 +140,15 @@ int MORSE_zpotrimm(MORSE_enum uplo, int N,
     MORSE_zpotrimm_Tile_Async(uplo, &descA, &descB, &descC, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
-    morse_zooptile2lap(descB, A, NB, NB, LDB, N,  sequence, &request);
-    morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+    morse_ztile2lap( morse, &descCl, &descCt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
     morse_desc_mat_free(&descC);
@@ -212,6 +217,7 @@ int MORSE_zpotrimm_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE
     morse_sequence_create(morse, &sequence);
     MORSE_zpotrimm_Tile_Async(uplo, A, B, C, sequence, &request);
     RUNTIME_desc_flush( C, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zpotrs.c b/compute/zpotrs.c
index 65f0f37aa..242a53cbe 100644
--- a/compute/zpotrs.c
+++ b/compute/zpotrs.c
@@ -143,8 +143,11 @@ int MORSE_zpotrs(MORSE_enum uplo, int N, int NRHS,
     MORSE_zpotrs_Tile_Async(uplo, &descA, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -210,6 +213,7 @@ int MORSE_zpotrs_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B)
     MORSE_zpotrs_Tile_Async(uplo, A, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zsymm.c b/compute/zsymm.c
index e88e9242d..a18c58872 100644
--- a/compute/zsymm.c
+++ b/compute/zsymm.c
@@ -186,8 +186,11 @@ int MORSE_zsymm(MORSE_enum side, MORSE_enum uplo, int M, int N,
         side, uplo, alpha, &descA, &descB, beta, &descC, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
+    morse_ztile2lap( morse, &descCl, &descCt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
     morse_desc_mat_free(&descC);
@@ -275,6 +278,7 @@ int MORSE_zsymm_Tile(MORSE_enum side, MORSE_enum uplo,
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
     RUNTIME_desc_flush( C, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zsyr2k.c b/compute/zsyr2k.c
index 7a31807e8..388d8d8fa 100644
--- a/compute/zsyr2k.c
+++ b/compute/zsyr2k.c
@@ -190,8 +190,11 @@ int MORSE_zsyr2k(MORSE_enum uplo, MORSE_enum trans, int N, int K,
     MORSE_zsyr2k_Tile_Async(uplo, trans, alpha, &descA, &descB, beta, &descC, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
+    morse_ztile2lap( morse, &descCl, &descCt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
     morse_desc_mat_free(&descC);
@@ -274,6 +277,7 @@ int MORSE_zsyr2k_Tile(MORSE_enum uplo, MORSE_enum trans,
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
     RUNTIME_desc_flush( C, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zsyrk.c b/compute/zsyrk.c
index 74e021d18..215010573 100644
--- a/compute/zsyrk.c
+++ b/compute/zsyrk.c
@@ -174,8 +174,11 @@ int MORSE_zsyrk(MORSE_enum uplo, MORSE_enum trans, int N, int K,
     MORSE_zsyrk_Tile_Async(uplo, trans, alpha, &descA, beta, &descC, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
+    morse_ztile2lap( morse, &descCl, &descCt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descC);
 
@@ -252,6 +255,7 @@ int MORSE_zsyrk_Tile(MORSE_enum uplo, MORSE_enum trans,
     MORSE_zsyrk_Tile_Async(uplo, trans, alpha, A, beta, C, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( C, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zsysv.c b/compute/zsysv.c
index 5c1f04b7e..83dcd0c39 100644
--- a/compute/zsysv.c
+++ b/compute/zsysv.c
@@ -156,9 +156,13 @@ int MORSE_zsysv(MORSE_enum uplo, int N, int NRHS,
     MORSE_zsysv_Tile_Async(uplo, &descA, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,     sequence, &request);
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -228,6 +232,7 @@ int MORSE_zsysv_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B)
     MORSE_zsysv_Tile_Async(uplo, A, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zsytrf.c b/compute/zsytrf.c
index 17aaecd4c..75742227a 100644
--- a/compute/zsytrf.c
+++ b/compute/zsytrf.c
@@ -130,8 +130,11 @@ int MORSE_zsytrf(MORSE_enum uplo, int N,
     MORSE_zsytrf_Tile_Async(uplo, &descA, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -195,6 +198,7 @@ int MORSE_zsytrf_Tile(MORSE_enum uplo, MORSE_desc_t *A)
     morse_sequence_create(morse, &sequence);
     MORSE_zsytrf_Tile_Async(uplo, A, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zsytrs.c b/compute/zsytrs.c
index dbdd5c27f..cb5587397 100644
--- a/compute/zsytrs.c
+++ b/compute/zsytrs.c
@@ -142,8 +142,11 @@ int MORSE_zsytrs(MORSE_enum uplo, int N, int NRHS,
     MORSE_zsytrs_Tile_Async(uplo, &descA, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -206,6 +209,7 @@ int MORSE_zsytrs_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B)
     MORSE_zsytrs_Tile_Async(uplo, A, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/ztpgqrt.c b/compute/ztpgqrt.c
index 99360ccd0..9c3acdf8a 100644
--- a/compute/ztpgqrt.c
+++ b/compute/ztpgqrt.c
@@ -221,9 +221,13 @@ int MORSE_ztpgqrt( int M, int N, int K, int L,
     MORSE_ztpgqrt_Tile_Async(L, &descV1, descT1, &descV2, descT2, &descQ1, &descQ2, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descQ1, Q1, NB, NB, LDQ1, N, sequence, &request);
-    morse_zooptile2lap(descQ2, Q2, NB, NB, LDQ2, N, sequence, &request);
+    morse_ztile2lap( morse, &descQ1l, &descQ1t,
+                     MorseUpperLower, sequence, &request );
+    morse_ztile2lap( morse, &descQ2l, &descQ2t,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descV1);
     morse_desc_mat_free(&descV2);
     morse_desc_mat_free(&descQ1);
@@ -281,6 +285,7 @@ int MORSE_ztpgqrt_Tile( int L,
     MORSE_ztpgqrt_Tile_Async(L, V1, T1, V2, T2, Q1, Q2, sequence, &request);
     RUNTIME_desc_flush( Q1, sequence );
     RUNTIME_desc_flush( Q2, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/ztpqrt.c b/compute/ztpqrt.c
index e1d19769e..b87bf269e 100644
--- a/compute/ztpqrt.c
+++ b/compute/ztpqrt.c
@@ -195,9 +195,13 @@ int MORSE_ztpqrt( int M, int N, int L,
     MORSE_ztpqrt_Tile_Async(L, &descA, &descB, descT, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N, sequence, &request);
-    morse_zooptile2lap(descB, B, NB, NB, LDB, N, sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -261,6 +265,7 @@ int MORSE_ztpqrt_Tile( int L, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *T
     MORSE_ztpqrt_Tile_Async(L, A, B, T, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/ztradd.c b/compute/ztradd.c
index cb088f2bd..938ee9f06 100644
--- a/compute/ztradd.c
+++ b/compute/ztradd.c
@@ -174,8 +174,11 @@ int MORSE_ztradd(MORSE_enum uplo, MORSE_enum trans, int M, int N,
         uplo, trans, alpha, &descA, beta, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap( descB, B, NB, NB, LDB, N,  sequence, &request);
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -256,6 +259,7 @@ int MORSE_ztradd_Tile(MORSE_enum uplo, MORSE_enum trans,
     MORSE_ztradd_Tile_Async(uplo, trans, alpha, A, beta, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/ztrmm.c b/compute/ztrmm.c
index 6bb0e62b3..70718e1ae 100644
--- a/compute/ztrmm.c
+++ b/compute/ztrmm.c
@@ -188,8 +188,11 @@ int MORSE_ztrmm(MORSE_enum side, MORSE_enum uplo,
         side, uplo, transA, diag, alpha, &descA, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -278,6 +281,7 @@ int MORSE_ztrmm_Tile(MORSE_enum side, MORSE_enum uplo,
     MORSE_ztrmm_Tile_Async(side, uplo, transA, diag, alpha, A, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/ztrsm.c b/compute/ztrsm.c
index fe914cae9..652d6eb45 100644
--- a/compute/ztrsm.c
+++ b/compute/ztrsm.c
@@ -186,8 +186,11 @@ int MORSE_ztrsm(MORSE_enum side, MORSE_enum uplo,
         side, uplo, transA, diag, alpha, &descA, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -276,6 +279,7 @@ int MORSE_ztrsm_Tile(MORSE_enum side, MORSE_enum uplo,
     MORSE_ztrsm_Tile_Async(side, uplo, transA, diag, alpha, A, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/ztrsmpl.c b/compute/ztrsmpl.c
index 3d2eb3963..0f8bbf2b6 100644
--- a/compute/ztrsmpl.c
+++ b/compute/ztrsmpl.c
@@ -140,8 +140,11 @@ int MORSE_ztrsmpl(int N, int NRHS,
     MORSE_ztrsmpl_Tile_Async(&descA, descL, IPIV, &descB, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS,  sequence, &request);
+    morse_ztile2lap( morse, &descBl, &descBt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descB);
 
@@ -205,6 +208,7 @@ int MORSE_ztrsmpl_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_desc_t
     MORSE_ztrsmpl_Tile_Async(A, L, IPIV, B, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( B, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/ztrtri.c b/compute/ztrtri.c
index 51099d097..dd5cf3306 100644
--- a/compute/ztrtri.c
+++ b/compute/ztrtri.c
@@ -138,8 +138,11 @@ int MORSE_ztrtri(MORSE_enum uplo, MORSE_enum diag, int N,
     MORSE_ztrtri_Tile_Async(uplo, diag, &descA, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descA, A, NB, NB, LDA, N,  sequence, &request);
+    morse_ztile2lap( morse, &descAl, &descAt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
 
     status = sequence->status;
@@ -213,6 +216,7 @@ int MORSE_ztrtri_Tile(MORSE_enum uplo, MORSE_enum diag, MORSE_desc_t *A)
     morse_sequence_create(morse, &sequence);
     MORSE_ztrtri_Tile_Async(uplo, diag, A, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zunglq.c b/compute/zunglq.c
index 4b281a3ad..854d88894 100644
--- a/compute/zunglq.c
+++ b/compute/zunglq.c
@@ -146,8 +146,11 @@ int MORSE_zunglq(int M, int N, int K,
     MORSE_zunglq_Tile_Async(&descA, descT, &descQ, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descQ, Q, NB, NB, LDQ, N,  sequence, &request);
+    morse_ztile2lap( morse, &descQl, &descQt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descQ);
 
@@ -207,6 +210,7 @@ int MORSE_zunglq_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *Q)
     MORSE_zunglq_Tile_Async(A, T, Q, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( Q, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zunglq_param.c b/compute/zunglq_param.c
index 00cbb5179..5fd114954 100644
--- a/compute/zunglq_param.c
+++ b/compute/zunglq_param.c
@@ -143,8 +143,11 @@ int MORSE_zunglq_param(const libhqr_tree_t *qrtree, int M, int N, int K,
     MORSE_zunglq_param_Tile_Async(qrtree, &descA, descTS, descTT, &descQ, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descQ, Q, NB, NB, LDQ, N,  sequence, &request);
+    morse_ztile2lap( morse, &descQl, &descQt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descQ);
 
@@ -204,6 +207,7 @@ int MORSE_zunglq_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     MORSE_zunglq_param_Tile_Async(qrtree, A, TS, TT, Q, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( Q, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zungqr.c b/compute/zungqr.c
index 804daad24..e482c3ac9 100644
--- a/compute/zungqr.c
+++ b/compute/zungqr.c
@@ -145,8 +145,11 @@ int MORSE_zungqr(int M, int N, int K,
     MORSE_zungqr_Tile_Async(&descA, descT, &descQ, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descQ, Q, NB, NB, LDQ, N,  sequence, &request);
+    morse_ztile2lap( morse, &descQl, &descQt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descQ);
 
@@ -206,6 +209,7 @@ int MORSE_zungqr_Tile(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *Q)
     MORSE_zungqr_Tile_Async(A, T, Q, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( Q, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zungqr_param.c b/compute/zungqr_param.c
index 8fbc7d447..c209d8b4f 100644
--- a/compute/zungqr_param.c
+++ b/compute/zungqr_param.c
@@ -144,8 +144,11 @@ int MORSE_zungqr_param(const libhqr_tree_t *qrtree,
     MORSE_zungqr_param_Tile_Async(qrtree, &descA, descTS, descTT, &descQ, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descQ, Q, NB, NB, LDQ, N,  sequence, &request);
+    morse_ztile2lap( morse, &descQl, &descQt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descQ);
 
@@ -205,6 +208,7 @@ int MORSE_zungqr_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_
     MORSE_zungqr_param_Tile_Async(qrtree, A, TS, TT, Q, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( Q, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zunmlq.c b/compute/zunmlq.c
index e0769ff47..385e898f7 100644
--- a/compute/zunmlq.c
+++ b/compute/zunmlq.c
@@ -184,8 +184,11 @@ int MORSE_zunmlq(MORSE_enum side, MORSE_enum trans, int M, int N, int K,
         side, trans, &descA, descT, &descC, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
+    morse_ztile2lap( morse, &descCl, &descCt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descC);
 
@@ -260,6 +263,7 @@ int MORSE_zunmlq_Tile(MORSE_enum side, MORSE_enum trans,
     MORSE_zunmlq_Tile_Async(side, trans, A, T, C, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( C, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zunmlq_param.c b/compute/zunmlq_param.c
index 49ead29a8..fd065cdc1 100644
--- a/compute/zunmlq_param.c
+++ b/compute/zunmlq_param.c
@@ -183,8 +183,11 @@ int MORSE_zunmlq_param(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_enum
         qrtree, side, trans, &descA, descTS, descTT, &descC, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
+    morse_ztile2lap( morse, &descCl, &descCt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descC);
 
@@ -259,6 +262,7 @@ int MORSE_zunmlq_param_Tile(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_
     MORSE_zunmlq_param_Tile_Async(qrtree, side, trans, A, TS, TT, C, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( C, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zunmqr.c b/compute/zunmqr.c
index 110e901c5..711543b02 100644
--- a/compute/zunmqr.c
+++ b/compute/zunmqr.c
@@ -187,8 +187,11 @@ int MORSE_zunmqr(MORSE_enum side, MORSE_enum trans, int M, int N, int K,
         side, trans, &descA, descT, &descC, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
+    morse_ztile2lap( morse, &descCl, &descCt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descC);
 
@@ -264,6 +267,7 @@ int MORSE_zunmqr_Tile(MORSE_enum side, MORSE_enum trans,
     MORSE_zunmqr_Tile_Async(side, trans, A, T, C, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( C, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/compute/zunmqr_param.c b/compute/zunmqr_param.c
index 67365cf93..3ab4e9606 100644
--- a/compute/zunmqr_param.c
+++ b/compute/zunmqr_param.c
@@ -188,8 +188,11 @@ int MORSE_zunmqr_param(const libhqr_tree_t *qrtree,
         qrtree, side, trans, &descA, descTS, descTT, &descC, sequence, &request);
 
     /* Submit the matrix conversion */
-    morse_zooptile2lap(descC, C, NB, NB, LDC, N,  sequence, &request);
+    morse_ztile2lap( morse, &descCl, &descCt,
+                     MorseUpperLower, sequence, &request );
+
     morse_sequence_wait(morse, sequence);
+
     morse_desc_mat_free(&descA);
     morse_desc_mat_free(&descC);
 
@@ -265,6 +268,7 @@ int MORSE_zunmqr_param_Tile(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_
     MORSE_zunmqr_param_Tile_Async(qrtree, side, trans, A, TS, TT, C, sequence, &request);
     RUNTIME_desc_flush( A, sequence );
     RUNTIME_desc_flush( C, sequence );
+
     morse_sequence_wait(morse, sequence);
 
     status = sequence->status;
diff --git a/control/compute_z.h b/control/compute_z.h
index 6314c01be..771a8fbb5 100644
--- a/control/compute_z.h
+++ b/control/compute_z.h
@@ -220,18 +220,17 @@ morse_zlap2tile( MORSE_context_t *morse,
  * in LAPACK interface calls
  */
 static inline int
-morse_ztile2lap( MORSE_context_t *morse,
-                 MORSE_desc_t *descAl, MORSE_desc_t *descAt,
-                 MORSE_enum uplo, MORSE_Complex64_t *A, int mb, int nb, int lm, int ln, int m, int n,
-                 MORSE_sequence_t *seq, MORSE_request_t *req )
+morse_ztile2lap( MORSE_context_t *morse, MORSE_desc_t *descAl, MORSE_desc_t *descAt,
+                 MORSE_enum uplo, MORSE_sequence_t *seq, MORSE_request_t *req )
 {
     if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {
         morse_pzlacpy( uplo, descAt, descAl, seq, req );
     }
     else {
         morse_fatal_error( "morse_ztile2lap", "INPLACE translation not supported yet");
-        /* MORSE_zgecfi_Async( lm, ln, A, MorseCCRB, mb, nb, */
-        /*                     MorseCM, mb, nb, seq, req ); */
+        /* MORSE_zgecfi_Async( descAl->lm, descAl->ln, descAl->mat, */
+        /*                     MorseCCRB, descAl->mb, descAl->nb,   */
+        /*                     MorseCM, descAl->mb, descAl->nb, seq, req ); */
     }
     RUNTIME_desc_flush( descAl, seq );
     RUNTIME_desc_flush( descAt, seq );
-- 
GitLab