re PR fortran/80975 (matmul for zero-length arrays)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Tue, 6 Jun 2017 19:18:37 +0000 (19:18 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Tue, 6 Jun 2017 19:18:37 +0000 (19:18 +0000)
2017-06-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/80975
* m4/matmul_internal.m4:  Move zeroing before early return.
* generated/matmul_c10.c: Regenerated.
* generated/matmul_c16.c: Regenerated.
* generated/matmul_c4.c: Regenerated.
* generated/matmul_c8.c: Regenerated.
* generated/matmul_i1.c: Regenerated.
* generated/matmul_i16.c: Regenerated.
* generated/matmul_i2.c: Regenerated.
* generated/matmul_i4.c: Regenerated.
* generated/matmul_i8.c: Regenerated.
* generated/matmul_r10.c: Regenerated.
* generated/matmul_r16.c: Regenerated.
* generated/matmul_r4.c: Regenerated.
* generated/matmul_r8.c: Regenerated.
* generated/matmulavx128_c10.c: Regenerated.
* generated/matmulavx128_c16.c: Regenerated.
* generated/matmulavx128_c4.c: Regenerated.
* generated/matmulavx128_c8.c: Regenerated.
* generated/matmulavx128_i1.c: Regenerated.
* generated/matmulavx128_i16.c: Regenerated.
* generated/matmulavx128_i2.c: Regenerated.
* generated/matmulavx128_i4.c: Regenerated.
* generated/matmulavx128_i8.c: Regenerated.
* generated/matmulavx128_r10.c: Regenerated.
* generated/matmulavx128_r16.c: Regenerated.
* generated/matmulavx128_r4.c: Regenerated.
* generated/matmulavx128_r8.c: Regenerated.

2017-06-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/80975
* gfortran.dg/matmul_16.f90: New test.
* gfortran.dg/inline_matmul_18.f90: New test.

From-SVN: r248932

31 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/inline_matmul_18.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/matmul_16.f90 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/generated/matmul_c10.c
libgfortran/generated/matmul_c16.c
libgfortran/generated/matmul_c4.c
libgfortran/generated/matmul_c8.c
libgfortran/generated/matmul_i1.c
libgfortran/generated/matmul_i16.c
libgfortran/generated/matmul_i2.c
libgfortran/generated/matmul_i4.c
libgfortran/generated/matmul_i8.c
libgfortran/generated/matmul_r10.c
libgfortran/generated/matmul_r16.c
libgfortran/generated/matmul_r4.c
libgfortran/generated/matmul_r8.c
libgfortran/generated/matmulavx128_c10.c
libgfortran/generated/matmulavx128_c16.c
libgfortran/generated/matmulavx128_c4.c
libgfortran/generated/matmulavx128_c8.c
libgfortran/generated/matmulavx128_i1.c
libgfortran/generated/matmulavx128_i16.c
libgfortran/generated/matmulavx128_i2.c
libgfortran/generated/matmulavx128_i4.c
libgfortran/generated/matmulavx128_i8.c
libgfortran/generated/matmulavx128_r10.c
libgfortran/generated/matmulavx128_r16.c
libgfortran/generated/matmulavx128_r4.c
libgfortran/generated/matmulavx128_r8.c
libgfortran/m4/matmul_internal.m4

index bdd579ad67be02034b1c1155a54fc07a1a4426a7..74c974c19199d997a99c043112f333836c6e93ae 100644 (file)
@@ -1,3 +1,9 @@
+2017-06-06  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/80975
+       * gfortran.dg/matmul_16.f90: New test.
+       * gfortran.dg/inline_matmul_18.f90: New test.
+
 2017-06-06  Marek Polacek  <polacek@redhat.com>
 
        PR c/79983
diff --git a/gcc/testsuite/gfortran.dg/inline_matmul_18.f90 b/gcc/testsuite/gfortran.dg/inline_matmul_18.f90
new file mode 100644 (file)
index 0000000..c846733
--- /dev/null
@@ -0,0 +1,16 @@
+! { dg-do  run }
+! { dg-options "-O -finline-matmul-limit=100 -fdump-tree-optimized" }
+! PR 80975 - this did not zero the result array in the library version;
+! make sure this also doesn't happen in the inline version.
+program bogus_matmul
+  implicit none
+  real :: M(3,0), v(0), w(3)
+
+  w = 7
+  w = matmul(M,v)
+  if( any(w .ne. 0) ) then
+    call abort
+  end if
+end program bogus_matmul
+! { dg-final { scan-tree-dump-times "matmul_r4" 0 "optimized" } }
+
diff --git a/gcc/testsuite/gfortran.dg/matmul_16.f90 b/gcc/testsuite/gfortran.dg/matmul_16.f90
new file mode 100644 (file)
index 0000000..9def133
--- /dev/null
@@ -0,0 +1,13 @@
+! { dg-do  run }
+! { dg-options "-finline-matmul-limit=0" }
+! PR 80975 - this did not zero the result array
+program bogus_matmul
+  implicit none
+  real :: M(3,0), v(0), w(3)
+
+  w = 7
+  w = matmul(M,v)
+  if( any(w .ne. 0) ) then
+    call abort
+  end if
+end program bogus_matmul
index e763232744d8a73dee5bc0760cfeb266092f05c7..1f5a0264172cd337671b9d464d3bbdde14a2b9cb 100644 (file)
@@ -1,3 +1,34 @@
+2017-06-06  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/80975
+       * m4/matmul_internal.m4:  Move zeroing before early return.
+       * generated/matmul_c10.c: Regenerated.
+        * generated/matmul_c16.c: Regenerated.
+        * generated/matmul_c4.c: Regenerated.
+        * generated/matmul_c8.c: Regenerated.
+        * generated/matmul_i1.c: Regenerated.
+        * generated/matmul_i16.c: Regenerated.
+        * generated/matmul_i2.c: Regenerated.
+        * generated/matmul_i4.c: Regenerated.
+        * generated/matmul_i8.c: Regenerated.
+        * generated/matmul_r10.c: Regenerated.
+        * generated/matmul_r16.c: Regenerated.
+        * generated/matmul_r4.c: Regenerated.
+        * generated/matmul_r8.c: Regenerated.
+        * generated/matmulavx128_c10.c: Regenerated.
+        * generated/matmulavx128_c16.c: Regenerated.
+        * generated/matmulavx128_c4.c: Regenerated.
+        * generated/matmulavx128_c8.c: Regenerated.
+        * generated/matmulavx128_i1.c: Regenerated.
+        * generated/matmulavx128_i16.c: Regenerated.
+        * generated/matmulavx128_i2.c: Regenerated.
+        * generated/matmulavx128_i4.c: Regenerated.
+        * generated/matmulavx128_i8.c: Regenerated.
+        * generated/matmulavx128_r10.c: Regenerated.
+        * generated/matmulavx128_r16.c: Regenerated.
+        * generated/matmulavx128_r4.c: Regenerated.
+        * generated/matmulavx128_r8.c: Regenerated.
+
 2017-05-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libgfortran/53029
index 54e2714668d5a889ef48a2e60f8b422843fd3453..4e156ba2ee247137f07268caeaa2bfe1c58997cc 100644 (file)
@@ -307,6 +307,11 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -319,11 +324,6 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_10));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -859,6 +859,11 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -871,11 +876,6 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_10));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1411,6 +1411,11 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1423,11 +1428,6 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_10));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1977,6 +1977,11 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1989,11 +1994,6 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_10));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -2603,6 +2603,11 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -2615,11 +2620,6 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_10));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index cd8aacd9c68ac1cabb8cc5fcd15c243238718c82..162e564f260f6a3b3671235bd1c14995f907d810 100644 (file)
@@ -307,6 +307,11 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -319,11 +324,6 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -859,6 +859,11 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -871,11 +876,6 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1411,6 +1411,11 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1423,11 +1428,6 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1977,6 +1977,11 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1989,11 +1994,6 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -2603,6 +2603,11 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -2615,11 +2620,6 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index ead22efabb2e3a29b3b6557ad9a63d89cff5fb71..43a0288f2cbd6eef966e3a67342c69c1adbd6407 100644 (file)
@@ -307,6 +307,11 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -319,11 +324,6 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -859,6 +859,11 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -871,11 +876,6 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1411,6 +1411,11 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1423,11 +1428,6 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1977,6 +1977,11 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1989,11 +1994,6 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -2603,6 +2603,11 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -2615,11 +2620,6 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index a52e4bd7f0a387e18f1361ef594b148aa47dda6d..6efdca10bafe07c03048039e256ed23ee97ed508 100644 (file)
@@ -307,6 +307,11 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -319,11 +324,6 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -859,6 +859,11 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -871,11 +876,6 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1411,6 +1411,11 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1423,11 +1428,6 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1977,6 +1977,11 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1989,11 +1994,6 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -2603,6 +2603,11 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -2615,11 +2620,6 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index dfd47e176e4b0fb79209731cf2d678b2a7bb3ba5..a658c456663772cbeef1268c054a7c898ff96ff2 100644 (file)
@@ -307,6 +307,11 @@ matmul_i1_avx (gfc_array_i1 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_1)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -319,11 +324,6 @@ matmul_i1_avx (gfc_array_i1 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_1));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_1)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -859,6 +859,11 @@ matmul_i1_avx2 (gfc_array_i1 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_1)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -871,11 +876,6 @@ matmul_i1_avx2 (gfc_array_i1 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_1));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_1)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1411,6 +1411,11 @@ matmul_i1_avx512f (gfc_array_i1 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_1)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1423,11 +1428,6 @@ matmul_i1_avx512f (gfc_array_i1 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_1));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_1)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1977,6 +1977,11 @@ matmul_i1_vanilla (gfc_array_i1 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_1)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1989,11 +1994,6 @@ matmul_i1_vanilla (gfc_array_i1 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_1));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_1)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -2603,6 +2603,11 @@ matmul_i1 (gfc_array_i1 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_1)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -2615,11 +2620,6 @@ matmul_i1 (gfc_array_i1 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_1));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_1)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index a7bdcb5c67dc43553f5fec5451d5a6a51fbb065d..447112be70f6ee8fb62e1a007c8f0dc113ab4b7c 100644 (file)
@@ -307,6 +307,11 @@ matmul_i16_avx (gfc_array_i16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -319,11 +324,6 @@ matmul_i16_avx (gfc_array_i16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -859,6 +859,11 @@ matmul_i16_avx2 (gfc_array_i16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -871,11 +876,6 @@ matmul_i16_avx2 (gfc_array_i16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1411,6 +1411,11 @@ matmul_i16_avx512f (gfc_array_i16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1423,11 +1428,6 @@ matmul_i16_avx512f (gfc_array_i16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1977,6 +1977,11 @@ matmul_i16_vanilla (gfc_array_i16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1989,11 +1994,6 @@ matmul_i16_vanilla (gfc_array_i16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -2603,6 +2603,11 @@ matmul_i16 (gfc_array_i16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -2615,11 +2620,6 @@ matmul_i16 (gfc_array_i16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index d541fa3fe737682778d1ce24f20f888a828fd336..4e2165131f5b4a6643c5da17b2d9aa69cce71a64 100644 (file)
@@ -307,6 +307,11 @@ matmul_i2_avx (gfc_array_i2 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_2)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -319,11 +324,6 @@ matmul_i2_avx (gfc_array_i2 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_2));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_2)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -859,6 +859,11 @@ matmul_i2_avx2 (gfc_array_i2 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_2)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -871,11 +876,6 @@ matmul_i2_avx2 (gfc_array_i2 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_2));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_2)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1411,6 +1411,11 @@ matmul_i2_avx512f (gfc_array_i2 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_2)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1423,11 +1428,6 @@ matmul_i2_avx512f (gfc_array_i2 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_2));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_2)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1977,6 +1977,11 @@ matmul_i2_vanilla (gfc_array_i2 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_2)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1989,11 +1994,6 @@ matmul_i2_vanilla (gfc_array_i2 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_2));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_2)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -2603,6 +2603,11 @@ matmul_i2 (gfc_array_i2 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_2)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -2615,11 +2620,6 @@ matmul_i2 (gfc_array_i2 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_2));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_2)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index f8f0cdb96cc7ffbd119cfb97b2ae6a84aa434987..5331e945926cc8dc4a27101db43fb7a458a02ad6 100644 (file)
@@ -307,6 +307,11 @@ matmul_i4_avx (gfc_array_i4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -319,11 +324,6 @@ matmul_i4_avx (gfc_array_i4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -859,6 +859,11 @@ matmul_i4_avx2 (gfc_array_i4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -871,11 +876,6 @@ matmul_i4_avx2 (gfc_array_i4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1411,6 +1411,11 @@ matmul_i4_avx512f (gfc_array_i4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1423,11 +1428,6 @@ matmul_i4_avx512f (gfc_array_i4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1977,6 +1977,11 @@ matmul_i4_vanilla (gfc_array_i4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1989,11 +1994,6 @@ matmul_i4_vanilla (gfc_array_i4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -2603,6 +2603,11 @@ matmul_i4 (gfc_array_i4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -2615,11 +2620,6 @@ matmul_i4 (gfc_array_i4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index 2aac1d768223310b4f23ece7d31ea4e1e857657c..d150e699f2f97fb0934ef425217225ff39044da6 100644 (file)
@@ -307,6 +307,11 @@ matmul_i8_avx (gfc_array_i8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -319,11 +324,6 @@ matmul_i8_avx (gfc_array_i8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -859,6 +859,11 @@ matmul_i8_avx2 (gfc_array_i8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -871,11 +876,6 @@ matmul_i8_avx2 (gfc_array_i8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1411,6 +1411,11 @@ matmul_i8_avx512f (gfc_array_i8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1423,11 +1428,6 @@ matmul_i8_avx512f (gfc_array_i8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1977,6 +1977,11 @@ matmul_i8_vanilla (gfc_array_i8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1989,11 +1994,6 @@ matmul_i8_vanilla (gfc_array_i8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -2603,6 +2603,11 @@ matmul_i8 (gfc_array_i8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -2615,11 +2620,6 @@ matmul_i8 (gfc_array_i8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index 448c96bb99f851d3a585c314c3b9feeb5345b8f1..5407615fc3785faaa6dd2729b3dc9ee9fd7a0b3b 100644 (file)
@@ -307,6 +307,11 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_10)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -319,11 +324,6 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_10));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_10)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -859,6 +859,11 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_10)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -871,11 +876,6 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_10));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_10)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1411,6 +1411,11 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_10)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1423,11 +1428,6 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_10));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_10)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1977,6 +1977,11 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_10)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1989,11 +1994,6 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_10));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_10)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -2603,6 +2603,11 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_10)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -2615,11 +2620,6 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_10));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_10)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index 57a47dcd846537a99dfef3a40c3be78e8afa92b2..1254ec11fa598b3ad15dfc0a64c317b825f19271 100644 (file)
@@ -307,6 +307,11 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -319,11 +324,6 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -859,6 +859,11 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -871,11 +876,6 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1411,6 +1411,11 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1423,11 +1428,6 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1977,6 +1977,11 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1989,11 +1994,6 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -2603,6 +2603,11 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -2615,11 +2620,6 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index 52eea532a9b507ef5bc746385a6c70f84ebee50c..5d13e6713d6e810d865eb59c4951a2e6a5e59b11 100644 (file)
@@ -307,6 +307,11 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -319,11 +324,6 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -859,6 +859,11 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -871,11 +876,6 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1411,6 +1411,11 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1423,11 +1428,6 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1977,6 +1977,11 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1989,11 +1994,6 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -2603,6 +2603,11 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -2615,11 +2620,6 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index 074697dbf8b69feb9550780733d8664a77896f47..e835ed17169cf18ccc900d9b3e1faf75b41bd9ac 100644 (file)
@@ -307,6 +307,11 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -319,11 +324,6 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -859,6 +859,11 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -871,11 +876,6 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1411,6 +1411,11 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1423,11 +1428,6 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -1977,6 +1977,11 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -1989,11 +1994,6 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -2603,6 +2603,11 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -2615,11 +2620,6 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index 53cdecbd4e8fc141716fdfa4177aa2a07fa48fb5..ac8a013b864a0e301ed2a674d2e70fe94283a55a 100644 (file)
@@ -272,6 +272,11 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -284,11 +289,6 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_10));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -825,6 +825,11 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -837,11 +842,6 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_10));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index e7657a098a54a6632b5cb8de9c43b95ca9b5480d..6af99bec4346985b88028b6469c2d4fae5cd52d5 100644 (file)
@@ -272,6 +272,11 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -284,11 +289,6 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -825,6 +825,11 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -837,11 +842,6 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index 950f1eb49de54fa40dd77201d387b4143b945bf0..0e358be89c375ae38257bd2a43b8f12274433d22 100644 (file)
@@ -272,6 +272,11 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -284,11 +289,6 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -825,6 +825,11 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -837,11 +842,6 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index a41c160c99325d37d393819454fdf686bc260bb2..c4416b17562b675f1f40339ddb74579fc3425e4a 100644 (file)
@@ -272,6 +272,11 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -284,11 +289,6 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -825,6 +825,11 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -837,11 +842,6 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_COMPLEX_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index e1871578ea2be58b57d809beff4f4f5d4be3ab9c..011de3ab5c3d80ec24f6a500459b5056474b68d5 100644 (file)
@@ -272,6 +272,11 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_1)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -284,11 +289,6 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_1));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_1)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -825,6 +825,11 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_1)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -837,11 +842,6 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_1));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_1)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index 1a7b733181a7c2a631c1605b9f08746841ca343b..3a8b48a670f754f3e18b64d50ee2f0e24cba7a2f 100644 (file)
@@ -272,6 +272,11 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -284,11 +289,6 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -825,6 +825,11 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -837,11 +842,6 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index a095c5872eb0a038944f181905168738b015c825..738f64222db8d874308aa32f3df26d054c456569 100644 (file)
@@ -272,6 +272,11 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_2)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -284,11 +289,6 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_2));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_2)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -825,6 +825,11 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_2)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -837,11 +842,6 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_2));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_2)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index a01c56f71389e0d0cdb3ebe4e1b6f225bde13a3e..6c3bb7cd876a6080f5282156a417410b92e15e15 100644 (file)
@@ -272,6 +272,11 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -284,11 +289,6 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -825,6 +825,11 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -837,11 +842,6 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index bc78ffe27798eb198515380fe316f61b898adf6d..58bdf2ca2424bae82f73aa115156c8f427dc2345 100644 (file)
@@ -272,6 +272,11 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -284,11 +289,6 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -825,6 +825,11 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_INTEGER_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -837,11 +842,6 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_INTEGER_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_INTEGER_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index 943678d1b51f6cbd00b5ace79821786fd5f09110..72277faada3cc9ecee14c706e1453d0cce033850 100644 (file)
@@ -272,6 +272,11 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_10)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -284,11 +289,6 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_10));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_10)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -825,6 +825,11 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_10)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -837,11 +842,6 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_10));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_10)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index 3d5738bb6f524c48d0bbe97c40b9779aeb4ac901..a6e11785299ba8af94be53fb2c90a7890a0650d0 100644 (file)
@@ -272,6 +272,11 @@ matmul_r16_avx128_fma3 (gfc_array_r16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -284,11 +289,6 @@ matmul_r16_avx128_fma3 (gfc_array_r16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -825,6 +825,11 @@ matmul_r16_avx128_fma4 (gfc_array_r16 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_16)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -837,11 +842,6 @@ matmul_r16_avx128_fma4 (gfc_array_r16 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_16));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_16)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index 6c6da3994c9ddd6e1521792a380f2629abe4475b..b981053606e935cd6aa87ca40bbd9cef16aec43f 100644 (file)
@@ -272,6 +272,11 @@ matmul_r4_avx128_fma3 (gfc_array_r4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -284,11 +289,6 @@ matmul_r4_avx128_fma3 (gfc_array_r4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -825,6 +825,11 @@ matmul_r4_avx128_fma4 (gfc_array_r4 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_4)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -837,11 +842,6 @@ matmul_r4_avx128_fma4 (gfc_array_r4 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_4));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_4)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index d628200e8e3664855ff9bedd95c6af792fdf73e6..6392b7b1cb5f452d5b265f6bde2bbad337e0446a 100644 (file)
@@ -272,6 +272,11 @@ matmul_r8_avx128_fma3 (gfc_array_r8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -284,11 +289,6 @@ matmul_r8_avx128_fma3 (gfc_array_r8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
@@ -825,6 +825,11 @@ matmul_r8_avx128_fma4 (gfc_array_r8 * const restrict retarray,
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = (GFC_REAL_8)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -837,11 +842,6 @@ matmul_r8_avx128_fma4 (gfc_array_r8 * const restrict retarray,
 
       t1 = malloc (t1_dim * sizeof(GFC_REAL_8));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = (GFC_REAL_8)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)
index fdc93e746639aee40ddcc6a81ba468929871b72f..e20f9224b61c17fa0a01d95de89159487715552d 100644 (file)
@@ -223,6 +223,11 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
       b_offset = 1 + b_dim1;
       b -= b_offset;
 
+      /* Empty c first.  */
+      for (j=1; j<=n; j++)
+       for (i=1; i<=m; i++)
+         c[i + j * c_dim1] = ('rtype_name`)0;
+
       /* Early exit if possible */
       if (m == 0 || n == 0 || k == 0)
        return;
@@ -235,11 +240,6 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
 
       t1 = malloc (t1_dim * sizeof('rtype_name`));
 
-      /* Empty c first.  */
-      for (j=1; j<=n; j++)
-       for (i=1; i<=m; i++)
-         c[i + j * c_dim1] = ('rtype_name`)0;
-
       /* Start turning the crank. */
       i1 = n;
       for (jj = 1; jj <= i1; jj += 512)