PR libfortran/97063 - Wrong result for vector (step size is negative) * matrix
authorHarald Anlauf <anlauf@gmx.de>
Sun, 18 Oct 2020 18:15:26 +0000 (20:15 +0200)
committerHarald Anlauf <anlauf@gmx.de>
Sun, 18 Oct 2020 18:15:26 +0000 (20:15 +0200)
The MATMUL intrinsic provided a wrong result for rank-1 times rank-2 array
when a negative stride was used for addressing the elements of the rank-1
array, because a check on strides was erroneously placed before the check
on the rank.  Interchange order of checks.

libgfortran/ChangeLog:

* m4/matmul_internal.m4: Move check for rank-1 times rank-2 before
checks on strides for rank-2 times rank-2.
* generated/matmul_c10.c: Regenerated.
* generated/matmul_c16.c: Likewise.
* generated/matmul_c4.c: Likewise.
* generated/matmul_c8.c: Likewise.
* generated/matmul_i1.c: Likewise.
* generated/matmul_i16.c: Likewise.
* generated/matmul_i2.c: Likewise.
* generated/matmul_i4.c: Likewise.
* generated/matmul_i8.c: Likewise.
* generated/matmul_r10.c: Likewise.
* generated/matmul_r16.c: Likewise.
* generated/matmul_r4.c: Likewise.
* generated/matmul_r8.c: Likewise.
* generated/matmulavx128_c10.c: Likewise.
* generated/matmulavx128_c16.c: Likewise.
* generated/matmulavx128_c4.c: Likewise.
* generated/matmulavx128_c8.c: Likewise.
* generated/matmulavx128_i1.c: Likewise.
* generated/matmulavx128_i16.c: Likewise.
* generated/matmulavx128_i2.c: Likewise.
* generated/matmulavx128_i4.c: Likewise.
* generated/matmulavx128_i8.c: Likewise.
* generated/matmulavx128_r10.c: Likewise.
* generated/matmulavx128_r16.c: Likewise.
* generated/matmulavx128_r4.c: Likewise.
* generated/matmulavx128_r8.c: Likewise.

gcc/testsuite/ChangeLog:

* gfortran.dg/matmul_20.f90: New test.

28 files changed:
gcc/testsuite/gfortran.dg/matmul_20.f90 [new file with mode: 0644]
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

