On Sun, Sep 8, 2024 at 10:32 PM Thomas Koenig <tkoe...@netcologne.de> wrote:
>
> Hello world,
>
> like the subject says. The patch is gzipped because it is large;
> it contains multiple MATMUL library implementations.
>
> OK for trunk?
>
> Implement MATMUL and DOT_PRODUCT for unsgigned.

Is the library implementation in any way different from the signed
one?  Iff only
multiplication and addition/subtraction are involved the unsigned implementation
could implement both variants (the signed one would eventually cause
undefinedness
with respect to overflow unless built with -fwrapv).  That would save code size
in libgfortran and eventually icache if mixing uses of both.

Richard.

> gcc/fortran/ChangeLog:
>
>          * arith.cc (gfc_arith_uminus): Fix warning.
>          (gfc_arith_minus): Correctly truncate unsigneds.
>          * check.cc (gfc_check_dot_product): Handle unsigned arguments.
>          (gfc_check_matmul): Likewise.
>          * expr.cc (gfc_get_unsigned_expr): New function.
>          * gfortran.h (gfc_get_unsigned_expr): Add prototype.
>          * gfortran.texi: Document MATMUL and DOT_PRODUCT for unsigned.
>          * simplify.cc (compute_dot_product): Handle unsigneds.
>
> libgfortran/ChangeLog:
>
>          * Makefile.am: Add unsigned MATMUL versions.
>          * Makefile.in: Regenerate.
>          * gfortran.map: Add unsigned MATMUL versions.o
>          * libgfortran.h: Add array types for unsigned.
>          * m4/iparm.m4: Add UNSIGNED if type is m.
>          * generated/matmul_m1.c: New file.
>          * generated/matmul_m16.c: New file.
>          * generated/matmul_m2.c: New file.
>          * generated/matmul_m4.c: New file.
>          * generated/matmul_m8.c: New file.
>          * generated/matmulavx128_m1.c: New file.
>          * generated/matmulavx128_m16.c: New file.
>          * generated/matmulavx128_m2.c: New file.
>          * generated/matmulavx128_m4.c: New file.
>          * generated/matmulavx128_m8.c: New file.
>
> gcc/testsuite/ChangeLog:
>
>          * gfortran.dg/unsigned_25.f90: New test.
>          * gfortran.dg/unsigned_26.f90: New test.

Reply via email to