From cec2d4a60e0cca218c11dab83f9011e5ebd00d3e Mon Sep 17 00:00:00 2001
From: Mathieu Faverge <mathieu.faverge@inria.fr>
Date: Wed, 24 Jan 2018 09:53:50 +0100
Subject: [PATCH] Factorize code

---
 compute/ztile.c | 77 ++-----------------------------------------------
 control/tile.c  | 64 +++++++++++++++++++---------------------
 2 files changed, 32 insertions(+), 109 deletions(-)

diff --git a/compute/ztile.c b/compute/ztile.c
index 868a565e4..5fcd85369 100644
--- a/compute/ztile.c
+++ b/compute/ztile.c
@@ -63,44 +63,7 @@
  ******************************************************************************/
 int MORSE_zLapack_to_Tile( MORSE_Complex64_t *Af77, int LDA, MORSE_desc_t *A )
 {
-    MORSE_context_t *morse;
-    MORSE_sequence_t *sequence = NULL;
-    MORSE_request_t request;
-    MORSE_desc_t *B;
-    int status;
-
-    morse = morse_context_self();
-    if (morse == NULL) {
-        morse_fatal_error("MORSE_zLapack_to_Tile", "MORSE not initialized");
-        return MORSE_ERR_NOT_INITIALIZED;
-    }
-    /* Check descriptor for correctness */
-    if (morse_desc_check( A ) != MORSE_SUCCESS) {
-        morse_error("MORSE_zLapack_to_Tile", "invalid descriptor");
-        return MORSE_ERR_ILLEGAL_VALUE;
-    }
-
-    /* Create the B descriptor to handle the Lapack format matrix */
-    MORSE_Desc_Create_User( &B, Af77, MorseComplexDouble, A->mb, A->nb, A->bsiz,
-                            LDA, A->n, 0, 0, A->m, A->n, 1, 1,
-                            morse_getaddr_cm, morse_getblkldd_cm, NULL );
-
-    /* Start the computation */
-    morse_sequence_create( morse, &sequence );
-
-    morse_pzlacpy( MorseUpperLower, B, A, sequence, &request );
-
-    MORSE_Desc_Flush( B, sequence );
-    MORSE_Desc_Flush( A, sequence );
-
-    morse_sequence_wait( morse, sequence );
-
-    /* Destroy temporary B descriptor */
-    MORSE_Desc_Destroy( &B );
-
-    status = sequence->status;
-    morse_sequence_destroy( morse, sequence );
-    return status;
+    return MORSE_Lapack_to_Tile( Af77, LDA, A );
 }
 
 /**
@@ -140,41 +103,5 @@ int MORSE_zLapack_to_Tile( MORSE_Complex64_t *Af77, int LDA, MORSE_desc_t *A )
  ******************************************************************************/
 int MORSE_zTile_to_Lapack( MORSE_desc_t *A, MORSE_Complex64_t *Af77, int LDA )
 {
-    MORSE_context_t *morse;
-    MORSE_sequence_t *sequence = NULL;
-    MORSE_request_t request;
-    MORSE_desc_t *B;
-    int status;
-
-    morse = morse_context_self();
-    if (morse == NULL) {
-        morse_fatal_error("MORSE_zTile_to_Lapack", "MORSE not initialized");
-        return MORSE_ERR_NOT_INITIALIZED;
-    }
-    /* Check descriptor for correctness */
-    if (morse_desc_check( A ) != MORSE_SUCCESS) {
-        morse_error("MORSE_zTile_to_Lapack", "invalid descriptor");
-        return MORSE_ERR_ILLEGAL_VALUE;
-    }
-
-    /* Create the B descriptor to handle the Lapack format matrix */
-    MORSE_Desc_Create_User( &B, Af77, MorseComplexDouble, A->mb, A->nb, A->bsiz,
-                            LDA, A->n, 0, 0, A->m, A->n, 1, 1,
-                            morse_getaddr_cm, morse_getblkldd_cm, NULL );
-
-    /* Start the computation */
-    morse_sequence_create( morse, &sequence );
-
-    morse_pzlacpy( MorseUpperLower, A, B, sequence, &request );
-
-    MORSE_Desc_Flush( A, sequence );
-    MORSE_Desc_Flush( B, sequence );
-
-    morse_sequence_wait( morse, sequence );
-
-    MORSE_Desc_Destroy( &B );
-
-    status = sequence->status;
-    morse_sequence_destroy( morse, sequence );
-    return status;
+    return MORSE_Tile_to_Lapack( A, Af77, LDA );
 }
