Commit 85206901 by Janne Blomqvist

re PR libfortran/21468 (vectorizing libfortran)

2005-11-14  Janne Blomqvist  <jb@gcc.gnu.org>

        PR fortran/21468
        * Makefile.am: Add -ftree-vectorize for compiling matmul.
        * m4/matmul.m4: Add const and restrict to type declarations as
        appropriate.
        * m4/matmull.m4: Likewise.
        * Makefile.in: Regenerated.
        * generated/matmul_*.c: Likewise.

From-SVN: r106898
parent d0568f73
2005-11-14 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/21468
* Makefile.am: Add -ftree-vectorize for compiling matmul.
* m4/matmul.m4: Add const and restrict to type declarations as
appropriate.
* m4/matmull.m4: Likewise.
* Makefile.in: Regenerated.
* generated/matmul_*.c: Likewise.
2005-11-13 Francois-Xavier Coudert <coudert@clipper.ens.fr> 2005-11-13 Francois-Xavier Coudert <coudert@clipper.ens.fr>
* intrinsics/fget.c: New file. * intrinsics/fget.c: New file.
......
...@@ -433,7 +433,7 @@ m4_files= m4/iparm.m4 m4/ifunction.m4 m4/iforeach.m4 m4/all.m4 \ ...@@ -433,7 +433,7 @@ m4_files= m4/iparm.m4 m4/ifunction.m4 m4/iforeach.m4 m4/all.m4 \
gfor_built_src= $(i_all_c) $(i_any_c) $(i_count_c) $(i_maxloc0_c) \ gfor_built_src= $(i_all_c) $(i_any_c) $(i_count_c) $(i_maxloc0_c) \
$(i_maxloc1_c) $(i_maxval_c) $(i_minloc0_c) $(i_minloc1_c) $(i_minval_c) \ $(i_maxloc1_c) $(i_maxval_c) $(i_minloc0_c) $(i_minloc1_c) $(i_minval_c) \
$(i_product_c) $(i_sum_c) $(i_dotprod_c) $(i_dotprodl_c) $(i_dotprodc_c) \ $(i_product_c) $(i_sum_c) $(i_dotprod_c) $(i_dotprodl_c) $(i_dotprodc_c) \
$(i_matmul_c) $(i_matmull_c) $(i_transpose_c) $(i_shape_c) $(i_eoshift1_c) \ $(i_matmull_c) $(i_transpose_c) $(i_shape_c) $(i_eoshift1_c) \
$(i_eoshift3_c) $(i_cshift1_c) $(i_reshape_c) $(in_pack_c) $(in_unpack_c) \ $(i_eoshift3_c) $(i_cshift1_c) $(i_reshape_c) $(in_pack_c) $(in_unpack_c) \
$(i_exponent_c) $(i_fraction_c) $(i_nearest_c) $(i_set_exponent_c) \ $(i_exponent_c) $(i_fraction_c) $(i_nearest_c) $(i_set_exponent_c) \
$(i_pow_c) \ $(i_pow_c) \
...@@ -573,11 +573,17 @@ $(gfor_built_specific2_src) \ ...@@ -573,11 +573,17 @@ $(gfor_built_specific2_src) \
intrinsics/dprod_r8.f90 \ intrinsics/dprod_r8.f90 \
intrinsics/f2c_specifics.F90 intrinsics/f2c_specifics.F90
EXTRA_LTLIBRARIES = libmatmul.la
libmatmul_la_SOURCES = $(i_matmul_c)
libmatmul_la_CFLAGS = -ftree-vectorize $(AM_CFLAGS)
BUILT_SOURCES=$(gfor_built_src) $(gfor_built_specific_src) \ BUILT_SOURCES=$(gfor_built_src) $(gfor_built_specific_src) \
$(gfor_built_specific2_src) $(gfor_built_specific2_src) $(libmatmul_la_SOURCES)
libgfortran_la_SOURCES = $(gfor_src) $(gfor_built_src) $(gfor_io_src) \ libgfortran_la_SOURCES = $(gfor_src) $(gfor_built_src) $(gfor_io_src) \
$(gfor_helper_src) $(gfor_io_headers) $(gfor_specific_src) $(gfor_helper_src) $(gfor_io_headers) $(gfor_specific_src)
libgfortran_la_LIBADD = libmatmul.la
I_M4_DEPS=m4/iparm.m4 I_M4_DEPS=m4/iparm.m4
I_M4_DEPS0=$(I_M4_DEPS) m4/iforeach.m4 I_M4_DEPS0=$(I_M4_DEPS) m4/iforeach.m4
I_M4_DEPS1=$(I_M4_DEPS) m4/ifunction.m4 I_M4_DEPS1=$(I_M4_DEPS) m4/ifunction.m4
......
...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */ ...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */
C(I,J) = C(I,J)+A(I,K)*B(K,J) C(I,J) = C(I,J)+A(I,K)*B(K,J)
*/ */
extern void matmul_c10 (gfc_array_c10 * retarray, gfc_array_c10 * a, gfc_array_c10 * b); extern void matmul_c10 (gfc_array_c10 * const restrict retarray,
gfc_array_c10 * const restrict a, gfc_array_c10 * const restrict b);
export_proto(matmul_c10); export_proto(matmul_c10);
void void
matmul_c10 (gfc_array_c10 * retarray, gfc_array_c10 * a, gfc_array_c10 * b) matmul_c10 (gfc_array_c10 * const restrict retarray,
gfc_array_c10 * const restrict a, gfc_array_c10 * const restrict b)
{ {
GFC_COMPLEX_10 *abase; const GFC_COMPLEX_10 * restrict abase;
GFC_COMPLEX_10 *bbase; const GFC_COMPLEX_10 * restrict bbase;
GFC_COMPLEX_10 *dest; GFC_COMPLEX_10 * restrict dest;
index_type rxstride, rystride, axstride, aystride, bxstride, bystride; index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
index_type x, y, n, count, xcount, ycount; index_type x, y, n, count, xcount, ycount;
...@@ -105,12 +107,10 @@ matmul_c10 (gfc_array_c10 * retarray, gfc_array_c10 * a, gfc_array_c10 * b) ...@@ -105,12 +107,10 @@ matmul_c10 (gfc_array_c10 * retarray, gfc_array_c10 * a, gfc_array_c10 * b)
retarray->offset = 0; retarray->offset = 0;
} }
abase = a->data;
bbase = b->data;
dest = retarray->data;
if (retarray->dim[0].stride == 0) if (retarray->dim[0].stride == 0)
retarray->dim[0].stride = 1; retarray->dim[0].stride = 1;
/* This prevents constifying the input arguments. */
if (a->dim[0].stride == 0) if (a->dim[0].stride == 0)
a->dim[0].stride = 1; a->dim[0].stride = 1;
if (b->dim[0].stride == 0) if (b->dim[0].stride == 0)
...@@ -175,9 +175,9 @@ matmul_c10 (gfc_array_c10 * retarray, gfc_array_c10 * a, gfc_array_c10 * b) ...@@ -175,9 +175,9 @@ matmul_c10 (gfc_array_c10 * retarray, gfc_array_c10 * a, gfc_array_c10 * b)
if (rxstride == 1 && axstride == 1 && bxstride == 1) if (rxstride == 1 && axstride == 1 && bxstride == 1)
{ {
GFC_COMPLEX_10 *bbase_y; const GFC_COMPLEX_10 * restrict bbase_y;
GFC_COMPLEX_10 *dest_y; GFC_COMPLEX_10 * restrict dest_y;
GFC_COMPLEX_10 *abase_n; const GFC_COMPLEX_10 * restrict abase_n;
GFC_COMPLEX_10 bbase_yn; GFC_COMPLEX_10 bbase_yn;
if (rystride == ycount) if (rystride == ycount)
......
...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */ ...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */
C(I,J) = C(I,J)+A(I,K)*B(K,J) C(I,J) = C(I,J)+A(I,K)*B(K,J)
*/ */
extern void matmul_c16 (gfc_array_c16 * retarray, gfc_array_c16 * a, gfc_array_c16 * b); extern void matmul_c16 (gfc_array_c16 * const restrict retarray,
gfc_array_c16 * const restrict a, gfc_array_c16 * const restrict b);
export_proto(matmul_c16); export_proto(matmul_c16);
void void
matmul_c16 (gfc_array_c16 * retarray, gfc_array_c16 * a, gfc_array_c16 * b) matmul_c16 (gfc_array_c16 * const restrict retarray,
gfc_array_c16 * const restrict a, gfc_array_c16 * const restrict b)
{ {
GFC_COMPLEX_16 *abase; const GFC_COMPLEX_16 * restrict abase;
GFC_COMPLEX_16 *bbase; const GFC_COMPLEX_16 * restrict bbase;
GFC_COMPLEX_16 *dest; GFC_COMPLEX_16 * restrict dest;
index_type rxstride, rystride, axstride, aystride, bxstride, bystride; index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
index_type x, y, n, count, xcount, ycount; index_type x, y, n, count, xcount, ycount;
...@@ -105,12 +107,10 @@ matmul_c16 (gfc_array_c16 * retarray, gfc_array_c16 * a, gfc_array_c16 * b) ...@@ -105,12 +107,10 @@ matmul_c16 (gfc_array_c16 * retarray, gfc_array_c16 * a, gfc_array_c16 * b)
retarray->offset = 0; retarray->offset = 0;
} }
abase = a->data;
bbase = b->data;
dest = retarray->data;
if (retarray->dim[0].stride == 0) if (retarray->dim[0].stride == 0)
retarray->dim[0].stride = 1; retarray->dim[0].stride = 1;
/* This prevents constifying the input arguments. */
if (a->dim[0].stride == 0) if (a->dim[0].stride == 0)
a->dim[0].stride = 1; a->dim[0].stride = 1;
if (b->dim[0].stride == 0) if (b->dim[0].stride == 0)
...@@ -175,9 +175,9 @@ matmul_c16 (gfc_array_c16 * retarray, gfc_array_c16 * a, gfc_array_c16 * b) ...@@ -175,9 +175,9 @@ matmul_c16 (gfc_array_c16 * retarray, gfc_array_c16 * a, gfc_array_c16 * b)
if (rxstride == 1 && axstride == 1 && bxstride == 1) if (rxstride == 1 && axstride == 1 && bxstride == 1)
{ {
GFC_COMPLEX_16 *bbase_y; const GFC_COMPLEX_16 * restrict bbase_y;
GFC_COMPLEX_16 *dest_y; GFC_COMPLEX_16 * restrict dest_y;
GFC_COMPLEX_16 *abase_n; const GFC_COMPLEX_16 * restrict abase_n;
GFC_COMPLEX_16 bbase_yn; GFC_COMPLEX_16 bbase_yn;
if (rystride == ycount) if (rystride == ycount)
......
...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */ ...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */
C(I,J) = C(I,J)+A(I,K)*B(K,J) C(I,J) = C(I,J)+A(I,K)*B(K,J)
*/ */
extern void matmul_c4 (gfc_array_c4 * retarray, gfc_array_c4 * a, gfc_array_c4 * b); extern void matmul_c4 (gfc_array_c4 * const restrict retarray,
gfc_array_c4 * const restrict a, gfc_array_c4 * const restrict b);
export_proto(matmul_c4); export_proto(matmul_c4);
void void
matmul_c4 (gfc_array_c4 * retarray, gfc_array_c4 * a, gfc_array_c4 * b) matmul_c4 (gfc_array_c4 * const restrict retarray,
gfc_array_c4 * const restrict a, gfc_array_c4 * const restrict b)
{ {
GFC_COMPLEX_4 *abase; const GFC_COMPLEX_4 * restrict abase;
GFC_COMPLEX_4 *bbase; const GFC_COMPLEX_4 * restrict bbase;
GFC_COMPLEX_4 *dest; GFC_COMPLEX_4 * restrict dest;
index_type rxstride, rystride, axstride, aystride, bxstride, bystride; index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
index_type x, y, n, count, xcount, ycount; index_type x, y, n, count, xcount, ycount;
...@@ -105,12 +107,10 @@ matmul_c4 (gfc_array_c4 * retarray, gfc_array_c4 * a, gfc_array_c4 * b) ...@@ -105,12 +107,10 @@ matmul_c4 (gfc_array_c4 * retarray, gfc_array_c4 * a, gfc_array_c4 * b)
retarray->offset = 0; retarray->offset = 0;
} }
abase = a->data;
bbase = b->data;
dest = retarray->data;
if (retarray->dim[0].stride == 0) if (retarray->dim[0].stride == 0)
retarray->dim[0].stride = 1; retarray->dim[0].stride = 1;
/* This prevents constifying the input arguments. */
if (a->dim[0].stride == 0) if (a->dim[0].stride == 0)
a->dim[0].stride = 1; a->dim[0].stride = 1;
if (b->dim[0].stride == 0) if (b->dim[0].stride == 0)
...@@ -175,9 +175,9 @@ matmul_c4 (gfc_array_c4 * retarray, gfc_array_c4 * a, gfc_array_c4 * b) ...@@ -175,9 +175,9 @@ matmul_c4 (gfc_array_c4 * retarray, gfc_array_c4 * a, gfc_array_c4 * b)
if (rxstride == 1 && axstride == 1 && bxstride == 1) if (rxstride == 1 && axstride == 1 && bxstride == 1)
{ {
GFC_COMPLEX_4 *bbase_y; const GFC_COMPLEX_4 * restrict bbase_y;
GFC_COMPLEX_4 *dest_y; GFC_COMPLEX_4 * restrict dest_y;
GFC_COMPLEX_4 *abase_n; const GFC_COMPLEX_4 * restrict abase_n;
GFC_COMPLEX_4 bbase_yn; GFC_COMPLEX_4 bbase_yn;
if (rystride == ycount) if (rystride == ycount)
......
...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */ ...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */
C(I,J) = C(I,J)+A(I,K)*B(K,J) C(I,J) = C(I,J)+A(I,K)*B(K,J)
*/ */
extern void matmul_c8 (gfc_array_c8 * retarray, gfc_array_c8 * a, gfc_array_c8 * b); extern void matmul_c8 (gfc_array_c8 * const restrict retarray,
gfc_array_c8 * const restrict a, gfc_array_c8 * const restrict b);
export_proto(matmul_c8); export_proto(matmul_c8);
void void
matmul_c8 (gfc_array_c8 * retarray, gfc_array_c8 * a, gfc_array_c8 * b) matmul_c8 (gfc_array_c8 * const restrict retarray,
gfc_array_c8 * const restrict a, gfc_array_c8 * const restrict b)
{ {
GFC_COMPLEX_8 *abase; const GFC_COMPLEX_8 * restrict abase;
GFC_COMPLEX_8 *bbase; const GFC_COMPLEX_8 * restrict bbase;
GFC_COMPLEX_8 *dest; GFC_COMPLEX_8 * restrict dest;
index_type rxstride, rystride, axstride, aystride, bxstride, bystride; index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
index_type x, y, n, count, xcount, ycount; index_type x, y, n, count, xcount, ycount;
...@@ -105,12 +107,10 @@ matmul_c8 (gfc_array_c8 * retarray, gfc_array_c8 * a, gfc_array_c8 * b) ...@@ -105,12 +107,10 @@ matmul_c8 (gfc_array_c8 * retarray, gfc_array_c8 * a, gfc_array_c8 * b)
retarray->offset = 0; retarray->offset = 0;
} }
abase = a->data;
bbase = b->data;
dest = retarray->data;
if (retarray->dim[0].stride == 0) if (retarray->dim[0].stride == 0)
retarray->dim[0].stride = 1; retarray->dim[0].stride = 1;
/* This prevents constifying the input arguments. */
if (a->dim[0].stride == 0) if (a->dim[0].stride == 0)
a->dim[0].stride = 1; a->dim[0].stride = 1;
if (b->dim[0].stride == 0) if (b->dim[0].stride == 0)
...@@ -175,9 +175,9 @@ matmul_c8 (gfc_array_c8 * retarray, gfc_array_c8 * a, gfc_array_c8 * b) ...@@ -175,9 +175,9 @@ matmul_c8 (gfc_array_c8 * retarray, gfc_array_c8 * a, gfc_array_c8 * b)
if (rxstride == 1 && axstride == 1 && bxstride == 1) if (rxstride == 1 && axstride == 1 && bxstride == 1)
{ {
GFC_COMPLEX_8 *bbase_y; const GFC_COMPLEX_8 * restrict bbase_y;
GFC_COMPLEX_8 *dest_y; GFC_COMPLEX_8 * restrict dest_y;
GFC_COMPLEX_8 *abase_n; const GFC_COMPLEX_8 * restrict abase_n;
GFC_COMPLEX_8 bbase_yn; GFC_COMPLEX_8 bbase_yn;
if (rystride == ycount) if (rystride == ycount)
......
...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */ ...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */
C(I,J) = C(I,J)+A(I,K)*B(K,J) C(I,J) = C(I,J)+A(I,K)*B(K,J)
*/ */
extern void matmul_i16 (gfc_array_i16 * retarray, gfc_array_i16 * a, gfc_array_i16 * b); extern void matmul_i16 (gfc_array_i16 * const restrict retarray,
gfc_array_i16 * const restrict a, gfc_array_i16 * const restrict b);
export_proto(matmul_i16); export_proto(matmul_i16);
void void
matmul_i16 (gfc_array_i16 * retarray, gfc_array_i16 * a, gfc_array_i16 * b) matmul_i16 (gfc_array_i16 * const restrict retarray,
gfc_array_i16 * const restrict a, gfc_array_i16 * const restrict b)
{ {
GFC_INTEGER_16 *abase; const GFC_INTEGER_16 * restrict abase;
GFC_INTEGER_16 *bbase; const GFC_INTEGER_16 * restrict bbase;
GFC_INTEGER_16 *dest; GFC_INTEGER_16 * restrict dest;
index_type rxstride, rystride, axstride, aystride, bxstride, bystride; index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
index_type x, y, n, count, xcount, ycount; index_type x, y, n, count, xcount, ycount;
...@@ -105,12 +107,10 @@ matmul_i16 (gfc_array_i16 * retarray, gfc_array_i16 * a, gfc_array_i16 * b) ...@@ -105,12 +107,10 @@ matmul_i16 (gfc_array_i16 * retarray, gfc_array_i16 * a, gfc_array_i16 * b)
retarray->offset = 0; retarray->offset = 0;
} }
abase = a->data;
bbase = b->data;
dest = retarray->data;
if (retarray->dim[0].stride == 0) if (retarray->dim[0].stride == 0)
retarray->dim[0].stride = 1; retarray->dim[0].stride = 1;
/* This prevents constifying the input arguments. */
if (a->dim[0].stride == 0) if (a->dim[0].stride == 0)
a->dim[0].stride = 1; a->dim[0].stride = 1;
if (b->dim[0].stride == 0) if (b->dim[0].stride == 0)
...@@ -175,9 +175,9 @@ matmul_i16 (gfc_array_i16 * retarray, gfc_array_i16 * a, gfc_array_i16 * b) ...@@ -175,9 +175,9 @@ matmul_i16 (gfc_array_i16 * retarray, gfc_array_i16 * a, gfc_array_i16 * b)
if (rxstride == 1 && axstride == 1 && bxstride == 1) if (rxstride == 1 && axstride == 1 && bxstride == 1)
{ {
GFC_INTEGER_16 *bbase_y; const GFC_INTEGER_16 * restrict bbase_y;
GFC_INTEGER_16 *dest_y; GFC_INTEGER_16 * restrict dest_y;
GFC_INTEGER_16 *abase_n; const GFC_INTEGER_16 * restrict abase_n;
GFC_INTEGER_16 bbase_yn; GFC_INTEGER_16 bbase_yn;
if (rystride == ycount) if (rystride == ycount)
......
...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */ ...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */
C(I,J) = C(I,J)+A(I,K)*B(K,J) C(I,J) = C(I,J)+A(I,K)*B(K,J)
*/ */
extern void matmul_i4 (gfc_array_i4 * retarray, gfc_array_i4 * a, gfc_array_i4 * b); extern void matmul_i4 (gfc_array_i4 * const restrict retarray,
gfc_array_i4 * const restrict a, gfc_array_i4 * const restrict b);
export_proto(matmul_i4); export_proto(matmul_i4);
void void
matmul_i4 (gfc_array_i4 * retarray, gfc_array_i4 * a, gfc_array_i4 * b) matmul_i4 (gfc_array_i4 * const restrict retarray,
gfc_array_i4 * const restrict a, gfc_array_i4 * const restrict b)
{ {
GFC_INTEGER_4 *abase; const GFC_INTEGER_4 * restrict abase;
GFC_INTEGER_4 *bbase; const GFC_INTEGER_4 * restrict bbase;
GFC_INTEGER_4 *dest; GFC_INTEGER_4 * restrict dest;
index_type rxstride, rystride, axstride, aystride, bxstride, bystride; index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
index_type x, y, n, count, xcount, ycount; index_type x, y, n, count, xcount, ycount;
...@@ -105,12 +107,10 @@ matmul_i4 (gfc_array_i4 * retarray, gfc_array_i4 * a, gfc_array_i4 * b) ...@@ -105,12 +107,10 @@ matmul_i4 (gfc_array_i4 * retarray, gfc_array_i4 * a, gfc_array_i4 * b)
retarray->offset = 0; retarray->offset = 0;
} }
abase = a->data;
bbase = b->data;
dest = retarray->data;
if (retarray->dim[0].stride == 0) if (retarray->dim[0].stride == 0)
retarray->dim[0].stride = 1; retarray->dim[0].stride = 1;
/* This prevents constifying the input arguments. */
if (a->dim[0].stride == 0) if (a->dim[0].stride == 0)
a->dim[0].stride = 1; a->dim[0].stride = 1;
if (b->dim[0].stride == 0) if (b->dim[0].stride == 0)
...@@ -175,9 +175,9 @@ matmul_i4 (gfc_array_i4 * retarray, gfc_array_i4 * a, gfc_array_i4 * b) ...@@ -175,9 +175,9 @@ matmul_i4 (gfc_array_i4 * retarray, gfc_array_i4 * a, gfc_array_i4 * b)
if (rxstride == 1 && axstride == 1 && bxstride == 1) if (rxstride == 1 && axstride == 1 && bxstride == 1)
{ {
GFC_INTEGER_4 *bbase_y; const GFC_INTEGER_4 * restrict bbase_y;
GFC_INTEGER_4 *dest_y; GFC_INTEGER_4 * restrict dest_y;
GFC_INTEGER_4 *abase_n; const GFC_INTEGER_4 * restrict abase_n;
GFC_INTEGER_4 bbase_yn; GFC_INTEGER_4 bbase_yn;
if (rystride == ycount) if (rystride == ycount)
......
...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */ ...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */
C(I,J) = C(I,J)+A(I,K)*B(K,J) C(I,J) = C(I,J)+A(I,K)*B(K,J)
*/ */
extern void matmul_i8 (gfc_array_i8 * retarray, gfc_array_i8 * a, gfc_array_i8 * b); extern void matmul_i8 (gfc_array_i8 * const restrict retarray,
gfc_array_i8 * const restrict a, gfc_array_i8 * const restrict b);
export_proto(matmul_i8); export_proto(matmul_i8);
void void
matmul_i8 (gfc_array_i8 * retarray, gfc_array_i8 * a, gfc_array_i8 * b) matmul_i8 (gfc_array_i8 * const restrict retarray,
gfc_array_i8 * const restrict a, gfc_array_i8 * const restrict b)
{ {
GFC_INTEGER_8 *abase; const GFC_INTEGER_8 * restrict abase;
GFC_INTEGER_8 *bbase; const GFC_INTEGER_8 * restrict bbase;
GFC_INTEGER_8 *dest; GFC_INTEGER_8 * restrict dest;
index_type rxstride, rystride, axstride, aystride, bxstride, bystride; index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
index_type x, y, n, count, xcount, ycount; index_type x, y, n, count, xcount, ycount;
...@@ -105,12 +107,10 @@ matmul_i8 (gfc_array_i8 * retarray, gfc_array_i8 * a, gfc_array_i8 * b) ...@@ -105,12 +107,10 @@ matmul_i8 (gfc_array_i8 * retarray, gfc_array_i8 * a, gfc_array_i8 * b)
retarray->offset = 0; retarray->offset = 0;
} }
abase = a->data;
bbase = b->data;
dest = retarray->data;
if (retarray->dim[0].stride == 0) if (retarray->dim[0].stride == 0)
retarray->dim[0].stride = 1; retarray->dim[0].stride = 1;
/* This prevents constifying the input arguments. */
if (a->dim[0].stride == 0) if (a->dim[0].stride == 0)
a->dim[0].stride = 1; a->dim[0].stride = 1;
if (b->dim[0].stride == 0) if (b->dim[0].stride == 0)
...@@ -175,9 +175,9 @@ matmul_i8 (gfc_array_i8 * retarray, gfc_array_i8 * a, gfc_array_i8 * b) ...@@ -175,9 +175,9 @@ matmul_i8 (gfc_array_i8 * retarray, gfc_array_i8 * a, gfc_array_i8 * b)
if (rxstride == 1 && axstride == 1 && bxstride == 1) if (rxstride == 1 && axstride == 1 && bxstride == 1)
{ {
GFC_INTEGER_8 *bbase_y; const GFC_INTEGER_8 * restrict bbase_y;
GFC_INTEGER_8 *dest_y; GFC_INTEGER_8 * restrict dest_y;
GFC_INTEGER_8 *abase_n; const GFC_INTEGER_8 * restrict abase_n;
GFC_INTEGER_8 bbase_yn; GFC_INTEGER_8 bbase_yn;
if (rystride == ycount) if (rystride == ycount)
......
...@@ -38,15 +38,17 @@ Boston, MA 02110-1301, USA. */ ...@@ -38,15 +38,17 @@ Boston, MA 02110-1301, USA. */
/* Dimensions: retarray(x,y) a(x, count) b(count,y). /* Dimensions: retarray(x,y) a(x, count) b(count,y).
Either a or b can be rank 1. In this case x or y is 1. */ Either a or b can be rank 1. In this case x or y is 1. */
extern void matmul_l16 (gfc_array_l16 *, gfc_array_l4 *, gfc_array_l4 *); extern void matmul_l16 (gfc_array_l16 * const restrict,
gfc_array_l4 * const restrict, gfc_array_l4 * const restrict);
export_proto(matmul_l16); export_proto(matmul_l16);
void void
matmul_l16 (gfc_array_l16 * retarray, gfc_array_l4 * a, gfc_array_l4 * b) matmul_l16 (gfc_array_l16 * const restrict retarray,
gfc_array_l4 * const restrict a, gfc_array_l4 * const restrict b)
{ {
GFC_INTEGER_4 *abase; const GFC_INTEGER_4 * restrict abase;
GFC_INTEGER_4 *bbase; const GFC_INTEGER_4 * restrict bbase;
GFC_LOGICAL_16 *dest; GFC_LOGICAL_16 * restrict dest;
index_type rxstride; index_type rxstride;
index_type rystride; index_type rystride;
index_type xcount; index_type xcount;
...@@ -56,8 +58,8 @@ matmul_l16 (gfc_array_l16 * retarray, gfc_array_l4 * a, gfc_array_l4 * b) ...@@ -56,8 +58,8 @@ matmul_l16 (gfc_array_l16 * retarray, gfc_array_l4 * a, gfc_array_l4 * b)
index_type x; index_type x;
index_type y; index_type y;
GFC_INTEGER_4 *pa; const GFC_INTEGER_4 * restrict pa;
GFC_INTEGER_4 *pb; const GFC_INTEGER_4 * restrict pb;
index_type astride; index_type astride;
index_type bstride; index_type bstride;
index_type count; index_type count;
......
...@@ -38,15 +38,17 @@ Boston, MA 02110-1301, USA. */ ...@@ -38,15 +38,17 @@ Boston, MA 02110-1301, USA. */
/* Dimensions: retarray(x,y) a(x, count) b(count,y). /* Dimensions: retarray(x,y) a(x, count) b(count,y).
Either a or b can be rank 1. In this case x or y is 1. */ Either a or b can be rank 1. In this case x or y is 1. */
extern void matmul_l4 (gfc_array_l4 *, gfc_array_l4 *, gfc_array_l4 *); extern void matmul_l4 (gfc_array_l4 * const restrict,
gfc_array_l4 * const restrict, gfc_array_l4 * const restrict);
export_proto(matmul_l4); export_proto(matmul_l4);
void void
matmul_l4 (gfc_array_l4 * retarray, gfc_array_l4 * a, gfc_array_l4 * b) matmul_l4 (gfc_array_l4 * const restrict retarray,
gfc_array_l4 * const restrict a, gfc_array_l4 * const restrict b)
{ {
GFC_INTEGER_4 *abase; const GFC_INTEGER_4 * restrict abase;
GFC_INTEGER_4 *bbase; const GFC_INTEGER_4 * restrict bbase;
GFC_LOGICAL_4 *dest; GFC_LOGICAL_4 * restrict dest;
index_type rxstride; index_type rxstride;
index_type rystride; index_type rystride;
index_type xcount; index_type xcount;
...@@ -56,8 +58,8 @@ matmul_l4 (gfc_array_l4 * retarray, gfc_array_l4 * a, gfc_array_l4 * b) ...@@ -56,8 +58,8 @@ matmul_l4 (gfc_array_l4 * retarray, gfc_array_l4 * a, gfc_array_l4 * b)
index_type x; index_type x;
index_type y; index_type y;
GFC_INTEGER_4 *pa; const GFC_INTEGER_4 * restrict pa;
GFC_INTEGER_4 *pb; const GFC_INTEGER_4 * restrict pb;
index_type astride; index_type astride;
index_type bstride; index_type bstride;
index_type count; index_type count;
......
...@@ -38,15 +38,17 @@ Boston, MA 02110-1301, USA. */ ...@@ -38,15 +38,17 @@ Boston, MA 02110-1301, USA. */
/* Dimensions: retarray(x,y) a(x, count) b(count,y). /* Dimensions: retarray(x,y) a(x, count) b(count,y).
Either a or b can be rank 1. In this case x or y is 1. */ Either a or b can be rank 1. In this case x or y is 1. */
extern void matmul_l8 (gfc_array_l8 *, gfc_array_l4 *, gfc_array_l4 *); extern void matmul_l8 (gfc_array_l8 * const restrict,
gfc_array_l4 * const restrict, gfc_array_l4 * const restrict);
export_proto(matmul_l8); export_proto(matmul_l8);
void void
matmul_l8 (gfc_array_l8 * retarray, gfc_array_l4 * a, gfc_array_l4 * b) matmul_l8 (gfc_array_l8 * const restrict retarray,
gfc_array_l4 * const restrict a, gfc_array_l4 * const restrict b)
{ {
GFC_INTEGER_4 *abase; const GFC_INTEGER_4 * restrict abase;
GFC_INTEGER_4 *bbase; const GFC_INTEGER_4 * restrict bbase;
GFC_LOGICAL_8 *dest; GFC_LOGICAL_8 * restrict dest;
index_type rxstride; index_type rxstride;
index_type rystride; index_type rystride;
index_type xcount; index_type xcount;
...@@ -56,8 +58,8 @@ matmul_l8 (gfc_array_l8 * retarray, gfc_array_l4 * a, gfc_array_l4 * b) ...@@ -56,8 +58,8 @@ matmul_l8 (gfc_array_l8 * retarray, gfc_array_l4 * a, gfc_array_l4 * b)
index_type x; index_type x;
index_type y; index_type y;
GFC_INTEGER_4 *pa; const GFC_INTEGER_4 * restrict pa;
GFC_INTEGER_4 *pb; const GFC_INTEGER_4 * restrict pb;
index_type astride; index_type astride;
index_type bstride; index_type bstride;
index_type count; index_type count;
......
...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */ ...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */
C(I,J) = C(I,J)+A(I,K)*B(K,J) C(I,J) = C(I,J)+A(I,K)*B(K,J)
*/ */
extern void matmul_r10 (gfc_array_r10 * retarray, gfc_array_r10 * a, gfc_array_r10 * b); extern void matmul_r10 (gfc_array_r10 * const restrict retarray,
gfc_array_r10 * const restrict a, gfc_array_r10 * const restrict b);
export_proto(matmul_r10); export_proto(matmul_r10);
void void
matmul_r10 (gfc_array_r10 * retarray, gfc_array_r10 * a, gfc_array_r10 * b) matmul_r10 (gfc_array_r10 * const restrict retarray,
gfc_array_r10 * const restrict a, gfc_array_r10 * const restrict b)
{ {
GFC_REAL_10 *abase; const GFC_REAL_10 * restrict abase;
GFC_REAL_10 *bbase; const GFC_REAL_10 * restrict bbase;
GFC_REAL_10 *dest; GFC_REAL_10 * restrict dest;
index_type rxstride, rystride, axstride, aystride, bxstride, bystride; index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
index_type x, y, n, count, xcount, ycount; index_type x, y, n, count, xcount, ycount;
...@@ -105,12 +107,10 @@ matmul_r10 (gfc_array_r10 * retarray, gfc_array_r10 * a, gfc_array_r10 * b) ...@@ -105,12 +107,10 @@ matmul_r10 (gfc_array_r10 * retarray, gfc_array_r10 * a, gfc_array_r10 * b)
retarray->offset = 0; retarray->offset = 0;
} }
abase = a->data;
bbase = b->data;
dest = retarray->data;
if (retarray->dim[0].stride == 0) if (retarray->dim[0].stride == 0)
retarray->dim[0].stride = 1; retarray->dim[0].stride = 1;
/* This prevents constifying the input arguments. */
if (a->dim[0].stride == 0) if (a->dim[0].stride == 0)
a->dim[0].stride = 1; a->dim[0].stride = 1;
if (b->dim[0].stride == 0) if (b->dim[0].stride == 0)
...@@ -175,9 +175,9 @@ matmul_r10 (gfc_array_r10 * retarray, gfc_array_r10 * a, gfc_array_r10 * b) ...@@ -175,9 +175,9 @@ matmul_r10 (gfc_array_r10 * retarray, gfc_array_r10 * a, gfc_array_r10 * b)
if (rxstride == 1 && axstride == 1 && bxstride == 1) if (rxstride == 1 && axstride == 1 && bxstride == 1)
{ {
GFC_REAL_10 *bbase_y; const GFC_REAL_10 * restrict bbase_y;
GFC_REAL_10 *dest_y; GFC_REAL_10 * restrict dest_y;
GFC_REAL_10 *abase_n; const GFC_REAL_10 * restrict abase_n;
GFC_REAL_10 bbase_yn; GFC_REAL_10 bbase_yn;
if (rystride == ycount) if (rystride == ycount)
......
...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */ ...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */
C(I,J) = C(I,J)+A(I,K)*B(K,J) C(I,J) = C(I,J)+A(I,K)*B(K,J)
*/ */
extern void matmul_r16 (gfc_array_r16 * retarray, gfc_array_r16 * a, gfc_array_r16 * b); extern void matmul_r16 (gfc_array_r16 * const restrict retarray,
gfc_array_r16 * const restrict a, gfc_array_r16 * const restrict b);
export_proto(matmul_r16); export_proto(matmul_r16);
void void
matmul_r16 (gfc_array_r16 * retarray, gfc_array_r16 * a, gfc_array_r16 * b) matmul_r16 (gfc_array_r16 * const restrict retarray,
gfc_array_r16 * const restrict a, gfc_array_r16 * const restrict b)
{ {
GFC_REAL_16 *abase; const GFC_REAL_16 * restrict abase;
GFC_REAL_16 *bbase; const GFC_REAL_16 * restrict bbase;
GFC_REAL_16 *dest; GFC_REAL_16 * restrict dest;
index_type rxstride, rystride, axstride, aystride, bxstride, bystride; index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
index_type x, y, n, count, xcount, ycount; index_type x, y, n, count, xcount, ycount;
...@@ -105,12 +107,10 @@ matmul_r16 (gfc_array_r16 * retarray, gfc_array_r16 * a, gfc_array_r16 * b) ...@@ -105,12 +107,10 @@ matmul_r16 (gfc_array_r16 * retarray, gfc_array_r16 * a, gfc_array_r16 * b)
retarray->offset = 0; retarray->offset = 0;
} }
abase = a->data;
bbase = b->data;
dest = retarray->data;
if (retarray->dim[0].stride == 0) if (retarray->dim[0].stride == 0)
retarray->dim[0].stride = 1; retarray->dim[0].stride = 1;
/* This prevents constifying the input arguments. */
if (a->dim[0].stride == 0) if (a->dim[0].stride == 0)
a->dim[0].stride = 1; a->dim[0].stride = 1;
if (b->dim[0].stride == 0) if (b->dim[0].stride == 0)
...@@ -175,9 +175,9 @@ matmul_r16 (gfc_array_r16 * retarray, gfc_array_r16 * a, gfc_array_r16 * b) ...@@ -175,9 +175,9 @@ matmul_r16 (gfc_array_r16 * retarray, gfc_array_r16 * a, gfc_array_r16 * b)
if (rxstride == 1 && axstride == 1 && bxstride == 1) if (rxstride == 1 && axstride == 1 && bxstride == 1)
{ {
GFC_REAL_16 *bbase_y; const GFC_REAL_16 * restrict bbase_y;
GFC_REAL_16 *dest_y; GFC_REAL_16 * restrict dest_y;
GFC_REAL_16 *abase_n; const GFC_REAL_16 * restrict abase_n;
GFC_REAL_16 bbase_yn; GFC_REAL_16 bbase_yn;
if (rystride == ycount) if (rystride == ycount)
......
...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */ ...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */
C(I,J) = C(I,J)+A(I,K)*B(K,J) C(I,J) = C(I,J)+A(I,K)*B(K,J)
*/ */
extern void matmul_r4 (gfc_array_r4 * retarray, gfc_array_r4 * a, gfc_array_r4 * b); extern void matmul_r4 (gfc_array_r4 * const restrict retarray,
gfc_array_r4 * const restrict a, gfc_array_r4 * const restrict b);
export_proto(matmul_r4); export_proto(matmul_r4);
void void
matmul_r4 (gfc_array_r4 * retarray, gfc_array_r4 * a, gfc_array_r4 * b) matmul_r4 (gfc_array_r4 * const restrict retarray,
gfc_array_r4 * const restrict a, gfc_array_r4 * const restrict b)
{ {
GFC_REAL_4 *abase; const GFC_REAL_4 * restrict abase;
GFC_REAL_4 *bbase; const GFC_REAL_4 * restrict bbase;
GFC_REAL_4 *dest; GFC_REAL_4 * restrict dest;
index_type rxstride, rystride, axstride, aystride, bxstride, bystride; index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
index_type x, y, n, count, xcount, ycount; index_type x, y, n, count, xcount, ycount;
...@@ -105,12 +107,10 @@ matmul_r4 (gfc_array_r4 * retarray, gfc_array_r4 * a, gfc_array_r4 * b) ...@@ -105,12 +107,10 @@ matmul_r4 (gfc_array_r4 * retarray, gfc_array_r4 * a, gfc_array_r4 * b)
retarray->offset = 0; retarray->offset = 0;
} }
abase = a->data;
bbase = b->data;
dest = retarray->data;
if (retarray->dim[0].stride == 0) if (retarray->dim[0].stride == 0)
retarray->dim[0].stride = 1; retarray->dim[0].stride = 1;
/* This prevents constifying the input arguments. */
if (a->dim[0].stride == 0) if (a->dim[0].stride == 0)
a->dim[0].stride = 1; a->dim[0].stride = 1;
if (b->dim[0].stride == 0) if (b->dim[0].stride == 0)
...@@ -175,9 +175,9 @@ matmul_r4 (gfc_array_r4 * retarray, gfc_array_r4 * a, gfc_array_r4 * b) ...@@ -175,9 +175,9 @@ matmul_r4 (gfc_array_r4 * retarray, gfc_array_r4 * a, gfc_array_r4 * b)
if (rxstride == 1 && axstride == 1 && bxstride == 1) if (rxstride == 1 && axstride == 1 && bxstride == 1)
{ {
GFC_REAL_4 *bbase_y; const GFC_REAL_4 * restrict bbase_y;
GFC_REAL_4 *dest_y; GFC_REAL_4 * restrict dest_y;
GFC_REAL_4 *abase_n; const GFC_REAL_4 * restrict abase_n;
GFC_REAL_4 bbase_yn; GFC_REAL_4 bbase_yn;
if (rystride == ycount) if (rystride == ycount)
......
...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */ ...@@ -48,15 +48,17 @@ Boston, MA 02110-1301, USA. */
C(I,J) = C(I,J)+A(I,K)*B(K,J) C(I,J) = C(I,J)+A(I,K)*B(K,J)
*/ */
extern void matmul_r8 (gfc_array_r8 * retarray, gfc_array_r8 * a, gfc_array_r8 * b); extern void matmul_r8 (gfc_array_r8 * const restrict retarray,
gfc_array_r8 * const restrict a, gfc_array_r8 * const restrict b);
export_proto(matmul_r8); export_proto(matmul_r8);
void void
matmul_r8 (gfc_array_r8 * retarray, gfc_array_r8 * a, gfc_array_r8 * b) matmul_r8 (gfc_array_r8 * const restrict retarray,
gfc_array_r8 * const restrict a, gfc_array_r8 * const restrict b)
{ {
GFC_REAL_8 *abase; const GFC_REAL_8 * restrict abase;
GFC_REAL_8 *bbase; const GFC_REAL_8 * restrict bbase;
GFC_REAL_8 *dest; GFC_REAL_8 * restrict dest;
index_type rxstride, rystride, axstride, aystride, bxstride, bystride; index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
index_type x, y, n, count, xcount, ycount; index_type x, y, n, count, xcount, ycount;
...@@ -105,12 +107,10 @@ matmul_r8 (gfc_array_r8 * retarray, gfc_array_r8 * a, gfc_array_r8 * b) ...@@ -105,12 +107,10 @@ matmul_r8 (gfc_array_r8 * retarray, gfc_array_r8 * a, gfc_array_r8 * b)
retarray->offset = 0; retarray->offset = 0;
} }
abase = a->data;
bbase = b->data;
dest = retarray->data;
if (retarray->dim[0].stride == 0) if (retarray->dim[0].stride == 0)
retarray->dim[0].stride = 1; retarray->dim[0].stride = 1;
/* This prevents constifying the input arguments. */
if (a->dim[0].stride == 0) if (a->dim[0].stride == 0)
a->dim[0].stride = 1; a->dim[0].stride = 1;
if (b->dim[0].stride == 0) if (b->dim[0].stride == 0)
...@@ -175,9 +175,9 @@ matmul_r8 (gfc_array_r8 * retarray, gfc_array_r8 * a, gfc_array_r8 * b) ...@@ -175,9 +175,9 @@ matmul_r8 (gfc_array_r8 * retarray, gfc_array_r8 * a, gfc_array_r8 * b)
if (rxstride == 1 && axstride == 1 && bxstride == 1) if (rxstride == 1 && axstride == 1 && bxstride == 1)
{ {
GFC_REAL_8 *bbase_y; const GFC_REAL_8 * restrict bbase_y;
GFC_REAL_8 *dest_y; GFC_REAL_8 * restrict dest_y;
GFC_REAL_8 *abase_n; const GFC_REAL_8 * restrict abase_n;
GFC_REAL_8 bbase_yn; GFC_REAL_8 bbase_yn;
if (rystride == ycount) if (rystride == ycount)
......
...@@ -49,15 +49,17 @@ include(iparm.m4)dnl ...@@ -49,15 +49,17 @@ include(iparm.m4)dnl
C(I,J) = C(I,J)+A(I,K)*B(K,J) C(I,J) = C(I,J)+A(I,K)*B(K,J)
*/ */
extern void matmul_`'rtype_code (rtype * retarray, rtype * a, rtype * b); extern void matmul_`'rtype_code (rtype * const restrict retarray,
rtype * const restrict a, rtype * const restrict b);
export_proto(matmul_`'rtype_code); export_proto(matmul_`'rtype_code);
void void
matmul_`'rtype_code (rtype * retarray, rtype * a, rtype * b) matmul_`'rtype_code (rtype * const restrict retarray,
rtype * const restrict a, rtype * const restrict b)
{ {
rtype_name *abase; const rtype_name * restrict abase;
rtype_name *bbase; const rtype_name * restrict bbase;
rtype_name *dest; rtype_name * restrict dest;
index_type rxstride, rystride, axstride, aystride, bxstride, bystride; index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
index_type x, y, n, count, xcount, ycount; index_type x, y, n, count, xcount, ycount;
...@@ -106,12 +108,10 @@ matmul_`'rtype_code (rtype * retarray, rtype * a, rtype * b) ...@@ -106,12 +108,10 @@ matmul_`'rtype_code (rtype * retarray, rtype * a, rtype * b)
retarray->offset = 0; retarray->offset = 0;
} }
abase = a->data;
bbase = b->data;
dest = retarray->data;
if (retarray->dim[0].stride == 0) if (retarray->dim[0].stride == 0)
retarray->dim[0].stride = 1; retarray->dim[0].stride = 1;
/* This prevents constifying the input arguments. */
if (a->dim[0].stride == 0) if (a->dim[0].stride == 0)
a->dim[0].stride = 1; a->dim[0].stride = 1;
if (b->dim[0].stride == 0) if (b->dim[0].stride == 0)
...@@ -177,9 +177,9 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl ...@@ -177,9 +177,9 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl
if (rxstride == 1 && axstride == 1 && bxstride == 1) if (rxstride == 1 && axstride == 1 && bxstride == 1)
{ {
rtype_name *bbase_y; const rtype_name * restrict bbase_y;
rtype_name *dest_y; rtype_name * restrict dest_y;
rtype_name *abase_n; const rtype_name * restrict abase_n;
rtype_name bbase_yn; rtype_name bbase_yn;
if (rystride == ycount) if (rystride == ycount)
......
...@@ -39,15 +39,17 @@ include(iparm.m4)dnl ...@@ -39,15 +39,17 @@ include(iparm.m4)dnl
/* Dimensions: retarray(x,y) a(x, count) b(count,y). /* Dimensions: retarray(x,y) a(x, count) b(count,y).
Either a or b can be rank 1. In this case x or y is 1. */ Either a or b can be rank 1. In this case x or y is 1. */
extern void matmul_`'rtype_code (rtype *, gfc_array_l4 *, gfc_array_l4 *); extern void matmul_`'rtype_code (rtype * const restrict,
gfc_array_l4 * const restrict, gfc_array_l4 * const restrict);
export_proto(matmul_`'rtype_code); export_proto(matmul_`'rtype_code);
void void
matmul_`'rtype_code (rtype * retarray, gfc_array_l4 * a, gfc_array_l4 * b) matmul_`'rtype_code (rtype * const restrict retarray,
gfc_array_l4 * const restrict a, gfc_array_l4 * const restrict b)
{ {
GFC_INTEGER_4 *abase; const GFC_INTEGER_4 * restrict abase;
GFC_INTEGER_4 *bbase; const GFC_INTEGER_4 * restrict bbase;
rtype_name *dest; rtype_name * restrict dest;
index_type rxstride; index_type rxstride;
index_type rystride; index_type rystride;
index_type xcount; index_type xcount;
...@@ -57,8 +59,8 @@ matmul_`'rtype_code (rtype * retarray, gfc_array_l4 * a, gfc_array_l4 * b) ...@@ -57,8 +59,8 @@ matmul_`'rtype_code (rtype * retarray, gfc_array_l4 * a, gfc_array_l4 * b)
index_type x; index_type x;
index_type y; index_type y;
GFC_INTEGER_4 *pa; const GFC_INTEGER_4 * restrict pa;
GFC_INTEGER_4 *pb; const GFC_INTEGER_4 * restrict pb;
index_type astride; index_type astride;
index_type bstride; index_type bstride;
index_type count; index_type count;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment