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

--- Comment #4 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> 
---
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.

Reply via email to