https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95267
--- Comment #2 from otcmaf <xuemaosheng at huawei dot com> --- (In reply to Andrew Pinski from comment #1) > I think this is a back-end issue. > Can you provide the definition of movtv8hf16 ? > I don't think you can do: > (set (match_operand 0 predicate constraint) > (unspec:V8HF16 [ > (match_operand 1 predicate constraint) > (match_operand 2 predicate constraint) > (match_dup 0) > ] UNSPEC_MOVTVFM))) > > Rather you need to do: > (set (match_operand 0 predicate constraint) > (unspec:V8HF16 [ > (match_operand 1 predicate constraint) > (match_operand 2 predicate constraint) > (match_operand 3 predicate "0") > ] UNSPEC_MOVTVFM))) we use this definition of movtv8hf16: (define_insn "movtv8hf16" [(set (match_operand:V8HF16 0 "register_operand_s" "+Zrv") (unspec:V8HF16 [(match_operand:V8HF16 1 "register_operand_s" "Zrv") (match_operand:BF8 2 "register_operand_s" "Zrb") (match_dup 0)]UNSPEC_MOVTVFM))] why we can't use (match_dup 0) ?