*PING* [PATCH] PR libfortran/97063 - Wrong result for vector (step size is negative) * matrix

Harald Anlauf anlauf@gmx.de
Sat Oct 17 16:38:44 GMT 2020


Early *ping*.

> Gesendet: Sonntag, 11. Oktober 2020 um 21:09 Uhr
> Von: "Harald Anlauf" <anlauf@gmx.de>
> An: "fortran" <fortran@gcc.gnu.org>, "gcc-patches" <gcc-patches@gcc.gnu.org>
> Betreff: [PATCH] PR libfortran/97063 - Wrong result for vector (step size is negative) * matrix
>
> PR libfortran/97063 - Wrong result for vector (step size is negative) * matrix
> Dear all,
>
> when matrix-multiplying rank-1 times rank-2 arrays, a wrong result was
> produced when a negative stride was used for the rank-1 array.  In that
> case special code for rank-2 times rank-2 was erroneously executed.
> We should never have gotten there, so move the check for rank-1 of the
> first argument before that case.
>
> The patch looks horrendously large because it consists essentially of
> regenerated code (nearly 99%).
>
> Regtests cleanly on x86_64-pc-linux-gnu.
>
> OK for master?  And backport to all open branches where it applies?
>
> Thanks,
> Harald
>
>
> The MATMUL intrinsic provided a wrong result for rank-1 times rank-2 array
> when a negative stride was used for addressing the elements of the rank-1
> array, because a check on strides was erroneously placed before the check
> on the rank.  Interchange order of checks.
>
> libgfortran/ChangeLog:
>
> 	* m4/matmul_internal.m4: Move check for rank-1 times rank-2 before
> 	checks on strides for rank-2 times rank-2.
> 	* generated/matmul_c10.c: Regenerated.
> 	* generated/matmul_c16.c: Likewise.
> 	* generated/matmul_c4.c: Likewise.
> 	* generated/matmul_c8.c: Likewise.
> 	* generated/matmul_i1.c: Likewise.
> 	* generated/matmul_i16.c: Likewise.
> 	* generated/matmul_i2.c: Likewise.
> 	* generated/matmul_i4.c: Likewise.
> 	* generated/matmul_i8.c: Likewise.
> 	* generated/matmul_r10.c: Likewise.
> 	* generated/matmul_r16.c: Likewise.
> 	* generated/matmul_r4.c: Likewise.
> 	* generated/matmul_r8.c: Likewise.
> 	* generated/matmulavx128_c10.c: Likewise.
> 	* generated/matmulavx128_c16.c: Likewise.
> 	* generated/matmulavx128_c4.c: Likewise.
> 	* generated/matmulavx128_c8.c: Likewise.
> 	* generated/matmulavx128_i1.c: Likewise.
> 	* generated/matmulavx128_i16.c: Likewise.
> 	* generated/matmulavx128_i2.c: Likewise.
> 	* generated/matmulavx128_i4.c: Likewise.
> 	* generated/matmulavx128_i8.c: Likewise.
> 	* generated/matmulavx128_r10.c: Likewise.
> 	* generated/matmulavx128_r16.c: Likewise.
> 	* generated/matmulavx128_r4.c: Likewise.
> 	* generated/matmulavx128_r8.c: Likewise.
>
> gcc/testsuite/ChangeLog:
>
> 	* gfortran.dg/matmul_20.f90: New test.
>
>


More information about the Gcc-patches mailing list