[gcc(refs/users/mikael/heads/refactor_descriptor_v08)] Régénération fichiers générés

Mikael Morin mikael@gcc.gnu.org
Mon Sep 15 13:38:18 GMT 2025


https://gcc.gnu.org/g:f59ee422072ac3fa2e14da4a653c0cfe9557180f

commit f59ee422072ac3fa2e14da4a653c0cfe9557180f
Author: Mikael Morin <mikael@gcc.gnu.org>
Date:   Mon Sep 15 14:42:40 2025 +0200

    Régénération fichiers générés
    
    Régénération fichiers générés

Diff:
---
 libgfortran/generated/matmul_c10.c       | 380 ++++++++++++++-----------------
 libgfortran/generated/matmul_c16.c       | 380 ++++++++++++++-----------------
 libgfortran/generated/matmul_c17.c       | 380 ++++++++++++++-----------------
 libgfortran/generated/matmul_c4.c        | 380 ++++++++++++++-----------------
 libgfortran/generated/matmul_c8.c        | 380 ++++++++++++++-----------------
 libgfortran/generated/matmul_i1.c        | 380 ++++++++++++++-----------------
 libgfortran/generated/matmul_i16.c       | 380 ++++++++++++++-----------------
 libgfortran/generated/matmul_i2.c        | 380 ++++++++++++++-----------------
 libgfortran/generated/matmul_i4.c        | 380 ++++++++++++++-----------------
 libgfortran/generated/matmul_i8.c        | 380 ++++++++++++++-----------------
 libgfortran/generated/matmul_r10.c       | 380 ++++++++++++++-----------------
 libgfortran/generated/matmul_r16.c       | 380 ++++++++++++++-----------------
 libgfortran/generated/matmul_r17.c       | 380 ++++++++++++++-----------------
 libgfortran/generated/matmul_r4.c        | 380 ++++++++++++++-----------------
 libgfortran/generated/matmul_r8.c        | 380 ++++++++++++++-----------------
 libgfortran/generated/matmulavx128_c10.c | 152 ++++++-------
 libgfortran/generated/matmulavx128_c16.c | 152 ++++++-------
 libgfortran/generated/matmulavx128_c17.c | 152 ++++++-------
 libgfortran/generated/matmulavx128_c4.c  | 152 ++++++-------
 libgfortran/generated/matmulavx128_c8.c  | 152 ++++++-------
 libgfortran/generated/matmulavx128_i1.c  | 152 ++++++-------
 libgfortran/generated/matmulavx128_i16.c | 152 ++++++-------
 libgfortran/generated/matmulavx128_i2.c  | 152 ++++++-------
 libgfortran/generated/matmulavx128_i4.c  | 152 ++++++-------
 libgfortran/generated/matmulavx128_i8.c  | 152 ++++++-------
 libgfortran/generated/matmulavx128_r10.c | 152 ++++++-------
 libgfortran/generated/matmulavx128_r16.c | 152 ++++++-------
 libgfortran/generated/matmulavx128_r17.c | 152 ++++++-------
 libgfortran/generated/matmulavx128_r4.c  | 152 ++++++-------
 libgfortran/generated/matmulavx128_r8.c  | 152 ++++++-------
 30 files changed, 3675 insertions(+), 4305 deletions(-)

