From 1a7a2139f582a627eb3c45938cbebf4adce9c9c3 Mon Sep 17 00:00:00 2001
From: Thomas Mijieux <thomas.mijieux@inria.fr>
Date: Tue, 30 May 2017 18:29:46 +0200
Subject: [PATCH] Fix tile2lapack parameters

---
 compute/pztile.c | 37 ++++++++++++-------------------------
 1 file changed, 12 insertions(+), 25 deletions(-)

diff --git a/compute/pztile.c b/compute/pztile.c
index 73464b8ba..a5bcdfc4a 100644
--- a/compute/pztile.c
+++ b/compute/pztile.c
@@ -38,8 +38,7 @@ void morse_pzlapack_to_tile(MORSE_Complex64_t *Af77, int lda, MORSE_desc_t *dA,
     MORSE_context_t *morse;
     MORSE_option_t options;
     MORSE_desc_t dB;
-    int X1, Y1;
-    int X2, Y2;
+    int X, Y;
     int n, m, ldt;
 
     morse = morse_context_self();
@@ -60,18 +59,15 @@ void morse_pzlapack_to_tile(MORSE_Complex64_t *Af77, int lda, MORSE_desc_t *dA,
 
     for (m = 0; m < dA->mt; m++)
     {
+        Y = m == dA->mt-1 ? dA->m-m*dA->mb : dA->mb;
         ldt = BLKLDD(dA, m);
         for (n = 0; n < dA->nt; n++)
         {
-            X1 = n == 0 ? dA->j%dA->nb : 0;
-            Y1 = m == 0 ? dA->i%dA->mb : 0;
-            X2 = n == dA->nt-1 ? (dA->j+dA->n-1)%dA->nb+1 : dA->nb;
-            Y2 = m == dA->mt-1 ? (dA->i+dA->m-1)%dA->mb+1 : dA->mb;
-
+            X = n == dA->nt-1 ? dA->n-n*dA->nb : dA->nb;
             MORSE_TASK_zlacpy(
                 &options,
                 MorseUpperLower,
-                (Y2-Y1), (X2-X1), dA->mb,
+                Y, X, dA->mb,
                 B(m, n), lda,
                 A(m, n), ldt);
         }
@@ -93,8 +89,7 @@ void morse_pztile_to_lapack(MORSE_desc_t *dA, MORSE_Complex64_t *Af77, int lda,
     MORSE_context_t *morse;
     MORSE_option_t options;
     MORSE_desc_t dB;
-    int X1, Y1;
-    int X2, Y2;
+    int X, Y;
     int n, m, ldt;
 
     morse = morse_context_self();
@@ -115,19 +110,15 @@ void morse_pztile_to_lapack(MORSE_desc_t *dA, MORSE_Complex64_t *Af77, int lda,
 
     for (m = 0; m < dA->mt; m++)
     {
-        Y1 = m == 0 ? dA->i%dA->mb : 0;
-        Y2 = m == dA->mt-1 ? (dA->i+dA->m-1)%dA->mb+1 : dA->mb;
+        Y = m == dA->mt-1 ? dA->m-m*dA->mb : dA->mb;
         ldt = BLKLDD(dA, m);
-
         for (n = 0; n < dA->nt; n++)
         {
-            X1 = n == 0 ? dA->j%dA->nb : 0;
-            X2 = n == dA->nt-1 ? (dA->j+dA->n-1)%dA->nb+1 : dA->nb;
-
+            X = n == dA->nt-1 ? dA->n-n*dA->nb : dA->nb;
             MORSE_TASK_zlacpy(
                 &options,
                 MorseUpperLower,
-                (Y2-Y1), (X2-X1), dA->mb,
+                Y, X, dA->mb,
                 A(m, n), ldt,
                 B(m, n), lda);
         }
@@ -148,8 +139,7 @@ void morse_pztile_zero(MORSE_desc_t *dA, MORSE_sequence_t *sequence, MORSE_reque
 {
     MORSE_context_t *morse;
     MORSE_option_t options;
-    int X1, Y1;
-    int X2, Y2;
+    int X, Y;
     int n, m, ldt;
 
     morse = morse_context_self();
@@ -159,17 +149,14 @@ void morse_pztile_zero(MORSE_desc_t *dA, MORSE_sequence_t *sequence, MORSE_reque
 
     for (m = 0; m < dA->mt; m++)
     {
-        Y1 = m == 0 ? dA->i%dA->mb : 0;
-        Y2 = m == dA->mt-1 ? (dA->i+dA->m-1)%dA->mb+1 : dA->mb;
+        Y = m == dA->mt-1 ? dA->m-m*dA->mb : dA->mb;
         ldt = BLKLDD(dA, m);
         for (n = 0; n < dA->nt; n++)
         {
-            X1 = n == 0 ? dA->j%dA->nb : 0;
-            X2 = n == dA->nt-1 ? (dA->j+dA->n-1)%dA->nb+1 : dA->nb;
-
+            X = n == dA->nt-1 ? dA->n-n*dA->nb : dA->nb;
             MORSE_TASK_ztile_zero(
                 &options,
-                X1, X2, Y1, Y2,
+                0, X, 0, Y,
                 A(m, n), ldt);
         }
     }
-- 
GitLab