Early *ping*.

> Gesendet: Sonntag, 11. Oktober 2020 um 21:09 Uhr
> Von: "Harald Anlauf" <anl...@gmx.de>
> An: "fortran" <fort...@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.
>
>

Reply via email to