if (d->testing_p)
return true;
- rtx (*gen_interleave) (machine_mode, int, rtx, rtx, rtx);
+ rtx (*gen_interleave) (machine_mode, rtx, rtx, rtx);
if (elt >= nelt2)
{
gen_interleave = gen_vec_interleave_high;
nelt2 /= 2;
dest = gen_reg_rtx (vmode);
- emit_insn (gen_interleave (vmode, 1, dest, op0, op0));
+ emit_insn (gen_interleave (vmode, dest, op0, op0));
vmode = V4SImode;
op0 = gen_lowpart (vmode, dest);
each operand count, but it would still produce a single
@samp{maybe_code_for_@var{name}} and a single @samp{code_for_@var{name}}.
+Currently, these @code{@@} patterns only take into account patterns for
+which no @code{define_subst} has been applied (@pxref{Define Subst}).
+Any @samp{<@dots{}>} placeholders that refer to subst attributes
+(@pxref{Subst Iterators}) are ignored.
+
@end ifset
pending_underscore_p = false;
}
- /* Record an argument for ITERATOR. */
- iterators->safe_push (iterator);
- tmp_oname.arg_types.safe_push (iterator->group->type);
+ /* Skip define_subst iterators, since define_substs are allowed to
+ add new match_operands in their output templates. */
+ if (iterator->group != &substs)
+ {
+ /* Record an argument for ITERATOR. */
+ iterators->safe_push (iterator);
+ tmp_oname.arg_types.safe_push (iterator->group->type);
+ }
}
if (base == copy)
fatal_with_file_and_line ("no iterator attributes in name `%s'", name);
/* We apply subst iterator after RTL-template is copied, as during
subst-iterator processing, we could add an attribute to the
RTL-template, and we don't want to do it in the original one. */
+ bool add_oname = true;
FOR_EACH_VEC_ELT (iterator_uses, i, iuse)
{
v = iuse->iterator->current_value;
current_iterator_name = iuse->iterator->name;
iuse->iterator->group->apply_iterator (iuse->x, iuse->index,
v->number);
+ /* Only handle '@' overloading for the default value.
+ See handle_overloaded_name for details. */
+ if (v != iuse->iterator->values)
+ add_oname = false;
}
}
- if (oname)
+ if (oname && add_oname)
add_overload_instance (oname, iterators, x);
/* Add the new rtx to the end of the queue. */