https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92080

--- Comment #16 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by H.J. Lu <h...@gcc.gnu.org>:

https://gcc.gnu.org/g:aba3b9d3a48a0703fd565f7c5f0caf604f59970b

commit r16-1644-gaba3b9d3a48a0703fd565f7c5f0caf604f59970b
Author: H.J. Lu <hjl.to...@gmail.com>
Date:   Fri May 9 07:17:07 2025 +0800

    x86: Extend the remove_redundant_vector pass

    Extend the remove_redundant_vector pass to handle vector broadcasts from
    constant and variable scalars.  When broadcasting from constants and
    function arguments, we can place a single widest vector broadcast at
    entry of the nearest common dominator for basic blocks with all uses
    since constants and function arguments aren't changed.  For broadcast
    from variables with a single definition, the single definition is
    replaced with the widest broadcast.

    gcc/

            PR target/92080
            * config/i386/i386-expand.cc (ix86_expand_call): Set
            recursive_function to true for recursive call.
            * config/i386/i386-features.cc (ix86_place_single_vector_set):
            Add an argument for inner scalar, default to nullptr.  Set the
            source from inner scalar if not nullptr.
            (ix86_get_vector_load_mode): Renamed to ...
            (ix86_get_vector_cse_mode): This.  Add an argument for scalar mode
            and handle integer and float scalar modes.
            (replace_vector_const): Add an argument for scalar mode and pass
            it to ix86_get_vector_load_mode.
            (x86_cse_kind): New.
            (redundant_load): Likewise.
            (ix86_broadcast_inner): Likewise.
            (remove_redundant_vector_load): Also support const0_rtx and
            constm1_rtx broadcasts.  Handle vector broadcasts from constant
            and variable scalars.
            * config/i386/i386.h (machine_function): Add recursive_function.

    gcc/testsuite/

            * gcc.target/i386/keylocker-aesdecwide128kl.c: Updated to expect
            movdqa instead pxor.
            * gcc.target/i386/keylocker-aesdecwide256kl.c: Likewise.
            * gcc.target/i386/keylocker-aesencwide128kl.c: Likewise.
            * gcc.target/i386/keylocker-aesencwide256kl.c: Likewise.
            * gcc.target/i386/pr92080-4.c: New test.
            * gcc.target/i386/pr92080-5.c: Likewise.
            * gcc.target/i386/pr92080-6.c: Likewise.
            * gcc.target/i386/pr92080-7.c: Likewise.
            * gcc.target/i386/pr92080-8.c: Likewise.
            * gcc.target/i386/pr92080-9.c: Likewise.
            * gcc.target/i386/pr92080-10.c: Likewise.
            * gcc.target/i386/pr92080-11.c: Likewise.
            * gcc.target/i386/pr92080-12.c: Likewise.
            * gcc.target/i386/pr92080-13.c: Likewise.
            * gcc.target/i386/pr92080-14.c: Likewise.
            * gcc.target/i386/pr92080-15.c: Likewise.
            * gcc.target/i386/pr92080-16.c: Likewise.
            * gcc.target/i386/pr92080-17.c: Likewise.
            * gcc.target/i386/pr92080-18.c: Likewise.
            * gcc.target/i386/pr92080-19.c: Likewise.
            * gcc.target/i386/pr92080-20.c: Likewise.

    Signed-off-by: H.J. Lu <hjl.to...@gmail.com>
  • [Bug rtl-optimization/92080] Mi... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to