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

--- Comment #5 from ktkachov at gcc dot gnu.org ---
(In reply to rsand...@gcc.gnu.org from comment #4)
> I guess the problem is that the define_subst output template has:
> 
>   (match_operand:<VDBL> 0)
> 
> which creates a new operand 0 with an empty predicate and constraint,
> as opposed to a (match_dup 0), which would be substituted with the
> original operand 0.  Unfortunately
> 
>   (match_dup:<VDBL> 0)
> 
> doesn't work as a way of inserting the original destination with
> a different mode, since the :<VDBL> is ignored.  Perhaps we should
> “fix” that.  Alternatively:
> 
>   (match_operand:<VDBL> 0 "register_operand" "=w")
> 
> should work, but probably locks us into using patterns that have one
> alternative only.

I think this approach is the most promising and probably okay for the vast
majority of cases we want to handle with these substs.

Reply via email to