[gcc(refs/users/mikael/heads/refactor_descriptor_v05)] Correction régression matmul_4
Mikael Morin
mikael@gcc.gnu.org
Fri Jun 13 14:58:53 GMT 2025
https://gcc.gnu.org/g:163339c206c1c048fd9280d5c4d3f351b72917d0
commit 163339c206c1c048fd9280d5c4d3f351b72917d0
Author: Mikael Morin <mikael@gcc.gnu.org>
Date: Fri Apr 25 17:17:23 2025 +0200
Correction régression matmul_4
Diff:
---
libgfortran/generated/matmul_c10.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmul_c16.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmul_c17.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmul_c4.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmul_c8.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmul_i1.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmul_i16.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmul_i2.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmul_i4.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmul_i8.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmul_r10.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmul_r16.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmul_r17.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmul_r4.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmul_r8.c | 925 ++++++++++++++++---------------
libgfortran/generated/matmulavx128_c10.c | 370 +++++++------
libgfortran/generated/matmulavx128_c16.c | 370 +++++++------
libgfortran/generated/matmulavx128_c17.c | 370 +++++++------
libgfortran/generated/matmulavx128_c4.c | 370 +++++++------
libgfortran/generated/matmulavx128_c8.c | 370 +++++++------
libgfortran/generated/matmulavx128_i1.c | 370 +++++++------
libgfortran/generated/matmulavx128_i16.c | 370 +++++++------
libgfortran/generated/matmulavx128_i2.c | 370 +++++++------
libgfortran/generated/matmulavx128_i4.c | 370 +++++++------
libgfortran/generated/matmulavx128_i8.c | 370 +++++++------
libgfortran/generated/matmulavx128_r10.c | 370 +++++++------
libgfortran/generated/matmulavx128_r16.c | 370 +++++++------
libgfortran/generated/matmulavx128_r17.c | 370 +++++++------
libgfortran/generated/matmulavx128_r4.c | 370 +++++++------
libgfortran/generated/matmulavx128_r8.c | 370 +++++++------
libgfortran/m4/matmul_internal.m4 | 185 ++++---
31 files changed, 9964 insertions(+), 9646 deletions(-)
diff --git a/libgfortran/generated/matmul_c10.c b/libgfortran/generated/matmul_c10.c
index 3ed77181f203..3ec53179d09c 100644
--- a/libgfortran/generated/matmul_c10.c
+++ b/libgfortran/generated/matmul_c10.c
@@ -302,8 +302,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_10 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -317,20 +317,23 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_10 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_10 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_10 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_10)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -382,20 +385,20 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -404,7 +407,7 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -415,100 +418,100 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -520,38 +523,38 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -883,8 +886,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_10 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -898,20 +901,23 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_10 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_10 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_10 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_10)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -963,20 +969,20 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -985,7 +991,7 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -996,100 +1002,100 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -1101,38 +1107,38 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -1464,8 +1470,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_10 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -1479,20 +1485,23 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_10 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_10 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_10 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_10)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -1544,20 +1553,20 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -1566,7 +1575,7 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -1577,100 +1586,100 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -1682,38 +1691,38 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -2059,8 +2068,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_10 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -2074,20 +2083,23 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_10 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_10 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_10 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_10)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -2139,20 +2151,20 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -2161,7 +2173,7 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -2172,100 +2184,100 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -2277,38 +2289,38 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -2713,8 +2725,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_10 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -2728,20 +2740,23 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_10 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_10 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_10 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_10)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_10)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -2793,20 +2808,20 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -2815,7 +2830,7 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -2826,100 +2841,100 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -2931,38 +2946,38 @@ matmul_c10 (gfc_array_c10 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_10, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_10, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
diff --git a/libgfortran/generated/matmul_c16.c b/libgfortran/generated/matmul_c16.c
index a279ee6926b6..4d804d17c2e7 100644
--- a/libgfortran/generated/matmul_c16.c
+++ b/libgfortran/generated/matmul_c16.c
@@ -302,8 +302,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_16 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -317,20 +317,23 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_16 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_16 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_16 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_16)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -382,20 +385,20 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -404,7 +407,7 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -415,100 +418,100 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -520,38 +523,38 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -883,8 +886,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_16 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -898,20 +901,23 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_16 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_16 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_16 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_16)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -963,20 +969,20 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -985,7 +991,7 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -996,100 +1002,100 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -1101,38 +1107,38 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -1464,8 +1470,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_16 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -1479,20 +1485,23 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_16 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_16 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_16 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_16)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -1544,20 +1553,20 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -1566,7 +1575,7 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -1577,100 +1586,100 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -1682,38 +1691,38 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -2059,8 +2068,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_16 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -2074,20 +2083,23 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_16 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_16 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_16 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_16)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -2139,20 +2151,20 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -2161,7 +2173,7 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -2172,100 +2184,100 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -2277,38 +2289,38 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -2713,8 +2725,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_16 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -2728,20 +2740,23 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_16 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_16 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_16 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_16)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_16)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -2793,20 +2808,20 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -2815,7 +2830,7 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -2826,100 +2841,100 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -2931,38 +2946,38 @@ matmul_c16 (gfc_array_c16 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_16, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
diff --git a/libgfortran/generated/matmul_c17.c b/libgfortran/generated/matmul_c17.c
index 947641592806..beef0b96e591 100644
--- a/libgfortran/generated/matmul_c17.c
+++ b/libgfortran/generated/matmul_c17.c
@@ -302,8 +302,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_17 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -317,20 +317,23 @@ matmul_c17_avx (gfc_array_c17 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_17 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_17 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_17 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_17)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_17)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -382,20 +385,20 @@ matmul_c17_avx (gfc_array_c17 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -404,7 +407,7 @@ matmul_c17_avx (gfc_array_c17 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -415,100 +418,100 @@ matmul_c17_avx (gfc_array_c17 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -520,38 +523,38 @@ matmul_c17_avx (gfc_array_c17 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -883,8 +886,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_17 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -898,20 +901,23 @@ matmul_c17_avx2 (gfc_array_c17 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_17 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_17 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_17 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_17)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_17)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -963,20 +969,20 @@ matmul_c17_avx2 (gfc_array_c17 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -985,7 +991,7 @@ matmul_c17_avx2 (gfc_array_c17 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -996,100 +1002,100 @@ matmul_c17_avx2 (gfc_array_c17 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -1101,38 +1107,38 @@ matmul_c17_avx2 (gfc_array_c17 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -1464,8 +1470,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_17 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -1479,20 +1485,23 @@ matmul_c17_avx512f (gfc_array_c17 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_17 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_17 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_17 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_17)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_17)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -1544,20 +1553,20 @@ matmul_c17_avx512f (gfc_array_c17 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -1566,7 +1575,7 @@ matmul_c17_avx512f (gfc_array_c17 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -1577,100 +1586,100 @@ matmul_c17_avx512f (gfc_array_c17 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -1682,38 +1691,38 @@ matmul_c17_avx512f (gfc_array_c17 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -2059,8 +2068,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_17 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -2074,20 +2083,23 @@ matmul_c17_vanilla (gfc_array_c17 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_17 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_17 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_17 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_17)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_17)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -2139,20 +2151,20 @@ matmul_c17_vanilla (gfc_array_c17 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -2161,7 +2173,7 @@ matmul_c17_vanilla (gfc_array_c17 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -2172,100 +2184,100 @@ matmul_c17_vanilla (gfc_array_c17 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -2277,38 +2289,38 @@ matmul_c17_vanilla (gfc_array_c17 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -2713,8 +2725,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_17 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -2728,20 +2740,23 @@ matmul_c17 (gfc_array_c17 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_17 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_17 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_17 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_17)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_17)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -2793,20 +2808,20 @@ matmul_c17 (gfc_array_c17 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -2815,7 +2830,7 @@ matmul_c17 (gfc_array_c17 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -2826,100 +2841,100 @@ matmul_c17 (gfc_array_c17 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -2931,38 +2946,38 @@ matmul_c17 (gfc_array_c17 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_17, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_17, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
diff --git a/libgfortran/generated/matmul_c4.c b/libgfortran/generated/matmul_c4.c
index 5cafd7f8894a..d28003619c35 100644
--- a/libgfortran/generated/matmul_c4.c
+++ b/libgfortran/generated/matmul_c4.c
@@ -302,8 +302,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_4 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -317,20 +317,23 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_4 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_4 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_4 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_4)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -382,20 +385,20 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -404,7 +407,7 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -415,100 +418,100 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -520,38 +523,38 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -883,8 +886,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_4 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -898,20 +901,23 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_4 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_4 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_4 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_4)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -963,20 +969,20 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -985,7 +991,7 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -996,100 +1002,100 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -1101,38 +1107,38 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -1464,8 +1470,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_4 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -1479,20 +1485,23 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_4 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_4 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_4 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_4)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -1544,20 +1553,20 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -1566,7 +1575,7 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -1577,100 +1586,100 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -1682,38 +1691,38 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -2059,8 +2068,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_4 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -2074,20 +2083,23 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_4 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_4 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_4 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_4)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -2139,20 +2151,20 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -2161,7 +2173,7 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -2172,100 +2184,100 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -2277,38 +2289,38 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -2713,8 +2725,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_4 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -2728,20 +2740,23 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_4 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_4 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_4 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_4)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_4)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -2793,20 +2808,20 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -2815,7 +2830,7 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -2826,100 +2841,100 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -2931,38 +2946,38 @@ matmul_c4 (gfc_array_c4 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_4, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_4, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
diff --git a/libgfortran/generated/matmul_c8.c b/libgfortran/generated/matmul_c8.c
index 980de9fff7c6..20856c0a01ad 100644
--- a/libgfortran/generated/matmul_c8.c
+++ b/libgfortran/generated/matmul_c8.c
@@ -302,8 +302,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_8 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -317,20 +317,23 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_8 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_8 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_8 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_8)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -382,20 +385,20 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -404,7 +407,7 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -415,100 +418,100 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -520,38 +523,38 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -883,8 +886,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_8 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -898,20 +901,23 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_8 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_8 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_8 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_8)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -963,20 +969,20 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -985,7 +991,7 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -996,100 +1002,100 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -1101,38 +1107,38 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -1464,8 +1470,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_8 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -1479,20 +1485,23 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_8 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_8 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_8 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_8)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -1544,20 +1553,20 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -1566,7 +1575,7 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -1577,100 +1586,100 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -1682,38 +1691,38 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -2059,8 +2068,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_8 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -2074,20 +2083,23 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_8 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_8 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_8 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_8)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -2139,20 +2151,20 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -2161,7 +2173,7 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -2172,100 +2184,100 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -2277,38 +2289,38 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -2713,8 +2725,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_COMPLEX_8 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -2728,20 +2740,23 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_COMPLEX_8 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_COMPLEX_8 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_COMPLEX_8 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_COMPLEX_8)0;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * rxspacing + j * c_dim1) = (GFC_COMPLEX_8)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -2793,20 +2808,20 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -2815,7 +2830,7 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -2826,100 +2841,100 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -2931,38 +2946,38 @@ matmul_c8 (gfc_array_c8 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_COMPLEX_8, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_COMPLEX_8, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
diff --git a/libgfortran/generated/matmul_i1.c b/libgfortran/generated/matmul_i1.c
index cbe86a89326a..0fa9a5cf0898 100644
--- a/libgfortran/generated/matmul_i1.c
+++ b/libgfortran/generated/matmul_i1.c
@@ -302,8 +302,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_UINTEGER_1 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -317,20 +317,23 @@ matmul_i1_avx (gfc_array_m1 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_UINTEGER_1 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_UINTEGER_1 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_UINTEGER_1 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_UINTEGER_1)0;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * rxspacing + j * c_dim1) = (GFC_UINTEGER_1)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -382,20 +385,20 @@ matmul_i1_avx (gfc_array_m1 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -404,7 +407,7 @@ matmul_i1_avx (gfc_array_m1 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -415,100 +418,100 @@ matmul_i1_avx (gfc_array_m1 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -520,38 +523,38 @@ matmul_i1_avx (gfc_array_m1 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -883,8 +886,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_UINTEGER_1 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -898,20 +901,23 @@ matmul_i1_avx2 (gfc_array_m1 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_UINTEGER_1 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_UINTEGER_1 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_UINTEGER_1 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_UINTEGER_1)0;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * rxspacing + j * c_dim1) = (GFC_UINTEGER_1)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -963,20 +969,20 @@ matmul_i1_avx2 (gfc_array_m1 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -985,7 +991,7 @@ matmul_i1_avx2 (gfc_array_m1 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -996,100 +1002,100 @@ matmul_i1_avx2 (gfc_array_m1 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -1101,38 +1107,38 @@ matmul_i1_avx2 (gfc_array_m1 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -1464,8 +1470,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_UINTEGER_1 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -1479,20 +1485,23 @@ matmul_i1_avx512f (gfc_array_m1 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_UINTEGER_1 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_UINTEGER_1 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_UINTEGER_1 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_UINTEGER_1)0;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * rxspacing + j * c_dim1) = (GFC_UINTEGER_1)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -1544,20 +1553,20 @@ matmul_i1_avx512f (gfc_array_m1 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -1566,7 +1575,7 @@ matmul_i1_avx512f (gfc_array_m1 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -1577,100 +1586,100 @@ matmul_i1_avx512f (gfc_array_m1 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -1682,38 +1691,38 @@ matmul_i1_avx512f (gfc_array_m1 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -2059,8 +2068,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_UINTEGER_1 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -2074,20 +2083,23 @@ matmul_i1_vanilla (gfc_array_m1 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_UINTEGER_1 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_UINTEGER_1 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_UINTEGER_1 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_UINTEGER_1)0;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * rxspacing + j * c_dim1) = (GFC_UINTEGER_1)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -2139,20 +2151,20 @@ matmul_i1_vanilla (gfc_array_m1 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -2161,7 +2173,7 @@ matmul_i1_vanilla (gfc_array_m1 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -2172,100 +2184,100 @@ matmul_i1_vanilla (gfc_array_m1 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -2277,38 +2289,38 @@ matmul_i1_vanilla (gfc_array_m1 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -2713,8 +2725,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_UINTEGER_1 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -2728,20 +2740,23 @@ matmul_i1 (gfc_array_m1 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_UINTEGER_1 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_UINTEGER_1 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_UINTEGER_1 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_UINTEGER_1)0;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * rxspacing + j * c_dim1) = (GFC_UINTEGER_1)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -2793,20 +2808,20 @@ matmul_i1 (gfc_array_m1 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -2815,7 +2830,7 @@ matmul_i1 (gfc_array_m1 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -2826,100 +2841,100 @@ matmul_i1 (gfc_array_m1 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -2931,38 +2946,38 @@ matmul_i1 (gfc_array_m1 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_1, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_1, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
diff --git a/libgfortran/generated/matmul_i16.c b/libgfortran/generated/matmul_i16.c
index 48cf2abc572b..4f02e805c5b3 100644
--- a/libgfortran/generated/matmul_i16.c
+++ b/libgfortran/generated/matmul_i16.c
@@ -302,8 +302,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_UINTEGER_16 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -317,20 +317,23 @@ matmul_i16_avx (gfc_array_m16 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_UINTEGER_16 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_UINTEGER_16 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_UINTEGER_16 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_UINTEGER_16)0;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * rxspacing + j * c_dim1) = (GFC_UINTEGER_16)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -382,20 +385,20 @@ matmul_i16_avx (gfc_array_m16 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -404,7 +407,7 @@ matmul_i16_avx (gfc_array_m16 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -415,100 +418,100 @@ matmul_i16_avx (gfc_array_m16 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -520,38 +523,38 @@ matmul_i16_avx (gfc_array_m16 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -883,8 +886,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_UINTEGER_16 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -898,20 +901,23 @@ matmul_i16_avx2 (gfc_array_m16 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_UINTEGER_16 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_UINTEGER_16 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_UINTEGER_16 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_UINTEGER_16)0;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * rxspacing + j * c_dim1) = (GFC_UINTEGER_16)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -963,20 +969,20 @@ matmul_i16_avx2 (gfc_array_m16 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -985,7 +991,7 @@ matmul_i16_avx2 (gfc_array_m16 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -996,100 +1002,100 @@ matmul_i16_avx2 (gfc_array_m16 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -1101,38 +1107,38 @@ matmul_i16_avx2 (gfc_array_m16 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -1464,8 +1470,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_UINTEGER_16 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -1479,20 +1485,23 @@ matmul_i16_avx512f (gfc_array_m16 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_UINTEGER_16 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_UINTEGER_16 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_UINTEGER_16 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_UINTEGER_16)0;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * rxspacing + j * c_dim1) = (GFC_UINTEGER_16)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -1544,20 +1553,20 @@ matmul_i16_avx512f (gfc_array_m16 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -1566,7 +1575,7 @@ matmul_i16_avx512f (gfc_array_m16 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -1577,100 +1586,100 @@ matmul_i16_avx512f (gfc_array_m16 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -1682,38 +1691,38 @@ matmul_i16_avx512f (gfc_array_m16 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -2059,8 +2068,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_UINTEGER_16 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -2074,20 +2083,23 @@ matmul_i16_vanilla (gfc_array_m16 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_UINTEGER_16 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_UINTEGER_16 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_UINTEGER_16 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_UINTEGER_16)0;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * rxspacing + j * c_dim1) = (GFC_UINTEGER_16)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -2139,20 +2151,20 @@ matmul_i16_vanilla (gfc_array_m16 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -2161,7 +2173,7 @@ matmul_i16_vanilla (gfc_array_m16 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -2172,100 +2184,100 @@ matmul_i16_vanilla (gfc_array_m16 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -2277,38 +2289,38 @@ matmul_i16_vanilla (gfc_array_m16 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -2713,8 +2725,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_UINTEGER_16 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -2728,20 +2740,23 @@ matmul_i16 (gfc_array_m16 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_UINTEGER_16 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_UINTEGER_16 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_UINTEGER_16 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_UINTEGER_16)0;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * rxspacing + j * c_dim1) = (GFC_UINTEGER_16)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -2793,20 +2808,20 @@ matmul_i16 (gfc_array_m16 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -2815,7 +2830,7 @@ matmul_i16 (gfc_array_m16 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -2826,100 +2841,100 @@ matmul_i16 (gfc_array_m16 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -2931,38 +2946,38 @@ matmul_i16 (gfc_array_m16 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_16, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_16, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
diff --git a/libgfortran/generated/matmul_i2.c b/libgfortran/generated/matmul_i2.c
index 5ad141cfac9b..88884ddb06a5 100644
--- a/libgfortran/generated/matmul_i2.c
+++ b/libgfortran/generated/matmul_i2.c
@@ -302,8 +302,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_UINTEGER_2 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -317,20 +317,23 @@ matmul_i2_avx (gfc_array_m2 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_UINTEGER_2 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_UINTEGER_2 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_UINTEGER_2 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_UINTEGER_2)0;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * rxspacing + j * c_dim1) = (GFC_UINTEGER_2)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -382,20 +385,20 @@ matmul_i2_avx (gfc_array_m2 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -404,7 +407,7 @@ matmul_i2_avx (gfc_array_m2 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -415,100 +418,100 @@ matmul_i2_avx (gfc_array_m2 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 1) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 2) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + (j + 3) * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + (j + 3) * c_dim1] = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
}
}
}
@@ -520,38 +523,38 @@ matmul_i2_avx (gfc_array_m2 * const restrict retarray,
i5 = ii + uisec - 1;
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];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + j * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + j * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i) * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
}
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + j * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) -
- 257] * b[l + j * b_dim1];
+ 257] * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + j * b_dim1);
}
- c[i + j * c_dim1] = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + j * c_dim1) = f11;
}
}
}
@@ -883,8 +886,8 @@ 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,
- i1, i2, i3, i4, i5, i6;
+ index_type a_dim0, a_dim1, a_offset, b_dim0, b_dim1, b_offset,
+ c_dim0, c_dim1, c_offset, i1, i2, i3, i4, i5, i6;
/* Local variables */
GFC_UINTEGER_2 f11, f12, f21, f22, f31, f32, f41, f42,
@@ -898,20 +901,23 @@ matmul_i2_avx2 (gfc_array_m2 * const restrict retarray,
c = retarray->base_addr;
/* Parameter adjustments */
+ c_dim0 = rxspacing;
c_dim1 = ryspacing;
- c_offset = 1 + c_dim1;
- c -= c_offset;
+ c_offset = rxspacing + c_dim1;
+ c = (GFC_UINTEGER_2 *) (((char*)c) - c_offset);
+ a_dim0 = axspacing;
a_dim1 = ayspacing;
- a_offset = 1 + a_dim1;
- a -= a_offset;
+ a_offset = axspacing + a_dim1;
+ a = (GFC_UINTEGER_2 *) (((char*)a) - a_offset);
+ b_dim0 = bxspacing;
b_dim1 = byspacing;
- b_offset = 1 + b_dim1;
- b -= b_offset;
+ b_offset = bxspacing + b_dim1;
+ b = (GFC_UINTEGER_2 *) (((char*)b) - b_offset);
/* Empty c first. */
for (j=1; j<=n; j++)
for (i=1; i<=m; i++)
- c[i + j * c_dim1] = (GFC_UINTEGER_2)0;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * rxspacing + j * c_dim1) = (GFC_UINTEGER_2)0;
/* Early exit if possible */
if (m == 0 || n == 0 || k == 0)
@@ -963,20 +969,20 @@ matmul_i2_avx2 (gfc_array_m2 * const restrict retarray,
for (i = ii; i <= i5; i += 2)
{
t1[l - ll + 1 + ((i - ii + 1) << 8) - 257] =
- a[i + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, a, i * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 1) << 8) - 257] =
- a[i + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, a, i * a_dim0 + (l + 1) * a_dim1);
t1[l - ll + 1 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, a, (i + 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + ((i - ii + 2) << 8) - 257] =
- a[i + 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, a, (i + 1) * a_dim0 + (l + 1) * a_dim1);
}
if (uisec < isec)
{
t1[l - ll + 1 + (isec << 8) - 257] =
- a[ii + isec - 1 + l * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, a, (ii + isec - 1) * a_dim0 + l * a_dim1);
t1[l - ll + 2 + (isec << 8) - 257] =
- a[ii + isec - 1 + (l + 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, a, (ii + isec - 1) * a_dim0 + (l + 1) * a_dim1);
}
}
if (ulsec < lsec)
@@ -985,7 +991,7 @@ matmul_i2_avx2 (gfc_array_m2 * const restrict retarray,
for (i = ii; i<= i4; ++i)
{
t1[lsec + ((i - ii + 1) << 8) - 257] =
- a[i + (ll + lsec - 1) * a_dim1];
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, a, i * a_dim0 + (ll + lsec - 1) * a_dim1);
}
}
@@ -996,100 +1002,100 @@ matmul_i2_avx2 (gfc_array_m2 * const restrict retarray,
i5 = ii + uisec - 1;
for (i = ii; i <= i5; i += 4)
{
- f11 = c[i + j * c_dim1];
- f21 = c[i + 1 + j * c_dim1];
- f12 = c[i + (j + 1) * c_dim1];
- f22 = c[i + 1 + (j + 1) * c_dim1];
- f13 = c[i + (j + 2) * c_dim1];
- f23 = c[i + 1 + (j + 2) * c_dim1];
- f14 = c[i + (j + 3) * c_dim1];
- f24 = c[i + 1 + (j + 3) * c_dim1];
- f31 = c[i + 2 + j * c_dim1];
- f41 = c[i + 3 + j * c_dim1];
- f32 = c[i + 2 + (j + 1) * c_dim1];
- f42 = c[i + 3 + (j + 1) * c_dim1];
- f33 = c[i + 2 + (j + 2) * c_dim1];
- f43 = c[i + 3 + (j + 2) * c_dim1];
- f34 = c[i + 2 + (j + 3) * c_dim1];
- f44 = c[i + 3 + (j + 3) * c_dim1];
+ f11 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + j * c_dim1);
+ f21 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + j * c_dim1);
+ f12 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 1) * c_dim1);
+ f22 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + (j + 1) * c_dim1);
+ f13 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 2) * c_dim1);
+ f23 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + (j + 2) * c_dim1);
+ f14 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 3) * c_dim1);
+ f24 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + (j + 3) * c_dim1);
+ f31 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + j * c_dim1);
+ f41 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + j * c_dim1);
+ f32 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + (j + 1) * c_dim1);
+ f42 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + (j + 1) * c_dim1);
+ f33 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + (j + 2) * c_dim1);
+ f43 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + (j + 2) * c_dim1);
+ f34 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + (j + 3) * c_dim1);
+ f44 = GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + (j + 3) * c_dim1);
i6 = ll + lsec - 1;
for (l = ll; l <= i6; ++l)
{
f11 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + j * b_dim1);
f21 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + j * b_dim1);
f12 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 1) * b_dim1);
f22 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 1) * b_dim1);
f13 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 2) * b_dim1);
f23 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 2) * b_dim1);
f14 += t1[l - ll + 1 + ((i - ii + 1) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 3) * b_dim1);
f24 += t1[l - ll + 1 + ((i - ii + 2) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 3) * b_dim1);
f31 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + j * b_dim1);
f41 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + j * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + j * b_dim1);
f32 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 1) * b_dim1);
f42 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 1) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 1) * b_dim1);
f33 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 2) * b_dim1);
f43 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 2) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 2) * b_dim1);
f34 += t1[l - ll + 1 + ((i - ii + 3) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 3) * b_dim1);
f44 += t1[l - ll + 1 + ((i - ii + 4) << 8) - 257]
- * b[l + (j + 3) * b_dim1];
+ * GFC_ARRAY_ELEM (GFC_UINTEGER_2, b, l * b_dim0 + (j + 3) * b_dim1);
}
- c[i + j * c_dim1] = f11;
- c[i + 1 + j * c_dim1] = f21;
- c[i + (j + 1) * c_dim1] = f12;
- c[i + 1 + (j + 1) * c_dim1] = f22;
- c[i + (j + 2) * c_dim1] = f13;
- c[i + 1 + (j + 2) * c_dim1] = f23;
- c[i + (j + 3) * c_dim1] = f14;
- c[i + 1 + (j + 3) * c_dim1] = f24;
- c[i + 2 + j * c_dim1] = f31;
- c[i + 3 + j * c_dim1] = f41;
- c[i + 2 + (j + 1) * c_dim1] = f32;
- c[i + 3 + (j + 1) * c_dim1] = f42;
- c[i + 2 + (j + 2) * c_dim1] = f33;
- c[i + 3 + (j + 2) * c_dim1] = f43;
- c[i + 2 + (j + 3) * c_dim1] = f34;
- c[i + 3 + (j + 3) * c_dim1] = f44;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + j * c_dim1) = f11;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + j * c_dim1) = f21;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 1) * c_dim1) = f12;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + (j + 1) * c_dim1) = f22;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 2) * c_dim1) = f13;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + (j + 2) * c_dim1) = f23;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, i * c_dim0 + (j + 3) * c_dim1) = f14;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 1) * c_dim0 + (j + 3) * c_dim1) = f24;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + j * c_dim1) = f31;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + j * c_dim1) = f41;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + (j + 1) * c_dim1) = f32;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + (j + 1) * c_dim1) = f42;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + (j + 2) * c_dim1) = f33;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + (j + 2) * c_dim1) = f43;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 2) * c_dim0 + (j + 3) * c_dim1) = f34;
+ GFC_ARRAY_ELEM (GFC_UINTEGER_2, c, (i + 3) * c_dim0 + (j + 3) * c_dim1) = f44;
}
if (uisec < isec)
{
i5 = ii + isec - 1;
for (i = ii + uisec; i <= i5; ++i)
{
- f11 = c[i + j * c_dim1];
- [...]
[diff truncated at 524288 bytes]
More information about the Gcc-cvs
mailing list