On Mon, 14 Aug 2023, Robin Dapp wrote:

> Hi Kewen,
> 
> > I did a bootstrapping and regression testing on Power10 (LE) and found a 
> > lot of failures.
> 
> I think the problem is that just like for vec_set we're expecting
> the vec_extract expander not to fail.  It is probably passed not a
> const int here anymore and therefore fails to expand?
> 
> can_vec_extract_var_idx_p is supposed to check if the backend
> supports extracting a variable index.

expansion does

  enum insn_code icode = convert_optab_handler (optab, outermode,
                                                extract_mode);

  if (icode != CODE_FOR_nothing)
    {
      create_output_operand (&ops[0], target, extract_mode);
      create_input_operand (&ops[1], src, outermode);
      create_convert_operand_from (&ops[2], pos,
                                   TYPE_MODE (TREE_TYPE (op1)), true);
      if (maybe_expand_insn (icode, 3, ops))
        {
          if (!rtx_equal_p (target, ops[0].value))
            emit_move_insn (target, ops[0].value);
          return;
        }

<--- here

    }
  gcc_unreachable ();

so if maybe_expand_insn fails that would need to be sth we need
to cover in the predicate to check.  But that looks possibly
target dependent?  What does actually fail here?

Richard.

Reply via email to