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

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Ah, so we use VMAT_STRIDED_SLP and

      /* If the gap splits the vector in half and the target
         can do half-vector operations avoid the epilogue peeling
         by simply loading half of the vector only.  Usually
         the construction with an upper zero half will be elided.  */
      dr_alignment_support alss;
      int misalign = dr_misalignment (first_dr_info, vectype, off);
      tree half_vtype;
      poly_uint64 remain;
      unsigned HOST_WIDE_INT tem, num;
      if (overrun_p
          && !masked_p
          && *memory_access_type != VMAT_LOAD_STORE_LANES
...

avoids peeling for gaps.  But VMAT_STRIDED_SLP does not implement this,
it's only implemented with VMAT_CONTIGUOUS and VMAT_CONTIGUOUS_REVERSE.

Reply via email to