[gcc(refs/users/mikael/heads/refactor_descriptor_v08)] Décalage indexs matmul

Mikael Morin mikael@gcc.gnu.org
Sun Sep 14 16:37:48 GMT 2025


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

commit ef435aa823faacbdb75d57cbf0c7d01ef6bbf933
Author: Mikael Morin <mikael@gcc.gnu.org>
Date:   Thu Sep 11 12:26:57 2025 +0200

    Décalage indexs matmul

Diff:
---
 libgfortran/m4/matmul_internal.m4 | 71 +++++++++++++++++++--------------------
 1 file changed, 34 insertions(+), 37 deletions(-)

diff --git a/libgfortran/m4/matmul_internal.m4 b/libgfortran/m4/matmul_internal.m4
index 870b392e77d6..f13487ccd192 100644
--- a/libgfortran/m4/matmul_internal.m4
+++ b/libgfortran/m4/matmul_internal.m4
@@ -231,15 +231,12 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
 
       /* Parameter adjustments */
       c_dim1 = rystride;
-      PTR_DECREMENT_BYTES (c, sizeof('rtype_name`) + rystride_bytes);
       a_dim1 = aystride;
-      PTR_DECREMENT_BYTES (a, sizeof('rtype_name`) + aystride_bytes);
       b_dim1 = bystride;
-      PTR_DECREMENT_BYTES (b, sizeof('rtype_name`) + bystride_bytes);
 
       /* 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] = ('rtype_name`)0;
 
       /* Early exit if possible */
@@ -261,35 +258,35 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
 
       /* 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];
@@ -310,8 +307,8 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
 		    }
 		  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];
@@ -319,11 +316,11 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
 		    }
 
 		  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];
@@ -341,8 +338,8 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
 			  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];
@@ -396,15 +393,15 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
 			}
 		      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];
@@ -424,18 +421,18 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
 		    }
 		  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];
@@ -451,12 +448,12 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
 			      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];


More information about the Gcc-cvs mailing list