https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95218
--- Comment #12 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Richard Biener from comment #11) > Note a 'use' is not something that needs to be preserved, so > > (define_insn_and_split "*<code><mode>2" > [(set (match_operand:VF 0 "register_operand" "=x,v") > (absneg:VF > (match_operand:VF 1 "vector_operand" "%0,v"))) > (use (match_operand:VF 2 "vector_operand" "xBm,vm"))] > "TARGET_SSE" > "#" > "&& reload_completed" > [(set (match_dup 0) > (<absneg_op>:VF (match_dup 1) (match_dup 2)))] > "" > [(set_attr "isa" "noavx,avx")]) > > doesn't make much sense (before reload). To me, that is. Why do > we go that obfuscated way at all? I think a clean solution is to > use an UNSPEC here (well, "clean"...). The reason for this approach was, that combine still processes the pattern as abs/nop. Please see how *nabstf2_1 is defined.