On 5/7/24 11:17 PM, Christoph Müllner wrote:
This patch adds the field overlap_op_by_pieces to the struct
riscv_tune_param, which is used by the TARGET_OVERLAP_OP_BY_PIECES_P()
hook. This hook is used by the by-pieces infrastructure to decide
if overlapping memory accesses should be emitted.

The new property is set to false in all tune structs except for
generic-ooo.

The changes in the expansion can be seen in the adjustments of the
cpymem test cases. These tests also reveal a limitation in the
RISC-V cpymem expansion that prevents this optimization as only
by-pieces cpymem expansions emit overlapping memory accesses.

gcc/ChangeLog:

        * config/riscv/riscv.cc (struct riscv_tune_param): New field
        overlap_op_by_pieces.
        (riscv_overlap_op_by_pieces): New function.
        (TARGET_OVERLAP_OP_BY_PIECES_P): Connect to
        riscv_overlap_op_by_pieces.
I think these are redundant with the changes I installed earlier this week :-)


gcc/testsuite/ChangeLog:

        * gcc.target/riscv/cpymem-32-ooo.c: Adjust for overlapping
        access.
        * gcc.target/riscv/cpymem-64-ooo.c: Likewise.
OK once prereqs are in.

jeff

Reply via email to