diff --git a/libgfortran/generated/matmul_c10.c b/libgfortran/generated/matmul_c10.c
index 5b71bf0c2915..3099cad8bd9a 100644
--- a/libgfortran/generated/matmul_c10.c
+++ b/libgfortran/generated/matmul_c10.c
@@ -294,7 +294,7 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmul_c16.c b/libgfortran/generated/matmul_c16.c
index aaef220ce477..65a9523553de 100644
--- a/libgfortran/generated/matmul_c16.c
+++ b/libgfortran/generated/matmul_c16.c
@@ -294,7 +294,7 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmul_c17.c b/libgfortran/generated/matmul_c17.c
index 061eb430dd87..19e955884db9 100644
--- a/libgfortran/generated/matmul_c17.c
+++ b/libgfortran/generated/matmul_c17.c
@@ -294,7 +294,7 @@ matmul_c17_avx (gfc_array_c17 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_c17_avx (gfc_array_c17 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_17)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_c17_avx (gfc_array_c17 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_c17_avx (gfc_array_c17 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_c17_avx (gfc_array_c17 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_c17_avx (gfc_array_c17 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_c17_avx (gfc_array_c17 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_c17_avx (gfc_array_c17 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_c17_avx (gfc_array_c17 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_c17_avx2 (gfc_array_c17 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_c17_avx2 (gfc_array_c17 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_17)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_c17_avx2 (gfc_array_c17 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_c17_avx2 (gfc_array_c17 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_c17_avx2 (gfc_array_c17 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_c17_avx2 (gfc_array_c17 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_c17_avx2 (gfc_array_c17 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_c17_avx2 (gfc_array_c17 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_c17_avx2 (gfc_array_c17 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_c17_avx512f (gfc_array_c17 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_c17_avx512f (gfc_array_c17 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_17)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_c17_avx512f (gfc_array_c17 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_c17_avx512f (gfc_array_c17 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_c17_avx512f (gfc_array_c17 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_c17_avx512f (gfc_array_c17 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_c17_avx512f (gfc_array_c17 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_c17_avx512f (gfc_array_c17 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_c17_avx512f (gfc_array_c17 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_c17_vanilla (gfc_array_c17 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_c17_vanilla (gfc_array_c17 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_17)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_c17_vanilla (gfc_array_c17 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_c17_vanilla (gfc_array_c17 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_c17_vanilla (gfc_array_c17 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_c17_vanilla (gfc_array_c17 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_c17_vanilla (gfc_array_c17 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_c17_vanilla (gfc_array_c17 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_c17_vanilla (gfc_array_c17 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_c17 (gfc_array_c17 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_c17 (gfc_array_c17 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_17)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_c17 (gfc_array_c17 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_c17 (gfc_array_c17 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_c17 (gfc_array_c17 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_c17 (gfc_array_c17 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_c17 (gfc_array_c17 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_c17 (gfc_array_c17 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_c17 (gfc_array_c17 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmul_c4.c b/libgfortran/generated/matmul_c4.c
index 79cf933d289f..fda4ab5e2961 100644
--- a/libgfortran/generated/matmul_c4.c
+++ b/libgfortran/generated/matmul_c4.c
@@ -294,7 +294,7 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmul_c8.c b/libgfortran/generated/matmul_c8.c
index 674df86903f6..cca6a3220e33 100644
--- a/libgfortran/generated/matmul_c8.c
+++ b/libgfortran/generated/matmul_c8.c
@@ -294,7 +294,7 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmul_i1.c b/libgfortran/generated/matmul_i1.c
index 742081175670..08d18a36d0f5 100644
--- a/libgfortran/generated/matmul_i1.c
+++ b/libgfortran/generated/matmul_i1.c
@@ -294,7 +294,7 @@ matmul_i1_avx (gfc_array_m1 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_i1_avx (gfc_array_m1 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_1)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_i1_avx (gfc_array_m1 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_i1_avx (gfc_array_m1 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_i1_avx (gfc_array_m1 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_i1_avx (gfc_array_m1 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_i1_avx (gfc_array_m1 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_i1_avx (gfc_array_m1 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_i1_avx (gfc_array_m1 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_i1_avx2 (gfc_array_m1 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_i1_avx2 (gfc_array_m1 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_1)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_i1_avx2 (gfc_array_m1 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_i1_avx2 (gfc_array_m1 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_i1_avx2 (gfc_array_m1 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_i1_avx2 (gfc_array_m1 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_i1_avx2 (gfc_array_m1 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_i1_avx2 (gfc_array_m1 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_i1_avx2 (gfc_array_m1 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_i1_avx512f (gfc_array_m1 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_i1_avx512f (gfc_array_m1 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_1)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_i1_avx512f (gfc_array_m1 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_i1_avx512f (gfc_array_m1 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_i1_avx512f (gfc_array_m1 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_i1_avx512f (gfc_array_m1 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_i1_avx512f (gfc_array_m1 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_i1_avx512f (gfc_array_m1 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_i1_avx512f (gfc_array_m1 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_i1_vanilla (gfc_array_m1 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_i1_vanilla (gfc_array_m1 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_1)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_i1_vanilla (gfc_array_m1 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_i1_vanilla (gfc_array_m1 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_i1_vanilla (gfc_array_m1 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_i1_vanilla (gfc_array_m1 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_i1_vanilla (gfc_array_m1 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_i1_vanilla (gfc_array_m1 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_i1_vanilla (gfc_array_m1 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_i1 (gfc_array_m1 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_i1 (gfc_array_m1 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_1)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_i1 (gfc_array_m1 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_i1 (gfc_array_m1 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_i1 (gfc_array_m1 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_i1 (gfc_array_m1 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_i1 (gfc_array_m1 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_i1 (gfc_array_m1 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_i1 (gfc_array_m1 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmul_i16.c b/libgfortran/generated/matmul_i16.c
index 221ff4978d54..d6f63d7afb5a 100644
--- a/libgfortran/generated/matmul_i16.c
+++ b/libgfortran/generated/matmul_i16.c
@@ -294,7 +294,7 @@ matmul_i16_avx (gfc_array_m16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_i16_avx (gfc_array_m16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_16)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_i16_avx (gfc_array_m16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_i16_avx (gfc_array_m16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_i16_avx (gfc_array_m16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_i16_avx (gfc_array_m16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_i16_avx (gfc_array_m16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_i16_avx (gfc_array_m16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_i16_avx (gfc_array_m16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_i16_avx2 (gfc_array_m16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_i16_avx2 (gfc_array_m16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_16)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_i16_avx2 (gfc_array_m16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_i16_avx2 (gfc_array_m16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_i16_avx2 (gfc_array_m16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_i16_avx2 (gfc_array_m16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_i16_avx2 (gfc_array_m16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_i16_avx2 (gfc_array_m16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_i16_avx2 (gfc_array_m16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_i16_avx512f (gfc_array_m16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_i16_avx512f (gfc_array_m16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_16)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_i16_avx512f (gfc_array_m16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_i16_avx512f (gfc_array_m16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_i16_avx512f (gfc_array_m16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_i16_avx512f (gfc_array_m16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_i16_avx512f (gfc_array_m16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_i16_avx512f (gfc_array_m16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_i16_avx512f (gfc_array_m16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_i16_vanilla (gfc_array_m16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_i16_vanilla (gfc_array_m16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_16)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_i16_vanilla (gfc_array_m16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_i16_vanilla (gfc_array_m16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_i16_vanilla (gfc_array_m16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_i16_vanilla (gfc_array_m16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_i16_vanilla (gfc_array_m16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_i16_vanilla (gfc_array_m16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_i16_vanilla (gfc_array_m16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_i16 (gfc_array_m16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_i16 (gfc_array_m16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_16)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_i16 (gfc_array_m16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_i16 (gfc_array_m16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_i16 (gfc_array_m16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_i16 (gfc_array_m16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_i16 (gfc_array_m16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_i16 (gfc_array_m16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_i16 (gfc_array_m16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmul_i2.c b/libgfortran/generated/matmul_i2.c
index f7486deaf7bf..da5f184d1ac6 100644
--- a/libgfortran/generated/matmul_i2.c
+++ b/libgfortran/generated/matmul_i2.c
@@ -294,7 +294,7 @@ matmul_i2_avx (gfc_array_m2 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_i2_avx (gfc_array_m2 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_2)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_i2_avx (gfc_array_m2 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_i2_avx (gfc_array_m2 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_i2_avx (gfc_array_m2 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_i2_avx (gfc_array_m2 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_i2_avx (gfc_array_m2 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_i2_avx (gfc_array_m2 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_i2_avx (gfc_array_m2 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_i2_avx2 (gfc_array_m2 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_i2_avx2 (gfc_array_m2 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_2)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_i2_avx2 (gfc_array_m2 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_i2_avx2 (gfc_array_m2 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_i2_avx2 (gfc_array_m2 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_i2_avx2 (gfc_array_m2 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_i2_avx2 (gfc_array_m2 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_i2_avx2 (gfc_array_m2 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_i2_avx2 (gfc_array_m2 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_i2_avx512f (gfc_array_m2 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_i2_avx512f (gfc_array_m2 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_2)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_i2_avx512f (gfc_array_m2 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_i2_avx512f (gfc_array_m2 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_i2_avx512f (gfc_array_m2 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_i2_avx512f (gfc_array_m2 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_i2_avx512f (gfc_array_m2 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_i2_avx512f (gfc_array_m2 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_i2_avx512f (gfc_array_m2 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_i2_vanilla (gfc_array_m2 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_i2_vanilla (gfc_array_m2 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_2)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_i2_vanilla (gfc_array_m2 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_i2_vanilla (gfc_array_m2 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_i2_vanilla (gfc_array_m2 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_i2_vanilla (gfc_array_m2 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_i2_vanilla (gfc_array_m2 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_i2_vanilla (gfc_array_m2 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_i2_vanilla (gfc_array_m2 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_i2 (gfc_array_m2 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_i2 (gfc_array_m2 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_2)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_i2 (gfc_array_m2 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_i2 (gfc_array_m2 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_i2 (gfc_array_m2 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_i2 (gfc_array_m2 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_i2 (gfc_array_m2 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_i2 (gfc_array_m2 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_i2 (gfc_array_m2 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmul_i4.c b/libgfortran/generated/matmul_i4.c
index be01277bc315..f3d80cead2db 100644
--- a/libgfortran/generated/matmul_i4.c
+++ b/libgfortran/generated/matmul_i4.c
@@ -294,7 +294,7 @@ matmul_i4_avx (gfc_array_m4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_i4_avx (gfc_array_m4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_4)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_i4_avx (gfc_array_m4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_i4_avx (gfc_array_m4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_i4_avx (gfc_array_m4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_i4_avx (gfc_array_m4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_i4_avx (gfc_array_m4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_i4_avx (gfc_array_m4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_i4_avx (gfc_array_m4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_i4_avx2 (gfc_array_m4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_i4_avx2 (gfc_array_m4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_4)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_i4_avx2 (gfc_array_m4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_i4_avx2 (gfc_array_m4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_i4_avx2 (gfc_array_m4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_i4_avx2 (gfc_array_m4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_i4_avx2 (gfc_array_m4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_i4_avx2 (gfc_array_m4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_i4_avx2 (gfc_array_m4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_i4_avx512f (gfc_array_m4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_i4_avx512f (gfc_array_m4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_4)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_i4_avx512f (gfc_array_m4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_i4_avx512f (gfc_array_m4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_i4_avx512f (gfc_array_m4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_i4_avx512f (gfc_array_m4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_i4_avx512f (gfc_array_m4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_i4_avx512f (gfc_array_m4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_i4_avx512f (gfc_array_m4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_i4_vanilla (gfc_array_m4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_i4_vanilla (gfc_array_m4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_4)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_i4_vanilla (gfc_array_m4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_i4_vanilla (gfc_array_m4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_i4_vanilla (gfc_array_m4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_i4_vanilla (gfc_array_m4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_i4_vanilla (gfc_array_m4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_i4_vanilla (gfc_array_m4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_i4_vanilla (gfc_array_m4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_i4 (gfc_array_m4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_i4 (gfc_array_m4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_4)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_i4 (gfc_array_m4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_i4 (gfc_array_m4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_i4 (gfc_array_m4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_i4 (gfc_array_m4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_i4 (gfc_array_m4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_i4 (gfc_array_m4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_i4 (gfc_array_m4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmul_i8.c b/libgfortran/generated/matmul_i8.c
index 8ebdd81486b3..ba6c7bd9b84f 100644
--- a/libgfortran/generated/matmul_i8.c
+++ b/libgfortran/generated/matmul_i8.c
@@ -294,7 +294,7 @@ matmul_i8_avx (gfc_array_m8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_i8_avx (gfc_array_m8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_8)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_i8_avx (gfc_array_m8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_i8_avx (gfc_array_m8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_i8_avx (gfc_array_m8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_i8_avx (gfc_array_m8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_i8_avx (gfc_array_m8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_i8_avx (gfc_array_m8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_i8_avx (gfc_array_m8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_i8_avx2 (gfc_array_m8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_i8_avx2 (gfc_array_m8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_8)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_i8_avx2 (gfc_array_m8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_i8_avx2 (gfc_array_m8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_i8_avx2 (gfc_array_m8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_i8_avx2 (gfc_array_m8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_i8_avx2 (gfc_array_m8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_i8_avx2 (gfc_array_m8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_i8_avx2 (gfc_array_m8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_i8_avx512f (gfc_array_m8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_i8_avx512f (gfc_array_m8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_8)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_i8_avx512f (gfc_array_m8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_i8_avx512f (gfc_array_m8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_i8_avx512f (gfc_array_m8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_i8_avx512f (gfc_array_m8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_i8_avx512f (gfc_array_m8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_i8_avx512f (gfc_array_m8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_i8_avx512f (gfc_array_m8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_i8_vanilla (gfc_array_m8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_i8_vanilla (gfc_array_m8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_8)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_i8_vanilla (gfc_array_m8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_i8_vanilla (gfc_array_m8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_i8_vanilla (gfc_array_m8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_i8_vanilla (gfc_array_m8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_i8_vanilla (gfc_array_m8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_i8_vanilla (gfc_array_m8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_i8_vanilla (gfc_array_m8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_i8 (gfc_array_m8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_i8 (gfc_array_m8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_UINTEGER_8)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_i8 (gfc_array_m8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_i8 (gfc_array_m8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_i8 (gfc_array_m8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_i8 (gfc_array_m8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_i8 (gfc_array_m8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_i8 (gfc_array_m8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_i8 (gfc_array_m8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmul_r10.c b/libgfortran/generated/matmul_r10.c
index 206bcafcd7a9..b2244f6d2ff9 100644
--- a/libgfortran/generated/matmul_r10.c
+++ b/libgfortran/generated/matmul_r10.c
@@ -294,7 +294,7 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_10)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_10)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_10)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_10)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_10)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_r10 (gfc_array_r10 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmul_r16.c b/libgfortran/generated/matmul_r16.c
index de0223f312f3..10e34b272534 100644
--- a/libgfortran/generated/matmul_r16.c
+++ b/libgfortran/generated/matmul_r16.c
@@ -294,7 +294,7 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_16)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_16)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_16)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_16)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_16)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_r16 (gfc_array_r16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmul_r17.c b/libgfortran/generated/matmul_r17.c
index 801914c0b3ec..59a5e94fb272 100644
--- a/libgfortran/generated/matmul_r17.c
+++ b/libgfortran/generated/matmul_r17.c
@@ -294,7 +294,7 @@ matmul_r17_avx (gfc_array_r17 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_r17_avx (gfc_array_r17 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_17)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_r17_avx (gfc_array_r17 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_r17_avx (gfc_array_r17 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_r17_avx (gfc_array_r17 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_r17_avx (gfc_array_r17 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_r17_avx (gfc_array_r17 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_r17_avx (gfc_array_r17 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_r17_avx (gfc_array_r17 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_r17_avx2 (gfc_array_r17 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_r17_avx2 (gfc_array_r17 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_17)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_r17_avx2 (gfc_array_r17 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_r17_avx2 (gfc_array_r17 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_r17_avx2 (gfc_array_r17 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_r17_avx2 (gfc_array_r17 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_r17_avx2 (gfc_array_r17 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_r17_avx2 (gfc_array_r17 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_r17_avx2 (gfc_array_r17 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_r17_avx512f (gfc_array_r17 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_r17_avx512f (gfc_array_r17 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_17)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_r17_avx512f (gfc_array_r17 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_r17_avx512f (gfc_array_r17 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_r17_avx512f (gfc_array_r17 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_r17_avx512f (gfc_array_r17 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_r17_avx512f (gfc_array_r17 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_r17_avx512f (gfc_array_r17 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_r17_avx512f (gfc_array_r17 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_r17_vanilla (gfc_array_r17 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_r17_vanilla (gfc_array_r17 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_17)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_r17_vanilla (gfc_array_r17 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_r17_vanilla (gfc_array_r17 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_r17_vanilla (gfc_array_r17 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_r17_vanilla (gfc_array_r17 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_r17_vanilla (gfc_array_r17 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_r17_vanilla (gfc_array_r17 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_r17_vanilla (gfc_array_r17 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_r17 (gfc_array_r17 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_r17 (gfc_array_r17 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_17)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_r17 (gfc_array_r17 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_r17 (gfc_array_r17 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_r17 (gfc_array_r17 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_r17 (gfc_array_r17 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_r17 (gfc_array_r17 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_r17 (gfc_array_r17 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_r17 (gfc_array_r17 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmul_r4.c b/libgfortran/generated/matmul_r4.c
index 402afdaf43a9..6ee5f7be5c18 100644
--- a/libgfortran/generated/matmul_r4.c
+++ b/libgfortran/generated/matmul_r4.c
@@ -294,7 +294,7 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_4)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_4)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_4)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_4)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_4)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_r4 (gfc_array_r4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmul_r8.c b/libgfortran/generated/matmul_r8.c
index e1740c88719d..025ff06d3c92 100644
--- a/libgfortran/generated/matmul_r8.c
+++ b/libgfortran/generated/matmul_r8.c
@@ -294,7 +294,7 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -310,18 +310,12 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_8)0;
 
       /* Early exit if possible */
@@ -343,35 +337,35 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -392,8 +386,8 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -401,11 +395,11 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -423,8 +417,8 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -478,15 +472,15 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -506,18 +500,18 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -533,12 +527,12 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -863,7 +857,7 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -879,18 +873,12 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_8)0;
 
       /* Early exit if possible */
@@ -912,35 +900,35 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -961,8 +949,8 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -970,11 +958,11 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -992,8 +980,8 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1047,15 +1035,15 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1075,18 +1063,18 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1102,12 +1090,12 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1432,7 +1420,7 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -1448,18 +1436,12 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_8)0;
 
       /* Early exit if possible */
@@ -1481,35 +1463,35 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -1530,8 +1512,8 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -1539,11 +1521,11 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -1561,8 +1543,8 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1616,15 +1598,15 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1644,18 +1626,18 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1671,12 +1653,12 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2015,7 +1997,7 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2031,18 +2013,12 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_8)0;
 
       /* Early exit if possible */
@@ -2064,35 +2040,35 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2113,8 +2089,8 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2122,11 +2098,11 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2144,8 +2120,8 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2199,15 +2175,15 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2227,18 +2203,18 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2254,12 +2230,12 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2657,7 +2633,7 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -2673,18 +2649,12 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_8)0;
 
       /* Early exit if possible */
@@ -2706,35 +2676,35 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -2755,8 +2725,8 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -2764,11 +2734,11 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -2786,8 +2756,8 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -2841,15 +2811,15 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2869,18 +2839,18 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -2896,12 +2866,12 @@ matmul_r8 (gfc_array_r8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmulavx128_c10.c b/libgfortran/generated/matmulavx128_c10.c
index 406e376d1826..5ef34d5ce6bd 100644
--- a/libgfortran/generated/matmulavx128_c10.c
+++ b/libgfortran/generated/matmulavx128_c10.c
@@ -259,7 +259,7 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -275,18 +275,12 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
 
       /* Early exit if possible */
@@ -308,35 +302,35 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -357,8 +351,8 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -366,11 +360,11 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -388,8 +382,8 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -443,15 +437,15 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -471,18 +465,18 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -498,12 +492,12 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -829,7 +823,7 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -845,18 +839,12 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
 
       /* Early exit if possible */
@@ -878,35 +866,35 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -927,8 +915,8 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -936,11 +924,11 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -958,8 +946,8 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1013,15 +1001,15 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1041,18 +1029,18 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1068,12 +1056,12 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmulavx128_c16.c b/libgfortran/generated/matmulavx128_c16.c
index 6072617d3819..3081cdea4609 100644
--- a/libgfortran/generated/matmulavx128_c16.c
+++ b/libgfortran/generated/matmulavx128_c16.c
@@ -259,7 +259,7 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -275,18 +275,12 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
 
       /* Early exit if possible */
@@ -308,35 +302,35 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -357,8 +351,8 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -366,11 +360,11 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -388,8 +382,8 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -443,15 +437,15 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -471,18 +465,18 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -498,12 +492,12 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -829,7 +823,7 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -845,18 +839,12 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
 
       /* Early exit if possible */
@@ -878,35 +866,35 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -927,8 +915,8 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -936,11 +924,11 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -958,8 +946,8 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1013,15 +1001,15 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1041,18 +1029,18 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1068,12 +1056,12 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmulavx128_c17.c b/libgfortran/generated/matmulavx128_c17.c
index af1c95bc107c..50caecd476bb 100644
--- a/libgfortran/generated/matmulavx128_c17.c
+++ b/libgfortran/generated/matmulavx128_c17.c
@@ -259,7 +259,7 @@ matmul_c17_avx128_fma3 (gfc_array_c17 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -275,18 +275,12 @@ matmul_c17_avx128_fma3 (gfc_array_c17 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_17)0;
 
       /* Early exit if possible */
@@ -308,35 +302,35 @@ matmul_c17_avx128_fma3 (gfc_array_c17 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -357,8 +351,8 @@ matmul_c17_avx128_fma3 (gfc_array_c17 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -366,11 +360,11 @@ matmul_c17_avx128_fma3 (gfc_array_c17 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -388,8 +382,8 @@ matmul_c17_avx128_fma3 (gfc_array_c17 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -443,15 +437,15 @@ matmul_c17_avx128_fma3 (gfc_array_c17 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -471,18 +465,18 @@ matmul_c17_avx128_fma3 (gfc_array_c17 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -498,12 +492,12 @@ matmul_c17_avx128_fma3 (gfc_array_c17 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -829,7 +823,7 @@ matmul_c17_avx128_fma4 (gfc_array_c17 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -845,18 +839,12 @@ matmul_c17_avx128_fma4 (gfc_array_c17 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_17)0;
 
       /* Early exit if possible */
@@ -878,35 +866,35 @@ matmul_c17_avx128_fma4 (gfc_array_c17 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -927,8 +915,8 @@ matmul_c17_avx128_fma4 (gfc_array_c17 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -936,11 +924,11 @@ matmul_c17_avx128_fma4 (gfc_array_c17 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -958,8 +946,8 @@ matmul_c17_avx128_fma4 (gfc_array_c17 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1013,15 +1001,15 @@ matmul_c17_avx128_fma4 (gfc_array_c17 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1041,18 +1029,18 @@ matmul_c17_avx128_fma4 (gfc_array_c17 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1068,12 +1056,12 @@ matmul_c17_avx128_fma4 (gfc_array_c17 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmulavx128_c4.c b/libgfortran/generated/matmulavx128_c4.c
index 41ef2e00ea2e..31622458e297 100644
--- a/libgfortran/generated/matmulavx128_c4.c
+++ b/libgfortran/generated/matmulavx128_c4.c
@@ -259,7 +259,7 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -275,18 +275,12 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
 
       /* Early exit if possible */
@@ -308,35 +302,35 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -357,8 +351,8 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -366,11 +360,11 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -388,8 +382,8 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -443,15 +437,15 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -471,18 +465,18 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -498,12 +492,12 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -829,7 +823,7 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -845,18 +839,12 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
 
       /* Early exit if possible */
@@ -878,35 +866,35 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -927,8 +915,8 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -936,11 +924,11 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -958,8 +946,8 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1013,15 +1001,15 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1041,18 +1029,18 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1068,12 +1056,12 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmulavx128_c8.c b/libgfortran/generated/matmulavx128_c8.c
index 360f89ec97e4..42712414c6cc 100644
--- a/libgfortran/generated/matmulavx128_c8.c
+++ b/libgfortran/generated/matmulavx128_c8.c
@@ -259,7 +259,7 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -275,18 +275,12 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
 
       /* Early exit if possible */
@@ -308,35 +302,35 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -357,8 +351,8 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -366,11 +360,11 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -388,8 +382,8 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -443,15 +437,15 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -471,18 +465,18 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -498,12 +492,12 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -829,7 +823,7 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -845,18 +839,12 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
 
       /* Early exit if possible */
@@ -878,35 +866,35 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -927,8 +915,8 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -936,11 +924,11 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -958,8 +946,8 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1013,15 +1001,15 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1041,18 +1029,18 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1068,12 +1056,12 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmulavx128_i1.c b/libgfortran/generated/matmulavx128_i1.c
index 9a9c3bb2e74f..17b29656f9b1 100644
--- a/libgfortran/generated/matmulavx128_i1.c
+++ b/libgfortran/generated/matmulavx128_i1.c
@@ -259,7 +259,7 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -275,18 +275,12 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_INTEGER_1)0;
 
       /* Early exit if possible */
@@ -308,35 +302,35 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -357,8 +351,8 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -366,11 +360,11 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -388,8 +382,8 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -443,15 +437,15 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -471,18 +465,18 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -498,12 +492,12 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -829,7 +823,7 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -845,18 +839,12 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_INTEGER_1)0;
 
       /* Early exit if possible */
@@ -878,35 +866,35 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -927,8 +915,8 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -936,11 +924,11 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -958,8 +946,8 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1013,15 +1001,15 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1041,18 +1029,18 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1068,12 +1056,12 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmulavx128_i16.c b/libgfortran/generated/matmulavx128_i16.c
index 8ca84818c100..44de68291722 100644
--- a/libgfortran/generated/matmulavx128_i16.c
+++ b/libgfortran/generated/matmulavx128_i16.c
@@ -259,7 +259,7 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -275,18 +275,12 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_INTEGER_16)0;
 
       /* Early exit if possible */
@@ -308,35 +302,35 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -357,8 +351,8 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -366,11 +360,11 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -388,8 +382,8 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -443,15 +437,15 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -471,18 +465,18 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -498,12 +492,12 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -829,7 +823,7 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -845,18 +839,12 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_INTEGER_16)0;
 
       /* Early exit if possible */
@@ -878,35 +866,35 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -927,8 +915,8 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -936,11 +924,11 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -958,8 +946,8 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1013,15 +1001,15 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1041,18 +1029,18 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1068,12 +1056,12 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmulavx128_i2.c b/libgfortran/generated/matmulavx128_i2.c
index 9f4d20dbc89f..b82b1461504c 100644
--- a/libgfortran/generated/matmulavx128_i2.c
+++ b/libgfortran/generated/matmulavx128_i2.c
@@ -259,7 +259,7 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -275,18 +275,12 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_INTEGER_2)0;
 
       /* Early exit if possible */
@@ -308,35 +302,35 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -357,8 +351,8 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -366,11 +360,11 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -388,8 +382,8 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -443,15 +437,15 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -471,18 +465,18 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -498,12 +492,12 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -829,7 +823,7 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -845,18 +839,12 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_INTEGER_2)0;
 
       /* Early exit if possible */
@@ -878,35 +866,35 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -927,8 +915,8 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -936,11 +924,11 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -958,8 +946,8 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1013,15 +1001,15 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1041,18 +1029,18 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1068,12 +1056,12 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmulavx128_i4.c b/libgfortran/generated/matmulavx128_i4.c
index 8b609d8bdcf3..7f9089ad1b54 100644
--- a/libgfortran/generated/matmulavx128_i4.c
+++ b/libgfortran/generated/matmulavx128_i4.c
@@ -259,7 +259,7 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -275,18 +275,12 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_INTEGER_4)0;
 
       /* Early exit if possible */
@@ -308,35 +302,35 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -357,8 +351,8 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -366,11 +360,11 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -388,8 +382,8 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -443,15 +437,15 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -471,18 +465,18 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -498,12 +492,12 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -829,7 +823,7 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -845,18 +839,12 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_INTEGER_4)0;
 
       /* Early exit if possible */
@@ -878,35 +866,35 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -927,8 +915,8 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -936,11 +924,11 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -958,8 +946,8 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1013,15 +1001,15 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1041,18 +1029,18 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1068,12 +1056,12 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmulavx128_i8.c b/libgfortran/generated/matmulavx128_i8.c
index 592005621d15..28c5af89af96 100644
--- a/libgfortran/generated/matmulavx128_i8.c
+++ b/libgfortran/generated/matmulavx128_i8.c
@@ -259,7 +259,7 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -275,18 +275,12 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_INTEGER_8)0;
 
       /* Early exit if possible */
@@ -308,35 +302,35 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -357,8 +351,8 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -366,11 +360,11 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -388,8 +382,8 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -443,15 +437,15 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -471,18 +465,18 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -498,12 +492,12 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -829,7 +823,7 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -845,18 +839,12 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_INTEGER_8)0;
 
       /* Early exit if possible */
@@ -878,35 +866,35 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -927,8 +915,8 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -936,11 +924,11 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -958,8 +946,8 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1013,15 +1001,15 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1041,18 +1029,18 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1068,12 +1056,12 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmulavx128_r10.c b/libgfortran/generated/matmulavx128_r10.c
index 91c483b2c563..3123610fd0a0 100644
--- a/libgfortran/generated/matmulavx128_r10.c
+++ b/libgfortran/generated/matmulavx128_r10.c
@@ -259,7 +259,7 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -275,18 +275,12 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_10)0;
 
       /* Early exit if possible */
@@ -308,35 +302,35 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -357,8 +351,8 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -366,11 +360,11 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -388,8 +382,8 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -443,15 +437,15 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -471,18 +465,18 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -498,12 +492,12 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -829,7 +823,7 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -845,18 +839,12 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_10)0;
 
       /* Early exit if possible */
@@ -878,35 +866,35 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -927,8 +915,8 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -936,11 +924,11 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -958,8 +946,8 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -1013,15 +1001,15 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1041,18 +1029,18 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <= i4; ++j)
+		      i4 = jj + jsec;
+		      for (j = jj + ujsec; j < i4; ++j)
 			{
-			  i5 = ii + uisec - 1;
-			  for (i = ii; i <= i5; i += 4)
+			  i5 = ii + uisec;
+			  for (i = ii; i < i5; i += 4)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f21 = c[i + 1 + j * c_dim1];
 			      f31 = c[i + 2 + j * c_dim1];
 			      f41 = c[i + 3 + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -1068,12 +1056,12 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray,
 			      c[i + 2 + j * c_dim1] = f31;
 			      c[i + 3 + j * c_dim1] = f41;
 			    }
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
diff --git a/libgfortran/generated/matmulavx128_r16.c b/libgfortran/generated/matmulavx128_r16.c
index d2629e3128d5..36ff917177c1 100644
--- a/libgfortran/generated/matmulavx128_r16.c
+++ b/libgfortran/generated/matmulavx128_r16.c
@@ -259,7 +259,7 @@ matmul_r16_avx128_fma3 (gfc_array_r16 * const restrict retarray,
       const index_type m = xcount, n = ycount, k = count;
 
       /* System generated locals */
-      index_type a_dim1, a_offset, b_dim1, b_offset, c_dim1, c_offset,
+      index_type a_dim1, b_dim1, c_dim1,
 		 i1, i2, i3, i4, i5, i6;
 
       /* Local variables */
@@ -275,18 +275,12 @@ matmul_r16_avx128_fma3 (gfc_array_r16 * const restrict retarray,
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      c_offset = 1 + c_dim1;
-      c -= c_offset;
       a_dim1 = aystride;
-      a_offset = 1 + a_dim1;
-      a -= a_offset;
       b_dim1 = bystride;
-      b_offset = 1 + b_dim1;
-      b -= b_offset;
 
       /* Empty c first.  */
-      for (j=1; j<=n; j++)
-	for (i=1; i<=m; i++)
+      for (j=0; j<n; j++)
+	for (i=0; i<m; i++)
 	  c[i + j * c_dim1] = (GFC_REAL_16)0;
 
       /* Early exit if possible */
@@ -308,35 +302,35 @@ matmul_r16_avx128_fma3 (gfc_array_r16 * const restrict retarray,
 
       /* Start turning the crank. */
       i1 = n;
-      for (jj = 1; jj <= i1; jj += 512)
+      for (jj = 0; jj < i1; jj += 512)
 	{
 	  /* Computing MIN */
 	  i2 = 512;
-	  i3 = n - jj + 1;
+	  i3 = n - jj;
 	  jsec = min(i2,i3);
 	  ujsec = jsec - jsec % 4;
 	  i2 = k;
-	  for (ll = 1; ll <= i2; ll += 256)
+	  for (ll = 0; ll < i2; ll += 256)
 	    {
 	      /* Computing MIN */
 	      i3 = 256;
-	      i4 = k - ll + 1;
+	      i4 = k - ll;
 	      lsec = min(i3,i4);
 	      ulsec = lsec - lsec % 2;
 
 	      i3 = m;
-	      for (ii = 1; ii <= i3; ii += 256)
+	      for (ii = 0; ii < i3; ii += 256)
 		{
 		  /* Computing MIN */
 		  i4 = 256;
-		  i5 = m - ii + 1;
+		  i5 = m - ii;
 		  isec = min(i4,i5);
 		  uisec = isec - isec % 2;
-		  i4 = ll + ulsec - 1;
-		  for (l = ll; l <= i4; l += 2)
+		  i4 = ll + ulsec;
+		  for (l = ll; l < i4; l += 2)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 2)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 2)
 			{
 			  t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
 					a[i + l * a_dim1];
@@ -357,8 +351,8 @@ matmul_r16_avx128_fma3 (gfc_array_r16 * const restrict retarray,
 		    }
 		  if (ulsec < lsec)
 		    {
-		      i4 = ii + isec - 1;
-		      for (i = ii; i<= i4; ++i)
+		      i4 = ii + isec;
+		      for (i = ii; i< i4; ++i)
 			{
 			  t1[lsec + ((i - ii + 1) << 8) - 257] =
 				    a[i + (ll + lsec - 1) * a_dim1];
@@ -366,11 +360,11 @@ matmul_r16_avx128_fma3 (gfc_array_r16 * const restrict retarray,
 		    }
 
 		  uisec = isec - isec % 4;
-		  i4 = jj + ujsec - 1;
-		  for (j = jj; j <= i4; j += 4)
+		  i4 = jj + ujsec;
+		  for (j = jj; j < i4; j += 4)
 		    {
-		      i5 = ii + uisec - 1;
-		      for (i = ii; i <= i5; i += 4)
+		      i5 = ii + uisec;
+		      for (i = ii; i < i5; i += 4)
 			{
 			  f11 = c[i + j * c_dim1];
 			  f21 = c[i + 1 + j * c_dim1];
@@ -388,8 +382,8 @@ matmul_r16_avx128_fma3 (gfc_array_r16 * const restrict retarray,
 			  f43 = c[i + 3 + (j + 2) * c_dim1];
 			  f34 = c[i + 2 + (j + 3) * c_dim1];
 			  f44 = c[i + 3 + (j + 3) * c_dim1];
-			  i6 = ll + lsec - 1;
-			  for (l = ll; l <= i6; ++l)
+			  i6 = ll + lsec;
+			  for (l = ll; l < i6; ++l)
 			    {
 			      f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
 				      * b[l + j * b_dim1];
@@ -443,15 +437,15 @@ matmul_r16_avx128_fma3 (gfc_array_r16 * const restrict retarray,
 			}
 		      if (uisec < isec)
 			{
-			  i5 = ii + isec - 1;
-			  for (i = ii + uisec; i <= i5; ++i)
+			  i5 = ii + isec;
+			  for (i = ii + uisec; i < i5; ++i)
 			    {
 			      f11 = c[i + j * c_dim1];
 			      f12 = c[i + (j + 1) * c_dim1];
 			      f13 = c[i + (j + 2) * c_dim1];
 			      f14 = c[i + (j + 3) * c_dim1];
-			      i6 = ll + lsec - 1;
-			      for (l = ll; l <= i6; ++l)
+			      i6 = ll + lsec;
+			      for (l = ll; l < i6; ++l)
 				{
 				  f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
 					  257] * b[l + j * b_dim1];
@@ -471,18 +465,18 @@ matmul_r16_avx128_fma3 (gfc_array_r16 * const restrict retarray,
 		    }
 		  if (ujsec < jsec)
 		    {
-		      i4 = jj + jsec - 1;
-		      for (j = jj + ujsec; j <[...]

[diff truncated at 524288 bytes]


More information about the Gcc-cvs mailing list