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

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
So the issue is that we do

  switch (induction_type)
    {
    case vect_step_op_neg:
      if (TREE_CODE (init_expr) != INTEGER_CST
          && TREE_CODE (init_expr) != REAL_CST)
        {
          /* Check for backend support of NEGATE_EXPR and vec_perm.  */
          if (!directly_supported_p (NEGATE_EXPR, vectype))
            return false;

          /* The encoding has 2 interleaved stepped patterns.  */
          vec_perm_builder sel (nunits, 2, 3);
          machine_mode mode = TYPE_MODE (vectype);
          sel.quick_grow (6);
          for (i = 0; i < 3; i++)
            {
              sel[i * 2] = i;
              sel[i * 2 + 1] = i + nunits;
            }

but this scheme doesn't work for a V1DImode vector type.

Reply via email to