diff --git a/control/tile.c b/control/tile.c
index 34491a212..bc52d5f13 100644
--- a/control/tile.c
+++ b/control/tile.c
@@ -57,10 +57,10 @@
  *****************************************************************************/
 int MORSE_Lapack_to_Tile(void *Af77, int LDA, MORSE_desc_t *A)
 {
-    MORSE_context_t  *morse;
+    MORSE_context_t *morse;
     MORSE_sequence_t *sequence = NULL;
-    MORSE_request_t   request;
-    MORSE_desc_t B;
+    MORSE_request_t request;
+    MORSE_desc_t *B;
     int status;
 
     morse = morse_context_self();
@@ -75,27 +75,25 @@ int MORSE_Lapack_to_Tile(void *Af77, int LDA, MORSE_desc_t *A)
     }
 
     /* Create the B descriptor to handle the Lapack format matrix */
-    B = morse_desc_init_user(
-        A->dtyp, A->mb, A->nb, A->bsiz,
-        LDA, A->n, 0, 0, A->m, A->n, 1, 1,
-        morse_getaddr_cm, morse_getblkldd_cm, NULL );
-    B.mat  = Af77;
-    B.styp = MorseCM;
+    MORSE_Desc_Create_User( &B, Af77, A->dtyp, A->mb, A->nb, A->bsiz,
+                            LDA, A->n, 0, 0, A->m, A->n, 1, 1,
+                            morse_getaddr_cm, morse_getblkldd_cm, NULL );
 
-    RUNTIME_desc_create( &B );
+    /* Start the computation */
+    morse_sequence_create( morse, &sequence );
 
-    morse_sequence_create(morse, &sequence);
+    morse_pzlacpy( MorseUpperLower, B, A, sequence, &request );
 
-    morse_pzlacpy( MorseUpperLower, &B, A, sequence, &request );
+    MORSE_Desc_Flush( B, sequence );
+    MORSE_Desc_Flush( A, sequence );
 
-    RUNTIME_desc_flush( &B, sequence );
-    RUNTIME_desc_flush(  A, sequence );
-    RUNTIME_sequence_wait( morse, sequence );
+    morse_sequence_wait( morse, sequence );
 
-    RUNTIME_desc_destroy( &B );
+    /* Destroy temporary B descriptor */
+    MORSE_Desc_Destroy( &B );
 
     status = sequence->status;
-    morse_sequence_destroy(morse, sequence);
+    morse_sequence_destroy( morse, sequence );
     return status;
 }
 
@@ -124,10 +122,10 @@ int MORSE_Lapack_to_Tile(void *Af77, int LDA, MORSE_desc_t *A)
  *****************************************************************************/
 int MORSE_Tile_to_Lapack(MORSE_desc_t *A, void *Af77, int LDA)
 {
-    MORSE_context_t  *morse;
+    MORSE_context_t *morse;
     MORSE_sequence_t *sequence = NULL;
-    MORSE_request_t   request;
-    MORSE_desc_t      B;
+    MORSE_request_t request;
+    MORSE_desc_t *B;
     int status;
 
     morse = morse_context_self();
@@ -142,25 +140,23 @@ int MORSE_Tile_to_Lapack(MORSE_desc_t *A, void *Af77, int LDA)
     }
 
     /* Create the B descriptor to handle the Lapack format matrix */
-    B = morse_desc_init_user(
-        A->dtyp, A->mb, A->nb, A->bsiz,
-        LDA, A->n, 0, 0, A->m, A->n, 1, 1,
-        morse_getaddr_cm, morse_getblkldd_cm, NULL );
-    B.mat  = Af77;
-    B.styp = MorseCM;
+    MORSE_Desc_Create_User( &B, Af77, MorseComplexDouble, A->mb, A->nb, A->bsiz,
+                            LDA, A->n, 0, 0, A->m, A->n, 1, 1,
+                            morse_getaddr_cm, morse_getblkldd_cm, NULL );
 
-    RUNTIME_desc_create( &B );
+    /* Start the computation */
+    morse_sequence_create( morse, &sequence );
 
-    morse_sequence_create(morse, &sequence);
-    morse_pzlacpy( MorseUpperLower, A, &B, sequence, &request );
+    morse_pzlacpy( MorseUpperLower, A, B, sequence, &request );
 
-    RUNTIME_desc_flush(  A, sequence );
-    RUNTIME_desc_flush( &B, sequence );
-    RUNTIME_sequence_wait( morse, sequence );
+    MORSE_Desc_Flush( A, sequence );
+    MORSE_Desc_Flush( B, sequence );
 
-    RUNTIME_desc_destroy( &B );
+    morse_sequence_wait( morse, sequence );
+
+    MORSE_Desc_Destroy( &B );
 
     status = sequence->status;
-    morse_sequence_destroy(morse, sequence);
+    morse_sequence_destroy( morse, sequence );
     return status;
 }
-- 
GitLab