https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69671
--- Comment #8 from Kirill Yukhin <kyukhin at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #7) > So do you want to use reg_or_0_operand? I don't think we usually tie output > with input already in the predicates, except when match_dup is used. That is the issue. reg_or_0_operand won't work (although it is better than "vector_move_operand" since it is prohibits memory) We want 2nd operand to be either: 1. const0_rtx 2. match_dup 0 I cannot see in gcc/genpreds.c if a reference to another operands is possible from the other. We might invent some complicated subst. But patterns look too complicated for that. Maybe extend genpreds.c and friends introducing new version of predicate which will take instead of (op, mode) -> (op, mode, operands). Not sure in volume of efforts though. Really hope there's some simpler solution.