[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