https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95218
--- Comment #17 from Uroš Bizjak <ubizjak at gmail dot com> --- The problem is with commutative operands, these somehow confuse postreload pass. I'll commit partial revert that basically puts back: (define_insn_and_split "*<code><mode>2" - [(set (match_operand:VF 0 "register_operand" "=x,v") + [(set (match_operand:VF 0 "register_operand" "=x,x,v,v") (absneg:VF - (match_operand:VF 1 "vector_operand" "%0,v"))) - (use (match_operand:VF 2 "vector_operand" "xBm,vm"))] + (match_operand:VF 1 "vector_operand" "0,xBm,v,m"))) + (use (match_operand:VF 2 "vector_operand" "xBm,0,vm,v"))] with manual swapping of operands.