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.