Changes since v2:
  * Code clean up from Andrea's comments.
  * Replaced gimple_build_vector_from_val with better overload in
    aarch64-builtins.cc.
  * Fixed semantically redundant safety check loop in cse_main(), it now
    skips the instruction if the wide duplicate destination register has
    been modified between the widest vec_dup and the current insn. Also
    this loop exits when it reaches the end of the basic block.
  * Removed redundant default constructor from cse_vec_duplicate_match
    struct.
  * Removed redundant copy_rtx from line 6990 since we aren't modifying
    dup_src and we are just using it as a replacement source.
    

Dylan Rees (2):
  aarch64: Improve simd highpart builtin folding
  middle-end: Eliminate redundant scalar duplication at different vector
    widths

 gcc/config/aarch64/aarch64-builtins.cc        |  16 +-
 gcc/cse.cc                                    | 231 +++++++++++++++++-
 .../aarch64/simd/fold_to_highpart_7.c         |  28 +++
 gcc/testsuite/gcc.target/i386/pr81501-9a.c    |   4 +-
 gcc/testsuite/gcc.target/i386/pr81501-9b.c    |   2 +-
 5 files changed, 273 insertions(+), 8 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_7.c

-- 
2.43.0

Reply via email to