diff --git a/gcc/testsuite/gfortran.dg/matmul_20.f90 b/gcc/testsuite/gfortran.dg/matmul_20.f90
new file mode 100644 (file)
index 0000000..7a211a4
--- /dev/null
@@ -0,0 +1,47 @@
+! { dg-do run }
+! PR97063 - Wrong result for vector (step size is negative) * matrix
+
+program p
+  implicit none
+  integer, parameter :: m = 3, k = 2*m, l = k-1, n = 4
+  integer :: i, j,  m1, m2, ms
+  integer :: ai(k), bi(k,n), ci(n), ci_ref(n), c1, c2
+  real    :: ar(k), br(k,n), cr(n), cr_ref(n)
+
+  ai(:)   = [(i,i=0,k-1)]
+  bi(:,:) = reshape ([(((5*i+j),i=0,k-1),j=0,n-1)],[k,n])
+
+  ! Parameters of subscript triplet
+  m1 = 1; m2 = l; ms =  2
+
+  ! Reference values for cross-checks: integer variant
+  c1 = dot_product (ai(m1:m2: ms), bi(m1:m2: ms,1))
+  c2 = dot_product (ai(m1:m2: ms), bi(m1:m2: ms,2))
+  ci_ref = matmul  (ai(m1:m2: ms), bi(m1:m2: ms,:))
+  ci     = matmul  (ai(m2:m1:-ms), bi(m2:m1:-ms,:))
+
+  if (ci_ref(1) /= c1 .or. ci_ref(2) /= c2) stop 1
+  if (any (ci   /= ci_ref)) stop 2
+
+  ! Real variant
+  ar = real (ai)
+  br = real (bi)
+  cr_ref = matmul  (ar(m1:m2: ms), br(m1:m2: ms,:))
+  cr     = matmul  (ar(m2:m1:-ms), br(m2:m1:-ms,:))
+
+  if (any (cr_ref /= real (ci_ref))) stop 3
+  if (any (cr     /=       cr_ref )) stop 4
+
+  ! Mixed variants
+  cr_ref = matmul  (ar(m1:m2: ms), bi(m1:m2: ms,:))
+  cr     = matmul  (ar(m2:m1:-ms), bi(m2:m1:-ms,:))
+
+  if (any (cr_ref /= real (ci_ref))) stop 5
+  if (any (cr     /=       cr_ref )) stop 6
+
+  cr_ref = matmul  (ai(m1:m2: ms), br(m1:m2: ms,:))
+  cr     = matmul  (ai(m2:m1:-ms), br(m2:m1:-ms,:))
+
+  if (any (cr_ref /= real (ci_ref))) stop 7
+  if (any (cr     /=       cr_ref )) stop 8
+end program
index ce5be246ddbc40434377eb0bb9eac36c2acaa43c..5bfd61d97ce5faf22fbf4909bd07e2bfe671812b 100644 (file)
@@ -590,20 +590,6 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_10 *restrict bbase_y;
@@ -618,6 +604,20 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_10 *restrict abase_x;
@@ -1158,20 +1158,6 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_10 *restrict bbase_y;
@@ -1186,6 +1172,20 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_10 *restrict abase_x;
@@ -1726,20 +1726,6 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_10 *restrict bbase_y;
@@ -1754,6 +1740,20 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_10 *restrict abase_x;
@@ -2308,20 +2308,6 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_10 *restrict bbase_y;
@@ -2336,6 +2322,20 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_10 *restrict abase_x;
@@ -2949,20 +2949,6 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_10 *restrict bbase_y;
@@ -2977,6 +2963,20 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_10 *restrict abase_x;
index bf756d124ecf06b0c50a442d76ca65dd5ceb92d5..d7617e31b430c0de8393d848db51278d7b9c4692 100644 (file)
@@ -590,20 +590,6 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_16 *restrict bbase_y;
@@ -618,6 +604,20 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_16 *restrict abase_x;
@@ -1158,20 +1158,6 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_16 *restrict bbase_y;
@@ -1186,6 +1172,20 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_16 *restrict abase_x;
@@ -1726,20 +1726,6 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_16 *restrict bbase_y;
@@ -1754,6 +1740,20 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_16 *restrict abase_x;
@@ -2308,20 +2308,6 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_16 *restrict bbase_y;
@@ -2336,6 +2322,20 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_16 *restrict abase_x;
@@ -2949,20 +2949,6 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_16 *restrict bbase_y;
@@ -2977,6 +2963,20 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_16 *restrict abase_x;
index 5b24410457489255d2829f03df031d3ba46d562a..9303e6add20ea607759212d12ddc77e0b3d50627 100644 (file)
@@ -590,20 +590,6 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_4 *restrict bbase_y;
@@ -618,6 +604,20 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_4 *restrict abase_x;
@@ -1158,20 +1158,6 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_4 *restrict bbase_y;
@@ -1186,6 +1172,20 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_4 *restrict abase_x;
@@ -1726,20 +1726,6 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_4 *restrict bbase_y;
@@ -1754,6 +1740,20 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_4 *restrict abase_x;
@@ -2308,20 +2308,6 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_4 *restrict bbase_y;
@@ -2336,6 +2322,20 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_4 *restrict abase_x;
@@ -2949,20 +2949,6 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_4 *restrict bbase_y;
@@ -2977,6 +2963,20 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_4 *restrict abase_x;
index df3cb927e1c7ef66b2f8c13494ef13b3e75aa52a..d29c99a5b4a60233244109a0a6ffc888f35c6337 100644 (file)
@@ -590,20 +590,6 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_8 *restrict bbase_y;
@@ -618,6 +604,20 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_8 *restrict abase_x;
@@ -1158,20 +1158,6 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_8 *restrict bbase_y;
@@ -1186,6 +1172,20 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_8 *restrict abase_x;
@@ -1726,20 +1726,6 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_8 *restrict bbase_y;
@@ -1754,6 +1740,20 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_8 *restrict abase_x;
@@ -2308,20 +2308,6 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_8 *restrict bbase_y;
@@ -2336,6 +2322,20 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_8 *restrict abase_x;
@@ -2949,20 +2949,6 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_8 *restrict bbase_y;
@@ -2977,6 +2963,20 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_8 *restrict abase_x;
index 49b0fbad21142d99c6a423bb259122d112cfb190..72c4cee7d184a680474cab0b25221dd84f124553 100644 (file)
@@ -590,20 +590,6 @@ matmul_i1_avx (gfc_array_i1 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_1 *restrict bbase_y;
@@ -618,6 +604,20 @@ matmul_i1_avx (gfc_array_i1 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_1 *restrict abase_x;
@@ -1158,20 +1158,6 @@ matmul_i1_avx2 (gfc_array_i1 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_1 *restrict bbase_y;
@@ -1186,6 +1172,20 @@ matmul_i1_avx2 (gfc_array_i1 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_1 *restrict abase_x;
@@ -1726,20 +1726,6 @@ matmul_i1_avx512f (gfc_array_i1 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_1 *restrict bbase_y;
@@ -1754,6 +1740,20 @@ matmul_i1_avx512f (gfc_array_i1 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_1 *restrict abase_x;
@@ -2308,20 +2308,6 @@ matmul_i1_vanilla (gfc_array_i1 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_1 *restrict bbase_y;
@@ -2336,6 +2322,20 @@ matmul_i1_vanilla (gfc_array_i1 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_1 *restrict abase_x;
@@ -2949,20 +2949,6 @@ matmul_i1 (gfc_array_i1 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_1 *restrict bbase_y;
@@ -2977,6 +2963,20 @@ matmul_i1 (gfc_array_i1 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_1 *restrict abase_x;
index 4e1d837682b3328c2d4b804a3974b42e47b10618..815868440984879a9d791859d7238f50bcdbadc4 100644 (file)
@@ -590,20 +590,6 @@ matmul_i16_avx (gfc_array_i16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_16 *restrict bbase_y;
@@ -618,6 +604,20 @@ matmul_i16_avx (gfc_array_i16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_16 *restrict abase_x;
@@ -1158,20 +1158,6 @@ matmul_i16_avx2 (gfc_array_i16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_16 *restrict bbase_y;
@@ -1186,6 +1172,20 @@ matmul_i16_avx2 (gfc_array_i16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_16 *restrict abase_x;
@@ -1726,20 +1726,6 @@ matmul_i16_avx512f (gfc_array_i16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_16 *restrict bbase_y;
@@ -1754,6 +1740,20 @@ matmul_i16_avx512f (gfc_array_i16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_16 *restrict abase_x;
@@ -2308,20 +2308,6 @@ matmul_i16_vanilla (gfc_array_i16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_16 *restrict bbase_y;
@@ -2336,6 +2322,20 @@ matmul_i16_vanilla (gfc_array_i16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_16 *restrict abase_x;
@@ -2949,20 +2949,6 @@ matmul_i16 (gfc_array_i16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_16 *restrict bbase_y;
@@ -2977,6 +2963,20 @@ matmul_i16 (gfc_array_i16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_16 *restrict abase_x;
index 191298708dcf4aae5969f03fc2ac114f24c1c487..1320a2e3ec24cff6e4992877f3dc2c8bf28f7371 100644 (file)
@@ -590,20 +590,6 @@ matmul_i2_avx (gfc_array_i2 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_2 *restrict bbase_y;
@@ -618,6 +604,20 @@ matmul_i2_avx (gfc_array_i2 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_2 *restrict abase_x;
@@ -1158,20 +1158,6 @@ matmul_i2_avx2 (gfc_array_i2 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_2 *restrict bbase_y;
@@ -1186,6 +1172,20 @@ matmul_i2_avx2 (gfc_array_i2 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_2 *restrict abase_x;
@@ -1726,20 +1726,6 @@ matmul_i2_avx512f (gfc_array_i2 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_2 *restrict bbase_y;
@@ -1754,6 +1740,20 @@ matmul_i2_avx512f (gfc_array_i2 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_2 *restrict abase_x;
@@ -2308,20 +2308,6 @@ matmul_i2_vanilla (gfc_array_i2 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_2 *restrict bbase_y;
@@ -2336,6 +2322,20 @@ matmul_i2_vanilla (gfc_array_i2 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_2 *restrict abase_x;
@@ -2949,20 +2949,6 @@ matmul_i2 (gfc_array_i2 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_2 *restrict bbase_y;
@@ -2977,6 +2963,20 @@ matmul_i2 (gfc_array_i2 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_2 *restrict abase_x;
index ab14a0a3ff3c8a9bafd381a01fd0f365d95cc158..4ee22218d2cafaa1a2927fba8692ceb6b96435a5 100644 (file)
@@ -590,20 +590,6 @@ matmul_i4_avx (gfc_array_i4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_4 *restrict bbase_y;
@@ -618,6 +604,20 @@ matmul_i4_avx (gfc_array_i4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_4 *restrict abase_x;
@@ -1158,20 +1158,6 @@ matmul_i4_avx2 (gfc_array_i4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_4 *restrict bbase_y;
@@ -1186,6 +1172,20 @@ matmul_i4_avx2 (gfc_array_i4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_4 *restrict abase_x;
@@ -1726,20 +1726,6 @@ matmul_i4_avx512f (gfc_array_i4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_4 *restrict bbase_y;
@@ -1754,6 +1740,20 @@ matmul_i4_avx512f (gfc_array_i4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_4 *restrict abase_x;
@@ -2308,20 +2308,6 @@ matmul_i4_vanilla (gfc_array_i4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_4 *restrict bbase_y;
@@ -2336,6 +2322,20 @@ matmul_i4_vanilla (gfc_array_i4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_4 *restrict abase_x;
@@ -2949,20 +2949,6 @@ matmul_i4 (gfc_array_i4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_4 *restrict bbase_y;
@@ -2977,6 +2963,20 @@ matmul_i4 (gfc_array_i4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_4 *restrict abase_x;
index bc627e189fe75c016adeb9ea5fae0e828cd394f7..b68a27f76ad75387252cc58c37a6fe91cefddc67 100644 (file)
@@ -590,20 +590,6 @@ matmul_i8_avx (gfc_array_i8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_8 *restrict bbase_y;
@@ -618,6 +604,20 @@ matmul_i8_avx (gfc_array_i8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_8 *restrict abase_x;
@@ -1158,20 +1158,6 @@ matmul_i8_avx2 (gfc_array_i8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_8 *restrict bbase_y;
@@ -1186,6 +1172,20 @@ matmul_i8_avx2 (gfc_array_i8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_8 *restrict abase_x;
@@ -1726,20 +1726,6 @@ matmul_i8_avx512f (gfc_array_i8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_8 *restrict bbase_y;
@@ -1754,6 +1740,20 @@ matmul_i8_avx512f (gfc_array_i8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_8 *restrict abase_x;
@@ -2308,20 +2308,6 @@ matmul_i8_vanilla (gfc_array_i8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_8 *restrict bbase_y;
@@ -2336,6 +2322,20 @@ matmul_i8_vanilla (gfc_array_i8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_8 *restrict abase_x;
@@ -2949,20 +2949,6 @@ matmul_i8 (gfc_array_i8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_8 *restrict bbase_y;
@@ -2977,6 +2963,20 @@ matmul_i8 (gfc_array_i8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_8 *restrict abase_x;
index b5e63be244831c7fb56c646ef3e208d970915c64..859c5a567470c8fad09e55ea850a34cf3f56928c 100644 (file)
@@ -590,20 +590,6 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_10 *restrict bbase_y;
@@ -618,6 +604,20 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_10 *restrict abase_x;
@@ -1158,20 +1158,6 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_10 *restrict bbase_y;
@@ -1186,6 +1172,20 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_10 *restrict abase_x;
@@ -1726,20 +1726,6 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_10 *restrict bbase_y;
@@ -1754,6 +1740,20 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_10 *restrict abase_x;
@@ -2308,20 +2308,6 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_10 *restrict bbase_y;
@@ -2336,6 +2322,20 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_10 *restrict abase_x;
@@ -2949,20 +2949,6 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_10 *restrict bbase_y;
@@ -2977,6 +2963,20 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_10 *restrict abase_x;
index 4e6c66bb8f35ec71cdc061631ddee3d793bddaf3..b2fc7f86149b8bd3e6af0173f8e27f0225cf558e 100644 (file)
@@ -590,20 +590,6 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_16 *restrict bbase_y;
@@ -618,6 +604,20 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_16 *restrict abase_x;
@@ -1158,20 +1158,6 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_16 *restrict bbase_y;
@@ -1186,6 +1172,20 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_16 *restrict abase_x;
@@ -1726,20 +1726,6 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_16 *restrict bbase_y;
@@ -1754,6 +1740,20 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_16 *restrict abase_x;
@@ -2308,20 +2308,6 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_16 *restrict bbase_y;
@@ -2336,6 +2322,20 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_16 *restrict abase_x;
@@ -2949,20 +2949,6 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_16 *restrict bbase_y;
@@ -2977,6 +2963,20 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_16 *restrict abase_x;
index 202634b55d1411c368acfcd3972b062c269c11a1..11d785f04c4d622b0f5dac0083bdb1e07ae794d4 100644 (file)
@@ -590,20 +590,6 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_4 *restrict bbase_y;
@@ -618,6 +604,20 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_4 *restrict abase_x;
@@ -1158,20 +1158,6 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_4 *restrict bbase_y;
@@ -1186,6 +1172,20 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_4 *restrict abase_x;
@@ -1726,20 +1726,6 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_4 *restrict bbase_y;
@@ -1754,6 +1740,20 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_4 *restrict abase_x;
@@ -2308,20 +2308,6 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_4 *restrict bbase_y;
@@ -2336,6 +2322,20 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_4 *restrict abase_x;
@@ -2949,20 +2949,6 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_4 *restrict bbase_y;
@@ -2977,6 +2963,20 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_4 *restrict abase_x;
index 22c24e50c372ce30a66dbd9e49829ab60d9a0627..6aae02f8798485afde5876c8321bb49de41320d6 100644 (file)
@@ -590,20 +590,6 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_8 *restrict bbase_y;
@@ -618,6 +604,20 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_8 *restrict abase_x;
@@ -1158,20 +1158,6 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_8 *restrict bbase_y;
@@ -1186,6 +1172,20 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_8 *restrict abase_x;
@@ -1726,20 +1726,6 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_8 *restrict bbase_y;
@@ -1754,6 +1740,20 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_8 *restrict abase_x;
@@ -2308,20 +2308,6 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_8 *restrict bbase_y;
@@ -2336,6 +2322,20 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_8 *restrict abase_x;
@@ -2949,20 +2949,6 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_8 *restrict bbase_y;
@@ -2977,6 +2963,20 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_8 *restrict abase_x;
index b5ffd030d4a2d13a3e162c9434e19fa493b0e454..d0b417c39fd3ab0fbd769ea02dd96efc67ec9f7b 100644 (file)
@@ -555,20 +555,6 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_10 *restrict bbase_y;
@@ -583,6 +569,20 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_10 *restrict abase_x;
@@ -1124,20 +1124,6 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_10 *restrict bbase_y;
@@ -1152,6 +1138,20 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_10 *restrict abase_x;
index 32a355e424d08747bc95aa9c0099e07a16fa0458..0137ba550e4a31177a467eab912e14d839a48aa3 100644 (file)
@@ -555,20 +555,6 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_16 *restrict bbase_y;
@@ -583,6 +569,20 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_16 *restrict abase_x;
@@ -1124,20 +1124,6 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_16 *restrict bbase_y;
@@ -1152,6 +1138,20 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_16 *restrict abase_x;
index 97b53d3300f62fe10def2fa710d44197dc94d6c5..850bd2ba1db9a57c2517c55c9d96e9fee4f9d7a0 100644 (file)
@@ -555,20 +555,6 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_4 *restrict bbase_y;
@@ -583,6 +569,20 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_4 *restrict abase_x;
@@ -1124,20 +1124,6 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_4 *restrict bbase_y;
@@ -1152,6 +1138,20 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_4 *restrict abase_x;
index e73575e3b63ca95a8e668862a254164d26e0580f..49d8b446ad9504733da949262de559e7c21b62d5 100644 (file)
@@ -555,20 +555,6 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_8 *restrict bbase_y;
@@ -583,6 +569,20 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_8 *restrict abase_x;
@@ -1124,20 +1124,6 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_COMPLEX_8 *restrict bbase_y;
@@ -1152,6 +1138,20 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_COMPLEX_8 *restrict abase_x;
index 00885fa3139c139f2a0b84b3883e5e3f0d0783ab..8fc6d921b00729f92dd31a8cfb8c01eaa43d6125 100644 (file)
@@ -555,20 +555,6 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_1 *restrict bbase_y;
@@ -583,6 +569,20 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_1 *restrict abase_x;
@@ -1124,20 +1124,6 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_1 *restrict bbase_y;
@@ -1152,6 +1138,20 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_1 *restrict abase_x;
index 942dc08fdb592a3cbb4c633c91638c1491a648da..a3495570d5288eeaf2cbde39e125bfb0e442de94 100644 (file)
@@ -555,20 +555,6 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_16 *restrict bbase_y;
@@ -583,6 +569,20 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_16 *restrict abase_x;
@@ -1124,20 +1124,6 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_16 *restrict bbase_y;
@@ -1152,6 +1138,20 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_16 *restrict abase_x;
index baa3c9fba2e378cc59814b665b2f8ea11363b5a8..944eaf08cd1732f4921e74647106027998823419 100644 (file)
@@ -555,20 +555,6 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_2 *restrict bbase_y;
@@ -583,6 +569,20 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_2 *restrict abase_x;
@@ -1124,20 +1124,6 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_2 *restrict bbase_y;
@@ -1152,6 +1138,20 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_2 *restrict abase_x;
index 0c69623ba7256a4d02b29b8c36228009e73465ee..a8e270dd97c13e92f18e773472ebfe86b50ae271 100644 (file)
@@ -555,20 +555,6 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_4 *restrict bbase_y;
@@ -583,6 +569,20 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_4 *restrict abase_x;
@@ -1124,20 +1124,6 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_4 *restrict bbase_y;
@@ -1152,6 +1138,20 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_4 *restrict abase_x;
index f8670020caa53cc10ea95ae47efa865a76a7ae4a..9c7f4925687e1c50307d77504a4687a59f07e840 100644 (file)
@@ -555,20 +555,6 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_8 *restrict bbase_y;
@@ -583,6 +569,20 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_8 *restrict abase_x;
@@ -1124,20 +1124,6 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_INTEGER_8 *restrict bbase_y;
@@ -1152,6 +1138,20 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_INTEGER_8 *restrict abase_x;
index 24fb2972d1d173b37417d72466a1b6f7bb546de6..e2a44cf7e0dd54d8bea1dcc00f3b33913516d418 100644 (file)
@@ -555,20 +555,6 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_10 *restrict bbase_y;
@@ -583,6 +569,20 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_10 *restrict abase_x;
@@ -1124,20 +1124,6 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_10 *restrict bbase_y;
@@ -1152,6 +1138,20 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_10)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_10 *restrict abase_x;
index 231d04db0ad39a11b40f7fdc2f264e51d378e40a..186b226ebc7e7ece29cb78c43c50e36c76fdad4b 100644 (file)
@@ -555,20 +555,6 @@ matmul_r16_avx128_fma3 (gfc_array_r16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_16 *restrict bbase_y;
@@ -583,6 +569,20 @@ matmul_r16_avx128_fma3 (gfc_array_r16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_16 *restrict abase_x;
@@ -1124,20 +1124,6 @@ matmul_r16_avx128_fma4 (gfc_array_r16 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_16 *restrict bbase_y;
@@ -1152,6 +1138,20 @@ matmul_r16_avx128_fma4 (gfc_array_r16 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_16)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_16 *restrict abase_x;
index c58228017bfabf21d915331bc4d6e723a522867f..e21ea39f12457384daa027dd84ef7f0b2734f813 100644 (file)
@@ -555,20 +555,6 @@ matmul_r4_avx128_fma3 (gfc_array_r4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_4 *restrict bbase_y;
@@ -583,6 +569,20 @@ matmul_r4_avx128_fma3 (gfc_array_r4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_4 *restrict abase_x;
@@ -1124,20 +1124,6 @@ matmul_r4_avx128_fma4 (gfc_array_r4 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_4 *restrict bbase_y;
@@ -1152,6 +1138,20 @@ matmul_r4_avx128_fma4 (gfc_array_r4 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_4)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_4 *restrict abase_x;
index e93aeec8910d963a8dccc95c5dbed756a4d6e31b..e7efd0758899882c2f680eb7dcecde77dd012012 100644 (file)
@@ -555,20 +555,6 @@ matmul_r8_avx128_fma3 (gfc_array_r8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_8 *restrict bbase_y;
@@ -583,6 +569,20 @@ matmul_r8_avx128_fma3 (gfc_array_r8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_8 *restrict abase_x;
@@ -1124,20 +1124,6 @@ matmul_r8_avx128_fma4 (gfc_array_r8 * const restrict retarray,
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const GFC_REAL_8 *restrict bbase_y;
@@ -1152,6 +1138,20 @@ matmul_r8_avx128_fma4 (gfc_array_r8 * const restrict retarray,
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = (GFC_REAL_8)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const GFC_REAL_8 *restrict abase_x;
index 32a1e01e12f66c6951412291f7783cd6af7a86e8..13fd7696238b383ab523dd402beab50cecc8158c 100644 (file)
@@ -506,20 +506,6 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
            }
        }
     }
-  else if (axstride < aystride)
-    {
-      for (y = 0; y < ycount; y++)
-       for (x = 0; x < xcount; x++)
-         dest[x*rxstride + y*rystride] = ('rtype_name`)0;
-
-      for (y = 0; y < ycount; y++)
-       for (n = 0; n < count; n++)
-         for (x = 0; x < xcount; x++)
-           /* dest[x,y] += a[x,n] * b[n,y] */
-           dest[x*rxstride + y*rystride] +=
-                                       abase[x*axstride + n*aystride] *
-                                       bbase[n*bxstride + y*bystride];
-    }
   else if (GFC_DESCRIPTOR_RANK (a) == 1)
     {
       const 'rtype_name` *restrict bbase_y;
@@ -534,6 +520,20 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
          dest[y*rxstride] = s;
        }
     }
+  else if (axstride < aystride)
+    {
+      for (y = 0; y < ycount; y++)
+       for (x = 0; x < xcount; x++)
+         dest[x*rxstride + y*rystride] = ('rtype_name`)0;
+
+      for (y = 0; y < ycount; y++)
+       for (n = 0; n < count; n++)
+         for (x = 0; x < xcount; x++)
+           /* dest[x,y] += a[x,n] * b[n,y] */
+           dest[x*rxstride + y*rystride] +=
+                                       abase[x*axstride + n*aystride] *
+                                       bbase[n*bxstride + y*bystride];
+    }
   else
     {
       const 'rtype_name` *restrict abase_x;